{"version":3,"sources":["../node_modules/devextreme/viz/series/base_series.js","../node_modules/devextreme/viz/sankey/sankey.js","../node_modules/devextreme/viz/sankey/constants.js","../node_modules/devextreme/viz/sankey/graph.js","../node_modules/devextreme/viz/series/bubble_series.js","../node_modules/devextreme/viz/series/financial_series.js","../node_modules/devextreme/viz/pie_chart.js","../node_modules/devextreme/viz/polar_chart.js","../node_modules/devextreme/viz/range_selector.js","../node_modules/devextreme/viz/range_selector/range_selector.js","../node_modules/devextreme/viz/range_selector/sliders_controller.js","../node_modules/devextreme/viz/range_selector/slider.js","../node_modules/devextreme/viz/range_selector/slider_marker.js","../node_modules/devextreme/viz/range_selector/tracker.js","../node_modules/devextreme/viz/range_selector/range_view.js","../node_modules/devextreme/viz/range_selector/series_data_source.js","../node_modules/devextreme/viz/sankey.js","../node_modules/devextreme/viz/sankey/node_item.js","../node_modules/devextreme/viz/sankey/link_item.js","../node_modules/devextreme/viz/sankey/layout.js","../node_modules/devextreme/viz/sankey/data_validator.js","../node_modules/devextreme/viz/sankey/tooltip.js","../node_modules/devextreme/viz/sankey/tracker.js","../node_modules/devextreme/viz/series/bar_series.js","../node_modules/devextreme/viz/series/area_series.js","../node_modules/devextreme/viz/series/helpers/range_data_calculator.js","../node_modules/devextreme/viz/range_selector/common.js"],"names":["_typeof","obj","Symbol","iterator","constructor","prototype","exports","Series","mixins","_type","require","_extend2","_iterator","_base_point","_utils","_common","_consts","_interopRequireDefault","_range_data_calculator","scatterSeries","_interopRequireWildcard","lineSeries","areaSeries","barSeries","_range_series","_bubble_series","pieSeries","financialSeries","stackedSeries","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","__esModule","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","hasOwnProperty","call","desc","set","default","seriesNS","states","SELECTED_STATE","selectedMark","HOVER_STATE","hoverMark","HOVER","hover","NORMAL","normal","SELECTION","selection","APPLY_SELECTED","applySelected","APPLY_HOVER","applyHover","RESET_ITEM","resetItem","triggerEvent","element","event","point","trigger","includePointsMode","mode","normalizeEnum","mergePointOptionsCore","base","extra","options","extend","border","settings","this","fullState","_extGroups","_renderer","renderer","_group","g","attr","_eventTrigger","eventTrigger","_eventPipe","eventPipe","_incidentOccurred","incidentOccurred","_legendCallback","noop","updateOptions","getData","pointData","data","getValueChecker","axisType","axis","getOptions","allowNegatives","value","chart","pie","polar","scatter","_createLegendState","getLegendStyles","_styles","legendStyles","_createStyles","mainSeriesColor","_parseStyle","hoverStyle","selectionStyle","setClippingParams","baseId","wideId","forceClipping","clipLabels","arguments","length","_paneClipRectID","_widePaneClipRectID","_forceClipping","_clipLabels","applyClip","resetClip","getTagField","_options","tagField","getValueFields","getSizeField","getArgumentField","getPoints","_points","getPointsInViewPort","_createPoint","index","oldPoint","pointsByArgument","_getCreatingPointOptions","arg","argument","valueOf","update","Point","isSelected","lastSelectionMode","setView","pointByArgument","push","hasValue","customizePoint","getRangeData","_visible","_getRangeData","val","getArgumentRange","getViewport","_deleteGroup","groupName","group","dispose","newOptions","widgetType","oldType","type","newType","toString","_checkType","_checkPolarBarType","isUpdated","_firstDrawing","_resetType","_setType","_defineDrawingState","_pointOptions","name","pane","tag","_seriesModes","commonSeriesModes","_valueAxis","valueAxis","_argumentAxis","argumentAxis","_stackName","_updateOptions","visible","stack","barOverlapGroup","_createGroups","_processEmptyValue","ignoreEmptyPoints","x","_disposePoints","points","each","_","p","updateDataType","argumentType","valueType","argumentAxisType","valueAxisType","showZero","_argumentChecker","getArgumentAxis","_valueChecker","getValueAxis","_getOldPoint","oldPointsByArgument","splice","updateData","nameField","_canRenderCompleteHandle","dataSelector","_getPointDataSelector","itemsWithoutArgument","_data","reduce","dataItem","pointDataItem","isDefined","nameFieldValue","_endUpdateData","_getData","useAggregation","_resample","getAggregationInfo","_useAllAggregatedPoints","aggregation","enabled","autoHidePointMarkersEnabled","usePointsToDefineAutoHiding","createPoints","useAllAggregatedPoints","_normalizeUsingAllAggregatedPoints","_createPoints","that","_calculateErrorBars","skippedFields","_checkData","pointIndex","field","keys","forEach","_removeOldSegments","startIndex","_segments","_graphics","elem","_removeElement","_trackers","remove","_drawElements","animationEnabled","firstDrawing","translateAllPoints","closeSegment","closed","groupForPoint","markers","_markersGroup","errorBars","_errorBarGroup","_drawnPoints","segments","segment","translated","translate","setDefaultCoords","hasCoords","_drawPoint","groups","hasAnimation","setInvisibility","_drawSegment","_animate","draw","hideLayoutLabels","legendCallback","_appendInGroup","_applyVisibleArea","_setGroupsSettings","_resetApplyingAnimation","hideLabels","_changeStyle","isHovered","lastHoverMode","_applyStyle","_setLabelGroupSettings","_applyElementsClipRect","_applyClearingSettings","opacity","_labelsGroup","append","labelsGroup","spiderWidget","indexOf","seriesType","methodName","methods","_setPointsView","view","target","_resetPointsView","resetView","_resetNearestPoint","_nearestPoint","series","_setSelectedState","selectionMode","_releaseSelectedState","isFullStackedSeries","isStackedSeries","resetApplyingAnimation","isFirstDrawing","isFinancialSeries","_canChangeView","hoverMode","skipPoints","state","styles","updateHover","y","currentNearestPoint","getNeighborPoint","_getMainAxisName","rotated","areLabelsVisible","maxLabelCount","getLabelVisibility","label","customizeObject","pointOptions","customLabelOptions","customOptions","useLabelCustomOptions","usePointCustomOptions","customizeLabel","seriesName","isEmptyObject","_parsePointOptions","_preparePointOptions","show","_changeVisibility","hide","visibility","_updatePointsVisibility","hidePointTooltip","visibilityChanged","_label","labelOptions","_createPointStyles","parsedOptions","defaultColor","opt","labelFont","font","labelBorder","labelConnector","connector","backgroundAttr","fill","backgroundColor","width","stroke","color","dashStyle","connectorAttr","position","alignment","format","argumentFormat","customizeText","isFunction","attributes","size","showForZeroValues","horizontalOffset","verticalOffset","radialOffset","background","rotationAngle","wordWrap","textOverflow","cssClass","getLabelOptions","areErrorBarsVisible","valueErrorBar","_getOptionsForPoint","image","mergePointOptions","_getMarkerGroupOptions","_getAggregationMethod","isDiscrete","aggregateByCategory","aggregator","method","customAggregator","calculate","_ref","_aggregators","_defaultAggregator","_ref2","interval","ticks","dataIndex","addAggregatedData","aggregationInfo","processData","d","Array","isArray","aggregationMethod","categories","getTranslator","getBusinessRange","category","result","c","aggregationInterval","intervalStart","intervalEnd","map","dataInInterval","aggregatedData","i","canRenderCompleteHandle","isVisible","getAllPoints","_createAllAggregatedPoints","slice","getPointByPos","pos","getVisiblePoints","selectPoint","applyView","setPointSelectedState","action","deselectPoint","releasePointSelectedState","clearHover","hoverPoint","setPointHoverState","clearPointHover","some","currentPoint","releaseHoverState","showPointTooltip","seriesGroup","select","toForeground","clearSelection","getPointsByArg","skipPointsCreation","argValue","getPointsByKeys","notify","seriesModes","targetOptions","pointHoverMode","selectionModeOfPoint","_hoverPointHandler","notifyLegend","_clearPointHoverHandler","seriesSelectionMode","pointSelectionMode","_selectPointHandler","_deselectPointHandler","argumentIndex","_deletePoints","_deleteTrackers","tracker","_trackersGroup","_elementsGroup","_bordersGroup","_rangeData","_prevSeries","correctPosition","drawTrackers","getMarginOptions","_patchMarginOptions","percentStick","getColor","getOpacity","getStackName","getBarOverlapGroup","getPointByCoord","coordsIn","getMarkersGroup","getRenderer","_constants","_node_item","_link_item","_layout","_base_widget","_component_registrator","_data_source","getConnectedLinks","layout","nodeName","linkType","attrName","invertedAttrName","links","link","_name","connected","idx","weight","_weight","node","dxSankey","inherit","_rootClass","_rootClassPrefix","_proxyData","_optionChangesMap","dataSource","sortData","palette","paletteExtensionMode","_themeDependentChanges","_getDefaultSize","height","_themeSection","_fontFields","_optionChangesOrder","_initialChanges","_initCore","_groupLinks","root","_groupNodes","_groupLabels","_drawLabels","_nodes","_links","_gradients","_disposeCore","_applySize","rect","_rect","adaptiveLayout","_getOption","keepLabels","_change","_eventsMap","onNodeHoverChanged","onLinkHoverChanged","_customChangesOrder","_dataSourceChangedHandler","_requestChange","_change_DRAWN","_drawn","_change_DATA_SOURCE","_updateDataSource","_change_LABELS","_applyLabelsAppearance","_change_BUILD_LAYOUT","clear","_buildLayout","_change_NODES_DRAW","_applyNodesAppearance","_change_LINKS_DRAW","overlayElement","path","_applyLinksAppearance","_suspend","_applyingChanges","_suspendChanges","_resume","_resumeChanges","_showTooltip","hideTooltip","isAdjacentNodeHovered","adjacentNodeHover","getState","smartAttr","overlayStates","_hitTestTargets","callback","_dataSourceItems","sourceField","targetField","weightField","processedData","item","hasItemOwnProperty","bind","isString","isNumeric","_this","availableRect","nodeOptions","layoutBuilder","computeLayout","nodePadding","padding","nodeWidth","nodeAlign","_layoutMap","nodeColors","nodeIdx","linkOptions","totalNodesNum","nodes","previousValue","currentValue","_themeManager","createPalette","useHighlight","extensionMode","count","gradient","_shadowFilter","cascadeNodes","getNextColor","nodeItem","id","linksIn","linksOut","colorMode","COLOR_MODE_GRADIENT","linearGradient","offset","_from","_to","COLOR_MODE_SOURCE","COLOR_MODE_TARGET","linkItem","boundingRect","_boundingRect","connection","source","initHatching","availableWidth","shadowFilter","shadow","availableLabelWidth","cascades","_createLabel","getBBox","labelText","applyEllipsis","bBox","labelOffsetY","Math","round","labelOffsetX","translateX","translateY","moveLabel","overlappingBehavior","thisNode","thisBox","otherNode","otherBox","overlap","filter","textData","getLabelAttributes","text","css","_getMinSize","getAllNodes","getAllLinks","_default","addPlugin","plugin","module","COLOR_MODE_NONE","routines","maxOfArray","arr","m","callback_function","v","getVertices","vert","getAdjacentVertices","vertex","avert","getReverseAdjacentVertices","struct","_hasCycle","_sortedList","hasCycle","vertices","allVertices","_depthFirstSearch","reverse","averts","a","lp","incoming","outgoing","computeLongestPaths","sortedVertices","maxLP","adjacentVertex","sv","_line_series","_scatter_series","_area_series","_bar_series","_defineProperty","enumerable","configurable","writable","line","area","chartBarSeries","bar","polarBarSeries","_extend","_each","_noop","bubble","_getMainColor","_applyMarkerClipRect","_parsePointStyle","_setMarkerGroupSettings","_createErrorBarGroup","sizeField","baseGetter","avg","valueField","aggregate","lastPointIndex","labelAnimFunc","animate","duration","_defaultDuration","r","bubbleSize","processBubbleSize","stock","candlestick","markersGroup","defaultStyle","defaultPositiveStyle","positive","reductionStyle","reduction","reductionPositiveStyle","reductionPositive","markerSettings","_createGroup","defaultPointOptions","creatingPointOptions","_predefinedPointOptions","_getPointOptions","valueFields","openValue","highValue","lowValue","closeValue","level","prevLevelValue","argumentField","openValueField","highValueField","lowValueField","closeValueField","reductionValue","isReduction","style","innerColor","_getDefaultStyle","mainPointColor","_getReductionStyle","reductionColor","hatching","positiveStyle","ohlc","max","min","isFinite","sizePointNormalState","getSeriesPairCoord","coord","isArgument","oppositeCoord","tmpCoord","vx","openY","closeY","coords","lowY","highY","_checkAxisVisibleAreaCoord","_range","_base_chart","_translator1d","_annotations","seriesSpacing","pieSeriesSpacing","NORMAL_STATE","normalMark","LEGEND_ACTIONS","correctPercentValue","pieSizeEqualizer","removeFromList","list","li","pies","timers","queue","getSizeGroup","concat","clearTimeout","setTimeout","allPies","_isVisible","minRadius","apply","getSizeGroupLayout","radius","minPie","render","force","sizeGroupLayout","equalize","dxPieChart","BaseChart","_layoutManagerOptions","callBase","piePercentage","minPiePercentage","diameter","minDiameter","sizeGroup","centerTemplate","_change_CENTER_TEMPLATE","_renderCenterTemplate","_centerTemplateGroup","linkOff","_groupSeries","_groupsData","valueOptions","argumentOptions","_getValueAxis","translator","Translator1D","setCodomain","setBusinessRange","range","setDomain","_populateBusinessRange","Range","addRange","_specialProcessSeries","singleSeries","arrangePoints","_checkPaneName","_processSingleSeries","_handleSeriesDataUpdated","maxPointCount","s","getPointsCount","setMaxPointsCount","_getLegendOptions","legendItem","legendData","_getLegendTargets","itemsByArgument","argumentCount","items","_getLayoutTargets","canvas","_canvas","_getLayoutSeries","drawOptions","drawnLabels","layoutManager","applyPieChartSeriesLayout","drawLabelsWOPoints","_sizeGroupLayout","centerX","centerY","radiusOuter","_getLayoutSeriesForEqualPies","applyEqualPieChartLayout","correctPieLabelRadius","_updateSeriesDimensions","innerRad","delta","visibleSeries","_getVisibleSeries","lengthVisibleSeries","radiusInner","_setGeometry","correctRadius","_renderSeries","isRotated","isLegendInside","_calculateSeriesLayout","_clearCanvas","_renderSeriesElements","_createHtmlStructure","linkOn","patchFontOptions","_font","linkAppend","_renderExtraElements","template","option","centerTemplateGroup","_getTemplate","model","container","onRendered","move","_center","getInnerRadius","_innerRadius","_getLegendCallBack","legend","_legend","getActionCallback","seriesPoints","_point$series","seriesOptions","pointState","getLegendItemAction","_locateLabels","resolveLabelOverlapping","labelsWereOverlapped","wordWrapApplied","iterationCount","_adjustSeriesLabels","_resolveLabelOverlapping","moveLabelsFromCenter","adjustLabels","_applyExtraSettings","_resolveLabelOverlappingShift","inverseDirection","seriesByPosition","outside","inside","columns","labelsOverlapped","resolve","left","right","shiftInColumnFunction","dividePoints","box","getVerticallyShiftedAngularCoords","angle","normalizeAngle","middleAngle","shiftCallback","overlapped","overlapping","resolveLabelOverlappingInOneDirection","_disposeSeries","seriesIndex","_abstractSeries","_legendDataField","_legendItemTextField","_applyPointMarkersAutoHiding","_renderTrackers","_trackerType","_createScrollBar","_updateAxesLayout","_applyClipRects","_appendAdditionalSeriesGroups","_prepareToRender","_isLegendInside","_renderAxes","_shrinkAxes","_isRotated","_seriesPopulatedHandlerCore","_reinitAxes","_correctAxes","_getExtraOptions","startAngle","innerRadius","segmentsDirection","plugins","core","pieChart","_advanced_chart","dxPolarChart","AdvancedChart","_createPanes","_getAxisRenderingOptions","typeSelector","drawingType","_prepareAxisOptions","axisOptions","isArgumentAxis","themeManager","axisUserOptions","argumentAxisOptions","isHorizontal","showCustomBoundaryTicks","endAngle","useSpiderWeb","_appendAxesGroups","_calcCanvas","margins","getMargins","margin","toUpperCase","setSpiderTicks","getSpiderTicks","updateSize","_valueAxes","sizeStorage","hideOuterElements","checkForMoreSpaceForPanesCanvas","needMoreSpaceForPanesCanvas","getCanvas","_getSeriesForPane","canvasClipRectID","_getCanvasClipRectID","_createClipPathForPane","applyClipRects","_getElementsClipRectID","center","getCenter","getRadius","panesClipRects","_panesClipRects","_createClipCircle","fixed","wide","clipArray","top","clipCircle","cx","cy","wideClipRect","getActualAngle","inverted","getXYFromPolar","layoutInfo","argAngle","translatedRadius","argAxis","getAngles","convertPolarToXY","getTranslatedAngle","_getCrosshairOptions","polarChart","_type2","_date","_math","_base_axis","_parse_utils","_format_helper","_sliders_controller","_tracker","_range_view","_series_data_source","_tick_generator","_axes_constants","_export","_title","_loading_indicator","_max","_ceil","ceil","_floor","floor","VALUE","calculateMarkerHeight","sliderMarkerOptions","textBBox","getTextBBox","consts","emptySliderMarkerText","formatValue","paddingTopBottom","pointerSize","calculateScaleLabelHalfWidth","scaleOptions","tickIntervalsInfo","logarithmBase","calculateValueType","firstValue","secondValue","typeFirstValue","typeSecondValue","validType","showScaleMarkers","marker","checkLogarithmicOptions","defaultLogarithmBase","calculateScaleAreaHeight","visibleMarkers","labelScaleOptions","markerScaleOptions","placeholderHeight","customTicks","topIndent","separatorHeight","getNextTickInterval","tickInterval","minorTickInterval","isDateType","getNextDateUnit","updateTickIntervals","screenDelta","ticksInfo","minVisible","maxVisible","categoriesInfo","_categoriesInfo","bounds","tickCountByInterval","tickCountByScreen","gridSpacingFactor","axisDivisionFactor","dateToMilliseconds","calculateTickIntervalsForSemidiscreteScale","tickGenerator","dataType","logBase","linearThreshold","abs","minorAxisDivisionFactor","calculateMinors","allowDecimals","endOnTick","rangeIsEmpty","isEmpty","forceUserTickInterval","minorTickCount","getFirstDayOfWeek","_options$workWeek","workWeek","fontOptions","textElement","updateScaleOptions","seriesDataSource","translatorRange","checkDateMarkerVisibility","isEmptyInterval","intervals","start","end","isDateTime","startValue","invert","endValue","isDate","getTime","getDateFormatByTicks","getDateFormatByTickInterval","firstDayOfWeek","res","getSequenceByInterval","altIntervals","correctValueByInterval","getIntervalCustomTicks","customMinorTicks","customBoundTicks","correctDateWithUnitBeginning","Date","adjust","getPrecisionForSlider","tail","getLog","dxRangeSelector","_toggleParentsScrollSubscription","onValueChanged","_dataIsReady","_dataIsLoaded","_clipRect","clipRect","rangeViewGroup","slidersGroup","scaleGroup","scaleBreaksGroup","trackersGroup","_axis","AxisWrapper","updateSelectedRange","e","setValue","convertVisualRangeObject","_rangeView","RangeView","_slidersController","SlidersController","lastSelectedRange","_rangeOption","isPlainObject","silent","Tracker","controller","_clientRect","scale","_change_SCALE","_setValueByDataSource","selectedRangeUpdateMode","getValue","valueIsReady","__skipAnimation","_dataSourceIsAsync","rangesInfo","allScaleSelected","_value","getVisualRangeLength","_change_MOSTLY_TOTAL","_applyMostlyTotalChange","_change_SLIDER_SELECTION","setSelectedRange","getVizRangeObject","_change_VALUE","_validateRange","isValid","_applyChanges","_changes","__isResizing","currentAnimationEnabled","updateAnimationOptions","_updateContent","_completeSeriesDataSourceCreation","isShowChart","setMarginOptions","updateCanvas","chartOptions","_createSeriesDataSource","isCompactMode","scaleOption","calculatedValueType","containerColor","parsedValue","correctValueType","validateStartEndValues","parser","messageToIncidentOccurred","getParser","minorTick","minRange","maxRange","prepareScaleOptions","getCalculatedValueType","argTranslatorRange","minValue","maxValue","rangeForCategories","getBoundRange","argCategories","getCategoriesInfo","sortCategories","calculateTranslatorRange","chartThemeManager","getThemeManager","isDateScale","isMarkerVisible","years","months","intervalX","updateTranslatorRangeInterval","_prepareSliderMarkersOptions","indents","indentOptions","leftMarkerHeight","rightMarkerHeight","placeholderWidthLeft","placeholderWidthRight","startTickValue","endTickValue","leftScaleLabelWidth","rightScaleLabelWidth","bottom","calculateIndents","rangeContainerCanvas","HEIGHT_COMPACT_MODE","_updateElements","behavior","shutterOptions","isNotSemiDiscrete","theme","_isUpdating","getFullTicks","Axis","categoriesSortingMethod","SeriesDataSource","dataSourceField","argRange","doNotSnap","snapToTicks","isTypeDiscrete","isValueTypeDatetime","borderColor","precision","withCorrection","getDateUnitInterval","majorUnit","dateUnitIntervals","getMinorTickIntervalUnit","getSelectedRange","visualRange","rangesAreEqual","_setContentSize","getShiftDirection","getTickStartPositionShift","checkShiftedLabels","majorTicks","boxes","minSpacing","checkLabelsOverlapping","nearestLabelsIndexes","areLabelsOverlap","removeLabel","getTwoVisibleLabels","labels","params","axesContainerGroup","widgetClass","axisClass","getTemplate","_updateSelectedRangeCallback","getAxisSharpDirection","getSharpDirectionByCoords","_checkShiftedLabels","calculateInterval","prevValue","businessRange","axisPosition","tick","placeholderSize","semiDiscreteInterval","indentFromAxis","prepareAxisOptions","validate","shift","getMarkerTrackers","markerTrackers","onPointerDown","addInterval","on","createDateMarkersEvent","drawScaleBreaks","_this$_axis$visualRan","_common2","_slider","animationSettings","utils","buildRectPoints","isLess","b","isGreater","selectClosestValue","values","middle","dummyProcessSelectionChanged","_lastSelectedRange","_processSelectionChanged","sliderParams","_params","_areaTracker","_selectedAreaTracker","_shutter","_sliders","getTrackerTargets","selectedArea","sliders","selectedRange","verticalRange","sliderHandleOptions","rangeBounds","fullTicks","selectedRangeColor","screenRange","getScreenRange","_verticalRange","_minRange","_maxRange","_animationEnabled","_allowSlidersSwap","allowSlidersSwap","_position","_values","isValueProlonged","_isCompactMode","_shutterOffset","_updateSelectedView","_isOnMoving","callValueChanged","_updateSelectedRange","_applyTotalPosition","sharp","cancelAnimation","stopAnimation","_setText","restoreSetSelectedRange","isAnimated","applyPosition","areOverlapped","getCloudBorder","setOverlapped","_applyAreaTrackersPosition","_applySelectedRangePosition","position1","getPosition","position2","cursor","pos1","pos2","getVisibleArea","compare","_adjustVisualRange","adjustVisualRange","getCorrectValue","to","setDisplayValue","beginSelectedAreaMoving","initialPosition","currentPosition","complete","_dockSelectedArea","_moveSelectedArea","moveSelectedArea","screenPosition","startPosition","endPosition","from","placeSliderAndBeginMoving","firstPosition","secondPosition","dir","antiCompare","positions","add","getRange","handler","beginSliderMoving","_sliderGroup","initialIndex","minPosition","maxPosition","staticPosition","compareMin","compareMax","moveOffset","swapOffset","_setValid","temp","slider","invalidStateValue","_changeMovingSlider","newValue","_marker","_update","foregroundSlider","_slider_marker","_support","Slider","_translator","_line","attrs","setPosition","setValid","_colors","Number","setText","_formatOptions","applyOptions","invalidRangeColor","sliderHandleWidth","trackerWidth","touchEvents","pointerEvents","getSliderTracker","isOverlapped","getTracker","getBorderPosition","POINTER_SIZE","SliderMarker","isLeftPointer","_isLeftPointer","_isOverlapped","_area","align","_border","_getRectSize","textSize","_paddingLeftRight","_paddingTopBottom","_getTextSize","_textHeight","_getAreaPointsInfo","rectSize","rectWidth","rectHeight","rectLeftBorder","rectRightBorder","pointerRightPoint","pointerCenterPoint","pointerLeftPoint","isLeft","correctCloudBorders","checkPointerBorders","borderPosition","_borderPosition","isCut","_timeout","_text","currentTextSize","updateSliderMarker","pointsData","_textSize","paddingLeftRight","setColor","_events_engine","_pointer","_window","_dom_adapter","window","getWindow","isLeftButtonPressed","originalEvent","touches","pointerType","eventTouches","isMSPointerLeftClick","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_MOUSE","buttons","isTouches","which","isMultiTouches","preventDefault","stopPropagationAndPreventDefault","stopPropagation","isTouchEventArgs","getEventPageX","pageX","changedTouches","initializeAreaEvents","getRootOffsetLeft","_docEvents","isTouchEvent","isActive","movingHandler","docEvents","cancel","manualRangeSelectionEnabled","up","moveSelectedRangeByClick","down","initializeSelectedAreaEvents","_docEvents2","initializeSliderEvents","_docEvents3","_slider$on","_state","targets","getRootOffset","msTouchAction","events","getDocument","off","merge","backgroundOption","backgroundTheme","isAnimationEnabled","canvasWidth","url","location","seriesList","getSeries","adjustSeriesDimensions","valueRange","getCategoriesSorter","drawSeriesView","_base_series","_series_family","_array","_data_validator","_chart_theme_manager","ThemeManager","themeSection","fontFields","setTheme","bottomIndent","_indent","_hideChart","_series","_calculateSeries","_seriesFamilies","particularSeriesOptions","seriesTheme","parsedData","newSeries","groupsData","seriesTemplate","allSeriesOptions","processSeriesTemplate","validateData","viewport","negativesAsZeroes","negativesAsZeros","updateBusinessRange","minBubbleSize","maxBubbleSize","barOptions","families","types","inArray","family","SeriesFamily","barGroupPadding","barGroupWidth","adjustSeriesValues","processSeriesFamilies","rangeData","rangeYSize","rangeVisibleSizeY","minIndent","maxIndent","valRange","marginOptions","mergeMarginOptions","_sankey","_tooltip","_tooltip2","setTooltipCustomOptions","_compileAttrs","itemOptions","itemBaseOptions","baseBorder","borderVisible","borderWidth","borderOpacity","Node","widget","widgetOffset","code","title","compileAttrs","setState","adjacentLink","setAdjacentNodeHover","setHover","showTooltip","info","weightIn","weightOut","labelSettings","_patchFontOptions","useNodeColors","compileLabelAttrs","Link","_graph","_weightPerPixel","_getCascadeIdx","nodeTitle","cascadesConfig","nodeInfo","_getInWeightForNode","w","_getOutWeightForNode","_computeCascades","maxCascade","cascade","inWeight","outWeight","maxWeight","_getWeightForCascade","cascadeIdx","wMax","_getMaxWeightThroughCascades","mW","_computeNodes","_this2","rects","maxNodeNum","nodesInCascade","heightAvailable","cascadeAlign","cascadeRects","cascadeHeight","sort","_sort","_findRectByName","_findIndexByName","_computeLinks","_this3","yOffsets","paths","out","rectsOfCascade","nodeRect","rectFrom","linksFromNode","rectTo","yOffsetFrom","yOffsetTo","in","heightFrom","heightTo","_spline","_fitAllNodesHeight","_fitNodeHeight","nodeRects","targetRect","heightOfLinksSummaryIn","heightOfLinksSummaryOut","rectLeft","rectRight","p_UpLeft","p_DownLeft","p_UpRight","p_DownRight","curve_width","linksData","validateResult","error","box1","box2","sankey","_setTooltipOptions","linkTemplate","nodeTemplate","tooltip","linkTooltipTemplate","nodeTooltipTemplate","customizeTooltip","args","skipTemplate","generateCustomCallback","customizeNodeTooltip","defaultCustomizeNodeTooltip","customizeLinkTooltip","defaultCustomizeLinkTooltip","contentTemplate","div","templateArgs","html","customCallback","defaultCallback","objectInfo","proto","dataKeyModifier","onNodeClick","onLinkClick","init","dataKey","getNode","click","eventName","_dataKey","extenders","chartSeries","polarSeries","baseBarSeriesMethods","styleOptions","defaultBorderColor","_getAffineCoordOptions","scaleX","scaleY","mainColor","_animatePoints","_animateComplete","drawnPoints","getMarkerCoords","getValueRangeInitialValue","checkInterval","animateFunc","checkSeriesViewportCoord","isOpposite","coordName","oppositeCoordName","getCenterCoord","markersSettings","class","groupSettings","paramName","tmpPoint","_object","chartLineSeries","polarLineSeries","calculateBezierPoints","spline","_calculateBezierPoints","baseAreaMethods","_createBorderElement","_createMainElement","_getDefaultSegment","defaultSegment","_updateElement","lineParams","areaParams","borderElement","_drawElement","elements","graphic","borderOptions","borderStyle","_parseLineOptions","_areBordersVisible","_getTrackerSettings","singlePointSegment","_defaultTrackerWidth","_getMainPointsFromSegment","_prepareSegment","processedPoints","_processSinglePointsAreaSegment","areaPoints","pt","getCoords","createAreaPoints","getAxisPosition","argAxisPosition","edgeOffset","defaultX","getAxisShift","defaultY","p1","clone","lastSegment","_closeSegment","steparea","stepLineSeries","stepline","_calculateStepLinePoints","splinearea","_areaPointsToSplineAreaPoints","previousMiddlePoint","middlePoint","areaSegment","areaDefaultSegment","_getNearestPoints","_getBezierPoints","obtainCubicBezierTCoef","continuousRangeCalculator","createGetLogFunction","log","getRangeCalculator","rangeCalculator","minInterval","minArgs","getInitialRange","processCategories","unique","calculateRangeBetweenPoints","prevPoint","bound","extraPoint","y1","y2","x1","getValueForArgument","isLineSeries","toLowerCase","getViewportReducer","calculatePointBetweenPoints","getAddFunction","viewportFilter","getViewPortFilter","startCalc","getMinValue","getMaxValue","endCalc","dictionary","i1","i2","argumentCalculator","valueRangeCalculator","viewportReducer","isArgumentCorrect","argumentRange","reducer","argumentViewPortFilter","valueViewPort","valueViewPortFilter","addValue","isEdge","isMinValueInViewPort","isMaxValueInViewPort","addEdgePoints","nextPoint","_smart_formatter","trackerSettings","formatOptions","formatObject","valueText","smartFormatter","String"],"mappings":"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","file":"static/js/main~39a3e381.71c388c8.chunk.js","sourcesContent":["/**\r\n * DevExtreme (viz/series/base_series.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\r\n return typeof obj\r\n } : function(obj) {\r\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }, _typeof(obj)\r\n}\r\nexports.Series = Series;\r\nexports.mixins = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _base_point = require(\"./points/base_point\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _consts = _interopRequireDefault(require(\"../components/consts\"));\r\nvar _range_data_calculator = _interopRequireDefault(require(\"./helpers/range_data_calculator\"));\r\nvar scatterSeries = _interopRequireWildcard(require(\"./scatter_series\"));\r\nvar lineSeries = _interopRequireWildcard(require(\"./line_series\"));\r\nvar areaSeries = _interopRequireWildcard(require(\"./area_series\"));\r\nvar barSeries = _interopRequireWildcard(require(\"./bar_series\"));\r\nvar _range_series = require(\"./range_series\");\r\nvar _bubble_series = require(\"./bubble_series\");\r\nvar pieSeries = _interopRequireWildcard(require(\"./pie_series\"));\r\nvar financialSeries = _interopRequireWildcard(require(\"./financial_series\"));\r\nvar stackedSeries = _interopRequireWildcard(require(\"./stacked_series\"));\r\n\r\nfunction _getRequireWildcardCache(nodeInterop) {\r\n if (\"function\" !== typeof WeakMap) {\r\n return null\r\n }\r\n var cacheBabelInterop = new WeakMap;\r\n var cacheNodeInterop = new WeakMap;\r\n return (_getRequireWildcardCache = function(nodeInterop) {\r\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop\r\n })(nodeInterop)\r\n}\r\n\r\nfunction _interopRequireWildcard(obj, nodeInterop) {\r\n if (!nodeInterop && obj && obj.__esModule) {\r\n return obj\r\n }\r\n if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n return {\r\n \"default\": obj\r\n }\r\n }\r\n var cache = _getRequireWildcardCache(nodeInterop);\r\n if (cache && cache.has(obj)) {\r\n return cache.get(obj)\r\n }\r\n var newObj = {};\r\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n for (var key in obj) {\r\n if (\"default\" !== key && Object.prototype.hasOwnProperty.call(obj, key)) {\r\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n if (desc && (desc.get || desc.set)) {\r\n Object.defineProperty(newObj, key, desc)\r\n } else {\r\n newObj[key] = obj[key]\r\n }\r\n }\r\n }\r\n newObj.default = obj;\r\n if (cache) {\r\n cache.set(obj, newObj)\r\n }\r\n return newObj\r\n}\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar seriesNS = {};\r\nvar states = _consts.default.states;\r\nvar DISCRETE = \"discrete\";\r\nvar SELECTED_STATE = states.selectedMark;\r\nvar HOVER_STATE = states.hoverMark;\r\nvar HOVER = states.hover;\r\nvar NORMAL = states.normal;\r\nvar SELECTION = states.selection;\r\nvar APPLY_SELECTED = states.applySelected;\r\nvar APPLY_HOVER = states.applyHover;\r\nvar RESET_ITEM = states.resetItem;\r\nvar NONE_MODE = \"none\";\r\nvar INCLUDE_POINTS = \"includepoints\";\r\nvar NEAREST_POINT = \"nearestpoint\";\r\nvar SERIES_SELECTION_CHANGED = \"seriesSelectionChanged\";\r\nvar POINT_SELECTION_CHANGED = \"pointSelectionChanged\";\r\nvar SERIES_HOVER_CHANGED = \"seriesHoverChanged\";\r\nvar POINT_HOVER_CHANGED = \"pointHoverChanged\";\r\nvar ALL_SERIES_POINTS = \"allseriespoints\";\r\nvar ALL_ARGUMENT_POINTS = \"allargumentpoints\";\r\nvar POINT_HOVER = \"pointHover\";\r\nvar CLEAR_POINT_HOVER = \"clearPointHover\";\r\nvar SERIES_SELECT = \"seriesSelect\";\r\nvar POINT_SELECT = \"pointSelect\";\r\nvar POINT_DESELECT = \"pointDeselect\";\r\nvar getEmptyBusinessRange = function() {\r\n return {\r\n arg: {},\r\n val: {}\r\n }\r\n};\r\n\r\nfunction triggerEvent(element, event, point) {\r\n element && element.trigger(event, point)\r\n}\r\nseriesNS.mixins = {\r\n chart: {},\r\n pie: {},\r\n polar: {}\r\n};\r\nseriesNS.mixins.chart.scatter = scatterSeries.chart;\r\nseriesNS.mixins.polar.scatter = scatterSeries.polar;\r\n(0, _extend2.extend)(seriesNS.mixins.pie, pieSeries);\r\n(0, _extend2.extend)(seriesNS.mixins.chart, lineSeries.chart, areaSeries.chart, barSeries.chart, _range_series.chart, _bubble_series.chart, financialSeries, stackedSeries.chart);\r\n(0, _extend2.extend)(seriesNS.mixins.polar, lineSeries.polar, areaSeries.polar, barSeries.polar, stackedSeries.polar);\r\n\r\nfunction includePointsMode(mode) {\r\n mode = (0, _utils.normalizeEnum)(mode);\r\n return mode === INCLUDE_POINTS || mode === ALL_SERIES_POINTS\r\n}\r\n\r\nfunction getLabelOptions(labelOptions, defaultColor) {\r\n var opt = labelOptions || {};\r\n var labelFont = (0, _extend2.extend)({}, opt.font) || {};\r\n var labelBorder = opt.border || {};\r\n var labelConnector = opt.connector || {};\r\n var backgroundAttr = {\r\n fill: opt.backgroundColor || defaultColor,\r\n \"stroke-width\": labelBorder.visible ? labelBorder.width || 0 : 0,\r\n stroke: labelBorder.visible && labelBorder.width ? labelBorder.color : \"none\",\r\n dashStyle: labelBorder.dashStyle\r\n };\r\n var connectorAttr = {\r\n stroke: labelConnector.visible && labelConnector.width ? labelConnector.color || defaultColor : \"none\",\r\n \"stroke-width\": labelConnector.visible ? labelConnector.width || 0 : 0\r\n };\r\n labelFont.color = \"none\" === opt.backgroundColor && \"#ffffff\" === (0, _utils.normalizeEnum)(labelFont.color) && \"inside\" !== opt.position ? defaultColor : labelFont.color;\r\n return {\r\n alignment: opt.alignment,\r\n format: opt.format,\r\n argumentFormat: opt.argumentFormat,\r\n customizeText: (0, _type.isFunction)(opt.customizeText) ? opt.customizeText : void 0,\r\n attributes: {\r\n font: labelFont\r\n },\r\n visible: 0 !== labelFont.size ? opt.visible : false,\r\n showForZeroValues: opt.showForZeroValues,\r\n horizontalOffset: opt.horizontalOffset,\r\n verticalOffset: opt.verticalOffset,\r\n radialOffset: opt.radialOffset,\r\n background: backgroundAttr,\r\n position: opt.position,\r\n connector: connectorAttr,\r\n rotationAngle: opt.rotationAngle,\r\n wordWrap: opt.wordWrap,\r\n textOverflow: opt.textOverflow,\r\n cssClass: opt.cssClass\r\n }\r\n}\r\n\r\nfunction setPointHoverState(point, legendCallback) {\r\n point.fullState |= HOVER_STATE;\r\n point.applyView(legendCallback)\r\n}\r\n\r\nfunction releasePointHoverState(point, legendCallback) {\r\n point.fullState &= ~HOVER_STATE;\r\n point.applyView(legendCallback);\r\n point.releaseHoverState()\r\n}\r\n\r\nfunction setPointSelectedState(point, legendCallback) {\r\n point.fullState |= SELECTED_STATE;\r\n point.applyView(legendCallback)\r\n}\r\n\r\nfunction releasePointSelectedState(point, legendCallback) {\r\n point.fullState &= ~SELECTED_STATE;\r\n point.applyView(legendCallback)\r\n}\r\n\r\nfunction mergePointOptionsCore(base, extra) {\r\n var options = (0, _extend2.extend)({}, base, extra);\r\n options.border = (0, _extend2.extend)({}, base && base.border, extra && extra.border);\r\n return options\r\n}\r\n\r\nfunction mergePointOptions(base, extra) {\r\n var options = mergePointOptionsCore(base, extra);\r\n options.image = (0, _extend2.extend)(true, {}, base.image, extra.image);\r\n options.selectionStyle = mergePointOptionsCore(base.selectionStyle, extra.selectionStyle);\r\n options.hoverStyle = mergePointOptionsCore(base.hoverStyle, extra.hoverStyle);\r\n return options\r\n}\r\n\r\nfunction Series(settings, options) {\r\n var that = this;\r\n that.fullState = 0;\r\n that._extGroups = settings;\r\n that._renderer = settings.renderer;\r\n that._group = settings.renderer.g().attr({\r\n \"class\": \"dxc-series\"\r\n });\r\n that._eventTrigger = settings.eventTrigger;\r\n that._eventPipe = settings.eventPipe;\r\n that._incidentOccurred = settings.incidentOccurred;\r\n that._legendCallback = _common.noop;\r\n that.updateOptions(options, settings)\r\n}\r\n\r\nfunction getData(pointData) {\r\n return pointData.data\r\n}\r\n\r\nfunction getValueChecker(axisType, axis) {\r\n if (!axis || \"logarithmic\" !== axisType || false !== axis.getOptions().allowNegatives) {\r\n return function() {\r\n return true\r\n }\r\n } else {\r\n return function(value) {\r\n return value > 0\r\n }\r\n }\r\n}\r\nSeries.prototype = {\r\n constructor: Series,\r\n _createLegendState: _common.noop,\r\n getLegendStyles: function() {\r\n return this._styles.legendStyles\r\n },\r\n _createStyles: function(options) {\r\n var that = this;\r\n var mainSeriesColor = options.mainSeriesColor;\r\n that._styles = {\r\n normal: that._parseStyle(options, mainSeriesColor, mainSeriesColor),\r\n hover: that._parseStyle(options.hoverStyle || {}, mainSeriesColor, mainSeriesColor),\r\n selection: that._parseStyle(options.selectionStyle || {}, mainSeriesColor, mainSeriesColor),\r\n legendStyles: {\r\n normal: that._createLegendState(options, mainSeriesColor),\r\n hover: that._createLegendState(options.hoverStyle || {}, mainSeriesColor),\r\n selection: that._createLegendState(options.selectionStyle || {}, mainSeriesColor)\r\n }\r\n }\r\n },\r\n setClippingParams: function(baseId, wideId, forceClipping) {\r\n var clipLabels = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : true;\r\n this._paneClipRectID = baseId;\r\n this._widePaneClipRectID = wideId;\r\n this._forceClipping = forceClipping;\r\n this._clipLabels = clipLabels\r\n },\r\n applyClip: function() {\r\n this._group.attr({\r\n \"clip-path\": this._paneClipRectID\r\n })\r\n },\r\n resetClip: function() {\r\n this._group.attr({\r\n \"clip-path\": null\r\n })\r\n },\r\n getTagField: function() {\r\n return this._options.tagField || \"tag\"\r\n },\r\n getValueFields: _common.noop,\r\n getSizeField: _common.noop,\r\n getArgumentField: _common.noop,\r\n getPoints: function() {\r\n return this._points\r\n },\r\n getPointsInViewPort: function() {\r\n return _range_data_calculator.default.getPointsInViewPort(this)\r\n },\r\n _createPoint: function(data, index, oldPoint) {\r\n data.index = index;\r\n var that = this;\r\n var pointsByArgument = that.pointsByArgument;\r\n var options = that._getCreatingPointOptions(data);\r\n var arg = data.argument.valueOf();\r\n var point = oldPoint;\r\n if (point) {\r\n point.update(data, options)\r\n } else {\r\n point = new _base_point.Point(that, data, options);\r\n if (that.isSelected() && includePointsMode(that.lastSelectionMode)) {\r\n point.setView(SELECTION)\r\n }\r\n }\r\n var pointByArgument = pointsByArgument[arg];\r\n if (pointByArgument) {\r\n pointByArgument.push(point)\r\n } else {\r\n pointsByArgument[arg] = [point]\r\n }\r\n if (point.hasValue()) {\r\n that.customizePoint(point, data)\r\n }\r\n return point\r\n },\r\n getRangeData: function() {\r\n return this._visible ? this._getRangeData() : getEmptyBusinessRange()\r\n },\r\n getArgumentRange: function() {\r\n return this._visible ? _range_data_calculator.default.getArgumentRange(this) : getEmptyBusinessRange()\r\n },\r\n getViewport: function() {\r\n return _range_data_calculator.default.getViewport(this)\r\n },\r\n _deleteGroup: function(groupName) {\r\n var group = this[groupName];\r\n if (group) {\r\n group.dispose();\r\n this[groupName] = null\r\n }\r\n },\r\n updateOptions: function(newOptions, settings) {\r\n var that = this;\r\n var widgetType = newOptions.widgetType;\r\n var oldType = that.type;\r\n var newType = newOptions.type;\r\n that.type = newType && (0, _utils.normalizeEnum)(newType.toString());\r\n if (!that._checkType(widgetType) || that._checkPolarBarType(widgetType, newOptions)) {\r\n that.dispose();\r\n that.isUpdated = false;\r\n return\r\n }\r\n if (oldType !== that.type) {\r\n that._firstDrawing = true;\r\n that._resetType(oldType, widgetType);\r\n that._setType(that.type, widgetType)\r\n } else {\r\n that._defineDrawingState()\r\n }\r\n that._options = newOptions;\r\n that._pointOptions = null;\r\n that.name = newOptions.name;\r\n that.pane = newOptions.pane;\r\n that.tag = newOptions.tag;\r\n if (settings) {\r\n that._seriesModes = settings.commonSeriesModes || that._seriesModes;\r\n that._valueAxis = settings.valueAxis || that._valueAxis;\r\n that.axis = that._valueAxis && that._valueAxis.name;\r\n that._argumentAxis = settings.argumentAxis || that._argumentAxis\r\n }\r\n that._createStyles(newOptions);\r\n that._stackName = null;\r\n that._updateOptions(newOptions);\r\n that._visible = newOptions.visible;\r\n that.isUpdated = true;\r\n that.stack = newOptions.stack;\r\n that.barOverlapGroup = newOptions.barOverlapGroup;\r\n that._createGroups();\r\n that._processEmptyValue = newOptions.ignoreEmptyPoints ? function(x) {\r\n return null === x ? void 0 : x\r\n } : function(x) {\r\n return x\r\n }\r\n },\r\n _defineDrawingState: function() {\r\n this._firstDrawing = true\r\n },\r\n _disposePoints: function(points) {\r\n (0, _iterator.each)(points || [], function(_, p) {\r\n p.dispose()\r\n })\r\n },\r\n updateDataType: function(settings) {\r\n var that = this;\r\n that.argumentType = settings.argumentType;\r\n that.valueType = settings.valueType;\r\n that.argumentAxisType = settings.argumentAxisType;\r\n that.valueAxisType = settings.valueAxisType;\r\n that.showZero = settings.showZero;\r\n this._argumentChecker = getValueChecker(settings.argumentAxisType, that.getArgumentAxis());\r\n this._valueChecker = getValueChecker(settings.valueAxisType, that.getValueAxis());\r\n return that\r\n },\r\n _argumentChecker: function() {\r\n return true\r\n },\r\n _valueChecker: function() {\r\n return true\r\n },\r\n getOptions: function() {\r\n return this._options\r\n },\r\n _getOldPoint: function(data, oldPointsByArgument, index) {\r\n var arg = data.argument && data.argument.valueOf();\r\n var point = (oldPointsByArgument[arg] || [])[0];\r\n if (point) {\r\n oldPointsByArgument[arg].splice(0, 1)\r\n }\r\n return point\r\n },\r\n updateData: function(data) {\r\n var that = this;\r\n var options = that._options;\r\n var nameField = options.nameField;\r\n data = data || [];\r\n if (data.length) {\r\n that._canRenderCompleteHandle = true\r\n }\r\n var dataSelector = this._getPointDataSelector();\r\n var itemsWithoutArgument = 0;\r\n that._data = data.reduce(function(data, dataItem, index) {\r\n var pointDataItem = dataSelector(dataItem);\r\n if ((0, _type.isDefined)(pointDataItem.argument)) {\r\n if (!nameField || dataItem[nameField] === options.nameFieldValue) {\r\n pointDataItem.index = index;\r\n data.push(pointDataItem)\r\n }\r\n } else {\r\n itemsWithoutArgument++\r\n }\r\n return data\r\n }, []);\r\n if (itemsWithoutArgument && itemsWithoutArgument === data.length) {\r\n that._incidentOccurred(\"W2002\", [that.name, that.getArgumentField()])\r\n }\r\n that._endUpdateData()\r\n },\r\n _getData: function() {\r\n var data = this._data || [];\r\n if (this.useAggregation()) {\r\n data = this._resample(this.getArgumentAxis().getAggregationInfo(this._useAllAggregatedPoints, this.argumentAxisType !== DISCRETE ? this.getArgumentRange() : {}), data)\r\n }\r\n return data\r\n },\r\n useAggregation: function() {\r\n var aggregation = this.getOptions().aggregation;\r\n return aggregation && aggregation.enabled\r\n },\r\n autoHidePointMarkersEnabled: _common.noop,\r\n usePointsToDefineAutoHiding: _common.noop,\r\n createPoints: function(useAllAggregatedPoints) {\r\n this._normalizeUsingAllAggregatedPoints(useAllAggregatedPoints);\r\n this._createPoints()\r\n },\r\n _normalizeUsingAllAggregatedPoints: function(useAllAggregatedPoints) {\r\n this._useAllAggregatedPoints = this.useAggregation() && (this.argumentAxisType === DISCRETE || (this._data || []).length > 1 && !!useAllAggregatedPoints)\r\n },\r\n _createPoints: function() {\r\n var that = this;\r\n var oldPointsByArgument = that.pointsByArgument || {};\r\n var data = that._getData();\r\n that.pointsByArgument = {};\r\n that._calculateErrorBars(data);\r\n var skippedFields = {};\r\n var points = data.reduce(function(points, pointDataItem) {\r\n if (that._checkData(pointDataItem, skippedFields)) {\r\n var pointIndex = points.length;\r\n var oldPoint = that._getOldPoint(pointDataItem, oldPointsByArgument, pointIndex);\r\n var point = that._createPoint(pointDataItem, pointIndex, oldPoint);\r\n points.push(point)\r\n }\r\n return points\r\n }, []);\r\n for (var field in skippedFields) {\r\n if (skippedFields[field] === data.length) {\r\n that._incidentOccurred(\"W2002\", [that.name, field])\r\n }\r\n }\r\n Object.keys(oldPointsByArgument).forEach(function(key) {\r\n return that._disposePoints(oldPointsByArgument[key])\r\n });\r\n that._points = points\r\n },\r\n _removeOldSegments: function() {\r\n var that = this;\r\n var startIndex = that._segments.length;\r\n (0, _iterator.each)(that._graphics.splice(startIndex, that._graphics.length) || [], function(_, elem) {\r\n that._removeElement(elem)\r\n });\r\n if (that._trackers) {\r\n (0, _iterator.each)(that._trackers.splice(startIndex, that._trackers.length) || [], function(_, elem) {\r\n elem.remove()\r\n })\r\n }\r\n },\r\n _drawElements: function(animationEnabled, firstDrawing, translateAllPoints) {\r\n var that = this;\r\n var points = that._points || [];\r\n var closeSegment = points[0] && points[0].hasValue() && that._options.closed;\r\n var groupForPoint = {\r\n markers: that._markersGroup,\r\n errorBars: that._errorBarGroup\r\n };\r\n that._drawnPoints = [];\r\n that._graphics = that._graphics || [];\r\n that._segments = [];\r\n var segments = points.reduce(function(segments, p) {\r\n var segment = segments[segments.length - 1];\r\n if (!p.translated || translateAllPoints) {\r\n p.translate();\r\n !translateAllPoints && p.setDefaultCoords()\r\n }\r\n if (p.hasValue() && p.hasCoords()) {\r\n translateAllPoints && that._drawPoint({\r\n point: p,\r\n groups: groupForPoint,\r\n hasAnimation: animationEnabled,\r\n firstDrawing: firstDrawing\r\n });\r\n segment.push(p)\r\n } else {\r\n if (!p.hasValue()) {\r\n segment.length && segments.push([])\r\n } else {\r\n p.setInvisibility()\r\n }\r\n }\r\n return segments\r\n }, [\r\n []\r\n ]);\r\n segments.forEach(function(segment, index) {\r\n if (segment.length) {\r\n that._drawSegment(segment, animationEnabled, index, closeSegment && index === this.length - 1)\r\n }\r\n }, segments);\r\n that._firstDrawing = !points.length;\r\n that._removeOldSegments();\r\n animationEnabled && that._animate(firstDrawing)\r\n },\r\n draw: function(animationEnabled, hideLayoutLabels, legendCallback) {\r\n var that = this;\r\n var firstDrawing = that._firstDrawing;\r\n that._legendCallback = legendCallback || that._legendCallback;\r\n if (!that._visible) {\r\n that._group.remove();\r\n return\r\n }\r\n that._appendInGroup();\r\n that._applyVisibleArea();\r\n that._setGroupsSettings(animationEnabled, firstDrawing);\r\n !firstDrawing && !that._resetApplyingAnimation && that._drawElements(false, firstDrawing, false);\r\n that._drawElements(animationEnabled, firstDrawing, true);\r\n hideLayoutLabels && that.hideLabels();\r\n if (that.isSelected()) {\r\n that._changeStyle(that.lastSelectionMode, void 0, true)\r\n } else {\r\n if (that.isHovered()) {\r\n that._changeStyle(that.lastHoverMode, void 0, true)\r\n } else {\r\n that._applyStyle(that._styles.normal)\r\n }\r\n }\r\n that._resetApplyingAnimation = false\r\n },\r\n _setLabelGroupSettings: function(animationEnabled) {\r\n var settings = {\r\n \"class\": \"dxc-labels\",\r\n \"pointer-events\": \"none\"\r\n };\r\n this._clipLabels && this._applyElementsClipRect(settings);\r\n this._applyClearingSettings(settings);\r\n animationEnabled && (settings.opacity = .001);\r\n this._labelsGroup.attr(settings).append(this._extGroups.labelsGroup)\r\n },\r\n _checkType: function(widgetType) {\r\n return !!seriesNS.mixins[widgetType][this.type]\r\n },\r\n _checkPolarBarType: function(widgetType, options) {\r\n return \"polar\" === widgetType && options.spiderWidget && this.type.indexOf(\"bar\") !== -1\r\n },\r\n _resetType: function(seriesType, widgetType) {\r\n var methodName;\r\n var methods;\r\n if (seriesType) {\r\n methods = seriesNS.mixins[widgetType][seriesType];\r\n for (methodName in methods) {\r\n delete this[methodName]\r\n }\r\n }\r\n },\r\n _setType: function(seriesType, widgetType) {\r\n var methodName;\r\n var methods = seriesNS.mixins[widgetType][seriesType];\r\n for (methodName in methods) {\r\n this[methodName] = methods[methodName]\r\n }\r\n },\r\n _setPointsView: function(view, target) {\r\n this.getPoints().forEach(function(point) {\r\n if (target !== point) {\r\n point.setView(view)\r\n }\r\n })\r\n },\r\n _resetPointsView: function(view, target) {\r\n this.getPoints().forEach(function(point) {\r\n if (target !== point) {\r\n point.resetView(view)\r\n }\r\n })\r\n },\r\n _resetNearestPoint: function() {\r\n var that = this;\r\n that._nearestPoint && null !== that._nearestPoint.series && that._nearestPoint.resetView(HOVER);\r\n that._nearestPoint = null\r\n },\r\n _setSelectedState: function(mode) {\r\n var that = this;\r\n that.lastSelectionMode = (0, _utils.normalizeEnum)(mode || that._options.selectionMode);\r\n that.fullState = that.fullState | SELECTED_STATE;\r\n that._resetNearestPoint();\r\n that._changeStyle(that.lastSelectionMode);\r\n if (that.lastSelectionMode !== NONE_MODE && that.isHovered() && includePointsMode(that.lastHoverMode)) {\r\n that._resetPointsView(HOVER)\r\n }\r\n },\r\n _releaseSelectedState: function() {\r\n var that = this;\r\n that.fullState = that.fullState & ~SELECTED_STATE;\r\n that._changeStyle(that.lastSelectionMode, SELECTION);\r\n if (that.lastSelectionMode !== NONE_MODE && that.isHovered() && includePointsMode(that.lastHoverMode)) {\r\n that._setPointsView(HOVER)\r\n }\r\n },\r\n isFullStackedSeries: function() {\r\n return 0 === this.type.indexOf(\"fullstacked\")\r\n },\r\n isStackedSeries: function() {\r\n return 0 === this.type.indexOf(\"stacked\")\r\n },\r\n resetApplyingAnimation: function(isFirstDrawing) {\r\n this._resetApplyingAnimation = true;\r\n if (isFirstDrawing) {\r\n this._firstDrawing = true\r\n }\r\n },\r\n isFinancialSeries: function() {\r\n return \"stock\" === this.type || \"candlestick\" === this.type\r\n },\r\n _canChangeView: function() {\r\n return !this.isSelected() && (0, _utils.normalizeEnum)(this._options.hoverMode) !== NONE_MODE\r\n },\r\n _changeStyle: function(mode, resetView, skipPoints) {\r\n var that = this;\r\n var state = that.fullState;\r\n var styles = [NORMAL, HOVER, SELECTION, SELECTION];\r\n if (\"none\" === that.lastHoverMode) {\r\n state &= ~HOVER_STATE\r\n }\r\n if (\"none\" === that.lastSelectionMode) {\r\n state &= ~SELECTED_STATE\r\n }\r\n if (includePointsMode(mode) && !skipPoints) {\r\n if (!resetView) {\r\n that._setPointsView(styles[state])\r\n } else {\r\n that._resetPointsView(resetView)\r\n }\r\n }\r\n that._legendCallback([RESET_ITEM, APPLY_HOVER, APPLY_SELECTED, APPLY_SELECTED][state]);\r\n that._applyStyle(that._styles[styles[state]])\r\n },\r\n updateHover: function(x, y) {\r\n var that = this;\r\n var currentNearestPoint = that._nearestPoint;\r\n var point = that.isHovered() && that.lastHoverMode === NEAREST_POINT && that.getNeighborPoint(x, y);\r\n if (point !== currentNearestPoint && !(that.isSelected() && that.lastSelectionMode !== NONE_MODE)) {\r\n that._resetNearestPoint();\r\n if (point) {\r\n point.setView(HOVER);\r\n that._nearestPoint = point\r\n }\r\n }\r\n },\r\n _getMainAxisName: function() {\r\n return this._options.rotated ? \"X\" : \"Y\"\r\n },\r\n areLabelsVisible: function() {\r\n return !(0, _type.isDefined)(this._options.maxLabelCount) || this._points.length <= this._options.maxLabelCount\r\n },\r\n getLabelVisibility: function() {\r\n return this.areLabelsVisible() && this._options.label && this._options.label.visible\r\n },\r\n customizePoint: function customizePoint(point, pointData) {\r\n var that = this;\r\n var options = that._options;\r\n var customizePoint = options.customizePoint;\r\n var customizeObject;\r\n var pointOptions;\r\n var customLabelOptions;\r\n var customOptions;\r\n var customizeLabel = options.customizeLabel;\r\n var useLabelCustomOptions;\r\n var usePointCustomOptions;\r\n if (customizeLabel && customizeLabel.call) {\r\n customizeObject = (0, _extend2.extend)({\r\n seriesName: that.name\r\n }, pointData);\r\n customizeObject.series = that;\r\n customLabelOptions = customizeLabel.call(customizeObject, customizeObject);\r\n useLabelCustomOptions = customLabelOptions && !(0, _type.isEmptyObject)(customLabelOptions);\r\n customLabelOptions = useLabelCustomOptions ? (0, _extend2.extend)(true, {}, options.label, customLabelOptions) : null\r\n }\r\n if (customizePoint && customizePoint.call) {\r\n customizeObject = customizeObject || (0, _extend2.extend)({\r\n seriesName: that.name\r\n }, pointData);\r\n customizeObject.series = that;\r\n customOptions = customizePoint.call(customizeObject, customizeObject);\r\n usePointCustomOptions = customOptions && !(0, _type.isEmptyObject)(customOptions)\r\n }\r\n if (useLabelCustomOptions || usePointCustomOptions) {\r\n pointOptions = that._parsePointOptions(that._preparePointOptions(customOptions), customLabelOptions || options.label, pointData, point);\r\n pointOptions.styles.useLabelCustomOptions = useLabelCustomOptions;\r\n pointOptions.styles.usePointCustomOptions = usePointCustomOptions;\r\n point.updateOptions(pointOptions)\r\n }\r\n },\r\n show: function() {\r\n if (!this._visible) {\r\n this._changeVisibility(true)\r\n }\r\n },\r\n hide: function() {\r\n if (this._visible) {\r\n this._changeVisibility(false)\r\n }\r\n },\r\n _changeVisibility: function(visibility) {\r\n var that = this;\r\n that._visible = that._options.visible = visibility;\r\n that._updatePointsVisibility();\r\n that.hidePointTooltip();\r\n that._options.visibilityChanged(that)\r\n },\r\n _updatePointsVisibility: _common.noop,\r\n hideLabels: function() {\r\n (0, _iterator.each)(this._points, function(_, point) {\r\n point._label.draw(false)\r\n })\r\n },\r\n _parsePointOptions: function(pointOptions, labelOptions, data, point) {\r\n var that = this;\r\n var options = that._options;\r\n var styles = that._createPointStyles(pointOptions, data, point);\r\n var parsedOptions = (0, _extend2.extend)({}, pointOptions, {\r\n type: options.type,\r\n rotated: options.rotated,\r\n styles: styles,\r\n widgetType: options.widgetType,\r\n visibilityChanged: options.visibilityChanged\r\n });\r\n parsedOptions.label = getLabelOptions(labelOptions, styles.normal.fill);\r\n if (that.areErrorBarsVisible()) {\r\n parsedOptions.errorBars = options.valueErrorBar\r\n }\r\n return parsedOptions\r\n },\r\n _preparePointOptions: function(customOptions) {\r\n var pointOptions = this._getOptionsForPoint();\r\n return customOptions ? mergePointOptions(pointOptions, customOptions) : pointOptions\r\n },\r\n _getMarkerGroupOptions: function() {\r\n return (0, _extend2.extend)(false, {}, this._getOptionsForPoint(), {\r\n hoverStyle: {},\r\n selectionStyle: {}\r\n })\r\n },\r\n _getAggregationMethod: function(isDiscrete, aggregateByCategory) {\r\n var options = this.getOptions().aggregation;\r\n var method = (0, _utils.normalizeEnum)(options.method);\r\n var customAggregator = \"custom\" === method && options.calculate;\r\n var aggregator;\r\n if (isDiscrete && !aggregateByCategory) {\r\n aggregator = function(_ref) {\r\n var data = _ref.data;\r\n return data[0]\r\n }\r\n } else {\r\n aggregator = this._aggregators[method] || this._aggregators[this._defaultAggregator]\r\n }\r\n return customAggregator || aggregator\r\n },\r\n _resample: function(_ref2, data) {\r\n var interval = _ref2.interval,\r\n ticks = _ref2.ticks,\r\n aggregateByCategory = _ref2.aggregateByCategory;\r\n var that = this;\r\n var isDiscrete = that.argumentAxisType === DISCRETE || that.valueAxisType === DISCRETE;\r\n var dataIndex = 0;\r\n var dataSelector = this._getPointDataSelector();\r\n var options = that.getOptions();\r\n var addAggregatedData = function(target, data, aggregationInfo) {\r\n if (!data) {\r\n return\r\n }\r\n var processData = function(d) {\r\n var pointData = d && dataSelector(d, options);\r\n if (pointData && that._checkData(pointData)) {\r\n pointData.aggregationInfo = aggregationInfo;\r\n target.push(pointData)\r\n }\r\n };\r\n if (Array.isArray(data)) {\r\n data.forEach(processData)\r\n } else {\r\n processData(data)\r\n }\r\n };\r\n var aggregationMethod = this._getAggregationMethod(isDiscrete, aggregateByCategory);\r\n if (isDiscrete) {\r\n if (aggregateByCategory) {\r\n var categories = this.getArgumentAxis().getTranslator().getBusinessRange().categories;\r\n var groups = categories.reduce(function(g, category) {\r\n g[category.valueOf()] = [];\r\n return g\r\n }, {});\r\n data.forEach(function(dataItem) {\r\n groups[dataItem.argument.valueOf()].push(dataItem)\r\n });\r\n return categories.reduce(function(result, c) {\r\n addAggregatedData(result, aggregationMethod({\r\n aggregationInterval: null,\r\n intervalStart: c,\r\n intervalEnd: c,\r\n data: groups[c.valueOf()].map(getData)\r\n }, that));\r\n return result\r\n }, [])\r\n } else {\r\n return data.reduce(function(result, dataItem, index, data) {\r\n result[1].push(dataItem);\r\n if (index === data.length - 1 || (index + 1) % interval === 0) {\r\n var dataInInterval = result[1];\r\n var aggregationInfo = {\r\n aggregationInterval: interval,\r\n data: dataInInterval.map(getData)\r\n };\r\n addAggregatedData(result[0], aggregationMethod(aggregationInfo, that));\r\n result[1] = []\r\n }\r\n return result\r\n }, [\r\n [],\r\n []\r\n ])[0]\r\n }\r\n }\r\n var aggregatedData = [];\r\n for (var i = 1; i < ticks.length; i++) {\r\n var intervalEnd = ticks[i];\r\n var intervalStart = ticks[i - 1];\r\n var dataInInterval = [];\r\n while (data[dataIndex] && data[dataIndex].argument < intervalEnd) {\r\n if (data[dataIndex].argument >= intervalStart) {\r\n dataInInterval.push(data[dataIndex])\r\n }\r\n dataIndex++\r\n }\r\n var aggregationInfo = {\r\n intervalStart: intervalStart,\r\n intervalEnd: intervalEnd,\r\n aggregationInterval: interval,\r\n data: dataInInterval.map(getData)\r\n };\r\n addAggregatedData(aggregatedData, aggregationMethod(aggregationInfo, that), aggregationInfo)\r\n }\r\n that._endUpdateData();\r\n return aggregatedData\r\n },\r\n canRenderCompleteHandle: function() {\r\n var result = this._canRenderCompleteHandle;\r\n delete this._canRenderCompleteHandle;\r\n return !!result\r\n },\r\n isHovered: function() {\r\n return !!(1 & this.fullState)\r\n },\r\n isSelected: function() {\r\n return !!(2 & this.fullState)\r\n },\r\n isVisible: function() {\r\n return this._visible\r\n },\r\n getAllPoints: function() {\r\n this._createAllAggregatedPoints();\r\n return (this._points || []).slice()\r\n },\r\n getPointByPos: function(pos) {\r\n this._createAllAggregatedPoints();\r\n return (this._points || [])[pos]\r\n },\r\n getVisiblePoints: function() {\r\n return (this._drawnPoints || []).slice()\r\n },\r\n selectPoint: function(point) {\r\n if (!point.isSelected()) {\r\n setPointSelectedState(point, this._legendCallback);\r\n this._eventPipe({\r\n action: POINT_SELECT,\r\n target: point\r\n });\r\n this._eventTrigger(POINT_SELECTION_CHANGED, {\r\n target: point\r\n })\r\n }\r\n },\r\n deselectPoint: function(point) {\r\n if (point.isSelected()) {\r\n releasePointSelectedState(point, this._legendCallback);\r\n this._eventPipe({\r\n action: POINT_DESELECT,\r\n target: point\r\n });\r\n this._eventTrigger(POINT_SELECTION_CHANGED, {\r\n target: point\r\n })\r\n }\r\n },\r\n hover: function(mode) {\r\n var that = this;\r\n var eventTrigger = that._eventTrigger;\r\n if (that.isHovered()) {\r\n return\r\n }\r\n that.lastHoverMode = (0, _utils.normalizeEnum)(mode || that._options.hoverMode);\r\n that.fullState = that.fullState | HOVER_STATE;\r\n that._changeStyle(that.lastHoverMode, void 0, that.isSelected() && that.lastSelectionMode !== NONE_MODE);\r\n eventTrigger(SERIES_HOVER_CHANGED, {\r\n target: that\r\n })\r\n },\r\n clearHover: function() {\r\n var that = this;\r\n var eventTrigger = that._eventTrigger;\r\n if (!that.isHovered()) {\r\n return\r\n }\r\n that._resetNearestPoint();\r\n that.fullState = that.fullState & ~HOVER_STATE;\r\n that._changeStyle(that.lastHoverMode, HOVER, that.isSelected() && that.lastSelectionMode !== NONE_MODE);\r\n eventTrigger(SERIES_HOVER_CHANGED, {\r\n target: that\r\n })\r\n },\r\n hoverPoint: function(point) {\r\n var that = this;\r\n if (!point.isHovered()) {\r\n point.clearHover();\r\n setPointHoverState(point, that._legendCallback);\r\n that._canChangeView() && that._applyStyle(that._styles.hover);\r\n that._eventPipe({\r\n action: POINT_HOVER,\r\n target: point\r\n });\r\n that._eventTrigger(POINT_HOVER_CHANGED, {\r\n target: point\r\n })\r\n }\r\n },\r\n clearPointHover: function() {\r\n var that = this;\r\n that.getPoints().some(function(currentPoint) {\r\n if (currentPoint.isHovered()) {\r\n releasePointHoverState(currentPoint, that._legendCallback);\r\n that._canChangeView() && that._applyStyle(that._styles.normal);\r\n that._eventPipe({\r\n action: CLEAR_POINT_HOVER,\r\n target: currentPoint\r\n });\r\n that._eventTrigger(POINT_HOVER_CHANGED, {\r\n target: currentPoint\r\n });\r\n return true\r\n }\r\n return false\r\n })\r\n },\r\n showPointTooltip: function(point) {\r\n triggerEvent(this._extGroups.seriesGroup, \"showpointtooltip\", point)\r\n },\r\n hidePointTooltip: function(point) {\r\n triggerEvent(this._extGroups.seriesGroup, \"hidepointtooltip\", point)\r\n },\r\n select: function() {\r\n var that = this;\r\n if (!that.isSelected()) {\r\n that._setSelectedState(that._options.selectionMode);\r\n that._eventPipe({\r\n action: SERIES_SELECT,\r\n target: that\r\n });\r\n that._group.toForeground();\r\n that._eventTrigger(SERIES_SELECTION_CHANGED, {\r\n target: that\r\n })\r\n }\r\n },\r\n clearSelection: function() {\r\n var that = this;\r\n if (that.isSelected()) {\r\n that._releaseSelectedState();\r\n that._eventTrigger(SERIES_SELECTION_CHANGED, {\r\n target: that\r\n })\r\n }\r\n },\r\n getPointsByArg: function(arg, skipPointsCreation) {\r\n var that = this;\r\n var argValue = arg.valueOf();\r\n var points = that.pointsByArgument[argValue];\r\n if (!points && !skipPointsCreation && that._createAllAggregatedPoints()) {\r\n points = that.pointsByArgument[argValue]\r\n }\r\n return points || []\r\n },\r\n _createAllAggregatedPoints: function() {\r\n if (this.useAggregation() && !this._useAllAggregatedPoints) {\r\n this.createPoints(true);\r\n return true\r\n }\r\n return false\r\n },\r\n getPointsByKeys: function(arg) {\r\n return this.getPointsByArg(arg)\r\n },\r\n notify: function(data) {\r\n var that = this;\r\n var action = data.action;\r\n var seriesModes = that._seriesModes;\r\n var target = data.target;\r\n var targetOptions = target.getOptions();\r\n var pointHoverMode = (0, _utils.normalizeEnum)(targetOptions.hoverMode);\r\n var selectionModeOfPoint = (0, _utils.normalizeEnum)(targetOptions.selectionMode);\r\n if (action === POINT_HOVER) {\r\n that._hoverPointHandler(target, pointHoverMode, data.notifyLegend)\r\n } else {\r\n if (action === CLEAR_POINT_HOVER) {\r\n that._clearPointHoverHandler(target, pointHoverMode, data.notifyLegend)\r\n } else {\r\n if (action === SERIES_SELECT) {\r\n target !== that && \"single\" === seriesModes.seriesSelectionMode && that.clearSelection()\r\n } else {\r\n if (action === POINT_SELECT) {\r\n if (\"single\" === seriesModes.pointSelectionMode) {\r\n that.getPoints().some(function(currentPoint) {\r\n if (currentPoint !== target && currentPoint.isSelected()) {\r\n that.deselectPoint(currentPoint);\r\n return true\r\n }\r\n return false\r\n })\r\n }\r\n that._selectPointHandler(target, selectionModeOfPoint)\r\n } else {\r\n if (action === POINT_DESELECT) {\r\n that._deselectPointHandler(target, selectionModeOfPoint)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n },\r\n _selectPointHandler: function(target, mode) {\r\n var that = this;\r\n if (mode === ALL_SERIES_POINTS) {\r\n target.series === that && that._setPointsView(SELECTION, target)\r\n } else {\r\n if (mode === ALL_ARGUMENT_POINTS) {\r\n that.getPointsByKeys(target.argument, target.argumentIndex).forEach(function(currentPoint) {\r\n currentPoint !== target && currentPoint.setView(SELECTION)\r\n })\r\n }\r\n }\r\n },\r\n _deselectPointHandler: function(target, mode) {\r\n if (mode === ALL_SERIES_POINTS) {\r\n target.series === this && this._resetPointsView(SELECTION, target)\r\n } else {\r\n if (mode === ALL_ARGUMENT_POINTS) {\r\n this.getPointsByKeys(target.argument, target.argumentIndex).forEach(function(currentPoint) {\r\n currentPoint !== target && currentPoint.resetView(SELECTION)\r\n })\r\n }\r\n }\r\n },\r\n _hoverPointHandler: function(target, mode, notifyLegend) {\r\n var that = this;\r\n if (target.series !== that && mode === ALL_ARGUMENT_POINTS) {\r\n that.getPointsByKeys(target.argument, target.argumentIndex).forEach(function(currentPoint) {\r\n currentPoint.setView(HOVER)\r\n });\r\n notifyLegend && that._legendCallback(target)\r\n } else {\r\n if (mode === ALL_SERIES_POINTS && target.series === that) {\r\n that._setPointsView(HOVER, target)\r\n }\r\n }\r\n },\r\n _clearPointHoverHandler: function(target, mode, notifyLegend) {\r\n var that = this;\r\n if (mode === ALL_ARGUMENT_POINTS) {\r\n target.series !== that && that.getPointsByKeys(target.argument, target.argumentIndex).forEach(function(currentPoint) {\r\n currentPoint.resetView(HOVER)\r\n });\r\n notifyLegend && that._legendCallback(target)\r\n } else {\r\n if (mode === ALL_SERIES_POINTS && target.series === that) {\r\n that._resetPointsView(HOVER, target)\r\n }\r\n }\r\n },\r\n _deletePoints: function() {\r\n var that = this;\r\n that._disposePoints(that._points);\r\n that._points = that._drawnPoints = null\r\n },\r\n _deleteTrackers: function() {\r\n var that = this;\r\n (0, _iterator.each)(that._trackers || [], function(_, tracker) {\r\n tracker.remove()\r\n });\r\n that._trackersGroup && that._trackersGroup.dispose();\r\n that._trackers = that._trackersGroup = null\r\n },\r\n dispose: function() {\r\n var that = this;\r\n that._deletePoints();\r\n that._group.dispose();\r\n that._labelsGroup && that._labelsGroup.dispose();\r\n that._errorBarGroup && that._errorBarGroup.dispose();\r\n that._deleteTrackers();\r\n that._group = that._extGroups = that._markersGroup = that._elementsGroup = that._bordersGroup = that._labelsGroup = that._errorBarGroup = that._graphics = that._rangeData = that._renderer = that._styles = that._options = that._pointOptions = that._drawnPoints = that.pointsByArgument = that._segments = that._prevSeries = null\r\n },\r\n correctPosition: _common.noop,\r\n drawTrackers: _common.noop,\r\n getNeighborPoint: _common.noop,\r\n areErrorBarsVisible: _common.noop,\r\n getMarginOptions: function() {\r\n return this._patchMarginOptions({\r\n percentStick: this.isFullStackedSeries()\r\n })\r\n },\r\n getColor: function() {\r\n return this.getLegendStyles().normal.fill\r\n },\r\n getOpacity: function() {\r\n return this._options.opacity\r\n },\r\n getStackName: function() {\r\n return this._stackName\r\n },\r\n getBarOverlapGroup: function() {\r\n return this._options.barOverlapGroup\r\n },\r\n getPointByCoord: function(x, y) {\r\n var point = this.getNeighborPoint(x, y);\r\n return null !== point && void 0 !== point && point.coordsIn(x, y) ? point : null\r\n },\r\n getValueAxis: function() {\r\n return this._valueAxis\r\n },\r\n getArgumentAxis: function() {\r\n return this._argumentAxis\r\n },\r\n getMarkersGroup: function() {\r\n return this._markersGroup\r\n },\r\n getRenderer: function() {\r\n return this._renderer\r\n }\r\n};\r\nvar mixins = seriesNS.mixins;\r\nexports.mixins = mixins;\r\n","/**\r\n * DevExtreme (viz/sankey/sankey.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _constants = require(\"./constants\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _node_item = _interopRequireDefault(require(\"./node_item\"));\r\nvar _link_item = _interopRequireDefault(require(\"./link_item\"));\r\nvar _layout = _interopRequireDefault(require(\"./layout\"));\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _base_widget = _interopRequireDefault(require(\"../core/base_widget\"));\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _data_source = require(\"../core/data_source\");\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 moveLabel(node, labelOptions, availableLabelWidth, rect) {\r\n if (node._label.getBBox().width > availableLabelWidth) {\r\n node.labelText.applyEllipsis(availableLabelWidth)\r\n }\r\n var bBox = node._label.getBBox();\r\n var verticalOffset = labelOptions.verticalOffset;\r\n var horizontalOffset = labelOptions.horizontalOffset;\r\n var labelOffsetY = Math.round(node.rect.y + node.rect.height / 2 - bBox.y - bBox.height / 2) + verticalOffset;\r\n var labelOffsetX = node.rect.x + horizontalOffset + node.rect.width - bBox.x;\r\n if (labelOffsetX + bBox.width >= rect[2] - rect[0]) {\r\n labelOffsetX = node.rect.x - horizontalOffset - bBox.x - bBox.width\r\n }\r\n if (labelOffsetY >= rect[3]) {\r\n labelOffsetY = rect[3]\r\n }\r\n if (labelOffsetY - bBox.height < rect[1]) {\r\n labelOffsetY = node.rect.y - bBox.y + verticalOffset\r\n }\r\n node.labelText.attr({\r\n translateX: labelOffsetX,\r\n translateY: labelOffsetY\r\n })\r\n}\r\n\r\nfunction getConnectedLinks(layout, nodeName, linkType) {\r\n var result = [];\r\n var attrName = \"in\" === linkType ? \"_to\" : \"_from\";\r\n var invertedAttrName = \"in\" === linkType ? \"_from\" : \"_to\";\r\n layout.links.map(function(link) {\r\n return link[attrName]._name === nodeName\r\n }).forEach(function(connected, idx) {\r\n connected && result.push({\r\n index: idx,\r\n weight: layout.links[idx]._weight,\r\n node: layout.links[idx][invertedAttrName]._name\r\n })\r\n });\r\n return result\r\n}\r\nvar dxSankey = _base_widget.default.inherit({\r\n _rootClass: \"dxs-sankey\",\r\n _rootClassPrefix: \"dxs\",\r\n _proxyData: [],\r\n _optionChangesMap: {\r\n dataSource: \"DATA_SOURCE\",\r\n sortData: \"DATA_SOURCE\",\r\n alignment: \"DATA_SOURCE\",\r\n node: \"BUILD_LAYOUT\",\r\n link: \"BUILD_LAYOUT\",\r\n palette: \"BUILD_LAYOUT\",\r\n paletteExtensionMode: \"BUILD_LAYOUT\"\r\n },\r\n _themeDependentChanges: [\"BUILD_LAYOUT\"],\r\n _getDefaultSize: function() {\r\n return {\r\n width: 400,\r\n height: 400\r\n }\r\n },\r\n _themeSection: \"sankey\",\r\n _fontFields: [\"label.font\"],\r\n _optionChangesOrder: [\"DATA_SOURCE\"],\r\n _initialChanges: [\"DATA_SOURCE\"],\r\n _initCore: function() {\r\n this._groupLinks = this._renderer.g().append(this._renderer.root);\r\n this._groupNodes = this._renderer.g().append(this._renderer.root);\r\n this._groupLabels = this._renderer.g().attr({\r\n \"class\": this._rootClassPrefix + \"-labels\"\r\n }).append(this._renderer.root);\r\n this._drawLabels = true;\r\n this._nodes = [];\r\n this._links = [];\r\n this._gradients = []\r\n },\r\n _disposeCore: _common.noop,\r\n _applySize: function(rect) {\r\n this._rect = rect.slice();\r\n var adaptiveLayout = this._getOption(\"adaptiveLayout\");\r\n if (adaptiveLayout.keepLabels || this._rect[2] - this._rect[0] > adaptiveLayout.width) {\r\n this._drawLabels = true\r\n } else {\r\n this._drawLabels = false\r\n }\r\n this._change([\"BUILD_LAYOUT\"]);\r\n return this._rect\r\n },\r\n _eventsMap: {\r\n onNodeHoverChanged: {\r\n name: \"nodeHoverChanged\"\r\n },\r\n onLinkHoverChanged: {\r\n name: \"linkHoverChanged\"\r\n }\r\n },\r\n _customChangesOrder: [\"BUILD_LAYOUT\", \"NODES_DRAW\", \"LINKS_DRAW\", \"LABELS\", \"DRAWN\"],\r\n _dataSourceChangedHandler: function() {\r\n this._requestChange([\"BUILD_LAYOUT\"])\r\n },\r\n _change_DRAWN: function() {\r\n this._drawn()\r\n },\r\n _change_DATA_SOURCE: function() {\r\n this._change([\"DRAWN\"]);\r\n this._updateDataSource()\r\n },\r\n _change_LABELS: function() {\r\n this._applyLabelsAppearance()\r\n },\r\n _change_BUILD_LAYOUT: function() {\r\n this._groupNodes.clear();\r\n this._groupLinks.clear();\r\n this._groupLabels.clear();\r\n this._buildLayout()\r\n },\r\n _change_NODES_DRAW: function() {\r\n var that = this;\r\n var nodes = that._nodes;\r\n nodes.forEach(function(node, index) {\r\n var element = that._renderer.rect().attr(node.rect).append(that._groupNodes);\r\n node.element = element\r\n });\r\n this._applyNodesAppearance()\r\n },\r\n _change_LINKS_DRAW: function() {\r\n var that = this;\r\n var links = that._links;\r\n links.forEach(function(link, index) {\r\n var group = that._renderer.g().attr({\r\n \"class\": \"link\",\r\n \"data-link-idx\": index\r\n }).append(that._groupLinks);\r\n link.overlayElement = that._renderer.path([], \"area\").attr({\r\n d: link.d\r\n }).append(group);\r\n link.element = that._renderer.path([], \"area\").attr({\r\n d: link.d\r\n }).append(group)\r\n });\r\n this._applyLinksAppearance()\r\n },\r\n _suspend: function() {\r\n if (!this._applyingChanges) {\r\n this._suspendChanges()\r\n }\r\n },\r\n _resume: function() {\r\n if (!this._applyingChanges) {\r\n this._resumeChanges()\r\n }\r\n },\r\n _showTooltip: _common.noop,\r\n hideTooltip: _common.noop,\r\n clearHover: function() {\r\n this._suspend();\r\n this._nodes.forEach(function(node) {\r\n node.isHovered() && node.hover(false)\r\n });\r\n this._links.forEach(function(link) {\r\n link.isHovered() && link.hover(false);\r\n link.isAdjacentNodeHovered() && link.adjacentNodeHover(false)\r\n });\r\n this._resume()\r\n },\r\n _applyNodesAppearance: function() {\r\n this._nodes.forEach(function(node) {\r\n var state = node.getState();\r\n node.element.smartAttr(node.states[state])\r\n })\r\n },\r\n _applyLinksAppearance: function() {\r\n this._links.forEach(function(link) {\r\n var state = link.getState();\r\n link.element.smartAttr(link.states[state]);\r\n link.overlayElement.smartAttr(link.overlayStates[state])\r\n })\r\n },\r\n _hitTestTargets: function(x, y) {\r\n var that = this;\r\n var data;\r\n this._proxyData.some(function(callback) {\r\n data = callback.call(that, x, y);\r\n if (data) {\r\n return true\r\n }\r\n });\r\n return data\r\n },\r\n _getData: function() {\r\n var that = this;\r\n var data = that._dataSourceItems() || [];\r\n var sourceField = that._getOption(\"sourceField\", true);\r\n var targetField = that._getOption(\"targetField\", true);\r\n var weightField = that._getOption(\"weightField\", true);\r\n var processedData = [];\r\n data.forEach(function(item) {\r\n var hasItemOwnProperty = Object.prototype.hasOwnProperty.bind(item);\r\n if (!hasItemOwnProperty(sourceField)) {\r\n that._incidentOccurred(\"E2007\", sourceField)\r\n } else {\r\n if (!hasItemOwnProperty(targetField)) {\r\n that._incidentOccurred(\"E2007\", targetField)\r\n } else {\r\n if (!hasItemOwnProperty(weightField)) {\r\n that._incidentOccurred(\"E2007\", weightField)\r\n } else {\r\n if (!(0, _type.isString)(item[sourceField])) {\r\n that._incidentOccurred(\"E2008\", sourceField)\r\n } else {\r\n if (!(0, _type.isString)(item[targetField])) {\r\n that._incidentOccurred(\"E2008\", targetField)\r\n } else {\r\n if (!(0, _type.isNumeric)(item[weightField]) || item[weightField] <= 0) {\r\n that._incidentOccurred(\"E2009\", weightField)\r\n } else {\r\n processedData.push([item[sourceField], item[targetField], item[weightField]])\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n });\r\n return processedData\r\n },\r\n _buildLayout: function() {\r\n var _this = this;\r\n var that = this;\r\n var data = that._getData();\r\n var availableRect = this._rect;\r\n var nodeOptions = that._getOption(\"node\");\r\n var sortData = that._getOption(\"sortData\");\r\n var layoutBuilder = that._getOption(\"layoutBuilder\", true) || _layout.default;\r\n var rect = {\r\n x: availableRect[0],\r\n y: availableRect[1],\r\n width: availableRect[2] - availableRect[0],\r\n height: availableRect[3] - availableRect[1]\r\n };\r\n var layout = layoutBuilder.computeLayout(data, sortData, {\r\n availableRect: rect,\r\n nodePadding: nodeOptions.padding,\r\n nodeWidth: nodeOptions.width,\r\n nodeAlign: that._getOption(\"alignment\", true)\r\n }, that._incidentOccurred);\r\n that._layoutMap = layout;\r\n if (!Object.prototype.hasOwnProperty.call(layout, \"error\")) {\r\n var nodeColors = {};\r\n var nodeIdx = 0;\r\n var linkOptions = that._getOption(\"link\");\r\n var totalNodesNum = layout.nodes.map(function(item) {\r\n return item.length\r\n }).reduce(function(previousValue, currentValue) {\r\n return previousValue + currentValue\r\n }, 0);\r\n var palette = that._themeManager.createPalette(that._getOption(\"palette\", true), {\r\n useHighlight: true,\r\n extensionMode: that._getOption(\"paletteExtensionMode\", true),\r\n count: totalNodesNum\r\n });\r\n that._nodes = [];\r\n that._links = [];\r\n that._gradients.forEach(function(gradient) {\r\n gradient.dispose()\r\n });\r\n that._gradients = [];\r\n that._shadowFilter && that._shadowFilter.dispose();\r\n layout.nodes.forEach(function(cascadeNodes) {\r\n cascadeNodes.forEach(function(node) {\r\n var color = nodeOptions.color || palette.getNextColor();\r\n var nodeItem = new _node_item.default(that, {\r\n id: nodeIdx,\r\n color: color,\r\n rect: node,\r\n options: nodeOptions,\r\n linksIn: getConnectedLinks(layout, node._name, \"in\"),\r\n linksOut: getConnectedLinks(layout, node._name, \"out\")\r\n });\r\n that._nodes.push(nodeItem);\r\n nodeIdx++;\r\n nodeColors[node._name] = color\r\n })\r\n });\r\n layout.links.forEach(function(link) {\r\n var gradient = null;\r\n if (linkOptions.colorMode === _constants.COLOR_MODE_GRADIENT) {\r\n gradient = that._renderer.linearGradient([{\r\n offset: \"0%\",\r\n \"stop-color\": nodeColors[link._from._name]\r\n }, {\r\n offset: \"100%\",\r\n \"stop-color\": nodeColors[link._to._name]\r\n }]);\r\n _this._gradients.push(gradient)\r\n }\r\n var color = linkOptions.color;\r\n if (linkOptions.colorMode === _constants.COLOR_MODE_SOURCE) {\r\n color = nodeColors[link._from._name]\r\n } else {\r\n if (linkOptions.colorMode === _constants.COLOR_MODE_TARGET) {\r\n color = nodeColors[link._to._name]\r\n }\r\n }\r\n var linkItem = new _link_item.default(that, {\r\n d: link.d,\r\n boundingRect: link._boundingRect,\r\n color: color,\r\n options: linkOptions,\r\n connection: {\r\n source: link._from._name,\r\n target: link._to._name,\r\n weight: link._weight\r\n },\r\n gradient: gradient\r\n });\r\n that._links.push(linkItem)\r\n });\r\n that._renderer.initHatching();\r\n that._change([\"NODES_DRAW\", \"LINKS_DRAW\", \"LABELS\"])\r\n }\r\n that._change([\"DRAWN\"])\r\n },\r\n _applyLabelsAppearance: function() {\r\n var that = this;\r\n var labelOptions = that._getOption(\"label\");\r\n var availableWidth = that._rect[2] - that._rect[0];\r\n var nodeOptions = that._getOption(\"node\");\r\n that._shadowFilter = that._renderer.shadowFilter(\"-50%\", \"-50%\", \"200%\", \"200%\").attr(labelOptions.shadow);\r\n that._groupLabels.clear();\r\n if (that._drawLabels && labelOptions.visible) {\r\n var availableLabelWidth = (availableWidth - (nodeOptions.width + labelOptions.horizontalOffset) - that._layoutMap.cascades.length * nodeOptions.width) / (that._layoutMap.cascades.length - 1) - labelOptions.horizontalOffset;\r\n that._nodes.forEach(function(node) {\r\n that._createLabel(node, labelOptions, that._shadowFilter.id);\r\n moveLabel(node, labelOptions, availableLabelWidth, that._rect)\r\n });\r\n if (\"none\" !== labelOptions.overlappingBehavior) {\r\n that._nodes.forEach(function(thisNode) {\r\n var thisBox = thisNode._label.getBBox();\r\n that._nodes.forEach(function(otherNode) {\r\n var otherBox = otherNode._label.getBBox();\r\n if (thisNode.id !== otherNode.id && _layout.default.overlap(thisBox, otherBox)) {\r\n if (\"ellipsis\" === labelOptions.overlappingBehavior) {\r\n thisNode.labelText.applyEllipsis(otherBox.x - thisBox.x)\r\n } else {\r\n if (\"hide\" === labelOptions.overlappingBehavior) {\r\n thisNode.labelText.remove()\r\n }\r\n }\r\n }\r\n })\r\n })\r\n }\r\n }\r\n },\r\n _createLabel: function(node, labelOptions, filter) {\r\n var textData = labelOptions.customizeText(node);\r\n var settings = node.getLabelAttributes(labelOptions, filter);\r\n if (textData) {\r\n node._label = this._renderer.g().append(this._groupLabels);\r\n node.labelText = this._renderer.text(textData).attr(settings.attr).css(settings.css);\r\n node.labelText.append(node._label)\r\n }\r\n },\r\n _getMinSize: function() {\r\n var adaptiveLayout = this._getOption(\"adaptiveLayout\");\r\n return [adaptiveLayout.width, adaptiveLayout.height]\r\n },\r\n getAllNodes: function() {\r\n return this._nodes.slice()\r\n },\r\n getAllLinks: function() {\r\n return this._links.slice()\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxSankey\", dxSankey);\r\nvar _default = dxSankey;\r\nexports.default = _default;\r\ndxSankey.addPlugin(_data_source.plugin);\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/sankey/constants.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.COLOR_MODE_TARGET = exports.COLOR_MODE_SOURCE = exports.COLOR_MODE_NONE = exports.COLOR_MODE_GRADIENT = void 0;\r\nvar COLOR_MODE_GRADIENT = \"gradient\";\r\nexports.COLOR_MODE_GRADIENT = COLOR_MODE_GRADIENT;\r\nvar COLOR_MODE_SOURCE = \"source\";\r\nexports.COLOR_MODE_SOURCE = COLOR_MODE_SOURCE;\r\nvar COLOR_MODE_TARGET = \"target\";\r\nexports.COLOR_MODE_TARGET = COLOR_MODE_TARGET;\r\nvar COLOR_MODE_NONE = \"none\";\r\nexports.COLOR_MODE_NONE = COLOR_MODE_NONE;\r\n","/**\r\n * DevExtreme (viz/sankey/graph.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar WHITE = \"white\";\r\nvar GRAY = \"gray\";\r\nvar BLACK = \"black\";\r\nvar routines = {\r\n maxOfArray: function(arr, callback) {\r\n var m = 0;\r\n var callback_function = function(v) {\r\n return v\r\n };\r\n if (callback) {\r\n callback_function = callback\r\n }\r\n for (var i = 0; i < arr.length; i++) {\r\n if (callback_function(arr[i]) > m) {\r\n m = callback_function(arr[i])\r\n }\r\n }\r\n return m\r\n }\r\n};\r\nvar getVertices = function(links) {\r\n var vert = [];\r\n links.forEach(function(link) {\r\n if (vert.indexOf(link[0]) === -1) {\r\n vert.push(link[0])\r\n }\r\n if (vert.indexOf(link[1]) === -1) {\r\n vert.push(link[1])\r\n }\r\n });\r\n return vert\r\n};\r\nvar getAdjacentVertices = function(links, vertex) {\r\n var avert = [];\r\n links.forEach(function(link) {\r\n if (link[0] === vertex && avert.indexOf(link[1]) === -1) {\r\n avert.push(link[1])\r\n }\r\n });\r\n return avert\r\n};\r\nvar getReverseAdjacentVertices = function(links, vertex) {\r\n var avert = [];\r\n links.forEach(function(link) {\r\n if (link[1] === vertex && avert.indexOf(link[0]) === -1) {\r\n avert.push(link[0])\r\n }\r\n });\r\n return avert\r\n};\r\nvar struct = {\r\n _hasCycle: false,\r\n _sortedList: [],\r\n hasCycle: function(links) {\r\n var _this = this;\r\n this._hasCycle = false;\r\n this._sortedList = [];\r\n var vertices = {};\r\n var allVertices = getVertices(links);\r\n allVertices.forEach(function(vertex) {\r\n vertices[vertex] = {\r\n color: WHITE\r\n }\r\n });\r\n allVertices.forEach(function(vertex) {\r\n if (vertices[vertex].color === WHITE) {\r\n _this._depthFirstSearch(links, vertices, vertex)\r\n }\r\n });\r\n this._sortedList.reverse();\r\n return this._hasCycle\r\n },\r\n _depthFirstSearch: function(links, vertices, vertex) {\r\n vertices[vertex].color = GRAY;\r\n var averts = getAdjacentVertices(links, vertex);\r\n for (var a = 0; a < averts.length; a++) {\r\n if (vertices[averts[a]].color === WHITE) {\r\n this._depthFirstSearch(links, vertices, averts[a])\r\n } else {\r\n if (vertices[averts[a]].color === GRAY) {\r\n this._hasCycle = true\r\n }\r\n }\r\n }\r\n this._sortedList.push({\r\n name: vertex,\r\n lp: null,\r\n incoming: getReverseAdjacentVertices(links, vertex),\r\n outgoing: getAdjacentVertices(links, vertex)\r\n });\r\n vertices[vertex].color = BLACK\r\n },\r\n computeLongestPaths: function(links) {\r\n var sortedVertices = this._sortedList;\r\n sortedVertices.forEach(function(vertex) {\r\n var averts = getReverseAdjacentVertices(links, vertex.name);\r\n if (0 === averts.length) {\r\n vertex.lp = 0\r\n } else {\r\n var maxLP = [];\r\n averts.forEach(function(adjacentVertex) {\r\n maxLP.push(sortedVertices.filter(function(sv) {\r\n return sv.name === adjacentVertex\r\n })[0].lp)\r\n });\r\n vertex.lp = routines.maxOfArray(maxLP) + 1\r\n }\r\n });\r\n return this._sortedList\r\n }\r\n};\r\nvar _default = {\r\n struct: struct,\r\n routines: routines,\r\n getVertices: getVertices,\r\n getAdjacentVertices: getAdjacentVertices,\r\n getReverseAdjacentVertices: getReverseAdjacentVertices\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/series/bubble_series.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.chart = void 0;\r\nvar _line_series = require(\"./line_series\");\r\nvar _scatter_series = require(\"./scatter_series\");\r\nvar _area_series = require(\"./area_series\");\r\nvar _bar_series = require(\"./bar_series\");\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _common = require(\"../../core/utils/common\");\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 lineSeries = _line_series.chart.line;\r\nvar areaSeries = _area_series.chart.area;\r\nvar chartBarSeries = _bar_series.chart.bar;\r\nvar polarBarSeries = _bar_series.polar.bar;\r\nvar _extend = _extend2.extend;\r\nvar _each = _iterator.each;\r\nvar _noop = _common.noop;\r\nvar chart = {};\r\nexports.chart = chart;\r\nchart.bubble = _extend({}, _scatter_series.chart, {\r\n _calculateErrorBars: _noop,\r\n _getMainColor: chartBarSeries._getMainColor,\r\n _createPointStyles: chartBarSeries._createPointStyles,\r\n _updatePointsVisibility: chartBarSeries._updatePointsVisibility,\r\n _getOptionsForPoint: chartBarSeries._getOptionsForPoint,\r\n _applyMarkerClipRect: lineSeries._applyElementsClipRect,\r\n _parsePointStyle: polarBarSeries._parsePointStyle,\r\n _createLegendState: areaSeries._createLegendState,\r\n _setMarkerGroupSettings: polarBarSeries._setMarkerGroupSettings,\r\n areErrorBarsVisible: _noop,\r\n _createErrorBarGroup: _noop,\r\n _checkData: function(data, skippedFields) {\r\n return _scatter_series.chart._checkData.call(this, data, skippedFields, {\r\n value: this.getValueFields()[0],\r\n size: this.getSizeField()\r\n })\r\n },\r\n _getPointDataSelector: function(data, options) {\r\n var sizeField = this.getSizeField();\r\n var baseGetter = _scatter_series.chart._getPointDataSelector.call(this);\r\n return function(data) {\r\n var pointData = baseGetter(data);\r\n pointData.size = data[sizeField];\r\n return pointData\r\n }\r\n },\r\n _aggregators: {\r\n avg: function(_ref, series) {\r\n var _ref2;\r\n var data = _ref.data,\r\n intervalStart = _ref.intervalStart;\r\n if (!data.length) {\r\n return\r\n }\r\n var valueField = series.getValueFields()[0];\r\n var sizeField = series.getSizeField();\r\n var aggregate = data.reduce(function(result, item) {\r\n result[0] += item[valueField];\r\n result[1] += item[sizeField];\r\n result[2]++;\r\n return result\r\n }, [0, 0, 0]);\r\n return _ref2 = {}, _defineProperty(_ref2, valueField, aggregate[0] / aggregate[2]), _defineProperty(_ref2, sizeField, aggregate[1] / aggregate[2]), _defineProperty(_ref2, series.getArgumentField(), intervalStart), _ref2\r\n }\r\n },\r\n getValueFields: function() {\r\n return [this._options.valueField || \"val\"]\r\n },\r\n getSizeField: function() {\r\n return this._options.sizeField || \"size\"\r\n },\r\n _animate: function() {\r\n var that = this;\r\n var lastPointIndex = that._drawnPoints.length - 1;\r\n var labelsGroup = that._labelsGroup;\r\n var labelAnimFunc = function() {\r\n labelsGroup && labelsGroup.animate({\r\n opacity: 1\r\n }, {\r\n duration: that._defaultDuration\r\n })\r\n };\r\n _each(that._drawnPoints || [], function(i, p) {\r\n p.animate(i === lastPointIndex ? labelAnimFunc : void 0, {\r\n r: p.bubbleSize,\r\n translateX: p.x,\r\n translateY: p.y\r\n })\r\n })\r\n },\r\n _patchMarginOptions: function(options) {\r\n options.processBubbleSize = true;\r\n return options\r\n }\r\n});\r\n","/**\r\n * DevExtreme (viz/series/financial_series.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.stock = exports.candlestick = void 0;\r\nvar _scatter_series = require(\"./scatter_series\");\r\nvar _bar_series = require(\"./bar_series\");\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _common = require(\"../../core/utils/common\");\r\nvar barSeries = _bar_series.chart.bar;\r\nvar DEFAULT_FINANCIAL_POINT_SIZE = 10;\r\nvar stock = (0, _extend2.extend)({}, _scatter_series.chart, {\r\n _animate: _common.noop,\r\n _applyMarkerClipRect: function(settings) {\r\n settings[\"clip-path\"] = this._forceClipping ? this._paneClipRectID : this._widePaneClipRectID\r\n },\r\n _updatePointsVisibility: barSeries._updatePointsVisibility,\r\n _getOptionsForPoint: barSeries._getOptionsForPoint,\r\n _createErrorBarGroup: _common.noop,\r\n areErrorBarsVisible: _common.noop,\r\n _createGroups: _scatter_series.chart._createGroups,\r\n _setMarkerGroupSettings: function() {\r\n var that = this;\r\n var markersGroup = that._markersGroup;\r\n var styles = that._createPointStyles(that._getMarkerGroupOptions());\r\n var defaultStyle = (0, _extend2.extend)(styles.normal, {\r\n \"class\": \"default-markers\"\r\n });\r\n var defaultPositiveStyle = (0, _extend2.extend)(styles.positive.normal, {\r\n \"class\": \"default-positive-markers\"\r\n });\r\n var reductionStyle = (0, _extend2.extend)(styles.reduction.normal, {\r\n \"class\": \"reduction-markers\"\r\n });\r\n var reductionPositiveStyle = (0, _extend2.extend)(styles.reductionPositive.normal, {\r\n \"class\": \"reduction-positive-markers\"\r\n });\r\n var markerSettings = {\r\n \"class\": \"dxc-markers\"\r\n };\r\n that._applyMarkerClipRect(markerSettings);\r\n markersGroup.attr(markerSettings);\r\n that._createGroup(\"defaultMarkersGroup\", markersGroup, markersGroup, defaultStyle);\r\n that._createGroup(\"reductionMarkersGroup\", markersGroup, markersGroup, reductionStyle);\r\n that._createGroup(\"defaultPositiveMarkersGroup\", markersGroup, markersGroup, defaultPositiveStyle);\r\n that._createGroup(\"reductionPositiveMarkersGroup\", markersGroup, markersGroup, reductionPositiveStyle)\r\n },\r\n _setGroupsSettings: function() {\r\n _scatter_series.chart._setGroupsSettings.call(this, false)\r\n },\r\n _getCreatingPointOptions: function() {\r\n var that = this;\r\n var defaultPointOptions;\r\n var creatingPointOptions = that._predefinedPointOptions;\r\n if (!creatingPointOptions) {\r\n defaultPointOptions = this._getPointOptions();\r\n that._predefinedPointOptions = creatingPointOptions = (0, _extend2.extend)(true, {\r\n styles: {}\r\n }, defaultPointOptions);\r\n creatingPointOptions.styles.normal = creatingPointOptions.styles.positive.normal = creatingPointOptions.styles.reduction.normal = creatingPointOptions.styles.reductionPositive.normal = {\r\n \"stroke-width\": defaultPointOptions.styles && defaultPointOptions.styles.normal && defaultPointOptions.styles.normal[\"stroke-width\"]\r\n }\r\n }\r\n return creatingPointOptions\r\n },\r\n _checkData: function(data, skippedFields) {\r\n var valueFields = this.getValueFields();\r\n return _scatter_series.chart._checkData.call(this, data, skippedFields, {\r\n openValue: valueFields[0],\r\n highValue: valueFields[1],\r\n lowValue: valueFields[2],\r\n closeValue: valueFields[3]\r\n }) && data.highValue === data.highValue && data.lowValue === data.lowValue\r\n },\r\n _getPointDataSelector: function(data, options) {\r\n var _this = this;\r\n var that = this;\r\n var level;\r\n var valueFields = that.getValueFields();\r\n var argumentField = that.getArgumentField();\r\n var openValueField = valueFields[0];\r\n var highValueField = valueFields[1];\r\n var lowValueField = valueFields[2];\r\n var closeValueField = valueFields[3];\r\n that.level = that._options.reduction.level;\r\n switch ((0, _utils.normalizeEnum)(that.level)) {\r\n case \"open\":\r\n level = openValueField;\r\n break;\r\n case \"high\":\r\n level = highValueField;\r\n break;\r\n case \"low\":\r\n level = lowValueField;\r\n break;\r\n default:\r\n level = closeValueField;\r\n that.level = \"close\"\r\n }\r\n var prevLevelValue;\r\n return function(data) {\r\n var reductionValue = data[level];\r\n var isReduction = false;\r\n if ((0, _type.isDefined)(reductionValue)) {\r\n if ((0, _type.isDefined)(prevLevelValue)) {\r\n isReduction = reductionValue < prevLevelValue\r\n }\r\n prevLevelValue = reductionValue\r\n }\r\n return {\r\n argument: data[argumentField],\r\n highValue: _this._processEmptyValue(data[highValueField]),\r\n lowValue: _this._processEmptyValue(data[lowValueField]),\r\n closeValue: _this._processEmptyValue(data[closeValueField]),\r\n openValue: _this._processEmptyValue(data[openValueField]),\r\n reductionValue: reductionValue,\r\n tag: data[that.getTagField()],\r\n isReduction: isReduction,\r\n data: data\r\n }\r\n }\r\n },\r\n _parsePointStyle: function(style, defaultColor, innerColor) {\r\n return {\r\n stroke: style.color || defaultColor,\r\n \"stroke-width\": style.width,\r\n fill: style.color || innerColor\r\n }\r\n },\r\n _getDefaultStyle: function(options) {\r\n var that = this;\r\n var mainPointColor = options.color || that._options.mainSeriesColor;\r\n return {\r\n normal: that._parsePointStyle(options, mainPointColor, mainPointColor),\r\n hover: that._parsePointStyle(options.hoverStyle, mainPointColor, mainPointColor),\r\n selection: that._parsePointStyle(options.selectionStyle, mainPointColor, mainPointColor)\r\n }\r\n },\r\n _getReductionStyle: function(options) {\r\n var that = this;\r\n var reductionColor = options.reduction.color;\r\n return {\r\n normal: that._parsePointStyle({\r\n color: reductionColor,\r\n width: options.width,\r\n hatching: options.hatching\r\n }, reductionColor, reductionColor),\r\n hover: that._parsePointStyle(options.hoverStyle, reductionColor, reductionColor),\r\n selection: that._parsePointStyle(options.selectionStyle, reductionColor, reductionColor)\r\n }\r\n },\r\n _createPointStyles: function(pointOptions) {\r\n var that = this;\r\n var innerColor = that._options.innerColor;\r\n var styles = that._getDefaultStyle(pointOptions);\r\n var positiveStyle = (0, _extend2.extend)(true, {}, styles);\r\n var reductionStyle = that._getReductionStyle(pointOptions);\r\n var reductionPositiveStyle = (0, _extend2.extend)(true, {}, reductionStyle);\r\n positiveStyle.normal.fill = positiveStyle.hover.fill = positiveStyle.selection.fill = innerColor;\r\n reductionPositiveStyle.normal.fill = reductionPositiveStyle.hover.fill = reductionPositiveStyle.selection.fill = innerColor;\r\n styles.positive = positiveStyle;\r\n styles.reduction = reductionStyle;\r\n styles.reductionPositive = reductionPositiveStyle;\r\n return styles\r\n },\r\n _endUpdateData: function() {\r\n delete this._predefinedPointOptions\r\n },\r\n _defaultAggregator: \"ohlc\",\r\n _aggregators: {\r\n ohlc: function(_ref, series) {\r\n var intervalStart = _ref.intervalStart,\r\n data = _ref.data;\r\n if (!data.length) {\r\n return\r\n }\r\n var result = {};\r\n var valueFields = series.getValueFields();\r\n var highValueField = valueFields[1];\r\n var lowValueField = valueFields[2];\r\n result[highValueField] = -(1 / 0);\r\n result[lowValueField] = 1 / 0;\r\n result = data.reduce(function(result, item) {\r\n if (null !== item[highValueField]) {\r\n result[highValueField] = Math.max(result[highValueField], item[highValueField])\r\n }\r\n if (null !== item[lowValueField]) {\r\n result[lowValueField] = Math.min(result[lowValueField], item[lowValueField])\r\n }\r\n return result\r\n }, result);\r\n result[valueFields[0]] = data[0][valueFields[0]];\r\n result[valueFields[3]] = data[data.length - 1][valueFields[3]];\r\n if (!isFinite(result[highValueField])) {\r\n result[highValueField] = null\r\n }\r\n if (!isFinite(result[lowValueField])) {\r\n result[lowValueField] = null\r\n }\r\n result[series.getArgumentField()] = intervalStart;\r\n return result\r\n }\r\n },\r\n getValueFields: function() {\r\n var options = this._options;\r\n return [options.openValueField || \"open\", options.highValueField || \"high\", options.lowValueField || \"low\", options.closeValueField || \"close\"]\r\n },\r\n getArgumentField: function() {\r\n return this._options.argumentField || \"date\"\r\n },\r\n _patchMarginOptions: function(options) {\r\n var pointOptions = this._getCreatingPointOptions();\r\n var styles = pointOptions.styles;\r\n var border = [styles.normal, styles.hover, styles.selection].reduce(function(max, style) {\r\n return Math.max(max, style[\"stroke-width\"])\r\n }, 0);\r\n options.size = DEFAULT_FINANCIAL_POINT_SIZE + border;\r\n options.sizePointNormalState = DEFAULT_FINANCIAL_POINT_SIZE;\r\n return options\r\n },\r\n getSeriesPairCoord: function(coord, isArgument) {\r\n var oppositeCoord = null;\r\n var points = this.getVisiblePoints();\r\n for (var i = 0; i < points.length; i++) {\r\n var p = points[i];\r\n var tmpCoord = void 0;\r\n if (isArgument) {\r\n tmpCoord = p.vx === coord ? (p.openY + p.closeY) / 2 : void 0\r\n } else {\r\n var coords = [Math.min(p.lowY, p.highY), Math.max(p.lowY, p.highY)];\r\n tmpCoord = coord >= coords[0] && coord <= coords[1] ? p.vx : void 0\r\n }\r\n if (this._checkAxisVisibleAreaCoord(!isArgument, tmpCoord)) {\r\n oppositeCoord = tmpCoord;\r\n break\r\n }\r\n }\r\n return oppositeCoord\r\n },\r\n usePointsToDefineAutoHiding: function() {\r\n return false\r\n }\r\n});\r\nexports.stock = stock;\r\nvar candlestick = (0, _extend2.extend)({}, stock, {\r\n _parsePointStyle: function(style, defaultColor, innerColor) {\r\n var color = style.color || innerColor;\r\n var base = stock._parsePointStyle.call(this, style, defaultColor, color);\r\n base.fill = color;\r\n base.hatching = style.hatching;\r\n return base\r\n }\r\n});\r\nexports.candlestick = candlestick;\r\n","/**\r\n * DevExtreme (viz/pie_chart.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _consts = _interopRequireDefault(require(\"./components/consts\"));\r\nvar _utils = require(\"./core/utils\");\r\nvar _extend2 = require(\"../core/utils/extend\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _iterator = require(\"../core/utils/iterator\");\r\nvar _range = require(\"./translators/range\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _base_chart = require(\"./chart_components/base_chart\");\r\nvar _common = require(\"../core/utils/common\");\r\nvar _translator1d = require(\"./translators/translator1d\");\r\nvar _annotations = require(\"./core/annotations\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar states = _consts.default.states;\r\nvar seriesSpacing = _consts.default.pieSeriesSpacing;\r\nvar OPTIONS_FOR_REFRESH_SERIES = [\"startAngle\", \"innerRadius\", \"segmentsDirection\", \"type\"];\r\nvar NORMAL_STATE = states.normalMark;\r\nvar HOVER_STATE = states.hoverMark;\r\nvar SELECTED_STATE = states.selectedMark;\r\nvar MAX_RESOLVE_ITERATION_COUNT = 5;\r\nvar LEGEND_ACTIONS = [states.resetItem, states.applyHover, states.applySelected, states.applySelected];\r\n\r\nfunction getLegendItemAction(points) {\r\n var state = NORMAL_STATE;\r\n points.forEach(function(point) {\r\n var _point$series;\r\n var seriesOptions = null === (_point$series = point.series) || void 0 === _point$series ? void 0 : _point$series.getOptions();\r\n var pointState = point.fullState;\r\n if (\"none\" === (null === seriesOptions || void 0 === seriesOptions ? void 0 : seriesOptions.hoverMode)) {\r\n pointState &= ~HOVER_STATE\r\n }\r\n if (\"none\" === (null === seriesOptions || void 0 === seriesOptions ? void 0 : seriesOptions.selectionMode)) {\r\n pointState &= ~SELECTED_STATE\r\n }\r\n state |= pointState\r\n });\r\n return LEGEND_ACTIONS[state]\r\n}\r\n\r\nfunction correctPercentValue(value) {\r\n if ((0, _type.isNumeric)(value)) {\r\n if (value > 1) {\r\n value = 1\r\n } else {\r\n if (value < 0) {\r\n value = 0\r\n }\r\n }\r\n } else {\r\n value = void 0\r\n }\r\n return value\r\n}\r\nvar pieSizeEqualizer = function() {\r\n function equalize(group, allPies) {\r\n var pies = allPies.filter(function(p) {\r\n return p._isVisible() && p.getSizeGroup() === group\r\n });\r\n var minRadius = Math.min.apply(null, pies.map(function(p) {\r\n return p.getSizeGroupLayout().radius\r\n }));\r\n var minPie = pies.filter(function(p) {\r\n return p.getSizeGroupLayout().radius === minRadius\r\n });\r\n pies.forEach(function(p) {\r\n return p.render({\r\n force: true,\r\n sizeGroupLayout: minPie.length ? minPie[0].getSizeGroupLayout() : {}\r\n })\r\n })\r\n }\r\n\r\n function removeFromList(list, item) {\r\n return list.filter(function(li) {\r\n return li !== item\r\n })\r\n }\r\n\r\n function addToList(list, item) {\r\n return removeFromList(list, item).concat(item)\r\n }\r\n var pies = [];\r\n var timers = {};\r\n return {\r\n queue: function(pie) {\r\n var group = pie.getSizeGroup();\r\n pies = addToList(pies, pie);\r\n clearTimeout(timers[group]);\r\n timers[group] = setTimeout(function() {\r\n equalize(group, pies)\r\n })\r\n },\r\n remove: function(pie) {\r\n pies = removeFromList(pies, pie);\r\n if (!pies.length) {\r\n timers = {}\r\n }\r\n }\r\n }\r\n}();\r\nvar dxPieChart = _base_chart.BaseChart.inherit({\r\n _themeSection: \"pie\",\r\n _layoutManagerOptions: function() {\r\n return (0, _extend2.extend)(true, {}, this.callBase(), {\r\n piePercentage: correctPercentValue(this._themeManager.getOptions(\"diameter\")),\r\n minPiePercentage: correctPercentValue(this._themeManager.getOptions(\"minDiameter\"))\r\n })\r\n },\r\n _customChangesOrder: [\"CENTER_TEMPLATE\"],\r\n _optionChangesMap: {\r\n diameter: \"REINIT\",\r\n minDiameter: \"REINIT\",\r\n sizeGroup: \"REINIT\",\r\n centerTemplate: \"CENTER_TEMPLATE\"\r\n },\r\n _change_CENTER_TEMPLATE: function() {\r\n this._renderCenterTemplate()\r\n },\r\n _disposeCore: function() {\r\n pieSizeEqualizer.remove(this);\r\n this.callBase();\r\n this._centerTemplateGroup.linkOff().dispose()\r\n },\r\n _groupSeries: function() {\r\n var series = this.series;\r\n this._groupsData = {\r\n groups: [{\r\n series: series,\r\n valueOptions: {\r\n valueType: \"numeric\"\r\n }\r\n }],\r\n argumentOptions: series[0] && series[0].getOptions()\r\n }\r\n },\r\n getArgumentAxis: function() {\r\n return null\r\n },\r\n _getValueAxis: function() {\r\n var translator = (new _translator1d.Translator1D).setCodomain(360, 0);\r\n return {\r\n getTranslator: function() {\r\n return translator\r\n },\r\n setBusinessRange: function(range) {\r\n translator.setDomain(range.min, range.max)\r\n }\r\n }\r\n },\r\n _populateBusinessRange: function() {\r\n this.series.map(function(series) {\r\n var range = new _range.Range;\r\n range.addRange(series.getRangeData().val);\r\n series.getValueAxis().setBusinessRange(range);\r\n return range\r\n })\r\n },\r\n _specialProcessSeries: function() {\r\n (0, _iterator.each)(this.series, function(_, singleSeries) {\r\n singleSeries.arrangePoints()\r\n })\r\n },\r\n _checkPaneName: function() {\r\n return true\r\n },\r\n _processSingleSeries: function(singleSeries) {\r\n this.callBase(singleSeries);\r\n singleSeries.arrangePoints()\r\n },\r\n _handleSeriesDataUpdated: function() {\r\n var maxPointCount = 0;\r\n this.series.forEach(function(s) {\r\n maxPointCount = Math.max(s.getPointsCount(), maxPointCount)\r\n });\r\n this.series.forEach(function(s) {\r\n s.setMaxPointsCount(maxPointCount)\r\n });\r\n this.callBase()\r\n },\r\n _getLegendOptions: function(item) {\r\n var legendItem = this.callBase(item);\r\n var legendData = legendItem.legendData;\r\n legendData.argument = item.argument;\r\n legendData.argumentIndex = item.argumentIndex;\r\n legendData.points = [item];\r\n return legendItem\r\n },\r\n _getLegendTargets: function() {\r\n var that = this;\r\n var itemsByArgument = {};\r\n (that.series || []).forEach(function(series) {\r\n series.getPoints().forEach(function(point) {\r\n var argument = point.argument.valueOf();\r\n var index = series.getPointsByArg(argument).indexOf(point);\r\n var key = argument.valueOf().toString() + index;\r\n itemsByArgument[key] = itemsByArgument[key] || [];\r\n var argumentCount = itemsByArgument[key].push(point);\r\n point.index = itemsByArgument[key][argumentCount - 2] ? itemsByArgument[key][argumentCount - 2].index : Object.keys(itemsByArgument).length - 1;\r\n point.argumentIndex = index\r\n })\r\n });\r\n var items = [];\r\n (0, _iterator.each)(itemsByArgument, function(_, points) {\r\n points.forEach(function(point, index) {\r\n if (0 === index) {\r\n items.push(that._getLegendOptions(point));\r\n return\r\n }\r\n var item = items[items.length - 1];\r\n item.legendData.points.push(point);\r\n if (!item.visible) {\r\n item.visible = point.isVisible()\r\n }\r\n })\r\n });\r\n return items\r\n },\r\n _getLayoutTargets: function() {\r\n return [{\r\n canvas: this._canvas\r\n }]\r\n },\r\n _getLayoutSeries: function(series, drawOptions) {\r\n var that = this;\r\n var layout;\r\n var canvas = that._canvas;\r\n var drawnLabels = false;\r\n layout = that.layoutManager.applyPieChartSeriesLayout(canvas, series, true);\r\n series.forEach(function(singleSeries) {\r\n singleSeries.correctPosition(layout, canvas);\r\n drawnLabels = singleSeries.drawLabelsWOPoints() || drawnLabels\r\n });\r\n if (drawnLabels) {\r\n layout = that.layoutManager.applyPieChartSeriesLayout(canvas, series, drawOptions.hideLayoutLabels)\r\n }\r\n series.forEach(function(singleSeries) {\r\n singleSeries.hideLabels()\r\n });\r\n that._sizeGroupLayout = {\r\n x: layout.centerX,\r\n y: layout.centerY,\r\n radius: layout.radiusOuter,\r\n drawOptions: drawOptions\r\n };\r\n return layout\r\n },\r\n _getLayoutSeriesForEqualPies: function(series, sizeGroupLayout) {\r\n var canvas = this._canvas;\r\n var layout = this.layoutManager.applyEqualPieChartLayout(series, sizeGroupLayout);\r\n series.forEach(function(s) {\r\n s.correctPosition(layout, canvas);\r\n s.drawLabelsWOPoints()\r\n });\r\n this.layoutManager.correctPieLabelRadius(series, layout, canvas);\r\n return layout\r\n },\r\n _updateSeriesDimensions: function(drawOptions) {\r\n var that = this;\r\n var visibleSeries = that._getVisibleSeries();\r\n var lengthVisibleSeries = visibleSeries.length;\r\n var innerRad;\r\n var delta;\r\n var layout;\r\n var sizeGroupLayout = drawOptions.sizeGroupLayout;\r\n if (lengthVisibleSeries) {\r\n layout = sizeGroupLayout ? that._getLayoutSeriesForEqualPies(visibleSeries, sizeGroupLayout) : that._getLayoutSeries(visibleSeries, drawOptions);\r\n delta = (layout.radiusOuter - layout.radiusInner - seriesSpacing * (lengthVisibleSeries - 1)) / lengthVisibleSeries;\r\n innerRad = layout.radiusInner;\r\n that._setGeometry(layout);\r\n visibleSeries.forEach(function(singleSeries) {\r\n singleSeries.correctRadius({\r\n radiusInner: innerRad,\r\n radiusOuter: innerRad + delta\r\n });\r\n innerRad += delta + seriesSpacing\r\n })\r\n }\r\n },\r\n _renderSeries: function(drawOptions, isRotated, isLegendInside) {\r\n this._calculateSeriesLayout(drawOptions, isRotated);\r\n if (!drawOptions.sizeGroupLayout && this.getSizeGroup()) {\r\n pieSizeEqualizer.queue(this);\r\n this._clearCanvas();\r\n return\r\n }\r\n this._renderSeriesElements(drawOptions, isLegendInside)\r\n },\r\n _createHtmlStructure: function() {\r\n this.callBase();\r\n this._centerTemplateGroup = this._renderer.g().attr({\r\n \"class\": \"dxc-hole-template\"\r\n }).linkOn(this._renderer.root, \"center-template\").css((0, _utils.patchFontOptions)(this._themeManager._font)).linkAppend()\r\n },\r\n _renderExtraElements: function() {\r\n this._requestChange([\"CENTER_TEMPLATE\"])\r\n },\r\n _renderCenterTemplate: function() {\r\n var _this = this;\r\n var template = this.option(\"centerTemplate\");\r\n var centerTemplateGroup = this._centerTemplateGroup.clear();\r\n if (!template) {\r\n return\r\n }\r\n centerTemplateGroup.attr({\r\n visibility: \"hidden\"\r\n });\r\n template = this._getTemplate(template);\r\n template.render({\r\n model: this,\r\n container: centerTemplateGroup.element,\r\n onRendered: function() {\r\n var group = centerTemplateGroup;\r\n var bBox = group.getBBox();\r\n group.move(_this._center.x - (bBox.x + bBox.width / 2), _this._center.y - (bBox.y + bBox.height / 2));\r\n group.attr({\r\n visibility: \"visible\"\r\n })\r\n }\r\n })\r\n },\r\n getInnerRadius: function() {\r\n return this._innerRadius\r\n },\r\n _getLegendCallBack: function() {\r\n var that = this;\r\n var legend = this._legend;\r\n var items = this._getLegendTargets().map(function(i) {\r\n return i.legendData\r\n });\r\n return function(target) {\r\n items.forEach(function(data) {\r\n var points = [];\r\n var callback = legend.getActionCallback({\r\n index: data.id\r\n });\r\n that.series.forEach(function(series) {\r\n var seriesPoints = series.getPointsByKeys(data.argument, data.argumentIndex);\r\n points.push.apply(points, seriesPoints)\r\n });\r\n if (target && target.argument === data.argument && target.argumentIndex === data.argumentIndex) {\r\n points.push(target)\r\n }\r\n callback(getLegendItemAction(points))\r\n })\r\n }\r\n },\r\n _locateLabels: function(resolveLabelOverlapping) {\r\n var iterationCount = 0;\r\n var labelsWereOverlapped;\r\n var wordWrapApplied;\r\n do {\r\n wordWrapApplied = this._adjustSeriesLabels(\"shift\" === resolveLabelOverlapping);\r\n labelsWereOverlapped = this._resolveLabelOverlapping(resolveLabelOverlapping)\r\n } while ((labelsWereOverlapped || wordWrapApplied) && ++iterationCount < MAX_RESOLVE_ITERATION_COUNT)\r\n },\r\n _adjustSeriesLabels: function(moveLabelsFromCenter) {\r\n return this.series.reduce(function(r, s) {\r\n return s.adjustLabels(moveLabelsFromCenter) || r\r\n }, false)\r\n },\r\n _applyExtraSettings: _common.noop,\r\n _resolveLabelOverlappingShift: function() {\r\n var that = this;\r\n var inverseDirection = \"anticlockwise\" === that.option(\"segmentsDirection\");\r\n var seriesByPosition = that.series.reduce(function(r, s) {\r\n (r[s.getOptions().label.position] || r.outside).push(s);\r\n return r\r\n }, {\r\n inside: [],\r\n columns: [],\r\n outside: []\r\n });\r\n var labelsOverlapped = false;\r\n if (seriesByPosition.inside.length > 0) {\r\n labelsOverlapped = resolve(seriesByPosition.inside.reduce(function(r, singleSeries) {\r\n return singleSeries.getVisiblePoints().reduce(function(r, point) {\r\n r.left.push(point);\r\n return r\r\n }, r)\r\n }, {\r\n left: [],\r\n right: []\r\n }), shiftInColumnFunction) || labelsOverlapped\r\n }\r\n labelsOverlapped = seriesByPosition.columns.reduce(function(r, singleSeries) {\r\n return resolve(dividePoints(singleSeries), shiftInColumnFunction) || r\r\n }, labelsOverlapped);\r\n if (seriesByPosition.outside.length > 0) {\r\n labelsOverlapped = resolve(seriesByPosition.outside.reduce(function(r, singleSeries) {\r\n return dividePoints(singleSeries, r)\r\n }, null), shiftFunction) || labelsOverlapped\r\n }\r\n return labelsOverlapped;\r\n\r\n function dividePoints(series, points) {\r\n return series.getVisiblePoints().reduce(function(r, point) {\r\n var angle = (0, _utils.normalizeAngle)(point.middleAngle);\r\n (angle <= 90 || angle >= 270 ? r.right : r.left).push(point);\r\n return r\r\n }, points || {\r\n left: [],\r\n right: []\r\n })\r\n }\r\n\r\n function resolve(points, shiftCallback) {\r\n var overlapped = false;\r\n if (inverseDirection) {\r\n points.left.reverse();\r\n points.right.reverse()\r\n }\r\n overlapped = _base_chart.overlapping.resolveLabelOverlappingInOneDirection(points.left, that._canvas, false, shiftCallback);\r\n return _base_chart.overlapping.resolveLabelOverlappingInOneDirection(points.right, that._canvas, false, shiftCallback) || overlapped\r\n }\r\n\r\n function shiftFunction(box, length) {\r\n return (0, _utils.getVerticallyShiftedAngularCoords)(box, -length, that._center)\r\n }\r\n\r\n function shiftInColumnFunction(box, length) {\r\n return {\r\n x: box.x,\r\n y: box.y - length\r\n }\r\n }\r\n },\r\n _setGeometry: function(_ref) {\r\n var x = _ref.centerX,\r\n y = _ref.centerY,\r\n radiusInner = _ref.radiusInner;\r\n this._center = {\r\n x: x,\r\n y: y\r\n };\r\n this._innerRadius = radiusInner\r\n },\r\n _disposeSeries: function(seriesIndex) {\r\n this.callBase.apply(this, arguments);\r\n this._abstractSeries = null\r\n },\r\n _legendDataField: \"point\",\r\n _legendItemTextField: \"argument\",\r\n _applyPointMarkersAutoHiding: _common.noop,\r\n _renderTrackers: _common.noop,\r\n _trackerType: \"PieTracker\",\r\n _createScrollBar: _common.noop,\r\n _updateAxesLayout: _common.noop,\r\n _applyClipRects: _common.noop,\r\n _appendAdditionalSeriesGroups: _common.noop,\r\n _prepareToRender: _common.noop,\r\n _isLegendInside: _common.noop,\r\n _renderAxes: _common.noop,\r\n _shrinkAxes: _common.noop,\r\n _isRotated: _common.noop,\r\n _seriesPopulatedHandlerCore: _common.noop,\r\n _reinitAxes: _common.noop,\r\n _correctAxes: _common.noop,\r\n _getExtraOptions: function() {\r\n var that = this;\r\n return {\r\n startAngle: that.option(\"startAngle\"),\r\n innerRadius: that.option(\"innerRadius\"),\r\n segmentsDirection: that.option(\"segmentsDirection\"),\r\n type: that.option(\"type\")\r\n }\r\n },\r\n getSizeGroup: function() {\r\n return this._themeManager.getOptions(\"sizeGroup\")\r\n },\r\n getSizeGroupLayout: function() {\r\n return this._sizeGroupLayout || {}\r\n }\r\n});\r\n(0, _iterator.each)(OPTIONS_FOR_REFRESH_SERIES, function(_, name) {\r\n dxPieChart.prototype._optionChangesMap[name] = \"REFRESH_SERIES_DATA_INIT\"\r\n});\r\ndxPieChart.addPlugin(_annotations.plugins.core);\r\ndxPieChart.addPlugin(_annotations.plugins.pieChart);\r\n(0, _component_registrator.default)(\"dxPieChart\", dxPieChart);\r\nvar _default = dxPieChart;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (viz/polar_chart.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _common = require(\"../core/utils/common\");\r\nvar _component_registrator = _interopRequireDefault(require(\"../core/component_registrator\"));\r\nvar _extend = require(\"../core/utils/extend\");\r\nvar _utils = require(\"./core/utils\");\r\nvar _advanced_chart = require(\"./chart_components/advanced_chart\");\r\nvar _type = require(\"../core/utils/type\");\r\nvar _annotations = require(\"./core/annotations\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar DEFAULT_PANE_NAME = \"default\";\r\nvar DOUBLE_PI_ANGLE = 360;\r\nvar dxPolarChart = _advanced_chart.AdvancedChart.inherit({\r\n _themeSection: \"polar\",\r\n _createPanes: function() {\r\n this.callBase();\r\n return [{\r\n name: DEFAULT_PANE_NAME\r\n }]\r\n },\r\n _checkPaneName: function() {\r\n return true\r\n },\r\n _getAxisRenderingOptions: function(typeSelector) {\r\n var isArgumentAxis = \"argumentAxis\" === typeSelector;\r\n var type = isArgumentAxis ? \"circular\" : \"linear\";\r\n var useSpiderWeb = this.option(\"useSpiderWeb\");\r\n if (useSpiderWeb) {\r\n type += \"Spider\"\r\n }\r\n return {\r\n axisType: \"polarAxes\",\r\n drawingType: type\r\n }\r\n },\r\n _prepareAxisOptions: function(typeSelector, axisOptions) {\r\n var isArgumentAxis = \"argumentAxis\" === typeSelector;\r\n var themeManager = this._themeManager;\r\n var axisUserOptions = this.option(\"argumentAxis\");\r\n var argumentAxisOptions = themeManager.getOptions(\"argumentAxis\", axisUserOptions) || {};\r\n var startAngle = isFinite(argumentAxisOptions.startAngle) ? (0, _utils.normalizeAngle)(argumentAxisOptions.startAngle) : 0;\r\n return {\r\n type: this.option(\"useSpiderWeb\") && isArgumentAxis ? \"discrete\" : axisOptions.type,\r\n isHorizontal: true,\r\n showCustomBoundaryTicks: isArgumentAxis,\r\n startAngle: startAngle,\r\n endAngle: startAngle + 360\r\n }\r\n },\r\n _optionChangesMap: {\r\n useSpiderWeb: \"AXES_AND_PANES\"\r\n },\r\n _getExtraOptions: function() {\r\n return {\r\n spiderWidget: this.option(\"useSpiderWeb\")\r\n }\r\n },\r\n _prepareToRender: function() {\r\n this._appendAxesGroups();\r\n return {}\r\n },\r\n _calcCanvas: function() {\r\n var canvas = (0, _extend.extend)({}, this._canvas);\r\n var argumentAxis = this.getArgumentAxis();\r\n var margins = argumentAxis.getMargins();\r\n Object.keys(margins).forEach(function(margin) {\r\n return canvas[margin] = canvas[\"original\".concat(margin[0].toUpperCase()).concat(margin.slice(1))] + margins[margin]\r\n });\r\n return canvas\r\n },\r\n _renderAxes: function(drawOptions) {\r\n var that = this;\r\n var valueAxis = that._getValueAxis();\r\n var argumentAxis = that.getArgumentAxis();\r\n argumentAxis.draw(that._canvas);\r\n valueAxis.setSpiderTicks(argumentAxis.getSpiderTicks());\r\n var canvas = that._calcCanvas();\r\n argumentAxis.updateSize(canvas);\r\n valueAxis.draw(canvas);\r\n return canvas\r\n },\r\n _getValueAxis: function() {\r\n return this._valueAxes[0]\r\n },\r\n _shrinkAxes: function(sizeStorage) {\r\n var valueAxis = this._getValueAxis();\r\n var argumentAxis = this.getArgumentAxis();\r\n if (sizeStorage && (sizeStorage.width || sizeStorage.height)) {\r\n argumentAxis.hideOuterElements();\r\n var canvas = this._calcCanvas();\r\n argumentAxis.updateSize(canvas);\r\n valueAxis.updateSize(canvas)\r\n }\r\n },\r\n checkForMoreSpaceForPanesCanvas: function() {\r\n return this.layoutManager.needMoreSpaceForPanesCanvas([{\r\n canvas: this.getArgumentAxis().getCanvas()\r\n }], this._isRotated())\r\n },\r\n _getLayoutTargets: function() {\r\n return [{\r\n canvas: this._canvas\r\n }]\r\n },\r\n _getSeriesForPane: function() {\r\n return this.series\r\n },\r\n _applyClipRects: function() {\r\n var canvasClipRectID = this._getCanvasClipRectID();\r\n this._createClipPathForPane();\r\n this.getArgumentAxis().applyClipRects(this._getElementsClipRectID(), canvasClipRectID);\r\n this._getValueAxis().applyClipRects(this._getElementsClipRectID(), canvasClipRectID)\r\n },\r\n _createClipPathForPane: function() {\r\n var that = this;\r\n var valueAxis = that._getValueAxis();\r\n var center = valueAxis.getCenter();\r\n var radius = valueAxis.getRadius();\r\n var panesClipRects = that._panesClipRects;\r\n center = {\r\n x: Math.round(center.x),\r\n y: Math.round(center.y)\r\n };\r\n that._createClipCircle(panesClipRects.fixed, center.x, center.y, radius);\r\n that._createClipCircle(panesClipRects.base, center.x, center.y, radius);\r\n if (that.series.some(function(s) {\r\n return s.areErrorBarsVisible()\r\n })) {\r\n that._createClipCircle(panesClipRects.wide, center.x, center.y, radius)\r\n } else {\r\n panesClipRects.wide[0] = null\r\n }\r\n },\r\n _createClipCircle: function(clipArray, left, top, radius) {\r\n var that = this;\r\n var clipCircle = clipArray[0];\r\n if (!clipCircle) {\r\n clipCircle = that._renderer.clipCircle(left, top, radius);\r\n clipArray[0] = clipCircle\r\n } else {\r\n clipCircle.attr({\r\n cx: left,\r\n cy: top,\r\n r: radius\r\n })\r\n }\r\n },\r\n _applyExtraSettings: function(series) {\r\n var wideClipRect = this._panesClipRects.wide[0];\r\n series.setClippingParams(this._panesClipRects.base[0].id, wideClipRect && wideClipRect.id, false, false)\r\n },\r\n getActualAngle: function(angle) {\r\n return this.getArgumentAxis().getOptions().inverted ? DOUBLE_PI_ANGLE - angle : angle\r\n },\r\n getXYFromPolar: function(angle, radius, argument, value) {\r\n var layoutInfo = {\r\n angle: void 0,\r\n radius: void 0,\r\n x: void 0,\r\n y: void 0\r\n };\r\n if (!(0, _type.isDefined)(angle) && !(0, _type.isDefined)(radius) && !(0, _type.isDefined)(argument) && !(0, _type.isDefined)(value)) {\r\n return layoutInfo\r\n }\r\n var argAxis = this.getArgumentAxis();\r\n var startAngle = argAxis.getAngles()[0];\r\n var argAngle;\r\n var translatedRadius;\r\n if ((0, _type.isDefined)(argument)) {\r\n argAngle = argAxis.getTranslator().translate(argument)\r\n } else {\r\n if (isFinite(angle)) {\r\n argAngle = this.getActualAngle(angle)\r\n } else {\r\n if (!(0, _type.isDefined)(angle)) {\r\n argAngle = 0\r\n }\r\n }\r\n }\r\n if ((0, _type.isDefined)(value)) {\r\n translatedRadius = this.getValueAxis().getTranslator().translate(value)\r\n } else {\r\n if (isFinite(radius)) {\r\n translatedRadius = radius\r\n } else {\r\n if (!(0, _type.isDefined)(radius)) {\r\n translatedRadius = argAxis.getRadius()\r\n }\r\n }\r\n }\r\n if ((0, _type.isDefined)(argAngle) && (0, _type.isDefined)(translatedRadius)) {\r\n var coords = (0, _utils.convertPolarToXY)(argAxis.getCenter(), startAngle, argAngle, translatedRadius);\r\n (0, _extend.extend)(layoutInfo, coords, {\r\n angle: argAxis.getTranslatedAngle(argAngle),\r\n radius: translatedRadius\r\n })\r\n }\r\n return layoutInfo\r\n },\r\n _applyPointMarkersAutoHiding: _common.noop,\r\n _createScrollBar: _common.noop,\r\n _isRotated: _common.noop,\r\n _getCrosshairOptions: _common.noop,\r\n _isLegendInside: _common.noop\r\n});\r\ndxPolarChart.addPlugin(_annotations.plugins.core);\r\ndxPolarChart.addPlugin(_annotations.plugins.polarChart);\r\n(0, _component_registrator.default)(\"dxPolarChart\", dxPolarChart);\r\nvar _default = dxPolarChart;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (viz/range_selector.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _range_selector = _interopRequireDefault(require(\"./range_selector/range_selector\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _default = _range_selector.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (viz/range_selector/range_selector.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _component_registrator = _interopRequireDefault(require(\"../../core/component_registrator\"));\r\nvar _type2 = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _date = _interopRequireDefault(require(\"../../core/utils/date\"));\r\nvar _math = require(\"../../core/utils/math\");\r\nvar _range = require(\"../translators/range\");\r\nvar _base_axis = require(\"../axes/base_axis\");\r\nvar _parse_utils = require(\"../components/parse_utils\");\r\nvar _format_helper = _interopRequireDefault(require(\"../../format_helper\"));\r\nvar _common = require(\"./common\");\r\nvar _sliders_controller = require(\"./sliders_controller\");\r\nvar _tracker = require(\"./tracker\");\r\nvar _range_view = require(\"./range_view\");\r\nvar _series_data_source = require(\"./series_data_source\");\r\nvar _tick_generator = require(\"../axes/tick_generator\");\r\nvar _axes_constants = _interopRequireDefault(require(\"../axes/axes_constants\"));\r\nvar _base_widget = _interopRequireDefault(require(\"../core/base_widget\"));\r\nvar _export = require(\"../core/export\");\r\nvar _title = require(\"../core/title\");\r\nvar _loading_indicator = require(\"../core/loading_indicator\");\r\nvar _data_source = require(\"../core/data_source\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _max = Math.max;\r\nvar _ceil = Math.ceil;\r\nvar _floor = Math.floor;\r\nvar START_VALUE = \"startValue\";\r\nvar END_VALUE = \"endValue\";\r\nvar DATETIME = \"datetime\";\r\nvar VALUE = \"value\";\r\nvar DISCRETE = \"discrete\";\r\nvar SEMIDISCRETE = \"semidiscrete\";\r\nvar STRING = \"string\";\r\nvar VALUE_CHANGED = VALUE + \"Changed\";\r\nvar CONTAINER_BACKGROUND_COLOR = \"containerBackgroundColor\";\r\nvar SLIDER_MARKER = \"sliderMarker\";\r\nvar OPTION_BACKGROUND = \"background\";\r\nvar LOGARITHMIC = \"logarithmic\";\r\nvar KEEP = \"keep\";\r\nvar SHIFT = \"shift\";\r\nvar RESET = \"reset\";\r\nvar INVISIBLE_POS = -1e3;\r\nvar SEMIDISCRETE_GRID_SPACING_FACTOR = 50;\r\nvar DEFAULT_AXIS_DIVISION_FACTOR = 30;\r\nvar DEFAULT_MINOR_AXIS_DIVISION_FACTOR = 15;\r\nvar logarithmBase = 10;\r\n\r\nfunction calculateMarkerHeight(renderer, value, sliderMarkerOptions) {\r\n var formattedText = void 0 === value ? _common.consts.emptySliderMarkerText : (0, _common.formatValue)(value, sliderMarkerOptions);\r\n var textBBox = getTextBBox(renderer, formattedText, sliderMarkerOptions.font);\r\n return _ceil(textBBox.height) + 2 * sliderMarkerOptions.paddingTopBottom + _common.consts.pointerSize\r\n}\r\n\r\nfunction calculateScaleLabelHalfWidth(renderer, value, scaleOptions, tickIntervalsInfo) {\r\n var formattedText = (0, _common.formatValue)(value, scaleOptions.label, tickIntervalsInfo, scaleOptions.valueType, scaleOptions.type, scaleOptions.logarithmBase);\r\n var textBBox = getTextBBox(renderer, formattedText, scaleOptions.label.font);\r\n return _ceil(textBBox.width / 2)\r\n}\r\n\r\nfunction calculateIndents(renderer, scale, sliderMarkerOptions, indentOptions, tickIntervalsInfo) {\r\n var leftMarkerHeight;\r\n var leftScaleLabelWidth = 0;\r\n var rightScaleLabelWidth = 0;\r\n var rightMarkerHeight;\r\n var placeholderWidthLeft;\r\n var placeholderWidthRight;\r\n var placeholderHeight;\r\n var ticks = \"semidiscrete\" === scale.type ? scale.customTicks : tickIntervalsInfo.ticks;\r\n var startTickValue;\r\n var endTickValue;\r\n indentOptions = indentOptions || {};\r\n placeholderWidthLeft = indentOptions.left;\r\n placeholderWidthRight = indentOptions.right;\r\n placeholderHeight = sliderMarkerOptions.placeholderHeight;\r\n if (sliderMarkerOptions.visible) {\r\n leftMarkerHeight = calculateMarkerHeight(renderer, scale.startValue, sliderMarkerOptions);\r\n rightMarkerHeight = calculateMarkerHeight(renderer, scale.endValue, sliderMarkerOptions);\r\n if (void 0 === placeholderHeight) {\r\n placeholderHeight = _max(leftMarkerHeight, rightMarkerHeight)\r\n }\r\n }\r\n if (scale.label.visible) {\r\n startTickValue = (0, _type2.isDefined)(scale.startValue) ? ticks[0] : void 0;\r\n endTickValue = (0, _type2.isDefined)(scale.endValue) ? ticks[ticks.length - 1] : void 0;\r\n leftScaleLabelWidth = calculateScaleLabelHalfWidth(renderer, startTickValue, scale, tickIntervalsInfo);\r\n rightScaleLabelWidth = calculateScaleLabelHalfWidth(renderer, endTickValue, scale, tickIntervalsInfo)\r\n }\r\n placeholderWidthLeft = void 0 !== placeholderWidthLeft ? placeholderWidthLeft : leftScaleLabelWidth;\r\n placeholderWidthRight = (void 0 !== placeholderWidthRight ? placeholderWidthRight : rightScaleLabelWidth) || 1;\r\n return {\r\n left: placeholderWidthLeft,\r\n right: placeholderWidthRight,\r\n top: placeholderHeight || 0,\r\n bottom: 0\r\n }\r\n}\r\n\r\nfunction calculateValueType(firstValue, secondValue) {\r\n var typeFirstValue = (0, _type2.type)(firstValue);\r\n var typeSecondValue = (0, _type2.type)(secondValue);\r\n var validType = function(type) {\r\n return typeFirstValue === type || typeSecondValue === type\r\n };\r\n return validType(\"date\") ? DATETIME : validType(\"number\") ? \"numeric\" : validType(STRING) ? STRING : \"\"\r\n}\r\n\r\nfunction showScaleMarkers(scaleOptions) {\r\n return scaleOptions.valueType === DATETIME && scaleOptions.marker.visible\r\n}\r\n\r\nfunction updateTranslatorRangeInterval(translatorRange, scaleOptions) {\r\n var intervalX = scaleOptions.minorTickInterval || scaleOptions.tickInterval;\r\n if (\"datetime\" === scaleOptions.valueType) {\r\n intervalX = _date.default.dateToMilliseconds(intervalX)\r\n }\r\n translatorRange.addRange({\r\n interval: intervalX\r\n })\r\n}\r\n\r\nfunction checkLogarithmicOptions(options, defaultLogarithmBase, incidentOccurred) {\r\n if (!options) {\r\n return\r\n }\r\n var logarithmBase = options.logarithmBase;\r\n if (options.type === LOGARITHMIC && logarithmBase <= 0 || logarithmBase && !(0, _type2.isNumeric)(logarithmBase)) {\r\n options.logarithmBase = defaultLogarithmBase;\r\n incidentOccurred(\"E2104\")\r\n } else {\r\n if (options.type !== LOGARITHMIC) {\r\n options.logarithmBase = void 0\r\n }\r\n }\r\n}\r\n\r\nfunction calculateScaleAreaHeight(renderer, scaleOptions, visibleMarkers, tickIntervalsInfo) {\r\n var labelScaleOptions = scaleOptions.label;\r\n var markerScaleOptions = scaleOptions.marker;\r\n var placeholderHeight = scaleOptions.placeholderHeight;\r\n var ticks = \"semidiscrete\" === scaleOptions.type ? scaleOptions.customTicks : tickIntervalsInfo.ticks;\r\n var text = (0, _common.formatValue)(ticks[0], labelScaleOptions);\r\n if (placeholderHeight) {\r\n return placeholderHeight\r\n } else {\r\n return (labelScaleOptions.visible ? labelScaleOptions.topIndent + getTextBBox(renderer, text, labelScaleOptions.font).height : 0) + (visibleMarkers ? markerScaleOptions.topIndent + markerScaleOptions.separatorHeight : 0)\r\n }\r\n}\r\n\r\nfunction getMinorTickIntervalUnit(tickInterval, minorTickInterval, withCorrection) {\r\n var interval = _date.default.getDateUnitInterval(minorTickInterval);\r\n var majorUnit = _date.default.getDateUnitInterval(tickInterval);\r\n var idx = _date.default.dateUnitIntervals.indexOf(interval);\r\n if (withCorrection && interval === majorUnit && idx > 0) {\r\n interval = _date.default.dateUnitIntervals[idx - 1]\r\n }\r\n return interval\r\n}\r\n\r\nfunction getNextTickInterval(tickInterval, minorTickInterval, isDateType) {\r\n if (!tickInterval) {\r\n tickInterval = minorTickInterval\r\n } else {\r\n if (isDateType) {\r\n tickInterval = _date.default.getNextDateUnit(tickInterval)\r\n } else {\r\n tickInterval += minorTickInterval\r\n }\r\n }\r\n return tickInterval\r\n}\r\n\r\nfunction calculateTickIntervalsForSemidiscreteScale(scaleOptions, min, max, screenDelta) {\r\n var minorTickInterval = scaleOptions.minorTickInterval;\r\n var tickInterval = scaleOptions.tickInterval;\r\n var interval;\r\n var isDateType = \"datetime\" === scaleOptions.valueType;\r\n var gridSpacingFactor = scaleOptions.axisDivisionFactor || {};\r\n var tickCountByInterval;\r\n var tickCountByScreen;\r\n if (!tickInterval) {\r\n do {\r\n interval = getNextTickInterval(tickInterval, minorTickInterval, isDateType);\r\n if (tickInterval !== interval) {\r\n tickInterval = interval\r\n } else {\r\n break\r\n }\r\n if (isDateType) {\r\n interval = _date.default.dateToMilliseconds(tickInterval)\r\n }\r\n tickCountByInterval = _ceil((max - min) / interval);\r\n tickCountByScreen = _floor(screenDelta / (gridSpacingFactor[tickInterval] || SEMIDISCRETE_GRID_SPACING_FACTOR)) || 1\r\n } while (interval && tickCountByInterval > tickCountByScreen)\r\n }\r\n return {\r\n tickInterval: tickInterval,\r\n minorTickInterval: minorTickInterval,\r\n bounds: {\r\n minVisible: min,\r\n maxVisible: max\r\n },\r\n ticks: []\r\n }\r\n}\r\n\r\nfunction updateTickIntervals(scaleOptions, screenDelta, incidentOccurred, range) {\r\n var result;\r\n var min = (0, _type2.isDefined)(range.minVisible) ? range.minVisible : range.min;\r\n var max = (0, _type2.isDefined)(range.maxVisible) ? range.maxVisible : range.max;\r\n var categoriesInfo = scaleOptions._categoriesInfo;\r\n var ticksInfo;\r\n var length;\r\n var bounds = {};\r\n if (scaleOptions.type === SEMIDISCRETE) {\r\n result = calculateTickIntervalsForSemidiscreteScale(scaleOptions, min, max, screenDelta)\r\n } else {\r\n ticksInfo = (0, _tick_generator.tickGenerator)({\r\n axisType: scaleOptions.type,\r\n dataType: scaleOptions.valueType,\r\n logBase: scaleOptions.logarithmBase,\r\n allowNegatives: true,\r\n linearThreshold: Math.abs(scaleOptions.linearThreshold || 0),\r\n axisDivisionFactor: scaleOptions.axisDivisionFactor,\r\n minorAxisDivisionFactor: scaleOptions.minorAxisDivisionFactor,\r\n calculateMinors: true,\r\n allowDecimals: scaleOptions.allowDecimals,\r\n endOnTick: scaleOptions.endOnTick,\r\n incidentOccurred: incidentOccurred,\r\n rangeIsEmpty: range.isEmpty()\r\n })({\r\n min: min,\r\n max: max,\r\n categories: (0, _type2.isDefined)(categoriesInfo) ? categoriesInfo.categories : []\r\n }, screenDelta, scaleOptions.tickInterval, scaleOptions.forceUserTickInterval, void 0, scaleOptions.minorTickInterval, scaleOptions.minorTickCount);\r\n length = ticksInfo.ticks.length;\r\n bounds.minVisible = ticksInfo.ticks[0] < min ? ticksInfo.ticks[0] : min;\r\n bounds.maxVisible = ticksInfo.ticks[length - 1] > max ? ticksInfo.ticks[length - 1] : max;\r\n result = {\r\n tickInterval: ticksInfo.tickInterval,\r\n minorTickInterval: 0 === scaleOptions.minorTickInterval ? 0 : ticksInfo.minorTickInterval,\r\n bounds: bounds,\r\n ticks: ticksInfo.ticks\r\n }\r\n }\r\n return result\r\n}\r\n\r\nfunction getFirstDayOfWeek(options) {\r\n var _options$workWeek;\r\n return null === (_options$workWeek = options.workWeek) || void 0 === _options$workWeek ? void 0 : _options$workWeek[0]\r\n}\r\n\r\nfunction calculateTranslatorRange(seriesDataSource, scaleOptions) {\r\n var minValue;\r\n var maxValue;\r\n var inverted = false;\r\n var startValue = scaleOptions.startValue;\r\n var endValue = scaleOptions.endValue;\r\n var categories;\r\n var categoriesInfo;\r\n var translatorRange = seriesDataSource ? seriesDataSource.getBoundRange().arg : new _range.Range;\r\n var rangeForCategories;\r\n var isDate = \"datetime\" === scaleOptions.valueType;\r\n var firstDayOfWeek = getFirstDayOfWeek(scaleOptions);\r\n var minRange = scaleOptions.minRange;\r\n if (scaleOptions.type === DISCRETE) {\r\n rangeForCategories = new _range.Range({\r\n minVisible: startValue,\r\n maxVisible: endValue\r\n });\r\n rangeForCategories.addRange(translatorRange);\r\n translatorRange = rangeForCategories;\r\n categories = seriesDataSource ? seriesDataSource.argCategories : scaleOptions.categories || !seriesDataSource && startValue && endValue && [startValue, endValue];\r\n categories = categories || [];\r\n scaleOptions._categoriesInfo = categoriesInfo = (0, _utils.getCategoriesInfo)(categories, startValue, endValue)\r\n }\r\n if (scaleOptions.type === SEMIDISCRETE) {\r\n startValue = scaleOptions.startValue = correctValueByInterval(scaleOptions.startValue, isDate, minRange, firstDayOfWeek);\r\n endValue = scaleOptions.endValue = correctValueByInterval(scaleOptions.endValue, isDate, minRange, firstDayOfWeek);\r\n translatorRange.minVisible = correctValueByInterval(translatorRange.minVisible, isDate, minRange, firstDayOfWeek);\r\n translatorRange.maxVisible = correctValueByInterval(translatorRange.maxVisible, isDate, minRange, firstDayOfWeek);\r\n translatorRange.min = correctValueByInterval(translatorRange.min, isDate, minRange, firstDayOfWeek);\r\n translatorRange.max = correctValueByInterval(translatorRange.max, isDate, minRange, firstDayOfWeek)\r\n }\r\n if ((0, _type2.isDefined)(startValue) && (0, _type2.isDefined)(endValue)) {\r\n inverted = categoriesInfo ? categoriesInfo.inverted : startValue > endValue;\r\n minValue = categoriesInfo ? categoriesInfo.start : inverted ? endValue : startValue;\r\n maxValue = categoriesInfo ? categoriesInfo.end : inverted ? startValue : endValue\r\n } else {\r\n if ((0, _type2.isDefined)(startValue) || (0, _type2.isDefined)(endValue)) {\r\n minValue = startValue;\r\n maxValue = endValue\r\n } else {\r\n if (categoriesInfo) {\r\n minValue = categoriesInfo.start;\r\n maxValue = categoriesInfo.end\r\n }\r\n }\r\n }\r\n translatorRange.addRange({\r\n invert: inverted,\r\n min: minValue,\r\n max: maxValue,\r\n minVisible: minValue,\r\n maxVisible: maxValue,\r\n dataType: scaleOptions.valueType\r\n });\r\n translatorRange.addRange({\r\n categories: !seriesDataSource ? categories : void 0,\r\n base: scaleOptions.logarithmBase,\r\n axisType: scaleOptions.type,\r\n dataType: scaleOptions.valueType\r\n });\r\n seriesDataSource && translatorRange.sortCategories(categories);\r\n return translatorRange\r\n}\r\n\r\nfunction startEndNotDefined(start, end) {\r\n return !(0, _type2.isDefined)(start) || !(0, _type2.isDefined)(end)\r\n}\r\n\r\nfunction getTextBBox(renderer, text, fontOptions) {\r\n var textElement = renderer.text(text, INVISIBLE_POS, INVISIBLE_POS).css((0, _utils.patchFontOptions)(fontOptions)).append(renderer.root);\r\n var textBBox = textElement.getBBox();\r\n textElement.remove();\r\n return textBBox\r\n}\r\n\r\nfunction getDateMarkerVisibilityChecker(screenDelta) {\r\n return function(isDateScale, isMarkerVisible, min, max, tickInterval) {\r\n if (isMarkerVisible && isDateScale) {\r\n if (!(0, _type2.isDefined)(tickInterval) || tickInterval.years || tickInterval.months >= 6 || screenDelta / SEMIDISCRETE_GRID_SPACING_FACTOR < _ceil((max - min) / _date.default.dateToMilliseconds(\"year\")) + 1) {\r\n isMarkerVisible = false\r\n }\r\n }\r\n return isMarkerVisible\r\n }\r\n}\r\n\r\nfunction updateScaleOptions(scaleOptions, seriesDataSource, translatorRange, tickIntervalsInfo, checkDateMarkerVisibility) {\r\n var bounds;\r\n var isEmptyInterval;\r\n var categoriesInfo = scaleOptions._categoriesInfo;\r\n var intervals;\r\n var isDateTime = scaleOptions.valueType === DATETIME;\r\n if (seriesDataSource && !seriesDataSource.isEmpty() && !translatorRange.isEmpty()) {\r\n bounds = tickIntervalsInfo.bounds;\r\n translatorRange.addRange(bounds);\r\n scaleOptions.startValue = translatorRange.invert ? bounds.maxVisible : bounds.minVisible;\r\n scaleOptions.endValue = translatorRange.invert ? bounds.minVisible : bounds.maxVisible\r\n }\r\n scaleOptions.marker.visible = checkDateMarkerVisibility(isDateTime && scaleOptions.type.indexOf(DISCRETE) === -1, scaleOptions.marker.visible, scaleOptions.startValue, scaleOptions.endValue, tickIntervalsInfo.tickInterval);\r\n if (categoriesInfo) {\r\n scaleOptions.startValue = categoriesInfo.start;\r\n scaleOptions.endValue = categoriesInfo.end\r\n }\r\n if (scaleOptions.type.indexOf(DISCRETE) === -1) {\r\n isEmptyInterval = (0, _type2.isDate)(scaleOptions.startValue) && (0, _type2.isDate)(scaleOptions.endValue) && scaleOptions.startValue.getTime() === scaleOptions.endValue.getTime() || scaleOptions.startValue === scaleOptions.endValue\r\n }\r\n scaleOptions.isEmpty = startEndNotDefined(scaleOptions.startValue, scaleOptions.endValue) || isEmptyInterval;\r\n if (scaleOptions.isEmpty) {\r\n scaleOptions.startValue = scaleOptions.endValue = void 0\r\n } else {\r\n scaleOptions.minorTickInterval = tickIntervalsInfo.minorTickInterval;\r\n scaleOptions.tickInterval = tickIntervalsInfo.tickInterval;\r\n if (isDateTime && (!(0, _type2.isDefined)(scaleOptions.label.format) || scaleOptions.type === SEMIDISCRETE && scaleOptions.minorTickInterval !== scaleOptions.tickInterval)) {\r\n if (scaleOptions.type === DISCRETE) {\r\n scaleOptions.label.format = _format_helper.default.getDateFormatByTicks(tickIntervalsInfo.ticks)\r\n } else {\r\n if (!scaleOptions.marker.visible) {\r\n scaleOptions.label.format = _format_helper.default.getDateFormatByTickInterval(scaleOptions.startValue, scaleOptions.endValue, scaleOptions.tickInterval)\r\n } else {\r\n scaleOptions.label.format = _date.default.getDateFormatByTickInterval(scaleOptions.tickInterval)\r\n }\r\n }\r\n }\r\n }\r\n if (scaleOptions.type === SEMIDISCRETE) {\r\n intervals = getIntervalCustomTicks(scaleOptions);\r\n scaleOptions.customMinorTicks = intervals.altIntervals;\r\n scaleOptions.customTicks = intervals.intervals;\r\n scaleOptions.customBoundTicks = [scaleOptions.customTicks[0]]\r\n }\r\n}\r\n\r\nfunction prepareScaleOptions(scaleOption, calculatedValueType, incidentOccurred, containerColor) {\r\n var parsedValue = 0;\r\n var valueType = (0, _parse_utils.correctValueType)((0, _utils.normalizeEnum)(scaleOption.valueType));\r\n var validateStartEndValues = function(field, parser) {\r\n var messageToIncidentOccurred = field === START_VALUE ? \"start\" : \"end\";\r\n if ((0, _type2.isDefined)(scaleOption[field])) {\r\n parsedValue = parser(scaleOption[field]);\r\n if ((0, _type2.isDefined)(parsedValue)) {\r\n scaleOption[field] = parsedValue\r\n } else {\r\n scaleOption[field] = void 0;\r\n incidentOccurred(\"E2202\", [messageToIncidentOccurred])\r\n }\r\n }\r\n };\r\n valueType = calculatedValueType || valueType;\r\n if (!valueType) {\r\n valueType = calculateValueType(scaleOption.startValue, scaleOption.endValue) || \"numeric\"\r\n }\r\n if (valueType === STRING || scaleOption.categories) {\r\n scaleOption.type = DISCRETE;\r\n valueType = STRING\r\n }\r\n scaleOption.containerColor = containerColor;\r\n scaleOption.valueType = valueType;\r\n scaleOption.dataType = valueType;\r\n var parser = (0, _parse_utils.getParser)(valueType);\r\n validateStartEndValues(START_VALUE, parser);\r\n validateStartEndValues(END_VALUE, parser);\r\n checkLogarithmicOptions(scaleOption, logarithmBase, incidentOccurred);\r\n if (!scaleOption.type) {\r\n scaleOption.type = \"continuous\"\r\n }\r\n scaleOption.parser = parser;\r\n if (scaleOption.type === SEMIDISCRETE) {\r\n scaleOption.minorTick.visible = false;\r\n scaleOption.minorTickInterval = scaleOption.minRange;\r\n scaleOption.marker.visible = false;\r\n scaleOption.maxRange = void 0\r\n }\r\n scaleOption.forceUserTickInterval |= (0, _type2.isDefined)(scaleOption.tickInterval) && !(0, _type2.isDefined)(scaleOption.axisDivisionFactor);\r\n scaleOption.axisDivisionFactor = (0, _type2.isDefined)(scaleOption.axisDivisionFactor) ? scaleOption.axisDivisionFactor : DEFAULT_AXIS_DIVISION_FACTOR;\r\n scaleOption.minorAxisDivisionFactor = (0, _type2.isDefined)(scaleOption.minorAxisDivisionFactor) ? scaleOption.minorAxisDivisionFactor : DEFAULT_MINOR_AXIS_DIVISION_FACTOR;\r\n return scaleOption\r\n}\r\n\r\nfunction correctValueByInterval(value, isDate, interval, firstDayOfWeek) {\r\n if ((0, _type2.isDefined)(value)) {\r\n value = isDate ? _date.default.correctDateWithUnitBeginning(new Date(value), interval, null, firstDayOfWeek) : (0, _math.adjust)(_floor((0, _math.adjust)(value / interval)) * interval)\r\n }\r\n return value\r\n}\r\n\r\nfunction getIntervalCustomTicks(options) {\r\n var min = options.startValue;\r\n var max = options.endValue;\r\n var isDate = \"datetime\" === options.valueType;\r\n var firstDayOfWeek = getFirstDayOfWeek(options);\r\n var tickInterval = options.tickInterval;\r\n var res = {\r\n intervals: []\r\n };\r\n if (!(0, _type2.isDefined)(min) || !(0, _type2.isDefined)(max)) {\r\n return res\r\n }\r\n res.intervals = _date.default.getSequenceByInterval(min, max, options.minorTickInterval);\r\n if (tickInterval !== options.minorTickInterval) {\r\n res.altIntervals = res.intervals;\r\n min = correctValueByInterval(min, isDate, tickInterval, firstDayOfWeek);\r\n max = correctValueByInterval(max, isDate, tickInterval, firstDayOfWeek);\r\n res.intervals = _date.default.getSequenceByInterval(min, max, tickInterval);\r\n res.intervals[0] = res.altIntervals[0]\r\n }\r\n return res\r\n}\r\n\r\nfunction getPrecisionForSlider(startValue, endValue, screenDelta) {\r\n var d = Math.abs(endValue - startValue) / screenDelta;\r\n var tail = d - _floor(d);\r\n return tail > 0 ? _ceil(Math.abs((0, _math.adjust)((0, _utils.getLog)(tail, 10)))) : 0\r\n}\r\nvar dxRangeSelector = _base_widget.default.inherit({\r\n _toggleParentsScrollSubscription: function() {},\r\n _eventsMap: {\r\n onValueChanged: {\r\n name: VALUE_CHANGED\r\n }\r\n },\r\n _rootClassPrefix: \"dxrs\",\r\n _rootClass: \"dxrs-range-selector\",\r\n _dataIsReady: function() {\r\n return this._dataIsLoaded()\r\n },\r\n _initialChanges: [\"DATA_SOURCE\", \"VALUE\"],\r\n _themeDependentChanges: [\"MOSTLY_TOTAL\"],\r\n _themeSection: \"rangeSelector\",\r\n _fontFields: [\"scale.label.font\", \"sliderMarker.font\"],\r\n _initCore: function() {\r\n var that = this;\r\n var renderer = that._renderer;\r\n var root = renderer.root;\r\n root.css({\r\n \"touch-action\": \"pan-y\"\r\n });\r\n that._clipRect = renderer.clipRect();\r\n var rangeViewGroup = renderer.g().attr({\r\n \"class\": \"dxrs-view\"\r\n }).append(root);\r\n var slidersGroup = renderer.g().attr({\r\n \"class\": \"dxrs-slidersContainer\",\r\n \"clip-path\": that._clipRect.id\r\n }).append(root);\r\n var scaleGroup = renderer.g().attr({\r\n \"class\": \"dxrs-scale\",\r\n \"clip-path\": that._clipRect.id\r\n }).append(root);\r\n var scaleBreaksGroup = renderer.g().attr({\r\n \"class\": \"dxrs-scale-breaks\"\r\n }).append(root);\r\n var trackersGroup = renderer.g().attr({\r\n \"class\": \"dxrs-trackers\"\r\n }).append(root);\r\n that._axis = new AxisWrapper({\r\n renderer: renderer,\r\n root: scaleGroup,\r\n scaleBreaksGroup: scaleBreaksGroup,\r\n updateSelectedRange: function(range, e) {\r\n that.setValue((0, _utils.convertVisualRangeObject)(range), e)\r\n },\r\n incidentOccurred: that._incidentOccurred\r\n });\r\n that._rangeView = new _range_view.RangeView({\r\n renderer: renderer,\r\n root: rangeViewGroup,\r\n translator: that._axis.getTranslator()\r\n });\r\n that._slidersController = new _sliders_controller.SlidersController({\r\n renderer: renderer,\r\n root: slidersGroup,\r\n trackersGroup: trackersGroup,\r\n updateSelectedRange: function(range, lastSelectedRange, e) {\r\n if (!that._rangeOption) {\r\n that.option(VALUE, (0, _utils.convertVisualRangeObject)(range, (0, _type2.isPlainObject)(that._options.silent(VALUE))))\r\n }\r\n that._eventTrigger(VALUE_CHANGED, {\r\n value: (0, _utils.convertVisualRangeObject)(range),\r\n previousValue: (0, _utils.convertVisualRangeObject)(lastSelectedRange),\r\n event: e\r\n })\r\n },\r\n axis: that._axis,\r\n translator: that._axis.getTranslator()\r\n });\r\n that._tracker = new _tracker.Tracker({\r\n renderer: renderer,\r\n controller: that._slidersController\r\n })\r\n },\r\n _getDefaultSize: function() {\r\n return {\r\n width: 400,\r\n height: 160\r\n }\r\n },\r\n _disposeCore: function() {\r\n this._axis.dispose();\r\n this._slidersController.dispose();\r\n this._tracker.dispose()\r\n },\r\n _applySize: function(rect) {\r\n this._clientRect = rect.slice();\r\n this._change([\"MOSTLY_TOTAL\"])\r\n },\r\n _optionChangesMap: {\r\n scale: \"SCALE\",\r\n value: \"VALUE\",\r\n dataSource: \"DATA_SOURCE\"\r\n },\r\n _optionChangesOrder: [\"SCALE\", \"DATA_SOURCE\"],\r\n _change_SCALE: function() {\r\n this._change([\"MOSTLY_TOTAL\"])\r\n },\r\n _setValueByDataSource: function() {\r\n var that = this;\r\n var options = that._options.silent();\r\n var axis = that._axis;\r\n if (options.dataSource) {\r\n var selectedRangeUpdateMode = that.option(\"selectedRangeUpdateMode\");\r\n var value = that.getValue();\r\n var valueIsReady = (0, _type2.isDefined)(value[0]) && (0, _type2.isDefined)(value[1]);\r\n if ((0, _type2.isDefined)(selectedRangeUpdateMode)) {\r\n selectedRangeUpdateMode = (0, _utils.normalizeEnum)(selectedRangeUpdateMode);\r\n that.__skipAnimation = true\r\n } else {\r\n if (valueIsReady && !that._dataSourceIsAsync) {\r\n selectedRangeUpdateMode = RESET\r\n }\r\n }\r\n if (\"auto\" === selectedRangeUpdateMode && valueIsReady) {\r\n var rangesInfo = axis.allScaleSelected(value);\r\n if (rangesInfo.startValue && rangesInfo.endValue) {\r\n selectedRangeUpdateMode = RESET\r\n } else {\r\n if (rangesInfo.endValue) {\r\n selectedRangeUpdateMode = SHIFT\r\n } else {\r\n selectedRangeUpdateMode = KEEP\r\n }\r\n }\r\n }\r\n if (selectedRangeUpdateMode === RESET) {\r\n options[VALUE] = null\r\n } else {\r\n if (selectedRangeUpdateMode === SHIFT && valueIsReady) {\r\n var _value = that.getValue();\r\n that.__skipAnimation = true;\r\n options[VALUE] = {\r\n length: axis.getVisualRangeLength({\r\n minVisible: _value[0],\r\n maxVisible: _value[1]\r\n })\r\n }\r\n } else {\r\n if (selectedRangeUpdateMode === KEEP) {\r\n that.__skipAnimation = true\r\n }\r\n }\r\n }\r\n }\r\n that._dataSourceIsAsync = void 0\r\n },\r\n _change_DATA_SOURCE: function() {\r\n if (this._options.silent(\"dataSource\")) {\r\n this._updateDataSource()\r\n }\r\n },\r\n _customChangesOrder: [\"MOSTLY_TOTAL\", \"VALUE\", \"SLIDER_SELECTION\"],\r\n _change_MOSTLY_TOTAL: function() {\r\n this._applyMostlyTotalChange()\r\n },\r\n _change_SLIDER_SELECTION: function() {\r\n var that = this;\r\n var value = that._options.silent(VALUE);\r\n that._slidersController.setSelectedRange(value && (0, _utils.getVizRangeObject)(value))\r\n },\r\n _change_VALUE: function() {\r\n var that = this;\r\n var option = that._rangeOption;\r\n that._dataSourceIsAsync = !that._dataIsReady();\r\n if (option) {\r\n that._options.silent(VALUE, option);\r\n that.setValue(option)\r\n }\r\n },\r\n _validateRange: function(start, end) {\r\n var that = this;\r\n var translator = that._axis.getTranslator();\r\n if ((0, _type2.isDefined)(start) && !translator.isValid(start) || (0, _type2.isDefined)(end) && !translator.isValid(end)) {\r\n that._incidentOccurred(\"E2203\")\r\n }\r\n },\r\n _applyChanges: function() {\r\n var that = this;\r\n var value = that._options.silent(VALUE);\r\n if (that._changes.has(\"VALUE\") && value) {\r\n that._rangeOption = value\r\n }\r\n that.callBase.apply(that, arguments);\r\n that._rangeOption = null;\r\n that.__isResizing = that.__skipAnimation = false\r\n },\r\n _applyMostlyTotalChange: function() {\r\n var that = this;\r\n var renderer = that._renderer;\r\n var rect = that._clientRect;\r\n var currentAnimationEnabled;\r\n var canvas = {\r\n left: rect[0],\r\n top: rect[1],\r\n width: rect[2] - rect[0],\r\n height: rect[3] - rect[1]\r\n };\r\n if (that.__isResizing || that.__skipAnimation) {\r\n currentAnimationEnabled = renderer.animationEnabled();\r\n renderer.updateAnimationOptions({\r\n enabled: false\r\n })\r\n }\r\n that._clipRect.attr({\r\n x: rect[0],\r\n y: rect[1],\r\n width: rect[2] - rect[0],\r\n height: rect[3] - rect[1]\r\n });\r\n that._axis.getTranslator().update(new _range.Range, canvas, {\r\n isHorizontal: true\r\n });\r\n that._updateContent({\r\n left: rect[0],\r\n top: rect[1],\r\n width: rect[2] - rect[0],\r\n height: rect[3] - rect[1]\r\n });\r\n if (that.__isResizing || that.__skipAnimation) {\r\n renderer.updateAnimationOptions({\r\n enabled: currentAnimationEnabled\r\n })\r\n }\r\n that._drawn()\r\n },\r\n _dataSourceChangedHandler: function() {\r\n this._setValueByDataSource();\r\n this._requestChange([\"MOSTLY_TOTAL\"])\r\n },\r\n _completeSeriesDataSourceCreation: function(scaleOptions, seriesDataSource) {\r\n var rect = this._clientRect;\r\n var canvas = {\r\n left: rect[0],\r\n top: rect[1],\r\n width: rect[2] - rect[0],\r\n height: rect[3] - rect[1]\r\n };\r\n this._axis.updateOptions((0, _extend.extend)({}, scaleOptions, {\r\n isHorizontal: true,\r\n label: {}\r\n }));\r\n seriesDataSource.isShowChart() && this._axis.setMarginOptions(seriesDataSource.getMarginOptions(canvas));\r\n this._axis.updateCanvas(canvas);\r\n seriesDataSource.createPoints()\r\n },\r\n _updateContent: function(canvas) {\r\n var that = this;\r\n var chartOptions = that.option(\"chart\");\r\n var seriesDataSource = that._createSeriesDataSource(chartOptions);\r\n var isCompactMode = !(seriesDataSource && seriesDataSource.isShowChart() || that.option(\"background.image.url\"));\r\n var scaleOptions = prepareScaleOptions(that._getOption(\"scale\"), seriesDataSource && seriesDataSource.getCalculatedValueType(), that._incidentOccurred, this._getOption(\"containerBackgroundColor\", true));\r\n seriesDataSource && that._completeSeriesDataSourceCreation(scaleOptions, seriesDataSource);\r\n var argTranslatorRange = calculateTranslatorRange(seriesDataSource, scaleOptions);\r\n var tickIntervalsInfo = updateTickIntervals(scaleOptions, canvas.width, that._incidentOccurred, argTranslatorRange);\r\n var chartThemeManager = seriesDataSource && seriesDataSource.isShowChart() && seriesDataSource.getThemeManager();\r\n if (chartThemeManager) {\r\n checkLogarithmicOptions(chartOptions && chartOptions.valueAxis, chartThemeManager.getOptions(\"valueAxis\").logarithmBase, that._incidentOccurred)\r\n }\r\n updateScaleOptions(scaleOptions, seriesDataSource, argTranslatorRange, tickIntervalsInfo, getDateMarkerVisibilityChecker(canvas.width));\r\n updateTranslatorRangeInterval(argTranslatorRange, scaleOptions);\r\n var sliderMarkerOptions = that._prepareSliderMarkersOptions(scaleOptions, canvas.width, tickIntervalsInfo, argTranslatorRange);\r\n var indents = calculateIndents(that._renderer, scaleOptions, sliderMarkerOptions, that.option(\"indent\"), tickIntervalsInfo);\r\n var rangeContainerCanvas = {\r\n left: canvas.left + indents.left,\r\n top: canvas.top + indents.top,\r\n width: canvas.left + indents.left + _max(canvas.width - indents.left - indents.right, 1),\r\n height: _max(!isCompactMode ? canvas.height - indents.top - indents.bottom - calculateScaleAreaHeight(that._renderer, scaleOptions, showScaleMarkers(scaleOptions), tickIntervalsInfo) : _common.HEIGHT_COMPACT_MODE, 0),\r\n right: 0,\r\n bottom: 0\r\n };\r\n that._axis.update(scaleOptions, isCompactMode, rangeContainerCanvas, argTranslatorRange, seriesDataSource);\r\n scaleOptions.minorTickInterval = scaleOptions.isEmpty ? 0 : scaleOptions.minorTickInterval;\r\n that._updateElements(scaleOptions, sliderMarkerOptions, isCompactMode, rangeContainerCanvas, seriesDataSource);\r\n if (chartThemeManager) {\r\n chartThemeManager.dispose()\r\n }\r\n },\r\n _updateElements: function(scaleOptions, sliderMarkerOptions, isCompactMode, canvas, seriesDataSource) {\r\n var that = this;\r\n var behavior = that._getOption(\"behavior\");\r\n var shutterOptions = that._getOption(\"shutter\");\r\n var isNotSemiDiscrete = scaleOptions.type !== SEMIDISCRETE;\r\n shutterOptions.color = shutterOptions.color || that._getOption(CONTAINER_BACKGROUND_COLOR, true);\r\n that._rangeView.update(that.option(\"background\"), that._themeManager.theme(\"background\"), canvas, isCompactMode, behavior.animationEnabled && that._renderer.animationEnabled(), seriesDataSource);\r\n that._isUpdating = true;\r\n that._slidersController.update([canvas.top, canvas.top + canvas.height], behavior, isCompactMode, that._getOption(\"sliderHandle\"), sliderMarkerOptions, shutterOptions, {\r\n minRange: isNotSemiDiscrete ? that.option(\"scale.minRange\") : void 0,\r\n maxRange: isNotSemiDiscrete ? that.option(\"scale.maxRange\") : void 0\r\n }, that._axis.getFullTicks(), that._getOption(\"selectedRangeColor\", true));\r\n that._requestChange([\"SLIDER_SELECTION\"]);\r\n that._isUpdating = false;\r\n that._tracker.update(!that._axis.getTranslator().getBusinessRange().isEmpty(), behavior)\r\n },\r\n _createSeriesDataSource: function(chartOptions) {\r\n var that = this;\r\n var seriesDataSource;\r\n var dataSource = that._dataSourceItems();\r\n var scaleOptions = that._getOption(\"scale\");\r\n var valueType = scaleOptions.valueType || calculateValueType(scaleOptions.startValue, scaleOptions.endValue);\r\n var valueAxis = new _base_axis.Axis({\r\n renderer: that._renderer,\r\n axisType: \"xyAxes\",\r\n drawingType: \"linear\"\r\n });\r\n valueAxis.updateOptions({\r\n isHorizontal: false,\r\n label: {},\r\n categoriesSortingMethod: that._getOption(\"chart\").valueAxis.categoriesSortingMethod\r\n });\r\n if (dataSource || chartOptions && chartOptions.series) {\r\n chartOptions = (0, _extend.extend)({}, chartOptions, {\r\n theme: that.option(\"theme\")\r\n });\r\n seriesDataSource = new _series_data_source.SeriesDataSource({\r\n renderer: that._renderer,\r\n dataSource: dataSource,\r\n valueType: (0, _utils.normalizeEnum)(valueType),\r\n axisType: scaleOptions.type,\r\n chart: chartOptions,\r\n dataSourceField: that.option(\"dataSourceField\"),\r\n incidentOccurred: that._incidentOccurred,\r\n categories: scaleOptions.categories,\r\n argumentAxis: that._axis,\r\n valueAxis: valueAxis\r\n })\r\n }\r\n return seriesDataSource\r\n },\r\n _prepareSliderMarkersOptions: function(scaleOptions, screenDelta, tickIntervalsInfo, argRange) {\r\n var that = this;\r\n var minorTickInterval = tickIntervalsInfo.minorTickInterval;\r\n var tickInterval = tickIntervalsInfo.tickInterval;\r\n var interval = tickInterval;\r\n var endValue = scaleOptions.endValue;\r\n var startValue = scaleOptions.startValue;\r\n var sliderMarkerOptions = that._getOption(SLIDER_MARKER);\r\n var doNotSnap = !that._getOption(\"behavior\").snapToTicks;\r\n var isTypeDiscrete = scaleOptions.type === DISCRETE;\r\n var isValueTypeDatetime = scaleOptions.valueType === DATETIME;\r\n sliderMarkerOptions.borderColor = that._getOption(CONTAINER_BACKGROUND_COLOR, true);\r\n if (!sliderMarkerOptions.format && !argRange.isEmpty()) {\r\n if (doNotSnap && (0, _type2.isNumeric)(scaleOptions.startValue)) {\r\n sliderMarkerOptions.format = {\r\n type: \"fixedPoint\",\r\n precision: getPrecisionForSlider(startValue, endValue, screenDelta)\r\n }\r\n }\r\n if (isValueTypeDatetime && !isTypeDiscrete) {\r\n if ((0, _type2.isDefined)(minorTickInterval) && 0 !== minorTickInterval) {\r\n interval = getMinorTickIntervalUnit(tickInterval, minorTickInterval, doNotSnap)\r\n }\r\n if (!scaleOptions.marker.visible) {\r\n if ((0, _type2.isDefined)(startValue) && (0, _type2.isDefined)(endValue)) {\r\n sliderMarkerOptions.format = _format_helper.default.getDateFormatByTickInterval(startValue, endValue, interval)\r\n }\r\n } else {\r\n sliderMarkerOptions.format = _date.default.getDateFormatByTickInterval(interval)\r\n }\r\n }\r\n if (isValueTypeDatetime && isTypeDiscrete && tickIntervalsInfo.ticks.length) {\r\n sliderMarkerOptions.format = _format_helper.default.getDateFormatByTicks(tickIntervalsInfo.ticks)\r\n }\r\n }\r\n return sliderMarkerOptions\r\n },\r\n getValue: function() {\r\n return (0, _utils.convertVisualRangeObject)(this._slidersController.getSelectedRange())\r\n },\r\n setValue: function(value, e) {\r\n var visualRange = (0, _utils.getVizRangeObject)(value);\r\n if (!this._isUpdating && value) {\r\n this._validateRange(visualRange.startValue, visualRange.endValue);\r\n !(0, _utils.rangesAreEqual)(visualRange, this._slidersController.getSelectedRange()) && this._slidersController.setSelectedRange(visualRange, e)\r\n }\r\n },\r\n _setContentSize: function() {\r\n this.__isResizing = 2 === this._changes.count();\r\n this.callBase.apply(this, arguments)\r\n }\r\n});\r\n(0, _iterator.each)([\"selectedRangeColor\", \"containerBackgroundColor\", \"sliderMarker\", \"sliderHandle\", \"shutter\", OPTION_BACKGROUND, \"behavior\", \"chart\", \"indent\"], function(_, name) {\r\n dxRangeSelector.prototype._optionChangesMap[name] = \"MOSTLY_TOTAL\"\r\n});\r\n\r\nfunction prepareAxisOptions(scaleOptions, isCompactMode, height, axisPosition) {\r\n scaleOptions.marker.label.font = scaleOptions.label.font;\r\n scaleOptions.color = scaleOptions.marker.color = scaleOptions.tick.color;\r\n scaleOptions.opacity = scaleOptions.marker.opacity = scaleOptions.tick.opacity;\r\n scaleOptions.width = scaleOptions.marker.width = scaleOptions.tick.width;\r\n scaleOptions.placeholderSize = (scaleOptions.placeholderHeight || 0) + axisPosition;\r\n scaleOptions.argumentType = scaleOptions.valueType;\r\n scaleOptions.visible = isCompactMode;\r\n scaleOptions.isHorizontal = true;\r\n scaleOptions.calculateMinors = true;\r\n scaleOptions.semiDiscreteInterval = scaleOptions.minRange;\r\n if (!isCompactMode) {\r\n scaleOptions.minorTick.length = scaleOptions.tick.length = height\r\n }\r\n scaleOptions.label.indentFromAxis = scaleOptions.label.topIndent + axisPosition;\r\n return scaleOptions\r\n}\r\n\r\nfunction createDateMarkersEvent(scaleOptions, markerTrackers, setSelectedRange) {\r\n (0, _iterator.each)(markerTrackers, function(_, value) {\r\n value.on(\"dxpointerdown\", onPointerDown)\r\n });\r\n\r\n function onPointerDown(e) {\r\n var range = e.target.range;\r\n var minRange = scaleOptions.minRange ? _date.default.addInterval(range.startValue, scaleOptions.minRange) : void 0;\r\n var maxRange = scaleOptions.maxRange ? _date.default.addInterval(range.startValue, scaleOptions.maxRange) : void 0;\r\n if (!(minRange && minRange > range.endValue || maxRange && maxRange < range.endValue)) {\r\n setSelectedRange(range, e)\r\n }\r\n }\r\n}\r\n\r\nfunction getShiftDirection() {\r\n return 1\r\n}\r\n\r\nfunction getTickStartPositionShift(length) {\r\n return length % 2 === 1 ? -_floor(length / 2) : -length / 2\r\n}\r\n\r\nfunction checkShiftedLabels(majorTicks, boxes, minSpacing, alignment) {\r\n function checkLabelsOverlapping(nearestLabelsIndexes) {\r\n if (2 === nearestLabelsIndexes.length && _axes_constants.default.areLabelsOverlap(boxes[nearestLabelsIndexes[0]], boxes[nearestLabelsIndexes[1]], minSpacing, alignment)) {\r\n majorTicks[nearestLabelsIndexes[0]].removeLabel()\r\n }\r\n }\r\n\r\n function getTwoVisibleLabels(startIndex) {\r\n var labels = [];\r\n for (var i = startIndex; labels.length < 2 && i < majorTicks.length; i++) {\r\n majorTicks[i].label && labels.push(i)\r\n }\r\n return labels\r\n }\r\n if (majorTicks.length < 3) {\r\n return\r\n }\r\n checkLabelsOverlapping(getTwoVisibleLabels(0));\r\n checkLabelsOverlapping(getTwoVisibleLabels(majorTicks.length - 2).reverse())\r\n}\r\n\r\nfunction AxisWrapper(params) {\r\n var that = this;\r\n that._axis = new _base_axis.Axis({\r\n renderer: params.renderer,\r\n axesContainerGroup: params.root,\r\n scaleBreaksGroup: params.scaleBreaksGroup,\r\n incidentOccurred: params.incidentOccurred,\r\n axisType: \"xyAxes\",\r\n drawingType: \"linear\",\r\n widgetClass: \"dxrs\",\r\n axisClass: \"range-selector\",\r\n isArgumentAxis: true,\r\n getTemplate: function() {}\r\n });\r\n that._updateSelectedRangeCallback = params.updateSelectedRange;\r\n that._axis.getAxisSharpDirection = that._axis.getSharpDirectionByCoords = getShiftDirection;\r\n that._axis.getTickStartPositionShift = getTickStartPositionShift;\r\n that._axis._checkShiftedLabels = checkShiftedLabels\r\n}\r\nAxisWrapper.prototype = {\r\n constructor: AxisWrapper,\r\n dispose: function() {\r\n this._axis.dispose()\r\n },\r\n calculateInterval: function(value, prevValue) {\r\n return this._axis.calculateInterval(value, prevValue)\r\n },\r\n update: function(options, isCompactMode, canvas, businessRange, seriesDataSource) {\r\n var axis = this._axis;\r\n axis.updateOptions(prepareAxisOptions(options, isCompactMode, canvas.height, canvas.height / 2 - _ceil(options.width / 2)));\r\n axis.validate();\r\n axis.setBusinessRange(businessRange, true);\r\n if (void 0 !== seriesDataSource && seriesDataSource.isShowChart()) {\r\n axis.setMarginOptions(seriesDataSource.getMarginOptions(canvas))\r\n }\r\n axis.draw(canvas);\r\n axis.shift({\r\n left: 0,\r\n bottom: -canvas.height / 2 + canvas.top\r\n });\r\n if (axis.getMarkerTrackers()) {\r\n createDateMarkersEvent(options, axis.getMarkerTrackers(), this._updateSelectedRangeCallback)\r\n }\r\n axis.drawScaleBreaks({\r\n start: canvas.top,\r\n end: canvas.top + canvas.height\r\n })\r\n },\r\n visualRange: function() {},\r\n getViewport: function() {\r\n return {}\r\n },\r\n allScaleSelected: function(value) {\r\n var _this$_axis$visualRan = this._axis.visualRange(),\r\n startValue = _this$_axis$visualRan.startValue,\r\n endValue = _this$_axis$visualRan.endValue;\r\n return {\r\n startValue: value[0].valueOf() === startValue.valueOf(),\r\n endValue: value[1].valueOf() === endValue.valueOf()\r\n }\r\n },\r\n getOptions: function() {\r\n return this._axis.getOptions() || {}\r\n }\r\n};\r\n[\"setMarginOptions\", \"getFullTicks\", \"updateCanvas\", \"updateOptions\", \"getAggregationInfo\", \"getTranslator\", \"getVisualRangeLength\", \"getVisibleArea\", \"getMarginOptions\"].forEach(function(methodName) {\r\n AxisWrapper.prototype[methodName] = function() {\r\n var axis = this._axis;\r\n return axis[methodName].apply(axis, arguments)\r\n }\r\n});\r\n(0, _component_registrator.default)(\"dxRangeSelector\", dxRangeSelector);\r\nvar _default = dxRangeSelector;\r\nexports.default = _default;\r\ndxRangeSelector.addPlugin(_export.plugin);\r\ndxRangeSelector.addPlugin(_title.plugin);\r\ndxRangeSelector.addPlugin(_loading_indicator.plugin);\r\ndxRangeSelector.addPlugin(_data_source.plugin);\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/range_selector/sliders_controller.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.SlidersController = SlidersController;\r\nvar _common = require(\"../../core/utils/common\");\r\nvar _common2 = require(\"./common\");\r\nvar _slider = _interopRequireDefault(require(\"./slider\"));\r\nvar _utils = require(\"../core/utils\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _math = require(\"../../core/utils/math\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar animationSettings = _common2.utils.animationSettings;\r\nvar emptySliderMarkerText = _common2.consts.emptySliderMarkerText;\r\n\r\nfunction buildRectPoints(left, top, right, bottom) {\r\n return [left, top, right, top, right, bottom, left, bottom]\r\n}\r\n\r\nfunction isLess(a, b) {\r\n return a < b\r\n}\r\n\r\nfunction isGreater(a, b) {\r\n return a > b\r\n}\r\n\r\nfunction selectClosestValue(target, values) {\r\n var start = 0;\r\n var end = values ? values.length - 1 : 0;\r\n var middle;\r\n var val = target;\r\n while (end - start > 1) {\r\n middle = start + end >> 1;\r\n val = values[middle];\r\n if (val === target) {\r\n return target\r\n } else {\r\n if (target < val) {\r\n end = middle\r\n } else {\r\n start = middle\r\n }\r\n }\r\n }\r\n if (values) {\r\n val = values[target - values[start] <= values[end] - target ? start : end]\r\n }\r\n return val\r\n}\r\n\r\nfunction dummyProcessSelectionChanged() {\r\n this._lastSelectedRange = this.getSelectedRange();\r\n delete this._processSelectionChanged\r\n}\r\n\r\nfunction suppressSetSelectedRange(controller) {\r\n controller.setSelectedRange = _common.noop;\r\n if (controller._processSelectionChanged === dummyProcessSelectionChanged) {\r\n controller._processSelectionChanged()\r\n }\r\n}\r\n\r\nfunction restoreSetSelectedRange(controller) {\r\n delete controller.setSelectedRange\r\n}\r\n\r\nfunction SlidersController(params) {\r\n var that = this;\r\n var sliderParams = {\r\n renderer: params.renderer,\r\n root: params.root,\r\n trackersGroup: params.trackersGroup,\r\n translator: params.translator\r\n };\r\n that._params = params;\r\n that._areaTracker = params.renderer.path(null, \"area\").attr({\r\n \"class\": \"area-tracker\",\r\n fill: \"#000000\",\r\n opacity: 1e-4\r\n }).append(params.trackersGroup);\r\n that._selectedAreaTracker = params.renderer.path(null, \"area\").attr({\r\n \"class\": \"selected-area-tracker\",\r\n fill: \"#000000\",\r\n opacity: 1e-4\r\n }).append(params.trackersGroup);\r\n that._shutter = params.renderer.path(null, \"area\").append(params.root);\r\n that._sliders = [new _slider.default(sliderParams, 0), new _slider.default(sliderParams, 1)];\r\n that._processSelectionChanged = dummyProcessSelectionChanged\r\n}\r\nSlidersController.prototype = {\r\n constructor: SlidersController,\r\n dispose: function() {\r\n this._sliders[0].dispose();\r\n this._sliders[1].dispose()\r\n },\r\n getTrackerTargets: function() {\r\n return {\r\n area: this._areaTracker,\r\n selectedArea: this._selectedAreaTracker,\r\n sliders: this._sliders\r\n }\r\n },\r\n _processSelectionChanged: function(e) {\r\n var that = this;\r\n var selectedRange = that.getSelectedRange();\r\n if (!(0, _utils.rangesAreEqual)(selectedRange, that._lastSelectedRange)) {\r\n that._params.updateSelectedRange(selectedRange, that._lastSelectedRange, e);\r\n that._lastSelectedRange = selectedRange\r\n }\r\n },\r\n update: function(verticalRange, behavior, isCompactMode, sliderHandleOptions, sliderMarkerOptions, shutterOptions, rangeBounds, fullTicks, selectedRangeColor) {\r\n var that = this;\r\n var screenRange = that._params.translator.getScreenRange();\r\n that._verticalRange = verticalRange;\r\n that._minRange = rangeBounds.minRange;\r\n that._maxRange = rangeBounds.maxRange;\r\n that._animationEnabled = behavior.animationEnabled && that._params.renderer.animationEnabled();\r\n that._allowSlidersSwap = behavior.allowSlidersSwap;\r\n that._sliders[0].update(verticalRange, sliderHandleOptions, sliderMarkerOptions);\r\n that._sliders[1].update(verticalRange, sliderHandleOptions, sliderMarkerOptions);\r\n that._sliders[0]._position = that._sliders[1]._position = screenRange[0];\r\n that._values = !that._params.translator.isValueProlonged && behavior.snapToTicks ? fullTicks : null;\r\n that._areaTracker.attr({\r\n points: buildRectPoints(screenRange[0], verticalRange[0], screenRange[1], verticalRange[1])\r\n });\r\n that._isCompactMode = isCompactMode;\r\n that._shutterOffset = sliderHandleOptions.width / 2;\r\n that._updateSelectedView(shutterOptions, selectedRangeColor);\r\n that._isOnMoving = \"onmoving\" === (0, _utils.normalizeEnum)(behavior.callValueChanged);\r\n that._updateSelectedRange();\r\n that._applyTotalPosition(false)\r\n },\r\n _updateSelectedView: function(shutterOptions, selectedRangeColor) {\r\n var settings = {\r\n fill: null,\r\n \"fill-opacity\": null,\r\n stroke: null,\r\n \"stroke-width\": null\r\n };\r\n if (this._isCompactMode) {\r\n settings.stroke = selectedRangeColor;\r\n settings[\"stroke-width\"] = 3;\r\n settings.sharp = \"v\"\r\n } else {\r\n settings.fill = shutterOptions.color;\r\n settings[\"fill-opacity\"] = shutterOptions.opacity\r\n }\r\n this._shutter.attr(settings)\r\n },\r\n _updateSelectedRange: function() {\r\n var that = this;\r\n var sliders = that._sliders;\r\n sliders[0].cancelAnimation();\r\n sliders[1].cancelAnimation();\r\n that._shutter.stopAnimation();\r\n if (that._params.translator.getBusinessRange().isEmpty()) {\r\n sliders[0]._setText(emptySliderMarkerText);\r\n sliders[1]._setText(emptySliderMarkerText);\r\n sliders[0]._value = sliders[1]._value = void 0;\r\n sliders[0]._position = that._params.translator.getScreenRange()[0];\r\n sliders[1]._position = that._params.translator.getScreenRange()[1];\r\n that._applyTotalPosition(false);\r\n suppressSetSelectedRange(that)\r\n } else {\r\n restoreSetSelectedRange(that)\r\n }\r\n },\r\n _applyTotalPosition: function(isAnimated) {\r\n var sliders = this._sliders;\r\n isAnimated = this._animationEnabled && isAnimated;\r\n sliders[0].applyPosition(isAnimated);\r\n sliders[1].applyPosition(isAnimated);\r\n var areOverlapped = sliders[0].getCloudBorder() > sliders[1].getCloudBorder();\r\n sliders[0].setOverlapped(areOverlapped);\r\n sliders[1].setOverlapped(areOverlapped);\r\n this._applyAreaTrackersPosition();\r\n this._applySelectedRangePosition(isAnimated)\r\n },\r\n _applyAreaTrackersPosition: function() {\r\n var that = this;\r\n var position1 = that._sliders[0].getPosition();\r\n var position2 = that._sliders[1].getPosition();\r\n that._selectedAreaTracker.attr({\r\n points: buildRectPoints(position1, that._verticalRange[0], position2, that._verticalRange[1])\r\n }).css({\r\n cursor: Math.abs(that._params.translator.getScreenRange()[1] - that._params.translator.getScreenRange()[0] - position2 + position1) < .001 ? \"default\" : \"pointer\"\r\n })\r\n },\r\n _applySelectedRangePosition: function(isAnimated) {\r\n var that = this;\r\n var verticalRange = that._verticalRange;\r\n var pos1 = that._sliders[0].getPosition();\r\n var pos2 = that._sliders[1].getPosition();\r\n var screenRange;\r\n var points;\r\n if (that._isCompactMode) {\r\n points = [pos1 + Math.ceil(that._shutterOffset), (verticalRange[0] + verticalRange[1]) / 2, pos2 - Math.floor(that._shutterOffset), (verticalRange[0] + verticalRange[1]) / 2]\r\n } else {\r\n screenRange = that._params.axis.getVisibleArea();\r\n points = [buildRectPoints(screenRange[0], verticalRange[0], Math.max(pos1 - Math.floor(that._shutterOffset), screenRange[0]), verticalRange[1]), buildRectPoints(screenRange[1], verticalRange[0], Math.min(pos2 + Math.ceil(that._shutterOffset), screenRange[1]), verticalRange[1])]\r\n }\r\n if (isAnimated) {\r\n that._shutter.animate({\r\n points: points\r\n }, animationSettings)\r\n } else {\r\n that._shutter.attr({\r\n points: points\r\n })\r\n }\r\n },\r\n getSelectedRange: function() {\r\n return {\r\n startValue: this._sliders[0].getValue(),\r\n endValue: this._sliders[1].getValue()\r\n }\r\n },\r\n setSelectedRange: function(visualRange, e) {\r\n visualRange = visualRange || {};\r\n var that = this;\r\n var translator = that._params.translator;\r\n var businessRange = translator.getBusinessRange();\r\n var compare = \"discrete\" === businessRange.axisType ? function(a, b) {\r\n return a < b\r\n } : function(a, b) {\r\n return a <= b\r\n };\r\n var _adjustVisualRange = (0, _utils.adjustVisualRange)({\r\n dataType: businessRange.dataType,\r\n axisType: businessRange.axisType,\r\n base: businessRange.base\r\n }, {\r\n startValue: translator.isValid(visualRange.startValue) ? translator.getCorrectValue(visualRange.startValue, 1) : void 0,\r\n endValue: translator.isValid(visualRange.endValue) ? translator.getCorrectValue(visualRange.endValue, -1) : void 0,\r\n length: visualRange.length\r\n }, {\r\n min: businessRange.minVisible,\r\n max: businessRange.maxVisible,\r\n categories: businessRange.categories\r\n }),\r\n startValue = _adjustVisualRange.startValue,\r\n endValue = _adjustVisualRange.endValue;\r\n startValue = (0, _type.isNumeric)(startValue) ? (0, _math.adjust)(startValue) : startValue;\r\n endValue = (0, _type.isNumeric)(endValue) ? (0, _math.adjust)(endValue) : endValue;\r\n var values = compare(translator.to(startValue, -1), translator.to(endValue, 1)) ? [startValue, endValue] : [endValue, startValue];\r\n that._sliders[0].setDisplayValue(values[0]);\r\n that._sliders[1].setDisplayValue(values[1]);\r\n that._sliders[0]._position = translator.to(values[0], -1);\r\n that._sliders[1]._position = translator.to(values[1], 1);\r\n that._applyTotalPosition(true);\r\n that._processSelectionChanged(e)\r\n },\r\n beginSelectedAreaMoving: function(initialPosition) {\r\n var that = this;\r\n var sliders = that._sliders;\r\n var offset = (sliders[0].getPosition() + sliders[1].getPosition()) / 2 - initialPosition;\r\n var currentPosition = initialPosition;\r\n move.complete = function(e) {\r\n that._dockSelectedArea(e)\r\n };\r\n return move;\r\n\r\n function move(position, e) {\r\n if (position !== currentPosition && position > currentPosition === position > (sliders[0].getPosition() + sliders[1].getPosition()) / 2 - offset) {\r\n that._moveSelectedArea(position + offset, false, e)\r\n }\r\n currentPosition = position\r\n }\r\n },\r\n _dockSelectedArea: function(e) {\r\n var translator = this._params.translator;\r\n var sliders = this._sliders;\r\n sliders[0]._position = translator.to(sliders[0].getValue(), -1);\r\n sliders[1]._position = translator.to(sliders[1].getValue(), 1);\r\n this._applyTotalPosition(true);\r\n this._processSelectionChanged(e)\r\n },\r\n moveSelectedArea: function(screenPosition, e) {\r\n this._moveSelectedArea(screenPosition, true, e);\r\n this._dockSelectedArea(e)\r\n },\r\n _moveSelectedArea: function(screenPosition, isAnimated, e) {\r\n var that = this;\r\n var translator = that._params.translator;\r\n var sliders = that._sliders;\r\n var interval = sliders[1].getPosition() - sliders[0].getPosition();\r\n var startPosition = screenPosition - interval / 2;\r\n var endPosition = screenPosition + interval / 2;\r\n if (startPosition < translator.getScreenRange()[0]) {\r\n startPosition = translator.getScreenRange()[0];\r\n endPosition = startPosition + interval\r\n }\r\n if (endPosition > translator.getScreenRange()[1]) {\r\n endPosition = translator.getScreenRange()[1];\r\n startPosition = endPosition - interval\r\n }\r\n var startValue = selectClosestValue(translator.from(startPosition, -1), that._values);\r\n sliders[0].setDisplayValue(startValue);\r\n sliders[1].setDisplayValue(selectClosestValue(translator.from(translator.to(startValue, -1) + interval, 1), that._values));\r\n sliders[0]._position = startPosition;\r\n sliders[1]._position = endPosition;\r\n that._applyTotalPosition(isAnimated);\r\n if (that._isOnMoving) {\r\n that._processSelectionChanged(e)\r\n }\r\n },\r\n placeSliderAndBeginMoving: function(firstPosition, secondPosition, e) {\r\n var that = this;\r\n var translator = that._params.translator;\r\n var sliders = that._sliders;\r\n var index = firstPosition < secondPosition ? 0 : 1;\r\n var dir = index > 0 ? 1 : -1;\r\n var compare = index > 0 ? isGreater : isLess;\r\n var antiCompare = index > 0 ? isLess : isGreater;\r\n var thresholdPosition;\r\n var positions = [];\r\n var values = [];\r\n values[index] = translator.from(firstPosition, dir);\r\n values[1 - index] = translator.from(secondPosition, -dir);\r\n positions[1 - index] = secondPosition;\r\n if (translator.isValueProlonged) {\r\n if (compare(firstPosition, translator.to(values[index], dir))) {\r\n values[index] = translator.from(firstPosition, -dir)\r\n }\r\n if (compare(secondPosition, translator.to(values[index], -dir))) {\r\n values[1 - index] = values[index]\r\n }\r\n }\r\n if (that._minRange) {\r\n thresholdPosition = translator.to(translator.add(selectClosestValue(values[index], that._values), that._minRange, -dir), -dir);\r\n if (compare(secondPosition, thresholdPosition)) {\r\n values[1 - index] = translator.add(values[index], that._minRange, -dir)\r\n }\r\n thresholdPosition = translator.to(translator.add(translator.getRange()[1 - index], that._minRange, dir), -dir);\r\n if (antiCompare(firstPosition, thresholdPosition)) {\r\n values[1 - index] = translator.getRange()[1 - index];\r\n values[index] = translator.add(values[1 - index], that._minRange, dir);\r\n positions[1 - index] = firstPosition\r\n }\r\n }\r\n values[0] = selectClosestValue(values[0], that._values);\r\n values[1] = selectClosestValue(values[1], that._values);\r\n positions[index] = translator.to(values[index], dir);\r\n sliders[0].setDisplayValue(values[0]);\r\n sliders[1].setDisplayValue(values[1]);\r\n sliders[0]._position = positions[0];\r\n sliders[1]._position = positions[1];\r\n that._applyTotalPosition(true);\r\n if (that._isOnMoving) {\r\n that._processSelectionChanged(e)\r\n }\r\n var handler = that.beginSliderMoving(1 - index, secondPosition);\r\n sliders[1 - index]._sliderGroup.stopAnimation();\r\n that._shutter.stopAnimation();\r\n handler(secondPosition);\r\n return handler\r\n },\r\n beginSliderMoving: function(initialIndex, initialPosition) {\r\n var that = this;\r\n var translator = that._params.translator;\r\n var sliders = that._sliders;\r\n var minPosition = translator.getScreenRange()[0];\r\n var maxPosition = translator.getScreenRange()[1];\r\n var index = initialIndex;\r\n var staticPosition = sliders[1 - index].getPosition();\r\n var currentPosition = initialPosition;\r\n var dir = index > 0 ? 1 : -1;\r\n var compareMin = index > 0 ? isLess : isGreater;\r\n var compareMax = index > 0 ? isGreater : isLess;\r\n var moveOffset = sliders[index].getPosition() - initialPosition;\r\n var swapOffset = compareMin(sliders[index].getPosition(), initialPosition) ? -moveOffset : moveOffset;\r\n move.complete = function(e) {\r\n sliders[index]._setValid(true);\r\n that._dockSelectedArea(e)\r\n };\r\n return move;\r\n\r\n function move(position, e) {\r\n var isValid;\r\n var temp;\r\n var pos;\r\n var slider;\r\n var value;\r\n if (position !== currentPosition) {\r\n if (compareMin(position + swapOffset, staticPosition)) {\r\n isValid = that._allowSlidersSwap;\r\n if (isValid && !translator.isValueProlonged && that._minRange) {\r\n isValid = translator.isValid(translator.add(sliders[1 - index].getValue(), that._minRange, -dir))\r\n }\r\n if (isValid) {\r\n that._changeMovingSlider(index);\r\n index = 1 - index;\r\n dir = -dir;\r\n temp = compareMin;\r\n compareMin = compareMax;\r\n compareMax = temp;\r\n moveOffset = -dir * Math.abs(moveOffset);\r\n swapOffset = -moveOffset\r\n }\r\n }\r\n if (compareMax(position + moveOffset, staticPosition)) {\r\n isValid = true;\r\n slider = sliders[index];\r\n value = sliders[1 - index].getValue();\r\n pos = Math.max(Math.min(position + moveOffset, maxPosition), minPosition);\r\n if (isValid && translator.isValueProlonged) {\r\n isValid = !compareMin(pos, translator.to(value, dir))\r\n }\r\n var invalidStateValue;\r\n if (isValid && that._minRange) {\r\n isValid = !compareMin(pos, translator.to(translator.add(value, that._minRange, dir), dir));\r\n if (!isValid) {\r\n invalidStateValue = translator.add(value, that._minRange, dir)\r\n }\r\n }\r\n if (isValid && that._maxRange) {\r\n isValid = !compareMax(pos, translator.to(translator.add(value, that._maxRange, dir), dir));\r\n if (!isValid) {\r\n invalidStateValue = translator.add(value, that._maxRange, dir)\r\n }\r\n }\r\n slider._setValid(isValid);\r\n slider.setDisplayValue(isValid ? selectClosestValue(translator.from(pos, dir), that._values) : (0, _type.isDefined)(invalidStateValue) ? invalidStateValue : slider.getValue());\r\n slider._position = pos;\r\n that._applyTotalPosition(false);\r\n slider.toForeground();\r\n if (that._isOnMoving) {\r\n that._processSelectionChanged(e)\r\n }\r\n }\r\n }\r\n currentPosition = position\r\n }\r\n },\r\n _changeMovingSlider: function(index) {\r\n var that = this;\r\n var translator = that._params.translator;\r\n var sliders = that._sliders;\r\n var position = sliders[1 - index].getPosition();\r\n var dir = index > 0 ? 1 : -1;\r\n var newValue;\r\n sliders[index].setDisplayValue(selectClosestValue(translator.from(position, dir), that._values));\r\n newValue = translator.from(position, -dir);\r\n if (translator.isValueProlonged) {\r\n newValue = translator.from(position, dir)\r\n } else {\r\n if (that._minRange) {\r\n newValue = translator.add(newValue, that._minRange, -dir)\r\n }\r\n }\r\n sliders[1 - index].setDisplayValue(selectClosestValue(newValue, that._values));\r\n sliders[index]._setValid(true);\r\n sliders[index]._marker._update();\r\n sliders[0]._position = sliders[1]._position = position\r\n },\r\n foregroundSlider: function(index) {\r\n this._sliders[index].toForeground()\r\n }\r\n};\r\n","/**\r\n * DevExtreme (viz/range_selector/slider.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _common = require(\"./common\");\r\nvar _slider_marker = _interopRequireDefault(require(\"./slider_marker\"));\r\nvar _support = require(\"../../core/utils/support\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar animationSettings = _common.utils.animationSettings;\r\nvar SPLITTER_WIDTH = 8;\r\nvar TOUCH_SPLITTER_WIDTH = 20;\r\n\r\nfunction getSliderTrackerWidth(sliderHandleWidth) {\r\n return _support.touchEvents || _support.pointerEvents ? TOUCH_SPLITTER_WIDTH : SPLITTER_WIDTH < sliderHandleWidth ? sliderHandleWidth : SPLITTER_WIDTH\r\n}\r\n\r\nfunction Slider(params, index) {\r\n var that = this;\r\n that._translator = params.translator;\r\n that._sliderGroup = params.renderer.g().attr({\r\n \"class\": \"slider\"\r\n }).append(params.root);\r\n that._line = params.renderer.path(null, \"line\").append(that._sliderGroup);\r\n that._marker = new _slider_marker.default(params.renderer, that._sliderGroup, 1 === index);\r\n that._tracker = params.renderer.rect().attr({\r\n \"class\": \"slider-tracker\",\r\n fill: \"#000000\",\r\n opacity: 1e-4\r\n }).css({\r\n cursor: \"w-resize\"\r\n }).append(params.trackersGroup)\r\n}\r\nSlider.prototype = {\r\n constructor: Slider,\r\n cancelAnimation: function() {\r\n this._sliderGroup.stopAnimation();\r\n this._tracker.stopAnimation()\r\n },\r\n applyPosition: function(isAnimated) {\r\n var that = this;\r\n var slider = that._sliderGroup;\r\n var tracker = that._tracker;\r\n var attrs = {\r\n translateX: that._position\r\n };\r\n that._marker.setPosition(that._position);\r\n if (isAnimated) {\r\n slider.animate(attrs, animationSettings);\r\n tracker.animate(attrs, animationSettings)\r\n } else {\r\n slider.attr(attrs);\r\n tracker.attr(attrs)\r\n }\r\n },\r\n _setValid: function(isValid) {\r\n this._marker.setValid(isValid);\r\n this._line.attr({\r\n stroke: this._colors[Number(isValid)]\r\n })\r\n },\r\n _setText: function(text) {\r\n this._marker.setText(text)\r\n },\r\n update: function(verticalRange, sliderHandleOptions, sliderMarkerOptions) {\r\n var that = this;\r\n that._formatOptions = {\r\n format: sliderMarkerOptions.format,\r\n customizeText: sliderMarkerOptions.customizeText\r\n };\r\n that._marker.applyOptions(sliderMarkerOptions, that._translator.getScreenRange());\r\n that._colors = [sliderMarkerOptions.invalidRangeColor, sliderHandleOptions.color];\r\n that._sliderGroup.attr({\r\n translateY: verticalRange[0]\r\n });\r\n that._line.attr({\r\n \"stroke-width\": sliderHandleOptions.width,\r\n stroke: sliderHandleOptions.color,\r\n \"stroke-opacity\": sliderHandleOptions.opacity,\r\n sharp: \"h\",\r\n points: [0, 0, 0, verticalRange[1] - verticalRange[0]]\r\n });\r\n var trackerWidth = getSliderTrackerWidth(sliderHandleOptions.width);\r\n that._tracker.attr({\r\n x: -trackerWidth / 2,\r\n y: 0,\r\n width: trackerWidth,\r\n height: verticalRange[1] - verticalRange[0],\r\n translateY: verticalRange[0]\r\n })\r\n },\r\n toForeground: function() {\r\n this._sliderGroup.toForeground()\r\n },\r\n getSliderTracker: function() {\r\n return this._tracker\r\n },\r\n getPosition: function() {\r\n return this._position\r\n },\r\n setDisplayValue: function(value) {\r\n this._value = value;\r\n this._setText((0, _common.formatValue)(value, this._formatOptions))\r\n },\r\n setOverlapped: function(isOverlapped) {\r\n this._marker.setOverlapped(isOverlapped)\r\n },\r\n getValue: function() {\r\n return this._value\r\n },\r\n on: function(event, handler) {\r\n this._tracker.on(event, handler);\r\n this._marker.getTracker().on(event, handler)\r\n },\r\n getCloudBorder: function() {\r\n return this._marker.getBorderPosition()\r\n },\r\n dispose: function() {\r\n this._marker.dispose()\r\n }\r\n};\r\nvar _default = Slider;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/range_selector/slider_marker.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _utils = require(\"../core/utils\");\r\nvar _common = require(\"./common\");\r\nvar POINTER_SIZE = _common.consts.pointerSize;\r\nvar SLIDER_MARKER_UPDATE_DELAY = 75;\r\n\r\nfunction SliderMarker(renderer, root, isLeftPointer) {\r\n var that = this;\r\n that._isLeftPointer = isLeftPointer;\r\n that._isOverlapped = false;\r\n that._group = renderer.g().attr({\r\n \"class\": \"slider-marker\"\r\n }).append(root);\r\n that._area = renderer.path(null, \"area\").append(that._group);\r\n that._label = renderer.text().attr({\r\n align: \"left\"\r\n }).append(that._group);\r\n that._tracker = renderer.rect().attr({\r\n \"class\": \"slider-marker-tracker\",\r\n fill: \"#000000\",\r\n opacity: 1e-4\r\n }).css({\r\n cursor: \"pointer\"\r\n }).append(that._group);\r\n that._border = renderer.rect(0, 0, 1, 0)\r\n}\r\nSliderMarker.prototype = {\r\n constructor: SliderMarker,\r\n _getRectSize: function(textSize) {\r\n return {\r\n width: Math.round(2 * this._paddingLeftRight + textSize.width),\r\n height: Math.round(2 * this._paddingTopBottom + textSize.height)\r\n }\r\n },\r\n _getTextSize: function() {\r\n var textSize = this._label.getBBox();\r\n if (!this._textHeight && isFinite(textSize.height)) {\r\n this._textHeight = textSize.height\r\n }\r\n return {\r\n width: textSize.width,\r\n height: this._textHeight,\r\n y: textSize.y\r\n }\r\n },\r\n _getAreaPointsInfo: function(textSize) {\r\n var that = this;\r\n var rectSize = that._getRectSize(textSize);\r\n var rectWidth = rectSize.width;\r\n var rectHeight = rectSize.height;\r\n var rectLeftBorder = -rectWidth;\r\n var rectRightBorder = 0;\r\n var pointerRightPoint = POINTER_SIZE;\r\n var pointerCenterPoint = 0;\r\n var pointerLeftPoint = -POINTER_SIZE;\r\n var position = that._position;\r\n var isLeft = that._isLeftPointer;\r\n var correctCloudBorders = function() {\r\n rectLeftBorder++;\r\n rectRightBorder++;\r\n pointerRightPoint++;\r\n pointerCenterPoint++;\r\n pointerLeftPoint++\r\n };\r\n var checkPointerBorders = function() {\r\n if (pointerRightPoint > rectRightBorder) {\r\n pointerRightPoint = rectRightBorder\r\n } else {\r\n if (pointerLeftPoint < rectLeftBorder) {\r\n pointerLeftPoint = rectLeftBorder\r\n }\r\n }\r\n isLeft && correctCloudBorders()\r\n };\r\n var borderPosition = position;\r\n if (isLeft) {\r\n if (position > that._range[1] - rectWidth) {\r\n rectRightBorder = -position + that._range[1];\r\n rectLeftBorder = rectRightBorder - rectWidth;\r\n checkPointerBorders();\r\n borderPosition += rectLeftBorder\r\n } else {\r\n rectLeftBorder = pointerLeftPoint = 0;\r\n rectRightBorder = rectWidth\r\n }\r\n } else {\r\n if (position - that._range[0] < rectWidth) {\r\n rectLeftBorder = -(position - that._range[0]);\r\n rectRightBorder = rectLeftBorder + rectWidth;\r\n checkPointerBorders();\r\n borderPosition += rectRightBorder\r\n } else {\r\n pointerRightPoint = 0;\r\n correctCloudBorders()\r\n }\r\n }\r\n that._borderPosition = borderPosition;\r\n return {\r\n offset: rectLeftBorder,\r\n isCut: (!isLeft || pointerCenterPoint !== pointerLeftPoint) && (isLeft || pointerCenterPoint !== pointerRightPoint),\r\n points: [rectLeftBorder, 0, rectRightBorder, 0, rectRightBorder, rectHeight, pointerRightPoint, rectHeight, pointerCenterPoint, rectHeight + POINTER_SIZE, pointerLeftPoint, rectHeight, rectLeftBorder, rectHeight]\r\n }\r\n },\r\n _update: function() {\r\n var that = this;\r\n var textSize;\r\n clearTimeout(that._timeout);\r\n that._label.attr({\r\n text: that._text || \"\"\r\n });\r\n var currentTextSize = that._getTextSize();\r\n var rectSize = that._getRectSize(currentTextSize);\r\n textSize = that._textSize || currentTextSize;\r\n textSize = that._textSize = currentTextSize.width > textSize.width || currentTextSize.height > textSize.height ? currentTextSize : textSize;\r\n that._timeout = setTimeout(function() {\r\n updateSliderMarker(currentTextSize, rectSize);\r\n that._textSize = currentTextSize\r\n }, SLIDER_MARKER_UPDATE_DELAY);\r\n\r\n function updateSliderMarker(size, rectSize) {\r\n rectSize = rectSize || that._getRectSize(size);\r\n that._group.attr({\r\n translateY: -(rectSize.height + POINTER_SIZE)\r\n });\r\n var pointsData = that._getAreaPointsInfo(size);\r\n var points = pointsData.points;\r\n var offset = pointsData.offset;\r\n that._area.attr({\r\n points: points\r\n });\r\n that._border.attr({\r\n x: that._isLeftPointer ? points[0] - 1 : points[2],\r\n height: pointsData.isCut ? rectSize.height : rectSize.height + POINTER_SIZE\r\n });\r\n that._tracker.attr({\r\n translateX: offset,\r\n width: rectSize.width,\r\n height: rectSize.height + POINTER_SIZE\r\n });\r\n that._label.attr({\r\n translateX: that._paddingLeftRight + offset,\r\n translateY: rectSize.height / 2 - (size.y + size.height / 2)\r\n })\r\n }\r\n updateSliderMarker(textSize)\r\n },\r\n setText: function(value) {\r\n this._text = value\r\n },\r\n setPosition: function(position) {\r\n this._position = position;\r\n this._update()\r\n },\r\n applyOptions: function(options, screenRange) {\r\n var that = this;\r\n that._range = screenRange;\r\n that._paddingLeftRight = options.paddingLeftRight;\r\n that._paddingTopBottom = options.paddingTopBottom;\r\n that._textHeight = null;\r\n that._colors = [options.invalidRangeColor, options.color];\r\n that._area.attr({\r\n fill: options.color\r\n });\r\n that._border.attr({\r\n fill: options.borderColor\r\n });\r\n that._label.css((0, _utils.patchFontOptions)(options.font));\r\n that._update()\r\n },\r\n getTracker: function() {\r\n return this._tracker\r\n },\r\n setValid: function(isValid) {\r\n this._area.attr({\r\n fill: this._colors[Number(isValid)]\r\n })\r\n },\r\n setColor: function(color) {\r\n this._area.attr({\r\n fill: color\r\n })\r\n },\r\n dispose: function() {\r\n clearTimeout(this._timeout)\r\n },\r\n setOverlapped: function(isOverlapped) {\r\n var that = this;\r\n if (that._isOverlapped !== isOverlapped) {\r\n if (isOverlapped) {\r\n that._border.append(that._group)\r\n } else {\r\n that._isOverlapped && that._border.remove()\r\n }\r\n that._isOverlapped = isOverlapped\r\n }\r\n },\r\n getBorderPosition: function() {\r\n return this._borderPosition\r\n }\r\n};\r\nvar _default = SliderMarker;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/range_selector/tracker.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.Tracker = Tracker;\r\nvar _events_engine = _interopRequireDefault(require(\"../../events/core/events_engine\"));\r\nvar _pointer = _interopRequireDefault(require(\"../../events/pointer\"));\r\nvar _window = require(\"../../core/utils/window\");\r\nvar _dom_adapter = _interopRequireDefault(require(\"../../core/dom_adapter\"));\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _support = require(\"../../core/utils/support\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n if (key in obj) {\r\n Object.defineProperty(obj, key, {\r\n value: value,\r\n enumerable: true,\r\n configurable: true,\r\n writable: true\r\n })\r\n } else {\r\n obj[key] = value\r\n }\r\n return obj\r\n}\r\nvar MIN_MANUAL_SELECTING_WIDTH = 10;\r\nvar window = (0, _window.getWindow)();\r\n\r\nfunction isLeftButtonPressed(event) {\r\n var e = event || window.event;\r\n var originalEvent = e.originalEvent;\r\n var touches = e.touches;\r\n var pointerType = originalEvent ? originalEvent.pointerType : false;\r\n var eventTouches = originalEvent ? originalEvent.touches : false;\r\n var isMSPointerLeftClick = originalEvent && void 0 !== pointerType && (pointerType === (originalEvent.MSPOINTER_TYPE_TOUCH || \"touch\") || pointerType === (originalEvent.MSPOINTER_TYPE_MOUSE || \"mouse\") && 1 === originalEvent.buttons);\r\n var isTouches = touches && touches.length > 0 || eventTouches && eventTouches.length > 0;\r\n return 1 === e.which || isMSPointerLeftClick || isTouches\r\n}\r\n\r\nfunction isMultiTouches(event) {\r\n var originalEvent = event.originalEvent;\r\n var touches = event.touches;\r\n var eventTouches = originalEvent && originalEvent.touches;\r\n return touches && touches.length > 1 || eventTouches && eventTouches.length > 1 || null\r\n}\r\n\r\nfunction preventDefault(e) {\r\n if (!isMultiTouches(e)) {\r\n e.preventDefault()\r\n }\r\n}\r\n\r\nfunction stopPropagationAndPreventDefault(e) {\r\n if (!isMultiTouches(e)) {\r\n e.stopPropagation();\r\n e.preventDefault()\r\n }\r\n}\r\n\r\nfunction isTouchEventArgs(e) {\r\n return e && e.type && 0 === e.type.indexOf(\"touch\")\r\n}\r\n\r\nfunction getEventPageX(event) {\r\n var originalEvent = event.originalEvent;\r\n var result = 0;\r\n if (event.pageX) {\r\n result = event.pageX\r\n } else {\r\n if (originalEvent && originalEvent.pageX) {\r\n result = originalEvent.pageX\r\n }\r\n }\r\n if (originalEvent && originalEvent.touches) {\r\n if (originalEvent.touches.length > 0) {\r\n result = originalEvent.touches[0].pageX\r\n } else {\r\n if (originalEvent.changedTouches.length > 0) {\r\n result = originalEvent.changedTouches[0].pageX\r\n }\r\n }\r\n }\r\n return result\r\n}\r\n\r\nfunction initializeAreaEvents(controller, area, state, getRootOffsetLeft) {\r\n var _docEvents;\r\n var isTouchEvent;\r\n var isActive = false;\r\n var initialPosition;\r\n var movingHandler = null;\r\n var docEvents = (_docEvents = {}, _defineProperty(_docEvents, _pointer.default.move, function(e) {\r\n var position;\r\n var offset;\r\n if (isTouchEvent !== isTouchEventArgs(e)) {\r\n return\r\n }\r\n if (!isLeftButtonPressed(e)) {\r\n cancel(e)\r\n }\r\n if (isActive) {\r\n position = getEventPageX(e);\r\n offset = getRootOffsetLeft();\r\n if (movingHandler) {\r\n movingHandler(position - offset, e)\r\n } else {\r\n if (state.manualRangeSelectionEnabled && Math.abs(initialPosition - position) >= MIN_MANUAL_SELECTING_WIDTH) {\r\n movingHandler = controller.placeSliderAndBeginMoving(initialPosition - offset, position - offset, e)\r\n }\r\n }\r\n }\r\n }), _defineProperty(_docEvents, _pointer.default.up, function(e) {\r\n var position;\r\n if (isActive) {\r\n position = getEventPageX(e);\r\n if (!movingHandler && state.moveSelectedRangeByClick && Math.abs(initialPosition - position) < MIN_MANUAL_SELECTING_WIDTH) {\r\n controller.moveSelectedArea(position - getRootOffsetLeft(), e)\r\n }\r\n cancel(e)\r\n }\r\n }), _docEvents);\r\n\r\n function cancel(e) {\r\n if (isActive) {\r\n isActive = false;\r\n if (movingHandler) {\r\n movingHandler.complete(e);\r\n movingHandler = null\r\n }\r\n }\r\n }\r\n area.on(_pointer.default.down, function(e) {\r\n if (!state.enabled || !isLeftButtonPressed(e) || isActive) {\r\n return\r\n }\r\n isActive = true;\r\n isTouchEvent = isTouchEventArgs(e);\r\n initialPosition = getEventPageX(e)\r\n });\r\n return docEvents\r\n}\r\n\r\nfunction initializeSelectedAreaEvents(controller, area, state, getRootOffsetLeft) {\r\n var _docEvents2;\r\n var isTouchEvent;\r\n var isActive = false;\r\n var movingHandler = null;\r\n var docEvents = (_docEvents2 = {}, _defineProperty(_docEvents2, _pointer.default.move, function(e) {\r\n if (isTouchEvent !== isTouchEventArgs(e)) {\r\n return\r\n }\r\n if (!isLeftButtonPressed(e)) {\r\n cancel(e)\r\n }\r\n if (isActive) {\r\n preventDefault(e);\r\n movingHandler(getEventPageX(e) - getRootOffsetLeft(), e)\r\n }\r\n }), _defineProperty(_docEvents2, _pointer.default.up, cancel), _docEvents2);\r\n\r\n function cancel(e) {\r\n if (isActive) {\r\n isActive = false;\r\n movingHandler.complete(e);\r\n movingHandler = null\r\n }\r\n }\r\n area.on(_pointer.default.down, function(e) {\r\n if (!state.enabled || !isLeftButtonPressed(e) || isActive) {\r\n return\r\n }\r\n isActive = true;\r\n isTouchEvent = isTouchEventArgs(e);\r\n movingHandler = controller.beginSelectedAreaMoving(getEventPageX(e) - getRootOffsetLeft());\r\n stopPropagationAndPreventDefault(e)\r\n });\r\n return docEvents\r\n}\r\n\r\nfunction initializeSliderEvents(controller, sliders, state, getRootOffsetLeft) {\r\n var _docEvents3;\r\n var isTouchEvent;\r\n var isActive = false;\r\n var movingHandler = null;\r\n var docEvents = (_docEvents3 = {}, _defineProperty(_docEvents3, _pointer.default.move, function(e) {\r\n if (isTouchEvent !== isTouchEventArgs(e)) {\r\n return\r\n }\r\n if (!isLeftButtonPressed(e)) {\r\n cancel(e)\r\n }\r\n if (isActive) {\r\n preventDefault(e);\r\n movingHandler(getEventPageX(e) - getRootOffsetLeft(), e)\r\n }\r\n }), _defineProperty(_docEvents3, _pointer.default.up, cancel), _docEvents3);\r\n (0, _iterator.each)(sliders, function(i, slider) {\r\n var _slider$on;\r\n slider.on((_slider$on = {}, _defineProperty(_slider$on, _pointer.default.down, function(e) {\r\n if (!state.enabled || !isLeftButtonPressed(e) || isActive) {\r\n return\r\n }\r\n isActive = true;\r\n isTouchEvent = isTouchEventArgs(e);\r\n movingHandler = controller.beginSliderMoving(i, getEventPageX(e) - getRootOffsetLeft());\r\n stopPropagationAndPreventDefault(e)\r\n }), _defineProperty(_slider$on, _pointer.default.move, function() {\r\n if (!movingHandler) {\r\n controller.foregroundSlider(i)\r\n }\r\n }), _slider$on))\r\n });\r\n\r\n function cancel(e) {\r\n if (isActive) {\r\n isActive = false;\r\n movingHandler.complete(e);\r\n movingHandler = null\r\n }\r\n }\r\n return docEvents\r\n}\r\n\r\nfunction Tracker(params) {\r\n var state = this._state = {};\r\n var targets = params.controller.getTrackerTargets();\r\n if (_support.pointerEvents) {\r\n params.renderer.root.css({\r\n msTouchAction: \"pinch-zoom\"\r\n })\r\n }\r\n this._docEvents = [initializeSelectedAreaEvents(params.controller, targets.selectedArea, state, getRootOffsetLeft), initializeAreaEvents(params.controller, targets.area, state, getRootOffsetLeft), initializeSliderEvents(params.controller, targets.sliders, state, getRootOffsetLeft)];\r\n (0, _iterator.each)(this._docEvents, function(_, events) {\r\n _events_engine.default.on(_dom_adapter.default.getDocument(), events)\r\n });\r\n\r\n function getRootOffsetLeft() {\r\n return params.renderer.getRootOffset().left\r\n }\r\n}\r\nTracker.prototype = {\r\n constructor: Tracker,\r\n dispose: function() {\r\n (0, _iterator.each)(this._docEvents, function(_, events) {\r\n _events_engine.default.off(_dom_adapter.default.getDocument(), events)\r\n })\r\n },\r\n update: function(enabled, behavior) {\r\n var state = this._state;\r\n state.enabled = enabled;\r\n state.moveSelectedRangeByClick = behavior.moveSelectedRangeByClick;\r\n state.manualRangeSelectionEnabled = behavior.manualRangeSelectionEnabled\r\n }\r\n};\r\n","/**\r\n * DevExtreme (viz/range_selector/range_view.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.RangeView = RangeView;\r\n\r\nfunction drawSeriesView(root, seriesDataSource, canvas, isAnimationEnabled) {\r\n var seriesList = seriesDataSource.getSeries();\r\n if (!seriesList.length) {\r\n return\r\n }\r\n var valueAxis = seriesList[0].getValueAxis();\r\n valueAxis.updateCanvas({\r\n top: canvas.top,\r\n bottom: 0,\r\n height: canvas.height + canvas.top\r\n });\r\n seriesDataSource.adjustSeriesDimensions();\r\n var valueRange = seriesDataSource.getBoundRange().val;\r\n valueRange.sortCategories(valueAxis.getCategoriesSorter());\r\n valueAxis.setBusinessRange(valueRange);\r\n seriesList.forEach(function(series) {\r\n series._extGroups.seriesGroup = series._extGroups.labelsGroup = root;\r\n series.draw(isAnimationEnabled)\r\n })\r\n}\r\n\r\nfunction merge(a, b) {\r\n return void 0 !== a ? a : b\r\n}\r\n\r\nfunction RangeView(params) {\r\n this._params = params;\r\n this._clipRect = params.renderer.clipRect();\r\n params.root.attr({\r\n \"clip-path\": this._clipRect.id\r\n })\r\n}\r\nRangeView.prototype = {\r\n constructor: RangeView,\r\n update: function(backgroundOption, backgroundTheme, canvas, isCompactMode, isAnimationEnabled, seriesDataSource) {\r\n var renderer = this._params.renderer;\r\n var root = this._params.root;\r\n var canvasWidth = canvas.width - canvas.left;\r\n var seriesGroup;\r\n backgroundOption = backgroundOption || {};\r\n root.clear();\r\n this._clipRect.attr({\r\n x: canvas.left,\r\n y: canvas.top,\r\n width: canvasWidth,\r\n height: canvas.height\r\n });\r\n if (!isCompactMode) {\r\n if (merge(backgroundOption.visible, backgroundTheme.visible)) {\r\n if (backgroundOption.color) {\r\n renderer.rect(canvas.left, canvas.top, canvasWidth + 1, canvas.height).attr({\r\n fill: merge(backgroundOption.color, backgroundTheme.color),\r\n \"class\": \"dx-range-selector-background\"\r\n }).append(root)\r\n }\r\n if (backgroundOption.image && backgroundOption.image.url) {\r\n renderer.image(canvas.left, canvas.top, canvasWidth + 1, canvas.height, backgroundOption.image.url, merge(backgroundOption.image.location, backgroundTheme.image.location)).append(root)\r\n }\r\n }\r\n if (seriesDataSource && seriesDataSource.isShowChart()) {\r\n seriesGroup = renderer.g().attr({\r\n \"class\": \"dxrs-series-group\"\r\n }).append(root);\r\n drawSeriesView(seriesGroup, seriesDataSource, canvas, isAnimationEnabled)\r\n }\r\n }\r\n }\r\n};\r\n","/**\r\n * DevExtreme (viz/range_selector/series_data_source.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.SeriesDataSource = void 0;\r\nvar _base_series = require(\"../series/base_series\");\r\nvar _series_family = require(\"../core/series_family\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _extend = require(\"../../core/utils/extend\");\r\nvar _array = require(\"../../core/utils/array\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _range = require(\"../translators/range\");\r\nvar _data_validator = require(\"../components/data_validator\");\r\nvar _chart_theme_manager = require(\"../components/chart_theme_manager\");\r\nvar createThemeManager = function(chartOptions) {\r\n return new _chart_theme_manager.ThemeManager({\r\n options: chartOptions,\r\n themeSection: \"rangeSelector.chart\",\r\n fontFields: [\"commonSeriesSettings.label.font\"]\r\n })\r\n};\r\nvar processSeriesFamilies = function(series, minBubbleSize, maxBubbleSize, barOptions, negativesAsZeroes) {\r\n var families = [];\r\n var types = [];\r\n (0, _iterator.each)(series, function(i, 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)(types, function(_, type) {\r\n var family = new _series_family.SeriesFamily({\r\n type: type,\r\n minBubbleSize: minBubbleSize,\r\n maxBubbleSize: maxBubbleSize,\r\n barGroupPadding: barOptions.barGroupPadding,\r\n barGroupWidth: barOptions.barGroupWidth,\r\n negativesAsZeroes: negativesAsZeroes\r\n });\r\n family.add(series);\r\n family.adjustSeriesValues();\r\n families.push(family)\r\n });\r\n return families\r\n};\r\nvar SeriesDataSource = function(options) {\r\n var that = this;\r\n var themeManager = that._themeManager = createThemeManager(options.chart);\r\n themeManager.setTheme(options.chart.theme);\r\n var topIndent = themeManager.getOptions(\"topIndent\");\r\n var bottomIndent = themeManager.getOptions(\"bottomIndent\");\r\n that._indent = {\r\n top: topIndent >= 0 && topIndent < 1 ? topIndent : 0,\r\n bottom: bottomIndent >= 0 && bottomIndent < 1 ? bottomIndent : 0\r\n };\r\n that._valueAxis = themeManager.getOptions(\"valueAxisRangeSelector\") || {};\r\n that._hideChart = false;\r\n that._series = that._calculateSeries(options);\r\n that._seriesFamilies = []\r\n};\r\nexports.SeriesDataSource = SeriesDataSource;\r\nSeriesDataSource.prototype = {\r\n constructor: SeriesDataSource,\r\n _calculateSeries: function(options) {\r\n var that = this;\r\n var series = [];\r\n var particularSeriesOptions;\r\n var seriesTheme;\r\n var data = options.dataSource || [];\r\n var parsedData;\r\n var chartThemeManager = that._themeManager;\r\n var seriesTemplate = chartThemeManager.getOptions(\"seriesTemplate\");\r\n var allSeriesOptions = seriesTemplate ? (0, _utils.processSeriesTemplate)(seriesTemplate, data) : options.chart.series;\r\n var dataSourceField;\r\n var valueAxis = that._valueAxis;\r\n var i;\r\n var newSeries;\r\n var groupsData;\r\n if (options.dataSource && !allSeriesOptions) {\r\n dataSourceField = options.dataSourceField || \"arg\";\r\n allSeriesOptions = {\r\n argumentField: dataSourceField,\r\n valueField: dataSourceField\r\n };\r\n that._hideChart = true\r\n }\r\n allSeriesOptions = Array.isArray(allSeriesOptions) ? allSeriesOptions : allSeriesOptions ? [allSeriesOptions] : [];\r\n for (i = 0; i < allSeriesOptions.length; i++) {\r\n particularSeriesOptions = (0, _extend.extend)(true, {}, allSeriesOptions[i]);\r\n particularSeriesOptions.rotated = false;\r\n seriesTheme = chartThemeManager.getOptions(\"series\", particularSeriesOptions, allSeriesOptions.length);\r\n seriesTheme.argumentField = seriesTheme.argumentField || options.dataSourceField;\r\n if (!seriesTheme.name) {\r\n seriesTheme.name = \"Series \" + (i + 1).toString()\r\n }\r\n if (data && data.length > 0) {\r\n newSeries = new _base_series.Series({\r\n renderer: options.renderer,\r\n argumentAxis: options.argumentAxis,\r\n valueAxis: options.valueAxis,\r\n incidentOccurred: options.incidentOccurred\r\n }, seriesTheme);\r\n series.push(newSeries)\r\n }\r\n }\r\n if (series.length) {\r\n groupsData = {\r\n groups: [{\r\n series: series,\r\n valueAxis: options.valueAxis,\r\n valueOptions: {\r\n type: valueAxis.type,\r\n valueType: dataSourceField ? options.valueType : valueAxis.valueType\r\n }\r\n }],\r\n argumentOptions: {\r\n categories: options.categories,\r\n argumentType: options.valueType,\r\n type: options.axisType\r\n }\r\n };\r\n parsedData = (0, _data_validator.validateData)(data, groupsData, options.incidentOccurred, chartThemeManager.getOptions(\"dataPrepareSettings\"));\r\n that.argCategories = groupsData.categories;\r\n for (i = 0; i < series.length; i++) {\r\n series[i].updateData(parsedData[series[i].getArgumentField()])\r\n }\r\n }\r\n return series\r\n },\r\n createPoints: function() {\r\n if (0 === this._series.length) {\r\n return\r\n }\r\n var series = this._series;\r\n var viewport = new _range.Range;\r\n var axis = series[0].getArgumentAxis();\r\n var themeManager = this._themeManager;\r\n var negativesAsZeroes = themeManager.getOptions(\"negativesAsZeroes\");\r\n var negativesAsZeros = themeManager.getOptions(\"negativesAsZeros\");\r\n series.forEach(function(s) {\r\n viewport.addRange(s.getArgumentRange())\r\n });\r\n axis.getTranslator().updateBusinessRange(viewport);\r\n series.forEach(function(s) {\r\n s.createPoints()\r\n });\r\n this._seriesFamilies = processSeriesFamilies(series, themeManager.getOptions(\"minBubbleSize\"), themeManager.getOptions(\"maxBubbleSize\"), {\r\n barGroupPadding: themeManager.getOptions(\"barGroupPadding\"),\r\n barGroupWidth: themeManager.getOptions(\"barGroupWidth\")\r\n }, (0, _type.isDefined)(negativesAsZeroes) ? negativesAsZeroes : negativesAsZeros)\r\n },\r\n adjustSeriesDimensions: function() {\r\n (0, _iterator.each)(this._seriesFamilies, function(_, family) {\r\n family.adjustSeriesDimensions()\r\n })\r\n },\r\n getBoundRange: function() {\r\n var that = this;\r\n var rangeData;\r\n var valueAxis = that._valueAxis;\r\n var valRange = new _range.Range({\r\n min: valueAxis.min,\r\n minVisible: valueAxis.min,\r\n max: valueAxis.max,\r\n maxVisible: valueAxis.max,\r\n axisType: valueAxis.type,\r\n base: valueAxis.logarithmBase\r\n });\r\n var argRange = new _range.Range({});\r\n var rangeYSize;\r\n var rangeVisibleSizeY;\r\n var minIndent;\r\n var maxIndent;\r\n (0, _iterator.each)(that._series, function(_, series) {\r\n rangeData = series.getRangeData();\r\n valRange.addRange(rangeData.val);\r\n argRange.addRange(rangeData.arg)\r\n });\r\n if (!valRange.isEmpty() && !argRange.isEmpty()) {\r\n minIndent = valueAxis.inverted ? that._indent.top : that._indent.bottom;\r\n maxIndent = valueAxis.inverted ? that._indent.bottom : that._indent.top;\r\n rangeYSize = valRange.max - valRange.min;\r\n rangeVisibleSizeY = ((0, _type.isNumeric)(valRange.maxVisible) ? valRange.maxVisible : valRange.max) - ((0, _type.isNumeric)(valRange.minVisible) ? valRange.minVisible : valRange.min);\r\n if ((0, _type.isDate)(valRange.min)) {\r\n valRange.min = new Date(valRange.min.valueOf() - rangeYSize * minIndent)\r\n } else {\r\n valRange.min -= rangeYSize * minIndent\r\n }\r\n if ((0, _type.isDate)(valRange.max)) {\r\n valRange.max = new Date(valRange.max.valueOf() + rangeYSize * maxIndent)\r\n } else {\r\n valRange.max += rangeYSize * maxIndent\r\n }\r\n if ((0, _type.isNumeric)(rangeVisibleSizeY)) {\r\n valRange.maxVisible = valRange.maxVisible ? valRange.maxVisible + rangeVisibleSizeY * maxIndent : void 0;\r\n valRange.minVisible = valRange.minVisible ? valRange.minVisible - rangeVisibleSizeY * minIndent : void 0\r\n }\r\n valRange.invert = valueAxis.inverted\r\n }\r\n return {\r\n arg: argRange,\r\n val: valRange\r\n }\r\n },\r\n getMarginOptions: function(canvas) {\r\n var bubbleSize = Math.min(canvas.width, canvas.height) * this._themeManager.getOptions(\"maxBubbleSize\");\r\n return this._series.reduce(function(marginOptions, series) {\r\n var seriesOptions = series.getMarginOptions();\r\n if (true === seriesOptions.processBubbleSize) {\r\n seriesOptions.size = bubbleSize\r\n }\r\n return (0, _utils.mergeMarginOptions)(marginOptions, seriesOptions)\r\n }, {})\r\n },\r\n getSeries: function() {\r\n return this._series\r\n },\r\n isEmpty: function() {\r\n return 0 === this.getSeries().length\r\n },\r\n isShowChart: function() {\r\n return !this._hideChart\r\n },\r\n getCalculatedValueType: function() {\r\n var series = this._series[0];\r\n return null === series || void 0 === series ? void 0 : series.argumentType\r\n },\r\n getThemeManager: function() {\r\n return this._themeManager\r\n }\r\n};\r\n","/**\r\n * DevExtreme (viz/sankey.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _sankey = _interopRequireDefault(require(\"./sankey/sankey\"));\r\nvar _tooltip = require(\"./sankey/tooltip\");\r\nvar _export = require(\"./core/export\");\r\nvar _title = require(\"./core/title\");\r\nvar _tracker = require(\"./sankey/tracker\");\r\nvar _tooltip2 = require(\"./core/tooltip\");\r\nvar _loading_indicator = require(\"./core/loading_indicator\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\n_sankey.default.addPlugin(_export.plugin);\r\n_sankey.default.addPlugin(_title.plugin);\r\n_sankey.default.addPlugin(_tracker.plugin);\r\n_sankey.default.addPlugin(_loading_indicator.plugin);\r\n_sankey.default.addPlugin(_tooltip2.plugin);\r\n(0, _tooltip.setTooltipCustomOptions)(_sankey.default);\r\nvar _default = _sankey.default;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\nmodule.exports.default = module.exports;\r\n","/**\r\n * DevExtreme (viz/sankey/node_item.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _type = require(\"../../core/utils/type\");\r\nvar _utils = require(\"../core/utils\");\r\nvar states = [\"normal\", \"hover\"];\r\n\r\nfunction _compileAttrs(color, itemOptions, itemBaseOptions) {\r\n var border = itemOptions.border;\r\n var baseBorder = itemBaseOptions.border;\r\n var borderVisible = (0, _type.isDefined)(border.visible) ? border.visible : baseBorder.visible;\r\n var borderWidth = (0, _type.isDefined)(border.width) ? border.width : baseBorder.width;\r\n var borderOpacity = (0, _type.isDefined)(border.opacity) ? border.opacity : (0, _type.isDefined)(baseBorder.opacity) ? baseBorder.opacity : 1;\r\n var opacity = (0, _type.isDefined)(itemOptions.opacity) ? itemOptions.opacity : (0, _type.isDefined)(itemBaseOptions.opacity) ? itemBaseOptions.opacity : 1;\r\n return {\r\n fill: itemOptions.color || color,\r\n \"stroke-width\": borderVisible ? borderWidth : 0,\r\n stroke: itemOptions.border.color || itemBaseOptions.border.color,\r\n \"stroke-opacity\": borderOpacity,\r\n opacity: opacity,\r\n hatching: itemOptions.hatching\r\n }\r\n}\r\n\r\nfunction compileLabelAttrs(labelOptions, filter, node) {\r\n var _patchFontOptions = _utils.patchFontOptions;\r\n if (labelOptions.useNodeColors) {\r\n labelOptions.font.color = node.color\r\n }\r\n var borderVisible = (0, _type.isDefined)(labelOptions.border.visible) ? labelOptions.border.visible : false;\r\n var borderWidth = (0, _type.isDefined)(labelOptions.border.width) ? labelOptions.border.width : 0;\r\n var borderColor = (0, _type.isDefined)(labelOptions.border.color) ? labelOptions.border.color : labelOptions.font.color;\r\n var borderOpacity = (0, _type.isDefined)(labelOptions.border.opacity) ? labelOptions.border.opacity : 1;\r\n var attr = {\r\n filter: filter\r\n };\r\n if (borderVisible && borderWidth) {\r\n attr.stroke = borderColor;\r\n attr[\"stroke-width\"] = borderVisible ? borderWidth : 0;\r\n attr[\"stroke-opacity\"] = borderOpacity\r\n }\r\n return {\r\n attr: attr,\r\n css: _patchFontOptions(labelOptions.font)\r\n }\r\n}\r\n\r\nfunction Node(widget, params) {\r\n var that = this;\r\n var widgetOffset = widget._renderer.getRootOffset();\r\n that.code = 0;\r\n that.widget = widget;\r\n that.color = params.color;\r\n that.options = params.options;\r\n that.rect = params.rect;\r\n that.label = that.title = params.rect._name;\r\n that.coords = {\r\n x: params.rect.x + params.rect.width / 2 + widgetOffset.left,\r\n y: params.rect.y + params.rect.height / 2 + widgetOffset.top\r\n };\r\n that.id = params.id;\r\n that.linksIn = params.linksIn;\r\n that.linksOut = params.linksOut;\r\n this.states = {\r\n normal: _compileAttrs(this.color, that.options, that.options),\r\n hover: _compileAttrs(this.color, that.options.hoverStyle, that.options)\r\n }\r\n}\r\nNode.prototype = {\r\n compileAttrs: function() {\r\n return _compileAttrs(this.color, this.options)\r\n },\r\n getState: function() {\r\n return states[this.code]\r\n },\r\n isHovered: function() {\r\n return !!(1 & this.code)\r\n },\r\n setState: function(code, state) {\r\n var _this = this;\r\n if (state) {\r\n this.code |= code\r\n } else {\r\n this.code &= ~code\r\n }\r\n if (state) {\r\n this.linksIn.concat(this.linksOut).forEach(function(adjacentLink) {\r\n _this.widget._links[adjacentLink.index].setAdjacentNodeHover(true)\r\n })\r\n } else {\r\n this.widget._links.forEach(function(link) {\r\n link.isAdjacentNodeHovered() && link.adjacentNodeHover(false)\r\n });\r\n this.hideTooltip()\r\n }\r\n this.widget._applyNodesAppearance();\r\n this.widget._applyLinksAppearance()\r\n },\r\n hover: function(state) {\r\n if (!this.widget._getOption(\"hoverEnabled\", true) || state === this.isHovered()) {\r\n return\r\n }\r\n this.widget._suspend();\r\n state && this.widget.clearHover();\r\n this.setState(1, state);\r\n this.widget._eventTrigger(\"nodeHoverChanged\", {\r\n target: this\r\n });\r\n this.widget._resume()\r\n },\r\n setHover: function() {\r\n this.hover(true)\r\n },\r\n showTooltip: function(coords) {\r\n this.widget._getOption(\"hoverEnabled\", true) && this.widget._tooltip && this.widget._tooltip.show({\r\n type: \"node\",\r\n info: {\r\n label: this.label,\r\n title: this.label,\r\n weightIn: this.linksIn.reduce(function(previousValue, currentValue) {\r\n return previousValue + currentValue.weight\r\n }, 0),\r\n weightOut: this.linksOut.reduce(function(previousValue, currentValue) {\r\n return previousValue + currentValue.weight\r\n }, 0)\r\n }\r\n }, \"undefined\" !== typeof coords ? {\r\n x: coords[0],\r\n y: coords[1]\r\n } : this.coords)\r\n },\r\n hideTooltip: function() {\r\n this.widget._tooltip && this.widget._tooltip.hide()\r\n },\r\n getLabelAttributes: function(labelSettings, filter) {\r\n return compileLabelAttrs(labelSettings, filter, this)\r\n }\r\n};\r\nvar _default = Node;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/sankey/link_item.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _constants = require(\"./constants\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar states = [\"normal\", \"adjacentNodeHover\", \"hover\"];\r\n\r\nfunction compileAttrs(color, itemOptions, itemBaseOptions, gradient) {\r\n var border = itemOptions.border;\r\n var baseBorder = itemBaseOptions.border;\r\n var borderVisible = (0, _type.isDefined)(border.visible) ? border.visible : baseBorder.visible;\r\n var borderWidth = (0, _type.isDefined)(border.width) ? border.width : baseBorder.width;\r\n var borderOpacity = (0, _type.isDefined)(border.opacity) ? border.opacity : (0, _type.isDefined)(baseBorder.opacity) ? baseBorder.opacity : 1;\r\n var opacity = (0, _type.isDefined)(itemOptions.opacity) ? itemOptions.opacity : (0, _type.isDefined)(itemBaseOptions.opacity) ? itemBaseOptions.opacity : 1;\r\n var fill = itemOptions.color || color;\r\n if (itemBaseOptions.colorMode === _constants.COLOR_MODE_TARGET || itemBaseOptions.colorMode === _constants.COLOR_MODE_SOURCE) {\r\n fill = color\r\n } else {\r\n if (itemBaseOptions.colorMode === _constants.COLOR_MODE_GRADIENT && gradient && (0, _type.isDefined)(gradient.id)) {\r\n fill = gradient.id\r\n }\r\n }\r\n return {\r\n fill: fill,\r\n \"stroke-width\": borderVisible ? borderWidth : 0,\r\n stroke: itemOptions.border.color || itemBaseOptions.border.color,\r\n \"stroke-opacity\": borderOpacity,\r\n opacity: opacity,\r\n hatching: itemOptions.hatching\r\n }\r\n}\r\n\r\nfunction Link(widget, params) {\r\n var that = this;\r\n var widgetOffset = widget._renderer.getRootOffset();\r\n that.code = 0;\r\n that.widget = widget;\r\n that.color = params.color;\r\n that.connection = params.connection;\r\n that.d = params.d;\r\n that.options = params.options;\r\n that.boundingRect = params.boundingRect, that.coords = {\r\n x: params.boundingRect.x + params.boundingRect.width / 2 + widgetOffset.left,\r\n y: params.boundingRect.y + params.boundingRect.height / 2 + widgetOffset.top\r\n };\r\n that.states = {\r\n normal: compileAttrs(that.color, that.options, that.options, params.gradient),\r\n adjacentNodeHover: compileAttrs(that.color, {\r\n opacity: 0,\r\n border: {}\r\n }, that.options, params.gradient),\r\n hover: compileAttrs(that.color, {\r\n opacity: 0,\r\n border: {}\r\n }, that.options, params.gradient)\r\n };\r\n that.overlayStates = {\r\n normal: compileAttrs(that.color, {\r\n opacity: 0,\r\n border: {}\r\n }, that.options),\r\n adjacentNodeHover: compileAttrs(that.color, that.options.hoverStyle, that.options),\r\n hover: compileAttrs(that.color, that.options.hoverStyle, that.options)\r\n }\r\n}\r\nLink.prototype = {\r\n getState: function() {\r\n return states[this.code]\r\n },\r\n isHovered: function() {\r\n return 2 === this.code\r\n },\r\n isAdjacentNodeHovered: function() {\r\n return 1 === this.code\r\n },\r\n setState: function(code, state) {\r\n if (state) {\r\n this.code = code\r\n } else {\r\n this.code = 0;\r\n this.hideTooltip()\r\n }\r\n this.widget._applyLinksAppearance()\r\n },\r\n setHover: function() {\r\n this.hover(true)\r\n },\r\n hover: function(state) {\r\n if (!this.widget._getOption(\"hoverEnabled\", true) || state === this.isHovered()) {\r\n return\r\n }\r\n this.widget._suspend();\r\n state && this.widget.clearHover();\r\n this.setState(2, state);\r\n this.widget._eventTrigger(\"linkHoverChanged\", {\r\n target: this\r\n });\r\n this.widget._resume()\r\n },\r\n adjacentNodeHover: function(state) {\r\n if (!this.widget._getOption(\"hoverEnabled\", true) || state === this.isAdjacentNodeHovered()) {\r\n return\r\n }\r\n this.widget._suspend();\r\n this.setState(1, state);\r\n this.widget._resume()\r\n },\r\n setAdjacentNodeHover: function() {\r\n this.adjacentNodeHover(true)\r\n },\r\n showTooltip: function(coords) {\r\n this.widget._getOption(\"hoverEnabled\", true) && this.widget._tooltip && this.widget._tooltip.show({\r\n type: \"link\",\r\n info: {\r\n source: this.connection.source,\r\n target: this.connection.target,\r\n weight: this.connection.weight\r\n }\r\n }, \"undefined\" !== typeof coords ? {\r\n x: coords[0],\r\n y: coords[1]\r\n } : this.coords)\r\n },\r\n hideTooltip: function() {\r\n this.widget._tooltip && this.widget._tooltip.hide()\r\n }\r\n};\r\nvar _default = Link;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/sankey/layout.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _graph = _interopRequireDefault(require(\"./graph\"));\r\nvar _data_validator = _interopRequireDefault(require(\"./data_validator\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar _SPLINE_TENSION = .3;\r\nvar _ALIGNMENT_CENTER = \"center\";\r\nvar _ALIGNMENT_BOTTOM = \"bottom\";\r\nvar _ALIGNMENT_DEFAULT = _ALIGNMENT_CENTER;\r\nvar layout = {\r\n _weightPerPixel: null,\r\n _getCascadeIdx: function(nodeTitle, cascadesConfig) {\r\n var nodeInfo = cascadesConfig.filter(function(c) {\r\n return c.name === nodeTitle\r\n })[0];\r\n if (nodeInfo.outgoing.length > 0) {\r\n return nodeInfo.lp\r\n } else {\r\n return _graph.default.routines.maxOfArray(cascadesConfig.map(function(c) {\r\n return c.lp\r\n }))\r\n }\r\n },\r\n _getInWeightForNode: function(nodeTitle, links) {\r\n var w = 0;\r\n links.forEach(function(link) {\r\n if (link[1] === nodeTitle) {\r\n w += link[2]\r\n }\r\n });\r\n return w\r\n },\r\n _getOutWeightForNode: function(nodeTitle, links) {\r\n var w = 0;\r\n links.forEach(function(link) {\r\n if (link[0] === nodeTitle) {\r\n w += link[2]\r\n }\r\n });\r\n return w\r\n },\r\n _computeCascades: function(links) {\r\n var _this = this;\r\n var cascadesConfig = _graph.default.struct.computeLongestPaths(links);\r\n var maxCascade = _graph.default.routines.maxOfArray(cascadesConfig.map(function(c) {\r\n return c.lp\r\n }));\r\n var cascades = [];\r\n for (var i = 0; i < maxCascade + 1; i++) {\r\n cascades.push({})\r\n }\r\n links.forEach(function(link) {\r\n var cascade = cascades[_this._getCascadeIdx(link[0], cascadesConfig)];\r\n if (!cascade[link[0]]) {\r\n cascade[link[0]] = {\r\n nodeTitle: link[0]\r\n }\r\n }\r\n cascade = cascades[_this._getCascadeIdx(link[1], cascadesConfig)];\r\n if (!cascade[link[1]]) {\r\n cascade[link[1]] = {\r\n nodeTitle: link[1]\r\n }\r\n }\r\n });\r\n cascades.forEach(function(cascade) {\r\n Object.keys(cascade).forEach(function(nodeTitle) {\r\n var node = cascade[nodeTitle];\r\n node.inWeight = _this._getInWeightForNode(node.nodeTitle, links);\r\n node.outWeight = _this._getOutWeightForNode(node.nodeTitle, links);\r\n node.maxWeight = Math.max(node.inWeight, node.outWeight)\r\n })\r\n });\r\n return cascades\r\n },\r\n _getWeightForCascade: function(cascades, cascadeIdx) {\r\n var wMax = 0;\r\n var cascade = cascades[cascadeIdx];\r\n Object.keys(cascade).forEach(function(nodeTitle) {\r\n wMax += Math.max(cascade[nodeTitle].inWeight, cascade[nodeTitle].outWeight)\r\n });\r\n return wMax\r\n },\r\n _getMaxWeightThroughCascades: function(cascades) {\r\n var max = [];\r\n cascades.forEach(function(cascade) {\r\n var mW = 0;\r\n Object.keys(cascade).forEach(function(nodeTitle) {\r\n var node = cascade[nodeTitle];\r\n mW += Math.max(node.inWeight, node.outWeight)\r\n });\r\n max.push(mW)\r\n });\r\n return _graph.default.routines.maxOfArray(max)\r\n },\r\n _computeNodes: function(cascades, options) {\r\n var _this2 = this;\r\n var rects = [];\r\n var maxWeight = this._getMaxWeightThroughCascades(cascades);\r\n var maxNodeNum = _graph.default.routines.maxOfArray(cascades.map(function(nodesInCascade) {\r\n return Object.keys(nodesInCascade).length\r\n }));\r\n var nodePadding = options.nodePadding;\r\n var heightAvailable = options.height - nodePadding * (maxNodeNum - 1);\r\n if (heightAvailable < 0) {\r\n nodePadding = 0;\r\n heightAvailable = options.height - nodePadding * (maxNodeNum - 1)\r\n }\r\n this._weightPerPixel = maxWeight / heightAvailable;\r\n var cascadeIdx = 0;\r\n cascades.forEach(function(cascade) {\r\n var cascadeRects = [];\r\n var y = 0;\r\n var nodesInCascade = Object.keys(cascade).length;\r\n var cascadeHeight = _this2._getWeightForCascade(cascades, cascadeIdx) / _this2._weightPerPixel + nodePadding * (nodesInCascade - 1);\r\n var cascadeAlign;\r\n if (Array.isArray(options.nodeAlign)) {\r\n cascadeAlign = cascadeIdx < options.nodeAlign.length ? options.nodeAlign[cascadeIdx] : _ALIGNMENT_DEFAULT\r\n } else {\r\n cascadeAlign = options.nodeAlign\r\n }\r\n if (cascadeAlign === _ALIGNMENT_BOTTOM) {\r\n y = options.height - cascadeHeight\r\n } else {\r\n if (cascadeAlign === _ALIGNMENT_CENTER) {\r\n y = .5 * (options.height - cascadeHeight)\r\n }\r\n }\r\n y = Math.round(y);\r\n Object.keys(cascade).forEach(function(nodeTitle) {\r\n cascade[nodeTitle].sort = _this2._sort && Object.prototype.hasOwnProperty.call(_this2._sort, nodeTitle) ? _this2._sort[nodeTitle] : 1\r\n });\r\n Object.keys(cascade).sort(function(a, b) {\r\n return cascade[a].sort - cascade[b].sort\r\n }).forEach(function(nodeTitle) {\r\n var node = cascade[nodeTitle];\r\n var height = Math.floor(heightAvailable * node.maxWeight / maxWeight);\r\n var x = Math.round(cascadeIdx * options.width / (cascades.length - 1)) - (0 === cascadeIdx ? 0 : options.nodeWidth);\r\n var rect = {};\r\n rect._name = nodeTitle;\r\n rect.width = options.nodeWidth;\r\n rect.height = height;\r\n rect.x = x + options.x;\r\n rect.y = y + options.y;\r\n y += height + nodePadding;\r\n cascadeRects.push(rect)\r\n });\r\n cascadeIdx++;\r\n rects.push(cascadeRects)\r\n });\r\n return rects\r\n },\r\n _findRectByName: function(rects, name) {\r\n for (var c = 0; c < rects.length; c++) {\r\n for (var r = 0; r < rects[c].length; r++) {\r\n if (name === rects[c][r]._name) {\r\n return rects[c][r]\r\n }\r\n }\r\n }\r\n return null\r\n },\r\n _findIndexByName: function(rects, nodeTitle) {\r\n var index = 0;\r\n for (var c = 0; c < rects.length; c++) {\r\n for (var r = 0; r < rects[c].length; r++) {\r\n if (nodeTitle === rects[c][r]._name) {\r\n return index\r\n }\r\n index++\r\n }\r\n }\r\n return null\r\n },\r\n _computeLinks: function(links, rects, cascades) {\r\n var _this3 = this;\r\n var yOffsets = {};\r\n var paths = [];\r\n var result = [];\r\n cascades.forEach(function(cascade) {\r\n Object.keys(cascade).forEach(function(nodeTitle) {\r\n yOffsets[nodeTitle] = {\r\n \"in\": 0,\r\n out: 0\r\n }\r\n })\r\n });\r\n rects.forEach(function(rectsOfCascade) {\r\n rectsOfCascade.forEach(function(nodeRect) {\r\n var nodeTitle = nodeRect._name;\r\n var rectFrom = _this3._findRectByName(rects, nodeTitle);\r\n var linksFromNode = links.filter(function(link) {\r\n return link[0] === nodeTitle\r\n });\r\n linksFromNode.forEach(function(link) {\r\n link.sort = _this3._findIndexByName(rects, link[1])\r\n });\r\n linksFromNode.sort(function(a, b) {\r\n return a.sort - b.sort\r\n }).forEach(function(link) {\r\n var rectTo = _this3._findRectByName(rects, link[1]);\r\n var height = Math.round(link[2] / _this3._weightPerPixel);\r\n var yOffsetFrom = yOffsets[link[0]].out;\r\n var yOffsetTo = yOffsets[link[1]].in;\r\n var heightFrom = yOffsets[link[0]].out + height > rectFrom.height ? rectFrom.height - yOffsets[link[0]].out : height;\r\n var heightTo = yOffsets[link[1]].in + height > rectTo.height ? rectTo.height - yOffsets[link[1]].in : height;\r\n paths.push({\r\n from: {\r\n x: rectFrom.x,\r\n y: rectFrom.y + yOffsetFrom,\r\n width: rectFrom.width,\r\n height: heightFrom,\r\n node: rectFrom,\r\n weight: link[2]\r\n },\r\n to: {\r\n x: rectTo.x,\r\n y: rectTo.y + yOffsetTo,\r\n width: rectTo.width,\r\n height: heightTo,\r\n node: rectTo\r\n }\r\n });\r\n yOffsets[link[0]].out += height;\r\n yOffsets[link[1]].in += height\r\n })\r\n })\r\n });\r\n paths.forEach(function(link) {\r\n var path = {\r\n d: _this3._spline(link.from, link.to),\r\n _boundingRect: {\r\n x: link.from.x + link.from.width,\r\n y: Math.min(link.from.y, link.to.y),\r\n width: link.to.x - (link.from.x + link.from.width),\r\n height: Math.max(link.from.x + link.from.height, link.to.y + link.to.height) - Math.min(link.from.y, link.to.y)\r\n },\r\n _weight: link.from.weight,\r\n _from: link.from.node,\r\n _to: link.to.node\r\n };\r\n result.push(path)\r\n });\r\n this._fitAllNodesHeight(rects, paths);\r\n return result\r\n },\r\n _fitNodeHeight: function(nodeName, nodeRects, paths) {\r\n var targetRect = this._findRectByName(nodeRects, nodeName);\r\n var heightOfLinksSummaryIn = 0;\r\n var heightOfLinksSummaryOut = 0;\r\n paths.forEach(function(path) {\r\n if (path.from.node._name === nodeName) {\r\n heightOfLinksSummaryOut += path.from.height\r\n }\r\n if (path.to.node._name === nodeName) {\r\n heightOfLinksSummaryIn += path.to.height\r\n }\r\n });\r\n targetRect.height = Math.max(heightOfLinksSummaryIn, heightOfLinksSummaryOut)\r\n },\r\n _fitAllNodesHeight: function(nodeRects, paths) {\r\n for (var c = 0; c < nodeRects.length; c++) {\r\n for (var r = 0; r < nodeRects[c].length; r++) {\r\n this._fitNodeHeight(nodeRects[c][r]._name, nodeRects, paths)\r\n }\r\n }\r\n },\r\n _spline: function(rectLeft, rectRight) {\r\n var p_UpLeft = {\r\n x: rectLeft.x + rectLeft.width,\r\n y: rectLeft.y\r\n };\r\n var p_DownLeft = {\r\n x: rectLeft.x + rectLeft.width,\r\n y: rectLeft.y + rectLeft.height\r\n };\r\n var p_UpRight = {\r\n x: rectRight.x,\r\n y: rectRight.y\r\n };\r\n var p_DownRight = {\r\n x: rectRight.x,\r\n y: rectRight.y + rectRight.height\r\n };\r\n var curve_width = _SPLINE_TENSION * (p_UpRight.x - p_UpLeft.x);\r\n var result = \"M \".concat(p_UpLeft.x, \" \").concat(p_UpLeft.y, \" C \").concat(p_UpLeft.x + curve_width, \" \").concat(p_UpLeft.y, \" \").concat(p_UpRight.x - curve_width, \" \").concat(p_UpRight.y, \" \").concat(p_UpRight.x, \" \").concat(p_UpRight.y, \" L \").concat(p_DownRight.x, \" \").concat(p_DownRight.y, \" C \").concat(p_DownRight.x - curve_width, \" \").concat(p_DownRight.y, \" \").concat(p_DownLeft.x + curve_width, \" \").concat(p_DownLeft.y, \" \").concat(p_DownLeft.x, \" \").concat(p_DownLeft.y, \" Z\");\r\n return result\r\n },\r\n computeLayout: function(linksData, sortData, options, incidentOccurred) {\r\n this._sort = sortData;\r\n var result = {};\r\n var validateResult = _data_validator.default.validate(linksData, incidentOccurred);\r\n if (!validateResult) {\r\n result.cascades = this._computeCascades(linksData);\r\n result.nodes = this._computeNodes(result.cascades, {\r\n width: options.availableRect.width,\r\n height: options.availableRect.height,\r\n x: options.availableRect.x,\r\n y: options.availableRect.y,\r\n nodePadding: options.nodePadding,\r\n nodeWidth: options.nodeWidth,\r\n nodeAlign: options.nodeAlign\r\n });\r\n result.links = this._computeLinks(linksData, result.nodes, result.cascades)\r\n } else {\r\n result.error = validateResult\r\n }\r\n return result\r\n },\r\n overlap: function(box1, box2) {\r\n return !(box2.x > box1.x + box1.width || box2.x + box2.width < box1.x || box2.y >= box1.y + box1.height || box2.y + box2.height <= box1.y)\r\n }\r\n};\r\nvar _default = layout;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/sankey/data_validator.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _graph = _interopRequireDefault(require(\"./graph\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar validator = {\r\n validate: function(data, incidentOccurred) {\r\n var result = null;\r\n if (this._hasCycle(data)) {\r\n result = \"E2006\";\r\n incidentOccurred(\"E2006\")\r\n }\r\n return result\r\n },\r\n _hasCycle: function(data) {\r\n return _graph.default.struct.hasCycle(data)\r\n }\r\n};\r\nvar _default = validator;\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/sankey/tooltip.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.setTooltipCustomOptions = setTooltipCustomOptions;\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar defaultCustomizeLinkTooltip = function(info) {\r\n return {\r\n html: \"\".concat(info.source, \" > \").concat(info.target, \"
Weight: \").concat(info.weight)\r\n }\r\n};\r\nvar defaultCustomizeNodeTooltip = function(info) {\r\n return {\r\n html: \"\".concat(info.label, \"
Incoming weight: \").concat(info.weightIn, \"
Outgoing weight: \").concat(info.weightOut)\r\n }\r\n};\r\nvar generateCustomCallback = function(customCallback, defaultCallback) {\r\n return function(objectInfo) {\r\n var res = (0, _type.isFunction)(customCallback) ? customCallback.call(objectInfo, objectInfo) : {};\r\n var hasOwnProperty = Object.prototype.hasOwnProperty.bind(res);\r\n if (!hasOwnProperty(\"html\") && !hasOwnProperty(\"text\")) {\r\n res = (0, _extend2.extend)(res, defaultCallback.call(objectInfo, objectInfo))\r\n }\r\n return res\r\n }\r\n};\r\n\r\nfunction setTooltipCustomOptions(sankey) {\r\n sankey.prototype._setTooltipOptions = function() {\r\n var tooltip = this._tooltip;\r\n var options = tooltip && this._getOption(\"tooltip\");\r\n var linkTemplate;\r\n var nodeTemplate;\r\n if (options.linkTooltipTemplate) {\r\n linkTemplate = this._getTemplate(options.linkTooltipTemplate)\r\n }\r\n if (options.nodeTooltipTemplate) {\r\n nodeTemplate = this._getTemplate(options.nodeTooltipTemplate)\r\n }\r\n tooltip && tooltip.update((0, _extend2.extend)({}, options, {\r\n customizeTooltip: function(args) {\r\n if (!(linkTemplate && \"link\" === args.type || nodeTemplate && \"node\" === args.type)) {\r\n args.skipTemplate = true\r\n }\r\n if (\"node\" === args.type) {\r\n return generateCustomCallback(options.customizeNodeTooltip, defaultCustomizeNodeTooltip)(args.info)\r\n } else {\r\n if (\"link\" === args.type) {\r\n return generateCustomCallback(options.customizeLinkTooltip, defaultCustomizeLinkTooltip)(args.info)\r\n }\r\n }\r\n return {}\r\n },\r\n contentTemplate: function(arg, div) {\r\n var templateArgs = {\r\n model: arg.info,\r\n container: div\r\n };\r\n if (linkTemplate && \"link\" === arg.type) {\r\n return linkTemplate.render(templateArgs)\r\n }\r\n if (nodeTemplate && \"node\" === arg.type) {\r\n return nodeTemplate.render(templateArgs)\r\n }\r\n },\r\n enabled: options.enabled\r\n }))\r\n };\r\n sankey.prototype.hideTooltip = function() {\r\n this._tooltip && this._tooltip.hide()\r\n }\r\n}\r\n","/**\r\n * DevExtreme (viz/sankey/tracker.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.plugin = void 0;\r\nvar _sankey = _interopRequireDefault(require(\"./sankey\"));\r\nvar _tracker = require(\"../components/tracker\");\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n \"default\": obj\r\n }\r\n}\r\nvar proto = _sankey.default.prototype;\r\nvar DATA_KEY_BASE = \"__sankey_data_\";\r\nvar dataKeyModifier = 0;\r\nproto._eventsMap.onNodeClick = {\r\n name: \"nodeClick\"\r\n};\r\nproto._eventsMap.onLinkClick = {\r\n name: \"linkClick\"\r\n};\r\nvar getDataKey = function() {\r\n return DATA_KEY_BASE + dataKeyModifier++\r\n};\r\nvar plugin = {\r\n name: \"tracker\",\r\n init: function() {\r\n var that = this;\r\n var dataKey = getDataKey();\r\n that._tracker = new _tracker.Tracker({\r\n widget: that,\r\n root: that._renderer.root,\r\n getData: function(e) {\r\n var target = e.target;\r\n return target[dataKey]\r\n },\r\n getNode: function(index) {\r\n if (index < that._nodes.length) {\r\n return that._nodes[index]\r\n } else {\r\n return that._links[index - that._nodes.length]\r\n }\r\n },\r\n click: function(e) {\r\n var eventName = this.getData(e.event) < that._nodes.length ? \"nodeClick\" : \"linkClick\";\r\n that._eventTrigger(eventName, {\r\n target: e.node,\r\n event: e.event\r\n })\r\n }\r\n });\r\n this._dataKey = dataKey\r\n },\r\n dispose: function() {\r\n this._tracker.dispose()\r\n },\r\n extenders: {\r\n _change_LINKS_DRAW: function() {\r\n var dataKey = this._dataKey;\r\n this._nodes.concat(this._links).forEach(function(item, index) {\r\n item.element.data(dataKey, index)\r\n })\r\n }\r\n }\r\n};\r\nexports.plugin = plugin;\r\n","/**\r\n * DevExtreme (viz/series/bar_series.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\n\r\nfunction _typeof(obj) {\r\n \"@babel/helpers - typeof\";\r\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\r\n return typeof obj\r\n } : function(obj) {\r\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj\r\n }, _typeof(obj)\r\n}\r\nexports.polar = exports.chart = void 0;\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _iterator = require(\"../../core/utils/iterator\");\r\nvar scatterSeries = _interopRequireWildcard(require(\"./scatter_series\"));\r\nvar _area_series = require(\"./area_series\");\r\nvar _utils = require(\"../core/utils\");\r\nvar _type = require(\"../../core/utils/type\");\r\n\r\nfunction _getRequireWildcardCache(nodeInterop) {\r\n if (\"function\" !== typeof WeakMap) {\r\n return null\r\n }\r\n var cacheBabelInterop = new WeakMap;\r\n var cacheNodeInterop = new WeakMap;\r\n return (_getRequireWildcardCache = function(nodeInterop) {\r\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop\r\n })(nodeInterop)\r\n}\r\n\r\nfunction _interopRequireWildcard(obj, nodeInterop) {\r\n if (!nodeInterop && obj && obj.__esModule) {\r\n return obj\r\n }\r\n if (null === obj || \"object\" !== _typeof(obj) && \"function\" !== typeof obj) {\r\n return {\r\n \"default\": obj\r\n }\r\n }\r\n var cache = _getRequireWildcardCache(nodeInterop);\r\n if (cache && cache.has(obj)) {\r\n return cache.get(obj)\r\n }\r\n var newObj = {};\r\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n for (var key in obj) {\r\n if (\"default\" !== key && Object.prototype.hasOwnProperty.call(obj, key)) {\r\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\r\n if (desc && (desc.get || desc.set)) {\r\n Object.defineProperty(newObj, key, desc)\r\n } else {\r\n newObj[key] = obj[key]\r\n }\r\n }\r\n }\r\n newObj.default = obj;\r\n if (cache) {\r\n cache.set(obj, newObj)\r\n }\r\n return newObj\r\n}\r\nvar areaSeries = _area_series.chart.area;\r\nvar chartSeries = scatterSeries.chart;\r\nvar polarSeries = scatterSeries.polar;\r\nvar _extend = _extend2.extend;\r\nvar _each = _iterator.each;\r\nvar chart = {};\r\nexports.chart = chart;\r\nvar polar = {};\r\nexports.polar = polar;\r\nvar baseBarSeriesMethods = {\r\n _createLegendState: function(styleOptions, defaultColor) {\r\n return {\r\n fill: styleOptions.color || defaultColor,\r\n hatching: styleOptions.hatching\r\n }\r\n },\r\n _parsePointStyle: function(style, defaultColor, defaultBorderColor) {\r\n var color = style.color || defaultColor;\r\n var base = chartSeries._parsePointStyle.call(this, style, color, defaultBorderColor);\r\n base.fill = color;\r\n base.hatching = style.hatching;\r\n base.dashStyle = style.border && style.border.dashStyle || \"solid\";\r\n delete base.r;\r\n return base\r\n },\r\n _applyMarkerClipRect: function(settings) {\r\n settings[\"clip-path\"] = null\r\n },\r\n _setGroupsSettings: function(animationEnabled, firstDrawing) {\r\n var that = this;\r\n var settings = {};\r\n chartSeries._setGroupsSettings.apply(that, arguments);\r\n if (animationEnabled && firstDrawing) {\r\n settings = this._getAffineCoordOptions()\r\n } else {\r\n if (!animationEnabled) {\r\n settings = {\r\n scaleX: 1,\r\n scaleY: 1,\r\n translateX: 0,\r\n translateY: 0\r\n }\r\n }\r\n }\r\n that._markersGroup.attr(settings)\r\n },\r\n _drawPoint: function(options) {\r\n options.hasAnimation = options.hasAnimation && !options.firstDrawing;\r\n options.firstDrawing = false;\r\n chartSeries._drawPoint.call(this, options)\r\n },\r\n _getMainColor: function() {\r\n return this._options.mainSeriesColor\r\n },\r\n _createPointStyles: function(pointOptions) {\r\n var that = this;\r\n var mainColor = pointOptions.color || that._getMainColor();\r\n return {\r\n normal: that._parsePointStyle(pointOptions, mainColor, mainColor),\r\n hover: that._parsePointStyle(pointOptions.hoverStyle || {}, mainColor, mainColor),\r\n selection: that._parsePointStyle(pointOptions.selectionStyle || {}, mainColor, mainColor)\r\n }\r\n },\r\n _updatePointsVisibility: function() {\r\n var visibility = this._options.visible;\r\n (0, _iterator.each)(this._points, function(_, point) {\r\n point._options.visible = visibility\r\n })\r\n },\r\n _getOptionsForPoint: function() {\r\n return this._options\r\n },\r\n _animate: function(firstDrawing) {\r\n var that = this;\r\n var complete = function() {\r\n that._animateComplete()\r\n };\r\n var animateFunc = function(drawnPoints, complete) {\r\n var lastPointIndex = drawnPoints.length - 1;\r\n _each(drawnPoints || [], function(i, point) {\r\n point.animate(i === lastPointIndex ? complete : void 0, point.getMarkerCoords())\r\n })\r\n };\r\n that._animatePoints(firstDrawing, complete, animateFunc)\r\n },\r\n getValueRangeInitialValue: areaSeries.getValueRangeInitialValue,\r\n _patchMarginOptions: function(options) {\r\n options.checkInterval = true;\r\n return options\r\n },\r\n _defaultAggregator: \"sum\",\r\n _defineDrawingState: function() {},\r\n usePointsToDefineAutoHiding: function() {\r\n return false\r\n }\r\n};\r\nchart.bar = _extend({}, chartSeries, baseBarSeriesMethods, {\r\n _getAffineCoordOptions: function() {\r\n var rotated = this._options.rotated;\r\n var direction = rotated ? \"X\" : \"Y\";\r\n var settings = {\r\n scaleX: rotated ? .001 : 1,\r\n scaleY: rotated ? 1 : .001\r\n };\r\n settings[\"translate\" + direction] = this.getValueAxis().getTranslator().translate(\"canvas_position_default\");\r\n return settings\r\n },\r\n _animatePoints: function(firstDrawing, complete, animateFunc) {\r\n var that = this;\r\n that._markersGroup.animate({\r\n scaleX: 1,\r\n scaleY: 1,\r\n translateY: 0,\r\n translateX: 0\r\n }, void 0, complete);\r\n if (!firstDrawing) {\r\n animateFunc(that._drawnPoints, complete)\r\n }\r\n },\r\n checkSeriesViewportCoord: function(axis, coord) {\r\n if (!chartSeries.checkSeriesViewportCoord.call(this)) {\r\n return false\r\n }\r\n if (axis.isArgumentAxis) {\r\n return true\r\n }\r\n var translator = axis.getTranslator();\r\n var range = this.getViewport();\r\n var min = translator.translate(range.categories ? range.categories[0] : range.min);\r\n var max = translator.translate(range.categories ? range.categories[range.categories.length - 1] : range.max);\r\n var rotated = this.getOptions().rotated;\r\n var inverted = axis.getOptions().inverted;\r\n return rotated && !inverted || !rotated && inverted ? coord >= min && coord <= max : coord >= max && coord <= min\r\n },\r\n getSeriesPairCoord: function(coord, isArgument) {\r\n var oppositeCoord = null;\r\n var rotated = this._options.rotated;\r\n var isOpposite = !isArgument && !rotated || isArgument && rotated;\r\n var coordName = isOpposite ? \"vy\" : \"vx\";\r\n var oppositeCoordName = isOpposite ? \"vx\" : \"vy\";\r\n var points = this.getPoints();\r\n for (var i = 0; i < points.length; i++) {\r\n var p = points[i];\r\n var tmpCoord = void 0;\r\n if (isArgument) {\r\n tmpCoord = p.getCenterCoord()[coordName[1]] === coord ? p[oppositeCoordName] : void 0\r\n } else {\r\n tmpCoord = p[coordName] === coord ? p[oppositeCoordName] : void 0\r\n }\r\n if (this._checkAxisVisibleAreaCoord(!isArgument, tmpCoord)) {\r\n oppositeCoord = tmpCoord;\r\n break\r\n }\r\n }\r\n return oppositeCoord\r\n }\r\n});\r\npolar.bar = _extend({}, polarSeries, baseBarSeriesMethods, {\r\n _animatePoints: function(firstDrawing, complete, animateFunc) {\r\n animateFunc(this._drawnPoints, complete)\r\n },\r\n _setGroupsSettings: chartSeries._setGroupsSettings,\r\n _drawPoint: function(point, groups, animationEnabled) {\r\n chartSeries._drawPoint.call(this, point, groups, animationEnabled)\r\n },\r\n _parsePointStyle: function(style) {\r\n var base = baseBarSeriesMethods._parsePointStyle.apply(this, arguments);\r\n base.opacity = style.opacity;\r\n return base\r\n },\r\n _createGroups: chartSeries._createGroups,\r\n _setMarkerGroupSettings: function() {\r\n var that = this;\r\n var markersSettings = that._createPointStyles(that._getMarkerGroupOptions()).normal;\r\n markersSettings.class = \"dxc-markers\";\r\n that._applyMarkerClipRect(markersSettings);\r\n var groupSettings = _extend({}, markersSettings);\r\n delete groupSettings.opacity;\r\n that._markersGroup.attr(groupSettings)\r\n },\r\n getSeriesPairCoord: function(params, isArgument) {\r\n var coords = null;\r\n var paramName = isArgument ? \"argument\" : \"radius\";\r\n var points = this.getVisiblePoints();\r\n var argAxis = this.getArgumentAxis();\r\n var startAngle = argAxis.getAngles()[0];\r\n for (var i = 0; i < points.length; i++) {\r\n var p = points[i];\r\n var tmpPoint = (0, _type.isDefined)(p[paramName]) && (0, _type.isDefined)(params[paramName]) && p[paramName].valueOf() === params[paramName].valueOf() ? (0, _utils.convertPolarToXY)(argAxis.getCenter(), startAngle, -argAxis.getTranslatedAngle(p.angle), p.radius) : void 0;\r\n if ((0, _type.isDefined)(tmpPoint)) {\r\n coords = tmpPoint;\r\n break\r\n }\r\n }\r\n return coords\r\n },\r\n _createLegendState: areaSeries._createLegendState\r\n});\r\n","/**\r\n * DevExtreme (viz/series/area_series.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.polar = exports.chart = void 0;\r\nvar _object = require(\"../../core/utils/object\");\r\nvar _extend2 = require(\"../../core/utils/extend\");\r\nvar _scatter_series = require(\"./scatter_series\");\r\nvar _line_series = require(\"./line_series\");\r\nvar _utils = require(\"../core/utils\");\r\nvar chartLineSeries = _line_series.chart.line;\r\nvar polarLineSeries = _line_series.polar.line;\r\nvar _extend = _extend2.extend;\r\nvar calculateBezierPoints = _line_series.chart.spline._calculateBezierPoints;\r\nvar chart = {};\r\nexports.chart = chart;\r\nvar polar = {};\r\nexports.polar = polar;\r\nvar baseAreaMethods = {\r\n _createBorderElement: chartLineSeries._createMainElement,\r\n _createLegendState: function(styleOptions, defaultColor) {\r\n return {\r\n fill: styleOptions.color || defaultColor,\r\n opacity: styleOptions.opacity,\r\n hatching: styleOptions.hatching\r\n }\r\n },\r\n getValueRangeInitialValue: function() {\r\n if (\"logarithmic\" !== this.valueAxisType && \"datetime\" !== this.valueType && false !== this.showZero) {\r\n return 0\r\n } else {\r\n return _scatter_series.chart.getValueRangeInitialValue.call(this)\r\n }\r\n },\r\n _getDefaultSegment: function(segment) {\r\n var defaultSegment = chartLineSeries._getDefaultSegment(segment);\r\n defaultSegment.area = defaultSegment.line.concat(defaultSegment.line.slice().reverse());\r\n return defaultSegment\r\n },\r\n _updateElement: function(element, segment, animate, complete) {\r\n var lineParams = {\r\n points: segment.line\r\n };\r\n var areaParams = {\r\n points: segment.area\r\n };\r\n var borderElement = element.line;\r\n if (animate) {\r\n borderElement && borderElement.animate(lineParams);\r\n element.area.animate(areaParams, {}, complete)\r\n } else {\r\n borderElement && borderElement.attr(lineParams);\r\n element.area.attr(areaParams)\r\n }\r\n },\r\n _removeElement: function(element) {\r\n element.line && element.line.remove();\r\n element.area.remove()\r\n },\r\n _drawElement: function(segment) {\r\n return {\r\n line: this._bordersGroup && this._createBorderElement(segment.line, {\r\n \"stroke-width\": this._styles.normal.border[\"stroke-width\"]\r\n }).append(this._bordersGroup),\r\n area: this._createMainElement(segment.area).append(this._elementsGroup)\r\n }\r\n },\r\n _applyStyle: function(style) {\r\n var that = this;\r\n that._elementsGroup && that._elementsGroup.smartAttr(style.elements);\r\n that._bordersGroup && that._bordersGroup.attr(style.border);\r\n (that._graphics || []).forEach(function(graphic) {\r\n graphic.line && graphic.line.attr({\r\n \"stroke-width\": style.border[\"stroke-width\"]\r\n }).sharp()\r\n })\r\n },\r\n _parseStyle: function(options, defaultColor, defaultBorderColor) {\r\n var borderOptions = options.border || {};\r\n var borderStyle = chartLineSeries._parseLineOptions(borderOptions, defaultBorderColor);\r\n borderStyle.stroke = borderOptions.visible && borderStyle[\"stroke-width\"] ? borderStyle.stroke : \"none\";\r\n borderStyle[\"stroke-width\"] = borderStyle[\"stroke-width\"] || 1;\r\n return {\r\n border: borderStyle,\r\n elements: {\r\n stroke: \"none\",\r\n fill: options.color || defaultColor,\r\n hatching: options.hatching,\r\n opacity: options.opacity\r\n }\r\n }\r\n },\r\n _areBordersVisible: function() {\r\n var options = this._options;\r\n return options.border.visible || options.hoverStyle.border.visible || options.selectionStyle.border.visible\r\n },\r\n _createMainElement: function(points, settings) {\r\n return this._renderer.path(points, \"area\").attr(settings)\r\n },\r\n _getTrackerSettings: function(segment) {\r\n return {\r\n \"stroke-width\": segment.singlePointSegment ? this._defaultTrackerWidth : 0\r\n }\r\n },\r\n _getMainPointsFromSegment: function(segment) {\r\n return segment.area\r\n }\r\n};\r\n\r\nfunction createAreaPoints(points) {\r\n return (0, _utils.map)(points, function(pt) {\r\n return pt.getCoords()\r\n }).concat((0, _utils.map)(points.slice().reverse(), function(pt) {\r\n return pt.getCoords(true)\r\n }))\r\n}\r\nvar areaSeries = chart.area = _extend({}, chartLineSeries, baseAreaMethods, {\r\n _prepareSegment: function(points, rotated) {\r\n var that = this;\r\n var processedPoints = that._processSinglePointsAreaSegment(points, rotated);\r\n var areaPoints = createAreaPoints(processedPoints);\r\n var argAxis = that.getArgumentAxis();\r\n if (argAxis.getAxisPosition) {\r\n var argAxisPosition = argAxis.getAxisPosition();\r\n var axisOptions = argAxis.getOptions();\r\n var edgeOffset = (!rotated ? -1 : 1) * Math.round(axisOptions.width / 2);\r\n if (axisOptions.visible) {\r\n areaPoints.forEach(function(p, i) {\r\n if (p) {\r\n var index = 1 === points.length ? 0 : i < points.length ? i : areaPoints.length - 1 - i;\r\n rotated && p.x === points[index].defaultX && p.x === argAxisPosition - argAxis.getAxisShift() && (p.x += edgeOffset);\r\n !rotated && p.y === points[index].defaultY && p.y === argAxisPosition - argAxis.getAxisShift() && (p.y += edgeOffset)\r\n }\r\n })\r\n }\r\n }\r\n return {\r\n line: processedPoints,\r\n area: areaPoints,\r\n singlePointSegment: processedPoints !== points\r\n }\r\n },\r\n _processSinglePointsAreaSegment: function(points, rotated) {\r\n if (points && 1 === points.length) {\r\n var p = points[0];\r\n var p1 = (0, _object.clone)(p);\r\n p1[rotated ? \"y\" : \"x\"] += 1;\r\n p1.argument = null;\r\n return [p, p1]\r\n }\r\n return points\r\n }\r\n});\r\npolar.area = _extend({}, polarLineSeries, baseAreaMethods, {\r\n _prepareSegment: function(points, rotated, lastSegment) {\r\n lastSegment && polarLineSeries._closeSegment.call(this, points);\r\n return areaSeries._prepareSegment.call(this, points)\r\n },\r\n _processSinglePointsAreaSegment: function(points) {\r\n return _line_series.polar.line._prepareSegment.call(this, points).line\r\n }\r\n});\r\nchart.steparea = _extend({}, areaSeries, {\r\n _prepareSegment: function(points, rotated) {\r\n var stepLineSeries = _line_series.chart.stepline;\r\n points = areaSeries._processSinglePointsAreaSegment(points, rotated);\r\n return areaSeries._prepareSegment.call(this, stepLineSeries._calculateStepLinePoints.call(this, points), rotated)\r\n },\r\n getSeriesPairCoord: _line_series.chart.stepline.getSeriesPairCoord\r\n});\r\nchart.splinearea = _extend({}, areaSeries, {\r\n _areaPointsToSplineAreaPoints: function(areaPoints) {\r\n var previousMiddlePoint = areaPoints[areaPoints.length / 2 - 1];\r\n var middlePoint = areaPoints[areaPoints.length / 2];\r\n areaPoints.splice(areaPoints.length / 2, 0, {\r\n x: previousMiddlePoint.x,\r\n y: previousMiddlePoint.y\r\n }, {\r\n x: middlePoint.x,\r\n y: middlePoint.y\r\n })\r\n },\r\n _prepareSegment: function(points, rotated) {\r\n var processedPoints = areaSeries._processSinglePointsAreaSegment(points, rotated);\r\n var areaSegment = areaSeries._prepareSegment.call(this, calculateBezierPoints(processedPoints, rotated));\r\n this._areaPointsToSplineAreaPoints(areaSegment.area);\r\n areaSegment.singlePointSegment = processedPoints !== points;\r\n return areaSegment\r\n },\r\n _getDefaultSegment: function(segment) {\r\n var areaDefaultSegment = areaSeries._getDefaultSegment(segment);\r\n this._areaPointsToSplineAreaPoints(areaDefaultSegment.area);\r\n return areaDefaultSegment\r\n },\r\n _createMainElement: function(points, settings) {\r\n return this._renderer.path(points, \"bezierarea\").attr(settings)\r\n },\r\n _createBorderElement: _line_series.chart.spline._createMainElement,\r\n getSeriesPairCoord: _line_series.chart.spline.getSeriesPairCoord,\r\n _getNearestPoints: _line_series.chart.spline._getNearestPoints,\r\n _getBezierPoints: _line_series.chart.spline._getBezierPoints,\r\n obtainCubicBezierTCoef: _line_series.chart.spline.obtainCubicBezierTCoef\r\n});\r\n","/**\r\n * DevExtreme (viz/series/helpers/range_data_calculator.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.default = void 0;\r\nvar _utils = require(\"../../core/utils\");\r\nvar _type = require(\"../../../core/utils/type\");\r\nvar _common = require(\"../../../core/utils/common\");\r\nvar DISCRETE = \"discrete\";\r\nvar abs = Math.abs,\r\n floor = Math.floor,\r\n ceil = Math.ceil,\r\n min = Math.min;\r\n\r\nfunction continuousRangeCalculator(range, minValue, maxValue) {\r\n range.min = range.min < minValue ? range.min : minValue;\r\n range.max = range.max > maxValue ? range.max : maxValue\r\n}\r\n\r\nfunction createGetLogFunction(axisType, axis) {\r\n if (\"logarithmic\" !== axisType) {\r\n return null\r\n }\r\n var base = axis.getOptions().logarithmBase;\r\n return function(value) {\r\n var log = (0, _utils.getLog)(abs(value), base);\r\n var round = log < 0 ? floor : ceil;\r\n return round(log)\r\n }\r\n}\r\n\r\nfunction getRangeCalculator(axisType, axis, getLog) {\r\n var rangeCalculator = continuousRangeCalculator;\r\n if (axisType === DISCRETE) {\r\n rangeCalculator = function(range, minValue, maxValue) {\r\n if (minValue !== maxValue) {\r\n range.categories.push(maxValue)\r\n }\r\n range.categories.push(minValue)\r\n }\r\n } else {\r\n if (axis) {\r\n rangeCalculator = function(range, value) {\r\n var interval = axis.calculateInterval(value, range.prevValue);\r\n var minInterval = range.interval;\r\n range.interval = (minInterval < interval ? minInterval : interval) || minInterval;\r\n range.prevValue = value;\r\n continuousRangeCalculator(range, value, value)\r\n }\r\n }\r\n }\r\n if (getLog) {\r\n return function(range, minValue, maxValue) {\r\n var minArgs = [];\r\n rangeCalculator(range, minValue, maxValue);\r\n 0 !== minValue && minArgs.push(getLog(minValue));\r\n 0 !== maxValue && minArgs.push(getLog(maxValue));\r\n var linearThreshold = min.apply(null, minArgs);\r\n range.linearThreshold = range.linearThreshold < linearThreshold ? range.linearThreshold : linearThreshold\r\n }\r\n }\r\n return rangeCalculator\r\n}\r\n\r\nfunction getInitialRange(axisType, dataType, firstValue) {\r\n var range = {\r\n axisType: axisType,\r\n dataType: dataType\r\n };\r\n if (axisType === DISCRETE) {\r\n range.categories = []\r\n } else {\r\n range.min = firstValue;\r\n range.max = firstValue\r\n }\r\n return range\r\n}\r\n\r\nfunction processCategories(range) {\r\n if (range.categories) {\r\n range.categories = (0, _utils.unique)(range.categories)\r\n }\r\n return range\r\n}\r\n\r\nfunction getValueForArgument(point, extraPoint, x, range) {\r\n if (extraPoint && (0, _type.isDefined)(extraPoint.value)) {\r\n var y1 = point.value;\r\n var y2 = extraPoint.value;\r\n var x1 = point.argument;\r\n var x2 = extraPoint.argument;\r\n var r = (x - x1) * (y2 - y1) / (x2 - x1) + y1.valueOf();\r\n return \"datetime\" === range.dataType ? new Date(r) : r\r\n } else {\r\n return point.value\r\n }\r\n}\r\n\r\nfunction calculateRangeBetweenPoints(rangeCalculator, range, point, prevPoint, bound) {\r\n var value = getValueForArgument(point, prevPoint, bound, range);\r\n rangeCalculator(range, value, value)\r\n}\r\n\r\nfunction isLineSeries(series) {\r\n return series.type.toLowerCase().indexOf(\"line\") >= 0 || series.type.toLowerCase().indexOf(\"area\") >= 0\r\n}\r\n\r\nfunction getViewportReducer(series) {\r\n var rangeCalculator = getRangeCalculator(series.valueAxisType);\r\n var argumentAxis = series.getArgumentAxis();\r\n var viewport = argumentAxis && series.getArgumentAxis().visualRange() || {};\r\n var calculatePointBetweenPoints = isLineSeries(series) ? calculateRangeBetweenPoints : _common.noop;\r\n if (argumentAxis && argumentAxis.getMarginOptions().checkInterval) {\r\n var range = series.getArgumentAxis().getTranslator().getBusinessRange();\r\n var add = (0, _utils.getAddFunction)(range, false);\r\n var interval = range.interval;\r\n if (isFinite(interval) && (0, _type.isDefined)(viewport.startValue) && (0, _type.isDefined)(viewport.endValue)) {\r\n viewport.startValue = add(viewport.startValue, interval, -1);\r\n viewport.endValue = add(viewport.endValue, interval)\r\n }\r\n }\r\n var viewportFilter = getViewPortFilter(viewport);\r\n return function(range, point, index, points) {\r\n var argument = point.argument;\r\n if (!point.hasValue()) {\r\n return range\r\n }\r\n if (viewportFilter(argument)) {\r\n if (!range.startCalc) {\r\n range.startCalc = true;\r\n calculatePointBetweenPoints(rangeCalculator, range, point, points[index - 1], viewport.startValue)\r\n }\r\n rangeCalculator(range, point.getMinValue(), point.getMaxValue())\r\n } else {\r\n if (!viewport.categories && (0, _type.isDefined)(viewport.startValue) && argument > viewport.startValue) {\r\n if (!range.startCalc) {\r\n calculatePointBetweenPoints(rangeCalculator, range, point, points[index - 1], viewport.startValue)\r\n }\r\n range.endCalc = true;\r\n calculatePointBetweenPoints(rangeCalculator, range, point, points[index - 1], viewport.endValue)\r\n }\r\n }\r\n return range\r\n }\r\n}\r\n\r\nfunction getViewPortFilter(viewport) {\r\n if (viewport.categories) {\r\n var dictionary = viewport.categories.reduce(function(result, category) {\r\n result[category.valueOf()] = true;\r\n return result\r\n }, {});\r\n return function(argument) {\r\n return (0, _type.isDefined)(argument) && dictionary[argument.valueOf()]\r\n }\r\n }\r\n if (!(0, _type.isDefined)(viewport.startValue) && !(0, _type.isDefined)(viewport.endValue)) {\r\n return function() {\r\n return true\r\n }\r\n }\r\n if (!(0, _type.isDefined)(viewport.endValue)) {\r\n return function(argument) {\r\n return argument >= viewport.startValue\r\n }\r\n }\r\n if (!(0, _type.isDefined)(viewport.startValue)) {\r\n return function(argument) {\r\n return argument <= viewport.endValue\r\n }\r\n }\r\n return function(argument) {\r\n return argument >= viewport.startValue && argument <= viewport.endValue\r\n }\r\n}\r\nvar _default = {\r\n getViewPortFilter: getViewPortFilter,\r\n getArgumentRange: function(series) {\r\n var data = series._data || [];\r\n var range = {};\r\n if (data.length) {\r\n if (series.argumentAxisType === DISCRETE) {\r\n range = {\r\n categories: data.map(function(item) {\r\n return item.argument\r\n })\r\n }\r\n } else {\r\n var interval;\r\n if (data.length > 1) {\r\n var i1 = series.getArgumentAxis().calculateInterval(data[0].argument, data[1].argument);\r\n var i2 = series.getArgumentAxis().calculateInterval(data[data.length - 1].argument, data[data.length - 2].argument);\r\n interval = min(i1, i2)\r\n }\r\n range = {\r\n min: data[0].argument,\r\n max: data[data.length - 1].argument,\r\n interval: interval\r\n }\r\n }\r\n }\r\n return processCategories(range)\r\n },\r\n getRangeData: function(series) {\r\n var points = series.getPoints();\r\n var useAggregation = series.useAggregation();\r\n var argumentCalculator = getRangeCalculator(series.argumentAxisType, points.length > 1 && series.getArgumentAxis(), createGetLogFunction(series.argumentAxisType, series.getArgumentAxis()));\r\n var valueRangeCalculator = getRangeCalculator(series.valueAxisType, null, createGetLogFunction(series.valueAxisType, series.getValueAxis()));\r\n var viewportReducer = getViewportReducer(series);\r\n var range = points.reduce(function(range, point, index, points) {\r\n var argument = point.argument;\r\n if (!point.isArgumentCorrect()) {\r\n return range\r\n }\r\n argumentCalculator(range.arg, argument, argument);\r\n if (point.hasValue()) {\r\n valueRangeCalculator(range.val, point.getMinValue(), point.getMaxValue());\r\n viewportReducer(range.viewport, point, index, points)\r\n }\r\n return range\r\n }, {\r\n arg: getInitialRange(series.argumentAxisType, series.argumentType),\r\n val: getInitialRange(series.valueAxisType, series.valueType, points.length ? series.getValueRangeInitialValue() : void 0),\r\n viewport: getInitialRange(series.valueAxisType, series.valueType, points.length ? series.getValueRangeInitialValue() : void 0)\r\n });\r\n if (useAggregation) {\r\n var argumentRange = this.getArgumentRange(series);\r\n if (series.argumentAxisType === DISCRETE) {\r\n range.arg = argumentRange\r\n } else {\r\n var viewport = series.getArgumentAxis().getViewport();\r\n if ((0, _type.isDefined)(viewport.startValue) || (0, _type.isDefined)(viewport.length)) {\r\n argumentCalculator(range.arg, argumentRange.min, argumentRange.min)\r\n }\r\n if ((0, _type.isDefined)(viewport.endValue) || (0, _type.isDefined)(viewport.length) && (0, _type.isDefined)(viewport.startValue)) {\r\n argumentCalculator(range.arg, argumentRange.max, argumentRange.max)\r\n }\r\n }\r\n }\r\n processCategories(range.arg);\r\n processCategories(range.val);\r\n return range\r\n },\r\n getViewport: function(series) {\r\n var points = series.getPoints();\r\n var range = {};\r\n var reducer = getViewportReducer(series);\r\n range = getInitialRange(series.valueAxisType, series.valueType, points.length ? series.getValueRangeInitialValue() : void 0);\r\n points.some(function(point, index) {\r\n reducer(range, point, index, points);\r\n return range.endCalc\r\n });\r\n return range\r\n },\r\n getPointsInViewPort: function(series) {\r\n var argumentViewPortFilter = getViewPortFilter(series.getArgumentAxis().visualRange() || {});\r\n var valueViewPort = series.getValueAxis().visualRange() || {};\r\n var valueViewPortFilter = getViewPortFilter(valueViewPort);\r\n var points = series.getPoints();\r\n var addValue = function(values, point, isEdge) {\r\n var minValue = point.getMinValue();\r\n var maxValue = point.getMaxValue();\r\n var isMinValueInViewPort = valueViewPortFilter(minValue);\r\n var isMaxValueInViewPort = valueViewPortFilter(maxValue);\r\n if (isMinValueInViewPort) {\r\n values.push(minValue)\r\n }\r\n if (maxValue !== minValue && isMaxValueInViewPort) {\r\n values.push(maxValue)\r\n }\r\n if (isEdge && !isMinValueInViewPort && !isMaxValueInViewPort) {\r\n if (!values.length) {\r\n values.push(valueViewPort.startValue)\r\n } else {\r\n values.push(valueViewPort.endValue)\r\n }\r\n }\r\n };\r\n var addEdgePoints = isLineSeries(series) ? function(result, points, index) {\r\n var point = points[index];\r\n var prevPoint = points[index - 1];\r\n var nextPoint = points[index + 1];\r\n if (nextPoint && argumentViewPortFilter(nextPoint.argument)) {\r\n addValue(result[1], point, true)\r\n }\r\n if (prevPoint && argumentViewPortFilter(prevPoint.argument)) {\r\n addValue(result[1], point, true)\r\n }\r\n } : _common.noop;\r\n var checkPointInViewport = function(result, point, index) {\r\n if (argumentViewPortFilter(point.argument)) {\r\n addValue(result[0], point)\r\n } else {\r\n addEdgePoints(result, points, index)\r\n }\r\n return result\r\n };\r\n return points.reduce(checkPointInViewport, [\r\n [],\r\n []\r\n ])\r\n }\r\n};\r\nexports.default = _default;\r\nmodule.exports = exports.default;\r\n","/**\r\n * DevExtreme (viz/range_selector/common.js)\r\n * Version: 20.2.11\r\n * Build date: Wed Apr 27 2022\r\n *\r\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n\"use strict\";\r\nexports.utils = exports.formatValue = exports.consts = exports.HEIGHT_COMPACT_MODE = void 0;\r\nvar _smart_formatter = require(\"../axes/smart_formatter\");\r\nvar _type = require(\"../../core/utils/type\");\r\nvar HEIGHT_COMPACT_MODE = 24;\r\nexports.HEIGHT_COMPACT_MODE = HEIGHT_COMPACT_MODE;\r\nvar POINTER_SIZE = 4;\r\nvar EMPTY_SLIDER_MARKER_TEXT = \". . .\";\r\nvar utils = {\r\n trackerSettings: {\r\n fill: \"grey\",\r\n stroke: \"grey\",\r\n opacity: 1e-4\r\n },\r\n animationSettings: {\r\n duration: 250\r\n }\r\n};\r\nexports.utils = utils;\r\nvar consts = {\r\n emptySliderMarkerText: EMPTY_SLIDER_MARKER_TEXT,\r\n pointerSize: POINTER_SIZE\r\n};\r\nexports.consts = consts;\r\nvar formatValue = function(value, formatOptions, tickIntervalsInfo, valueType, type, logarithmBase) {\r\n var formatObject = {\r\n value: value,\r\n valueText: (0, _smart_formatter.smartFormatter)(value, {\r\n labelOptions: formatOptions,\r\n ticks: tickIntervalsInfo ? tickIntervalsInfo.ticks : [],\r\n tickInterval: tickIntervalsInfo ? tickIntervalsInfo.tickInterval : void 0,\r\n dataType: valueType,\r\n type: type,\r\n logarithmBase: logarithmBase\r\n })\r\n };\r\n return String((0, _type.isFunction)(formatOptions.customizeText) ? formatOptions.customizeText.call(formatObject, formatObject) : formatObject.valueText)\r\n};\r\nexports.formatValue = formatValue;\r\n"],"sourceRoot":""}