{"version":3,"sources":["webpack:///./src/mixins/notifyMixin.js","webpack:///./src/views/campaign/CampaignBuySubscription.vue?a26b","webpack:///./node_modules/devextreme-vue/range-selector.js","webpack:///./node_modules/devextreme/esm/ui/popover/ui.popover.js","webpack:///./node_modules/devextreme/esm/ui/popover.js","webpack:///./node_modules/devextreme/esm/ui/tooltip/tooltip.js","webpack:///./node_modules/devextreme/esm/ui/tooltip.js","webpack:///./node_modules/devextreme/esm/ui/slider/slider_tooltip_position_controller.js","webpack:///./node_modules/devextreme/esm/ui/slider/ui.slider_tooltip.js","webpack:///./node_modules/devextreme/esm/ui/slider/ui.slider_handle.js","webpack:///./node_modules/devextreme/esm/ui/slider/ui.slider.js","webpack:///./node_modules/devextreme/esm/ui/slider.js","webpack:///./src/assets/images/payment-methods/bancontact.png","webpack:///./src/store/subscription-management/moduleSubscriptionManagementState.js","webpack:///./src/store/subscription-management/moduleSubscriptionManagementMutations.js","webpack:///./src/store/subscription-management/moduleSubscriptionManagementActions.js","webpack:///./src/store/subscription-management/moduleSubscriptionManagementGetters.js","webpack:///./src/store/subscription-management/moduleSubscriptionManagement.js","webpack:///./node_modules/devextreme/esm/color.js","webpack:///./node_modules/devextreme/esm/events/gesture/swipeable.js","webpack:///./src/store/strategy-management/moduleStrategyManagementState.js","webpack:///./src/store/strategy-management/moduleStrategyManagementMutations.js","webpack:///./src/store/strategy-management/moduleStrategyManagementActions.js","webpack:///./src/store/strategy-management/moduleStrategyManagementGetters.js","webpack:///./src/store/strategy-management/moduleStrategyManagement.js","webpack:///./node_modules/core-js/modules/es6.math.trunc.js","webpack:///./node_modules/devextreme/esm/format_helper.js","webpack:///./node_modules/devextreme-vue/slider.js","webpack:///./node_modules/devextreme/esm/ui/track_bar.js","webpack:///./src/store/campaign-management/moduleCampaignManagementState.js","webpack:///./src/store/campaign-management/moduleCampaignManagementMutations.js","webpack:///./src/store/campaign-management/moduleCampaignManagementActions.js","webpack:///./src/store/campaign-management/moduleCampaignManagementGetters.js","webpack:///./src/store/campaign-management/moduleCampaignManagement.js","webpack:///./node_modules/devextreme/esm/renovation/ui/resizable/utils.js","webpack:///./node_modules/devextreme/esm/ui/popover/popover_position_controller.js","webpack:///./node_modules/jszip/dist/jszip.min.js","webpack:///./node_modules/devextreme/esm/viz/core/utils.js","webpack:///./node_modules/devextreme/esm/viz/translators/range.js","webpack:///./node_modules/devextreme/esm/viz/axes/smart_formatter.js","webpack:///./node_modules/devextreme/esm/viz/axes/axes_constants.js","webpack:///./node_modules/devextreme/esm/viz/components/parse_utils.js","webpack:///./node_modules/devextreme/esm/viz/axes/tick_generator.js","webpack:///./node_modules/devextreme/esm/viz/translators/category_translator.js","webpack:///./node_modules/devextreme/esm/viz/translators/interval_translator.js","webpack:///./node_modules/devextreme/esm/viz/translators/datetime_translator.js","webpack:///./node_modules/devextreme/esm/viz/translators/logarithmic_translator.js","webpack:///./node_modules/devextreme/esm/viz/translators/translator2d.js","webpack:///./node_modules/devextreme/esm/viz/axes/tick.js","webpack:///./node_modules/devextreme/esm/viz/axes/datetime_breaks.js","webpack:///./node_modules/devextreme/esm/viz/axes/xy_axes.js","webpack:///./node_modules/devextreme/esm/viz/axes/axes_utils.js","webpack:///./node_modules/devextreme/esm/viz/axes/polar_axes.js","webpack:///./node_modules/devextreme/esm/viz/axes/constant_line.js","webpack:///./node_modules/devextreme/esm/viz/axes/strip.js","webpack:///./node_modules/devextreme/esm/viz/axes/base_axis.js","webpack:///./node_modules/devextreme/esm/viz/range_selector/common.js","webpack:///./node_modules/devextreme/esm/viz/range_selector/slider_marker.js","webpack:///./node_modules/devextreme/esm/viz/range_selector/slider.js","webpack:///./node_modules/devextreme/esm/viz/range_selector/sliders_controller.js","webpack:///./node_modules/devextreme/esm/viz/range_selector/tracker.js","webpack:///./node_modules/devextreme/esm/viz/range_selector/range_view.js","webpack:///./node_modules/devextreme/esm/viz/components/consts.js","webpack:///./node_modules/devextreme/esm/viz/series/points/label.js","webpack:///./node_modules/devextreme/esm/viz/series/points/symbol_point.js","webpack:///./node_modules/devextreme/esm/viz/series/points/bar_point.js","webpack:///./node_modules/devextreme/esm/viz/series/points/bubble_point.js","webpack:///./node_modules/devextreme/esm/viz/series/points/pie_point.js","webpack:///./node_modules/devextreme/esm/viz/series/points/range_symbol_point.js","webpack:///./node_modules/devextreme/esm/viz/series/points/range_bar_point.js","webpack:///./node_modules/devextreme/esm/viz/series/points/candlestick_point.js","webpack:///./node_modules/devextreme/esm/viz/series/points/stock_point.js","webpack:///./node_modules/devextreme/esm/viz/series/points/polar_point.js","webpack:///./node_modules/devextreme/esm/viz/series/points/base_point.js","webpack:///./node_modules/devextreme/esm/viz/series/helpers/range_data_calculator.js","webpack:///./node_modules/devextreme/esm/viz/series/scatter_series.js","webpack:///./node_modules/devextreme/esm/viz/series/line_series.js","webpack:///./node_modules/devextreme/esm/viz/series/area_series.js","webpack:///./node_modules/devextreme/esm/viz/series/bar_series.js","webpack:///./node_modules/devextreme/esm/viz/series/range_series.js","webpack:///./node_modules/devextreme/esm/viz/series/bubble_series.js","webpack:///./node_modules/devextreme/esm/viz/series/pie_series.js","webpack:///./node_modules/devextreme/esm/viz/series/financial_series.js","webpack:///./node_modules/devextreme/esm/viz/series/stacked_series.js","webpack:///./node_modules/devextreme/esm/viz/series/base_series.js","webpack:///./node_modules/devextreme/esm/viz/core/series_family.js","webpack:///./node_modules/devextreme/esm/viz/components/data_validator.js","webpack:///./node_modules/devextreme/esm/viz/palette.js","webpack:///./node_modules/devextreme/esm/viz/core/themes/generic.light.js","webpack:///./node_modules/devextreme/esm/viz/core/themes/generic.carmine.js","webpack:///./node_modules/devextreme/esm/viz/core/themes/generic.dark.js","webpack:///./node_modules/devextreme/esm/viz/core/themes/generic.contrast.js","webpack:///./node_modules/devextreme/esm/viz/core/themes/generic.darkmoon.js","webpack:///./node_modules/devextreme/esm/viz/core/themes/generic.darkviolet.js","webpack:///./node_modules/devextreme/esm/viz/core/themes/generic.greenmist.js","webpack:///./node_modules/devextreme/esm/viz/core/themes/generic.softblue.js","webpack:///./node_modules/devextreme/esm/viz/core/themes/material.js","webpack:///./node_modules/devextreme/esm/viz/themes.js","webpack:///./node_modules/devextreme/esm/viz/core/base_theme_manager.js","webpack:///./node_modules/devextreme/esm/viz/components/chart_theme_manager.js","webpack:///./node_modules/devextreme/esm/viz/range_selector/series_data_source.js","webpack:///./node_modules/devextreme/esm/viz/core/helpers.js","webpack:///./node_modules/devextreme/esm/viz/core/errors_warnings.js","webpack:///./node_modules/devextreme/esm/viz/core/renderers/animation.js","webpack:///./node_modules/devextreme/esm/viz/core/renderers/renderer.js","webpack:///./node_modules/devextreme/esm/viz/core/layout.js","webpack:///./node_modules/devextreme/esm/viz/core/base_widget.utils.js","webpack:///./node_modules/devextreme/esm/viz/core/base_widget.js","webpack:///./node_modules/devextreme/esm/viz/core/export.js","webpack:///./node_modules/devextreme/esm/viz/core/layout_element.js","webpack:///./node_modules/devextreme/esm/viz/core/title.js","webpack:///./node_modules/devextreme/esm/viz/core/loading_indicator.js","webpack:///./node_modules/devextreme/esm/viz/core/data_source.js","webpack:///./node_modules/devextreme/esm/viz/range_selector/range_selector.js","webpack:///./node_modules/devextreme/esm/viz/range_selector.js","webpack:///./node_modules/devextreme/esm/exporter/file_saver.js","webpack:///./node_modules/devextreme/esm/localization/language_codes.js","webpack:///./node_modules/devextreme/esm/exporter/excel_format_converter.js","webpack:///./node_modules/devextreme/esm/exporter/excel/excel.tag_helper.js","webpack:///./node_modules/devextreme/esm/exporter/excel/excel.cell_alignment_helper.js","webpack:///./node_modules/devextreme/esm/exporter/excel/excel.color_helper.js","webpack:///./node_modules/devextreme/esm/exporter/excel/excel.pattern_fill_helper.js","webpack:///./node_modules/devextreme/esm/exporter/excel/excel.fill_helper.js","webpack:///./node_modules/devextreme/esm/exporter/excel/excel.font_helper.js","webpack:///./node_modules/devextreme/esm/exporter/excel/excel.cell_format_helper.js","webpack:///./node_modules/devextreme/esm/exporter/excel/excel.number_format_helper.js","webpack:///./node_modules/devextreme/esm/exporter/excel/excel.file.js","webpack:///./node_modules/devextreme/esm/exporter/excel_creator.js","webpack:///./node_modules/devextreme/esm/exporter/image_creator.js","webpack:///./node_modules/devextreme/esm/exporter/svg_creator.js","webpack:///./node_modules/devextreme/esm/exporter/pdf_creator.js","webpack:///./node_modules/devextreme/esm/exporter.js","webpack:///./src/assets/images/payment-methods/ideal.png","webpack:///./node_modules/devextreme-vue/text-box.js","webpack:///./src/views/campaign/CampaignBuySubscription.vue?c075","webpack:///src/views/campaign/CampaignBuySubscription.vue","webpack:///./src/views/campaign/CampaignBuySubscription.vue?00f2","webpack:///./src/views/campaign/CampaignBuySubscription.vue","webpack:///./node_modules/devextreme/esm/core/utils/date_serialization.js","webpack:///./node_modules/devextreme/esm/core/utils/date.js","webpack:///./node_modules/devextreme/esm/core/utils/svg.js"],"names":["notifyMixin","methods","notifyError","error","i18tSection","message","response","status","data","responseStatus","errorCode","replace","this","$t","$vs","notify","title","text","iconPack","icon","color","notifySuccess","__importDefault","mod","__esModule","Object","defineProperty","exports","value","DxSliderHandle","DxSize","DxShutter","DxSeriesTemplate","DxSeriesBorder","DxSeries","DxSelectionStyle","DxScaleLabel","DxScale","DxReduction","DxPointSelectionStyle","DxPointImage","DxPointHoverStyle","DxPointBorder","DxPoint","DxMinRange","DxMinorTickInterval","DxMinorTick","DxMaxRange","DxMarkerLabel","DxMarker","DxMargin","DxLoadingIndicator","DxLength","DxLabel","DxIndent","DxImage","DxHoverStyle","DxHeight","DxHatching","DxFormat","DxFont","DxExport","DxDataPrepareSettings","DxConnector","DxCommonSeriesSettingsSelectionStyle","DxCommonSeriesSettingsLabel","DxCommonSeriesSettingsHoverStyle","DxCommonSeriesSettings","DxChart","DxBreakStyle","DxBreak","DxBorder","DxBehavior","DxBackgroundImage","DxBackground","DxArgumentFormat","DxAggregationInterval","DxAggregation","DxRangeSelector","DxWidth","DxValueErrorBar","DxValueAxis","DxValue","DxUrl","DxTitle","DxTickInterval","DxTick","DxSubtitle","DxSliderMarker","range_selector_1","index_1","index_2","createComponent","props","background","behavior","chart","containerBackgroundColor","String","dataSource","Array","dataSourceField","disabled","Boolean","elementAttr","export","indent","loadingIndicator","margin","onDisposing","Function","onDrawn","onExported","onExporting","onFileSaving","onIncidentOccurred","onInitialized","onOptionChanged","onValueChanged","pathModified","redrawOnResize","rtlEnabled","scale","selectedRangeColor","selectedRangeUpdateMode","shutter","size","sliderHandle","sliderMarker","theme","emits","computed","instance","$_instance","beforeCreate","$_WidgetClass","default","$_hasAsyncTemplate","$_expectedChildren","isCollectionItem","optionName","createConfigurationComponent","calculate","enabled","method","$_optionName","days","Number","hours","milliseconds","minutes","months","quarters","seconds","weeks","years","currency","formatter","parser","precision","type","image","visible","backgroundImage","location","url","allowSlidersSwap","animationEnabled","callValueChanged","manualRangeSelectionEnabled","moveSelectedRangeByClick","snapToTicks","dashStyle","width","endValue","startValue","$_isCollectionItem","line","barGroupPadding","barGroupWidth","bottomIndent","commonSeriesSettings","dataPrepareSettings","maxBubbleSize","minBubbleSize","negativesAsZeroes","palette","paletteExtensionMode","series","seriesTemplate","topIndent","valueAxis","aggregation","area","argumentField","axis","bar","barOverlapGroup","barPadding","barWidth","border","bubble","candlestick","closeValueField","cornerRadius","fullstackedarea","fullstackedbar","fullstackedline","fullstackedspline","fullstackedsplinearea","highValueField","hoverMode","hoverStyle","ignoreEmptyPoints","innerColor","label","lowValueField","maxLabelCount","minBarSize","opacity","openValueField","pane","point","rangearea","rangebar","rangeValue1Field","rangeValue2Field","reduction","scatter","selectionMode","selectionStyle","showInLegend","sizeField","spline","splinearea","stack","stackedarea","stackedbar","stackedline","stackedspline","stackedsplinearea","steparea","stepline","stock","tagField","valueErrorBar","valueField","commonSeriesSettingsHoverStyle","commonSeriesSettingsLabel","commonSeriesSettingsSelectionStyle","seriesBorder","hatching","alignment","argumentFormat","backgroundColor","connector","customizeText","font","format","horizontalOffset","position","rotationAngle","showForZeroValues","verticalOffset","checkTypeForAllData","convertToAxisDataType","sortingMethod","fileName","formats","printingEnabled","proxyUrl","svgToCanvas","family","weight","direction","step","rangeMaxPoint","rangeMinPoint","height","left","right","overlappingBehavior","show","bottom","top","separatorHeight","textLeftIndent","textTopIndent","markerLabel","symbol","pointBorder","pointHoverStyle","pointImage","pointSelectionStyle","level","aggregateByCategory","aggregationGroupWidth","aggregationInterval","allowDecimals","breaks","breakStyle","categories","endOnTick","holidays","linearThreshold","logarithmBase","marker","maxRange","minorTick","minorTickCount","minorTickInterval","minRange","placeholderHeight","showCustomBoundaryTicks","singleWorkdays","tick","tickInterval","valueType","workdaysOnly","workWeek","break","scaleLabel","name","tag","customizeSeries","nameField","invalidRangeColor","paddingLeftRight","paddingTopBottom","offset","textOverflow","wordWrap","horizontalAlignment","placeholderSize","subtitle","verticalAlignment","length","inverted","max","min","displayMode","edgeLength","lineWidth","POPOVER_CLASS","POPOVER_WRAPPER_CLASS","POPOVER_ARROW_CLASS","POPOVER_WITHOUT_TITLE_CLASS","POSITION_FLIP_MAP","center","getEventNameByOption","optionValue","getEventName","that","option","getEventDelay","delay","attachEvent","target","shading","hideEvent","isSelector","shouldIgnoreHideEvent","event","concat","log","eventName","NAME","action","_createAction","_clearEventsTimeouts","_timeouts","setTimeout","bind","validatingTargetName","handler","e","currentTarget","EVENT_HANDLER_NAME","on","getDocument","targetElement","detachEvent","off","Popover","inherit","_getDefaultOptions","extend","callBase","closeOnOutsideClick","animation","from","to","hide","showTitle","dragEnabled","resizeEnabled","fullScreen","hideOnParentScroll","arrowPosition","arrowOffset","_fixWrapperPosition","_defaultOptionsRules","device","platform","options","boundaryOffset","h","v","collision","_init","_renderArrow","$element","addClass","$wrapper","_render","apply","arguments","_detachEvents","_attachEvents","_$arrow","prependTo","$overlayContent","_documentDownHandler","_isOutsideClick","closest","_animate","_getContainerPosition","_stopAnimation","_renderTitle","toggleClass","_renderPosition","_renderOverlayPosition","_actions","onPositioned","_resetOverlayPosition","_updateContentSize","contentPosition","resultLocation","setup","positionSide","_getSideByLocation","_togglePositionClass","_toggleFlippedClass","flip","isArrowVisible","_isHorizontalSide","_isVerticalSide","_renderArrowPosition","_setContentHeight","_positionController","_positionSide","css","$content","containerLocation","oversize","fit","newContainerWidth","newOverlayContentHeight","newPopupContentHeight","isFlippedByVertical","isFlippedByHorizontal","_isPopoverInside","positionClass","removeClass","isFlippedHorizontal","isFlippedVertical","side","arrowRect","get","arrowFlip","arrowLocation","sizeProperty","$target","_position","of","targetOffset","contentOffset","arrowSize","contentLocation","contentSize","targetLocation","targetSize","preventDefault","Math","borderWidth","_getContentBorderWidth","finalArrowLocation","fullUpdate","$arrow","_getPositionControllerConfig","_renderWrapperDimensions","_clearEventTimeout","clearTimeout","_clean","_optionChanged","args","_renderGeometry","previousValue","substring","TOOLTIP_CLASS","TOOLTIP_WRAPPER_CLASS","Tooltip","toolbarItems","showCloseButton","titleTemplate","onTitleRendered","bottomTemplate","propagateOutsideClick","_renderContent","_contentId","attr","id","role","_toggleAriaDescription","showing","setAria","SLIDER_TOOLTIP_POSITION_ALIASES","my","at","SLIDER_TOOLTIP_DEFAULT_BOUNDARY_OFFSET","SLIDER_CLASS","positionProp","$sliderHandle","sliderClass","$slider","defaultPositionConfig","boundary","resultPosition","_positionToObject","_getDisplaySide","super","_renderContentInitialPosition","_fitIntoSlider","collisionSide","_$content","_visualPosition","isLeftSide","_updateVisualPositionValue","SLIDER_TOOLTIP_VISIBILITY_CLASS","SliderTooltip","hideTopOverlayHandler","templatesRenderAsynchronously","useResizeObserver","showMode","_attachToMarkup","_toggleShowModeClass","_renderContentText","formattedText","number","isHoverMode","$container","appendTo","detach","SLIDER_HANDLE_CLASS","SliderHandle","hoverStateEnabled","tooltip","_initMarkup","valuenow","_renderTooltip","_sliderTooltip","_createComponent","container","_this$_sliderTooltip","tooltipOptions","getOptionsFromContainer","_setWidgetOption","_this$_sliderTooltip2","_updateTooltipOptions","updateTooltipPosition","_this$_sliderTooltip3","updatePosition","repaint","_this$_sliderTooltip4","SLIDER_WRAPPER_CLASS","SLIDER_HANDLE_SELECTOR","SLIDER_BAR_CLASS","SLIDER_RANGE_CLASS","SLIDER_RANGE_VISIBLE_CLASS","SLIDER_LABEL_CLASS","SLIDER_LABEL_POSITION_CLASS_PREFIX","SLIDER_TOOLTIP_POSITION_CLASS_PREFIX","INVALID_MESSAGE_VISIBLE_CLASS","SLIDER_VALIDATION_NAMESPACE","Slider","_activeStateUnit","_supportedKeys","isRTL","roundedValue","isLeftDirection","_valueStep","currentPosition","remainder","_getValueExponentLength","result","_roundToExponentLength","moveHandleRight","moveHandleLeft","leftArrow","_processKeyboardEvent","rightArrow","pageUp","pageDown","home","end","stopPropagation","_saveValueChangeEvent","activeStateEnabled","showRange","keyStep","useInkRipple","validationMessageOffset","focusStateEnabled","_toggleValidationMessage","devices","real","deviceType","isSimulator","themeName","_renderSubmitElement","_renderInkRipple","_renderLabels","_renderStartHandler","_renderAriaMinAndMax","_attachFocusEvents","namespace","focusInEvent","focusOutEvent","$focusTarget","_focusTarget","_detachFocusEvents","_repaintHandle","_$submitElement","_getSubmitElement","_inkRipple","waveSizeCoefficient","isCentered","wavesNumber","useHoldAnimation","_renderInkWave","element","dxEvent","doRender","waveIndex","config","wave","showWave","hideWave","_visibilityChanged","_renderWrapper","_$wrapper","elastic","immediate","onStart","_swipeStartHandler","onUpdated","_swipeUpdateHandler","onEnd","_swipeEndHandler","itemSizeFunc","_itemWidthFunc","_renderContainer","_$bar","_renderRange","_$range","_renderHandle","_renderRangeVisibility","_$handle","_renderHandleImpl","$handle","valuemin","valuemax","_toggleActiveState","_toggleFocusClass","isFocused","_disposed","labelFormat","_$minLabel","_$maxLabel","remove","pointerDownEventName","pointer","down","clickEventName","click","startAction","_startHandler","_activeHandle","trigger","_itemWidthRatio","_feedbackDeferred","_startOffset","_currentRatio","startOffset","_swipePixelRatio","endOffset","maxLeftOffset","maxRightOffset","_needPreventAnimation","resolve","offsetDirection","_changeValueOnSwipe","_renderValue","_updateHandlePosition","newRatio","getInstance","fitTooltipPosition","isNaN","valueExponentLength","ratio","newChange","newValue","_setValueOnSwipe","stepCount","round","x","val","_setRangeStyles","_callHandlerMethod","_fitTooltip","_invalidate","_refresh","_toggleRTLDirection","_renderDimensions","module","fetchSubscriptions","payload","commit","Promise","reject","jwt","then","catch","fetchSubscription","context","subscriptionId","createSubscription","post","requestPause","requestResume","requestStop","removeRecord","buy","startPayment","isRegistered","namespaced","state","mutations","actions","getters","standardColorNames","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","feldspar","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslateblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","violetred","wheat","white","whitesmoke","yellow","yellowgreen","standardColorTypes","re","process","colorString","parseInt","parseFloat","s","rgb","hsvToRgb","l","hslToRgb","_round","Color","baseColor","toLowerCase","parseColor","colorIsInvalid","r","normalize","g","b","a","hsv","toHsvFromRgb","hsl","toHslFromRgb","str","i","ii","exec","colorComponent","def","toHexFromRgb","toString","slice","H","S","delta","V","index","floor","vMin","vInc","vDec","calculateHue","convertTo01Bounds","maxMinSum","makeColorTint","colorPart","colorTint","modifyColorTint","hueToRgb","p","q","n","abs","isIntegerBetweenMinAndMax","prototype","constructor","highlight","alter","toHex","darken","blend","blendColor","other","getPureColor","join","isValidHex","hex","test","isValidRGB","isValidAlpha","fromHSL","DX_SWIPEABLE","SWIPEABLE_CLASS","ACTION_TO_EVENT_MAP","onCancel","Swipeable","_attachEventHandlers","_detachEventHandlers","_createEventData","actionName","_createActionByOption","_eventData","_useTemplates","fetchStrategies","idCampaign","fetchStrategiesSmall","fetchStrategy","idStrategy","saveStrategy","syncStrategies","$export","trunc","it","ceil","_format","formatIsValid","valueIsValid","getTimeFormat","showSecond","_normalizeFormat","isArray","date","map","formatPart","getDateFormatByDifferences","dateDifferences","intervalFormat","resultFormat","needSpecialSecondFormatter","millisecond","year","month","day","push","getSeconds","getMilliseconds","hour","minute","second","unshift","quarter","getMonthNames","getMonth","getDateFormatByTicks","ticks","maxDiff","currentDiff","getDatesDifferences","count","getHours","getMinutes","getDateFormatByTickInterval","dateUnitInterval","correctDateDifferences","differences","minDate","maxDate","getDate","getFullYear","getDateUnitInterval","week","DxTooltip","DxSlider","slider_1","accessKey","hint","isValid","onContentReady","readOnly","tabIndex","validationError","validationErrors","validationMessageMode","validationStatus","model","prop","TRACKBAR_CLASS","TRACKBAR_CONTAINER_CLASS","TRACKBAR_RANGE_CLASS","TRACKBAR_WRAPPER_CLASS","TrackBar","_rangeStylesConfig","stop","animate","duration","_dispose","unmappedCampaigns","SET_UNMAPPED_CAMPAIGNS","campaigns","fetchCampaigns","idOrganisation","fetchCampaignsByAdvertiser","idAdvertiser","fetchCampaign","fetchVoucher","fetchCampaignCategories","saveCampaign","updatedData","campaign","assign","fetchImages","reorderImages","addImage","deleteImage","fetchUnmappedCampaigns","items","addCampaignsToAdvertiser","fetchCampaignBanners","borderWidthStyles","_excluded","WEIGHT_OF_SIDES","POPOVER_POSITION_ALIASES","POPOVER_DEFAULT_BOUNDARY_OFFSET","_ref","_props","hOffset","vOffset","isVerticalSide","isHorizontalSide","isPopoverInside","sign","arrowSizeCorrection","normalizeAlign","weightSign","horizontalWeight","verticalWeight","targetProp","t","o","u","require","Error","code","call","1","c","d","encode","f","getTypeOf","charCodeAt","charAt","decode","substr","uint8array","Uint8Array","indexOf","2","compressedSize","uncompressedSize","crc32","compression","compressedContent","getContentWorker","pipe","uncompressWorker","streamInfo","data_length","getCompressedWorker","withStreamInfo","createWorkerFrom","compressWorker","3","STORE","magic","DEFLATE","4","5","base64","binary","dir","createFolders","compressionOptions","comment","unixPermissions","dosPermissions","6","lie","7","Uint16Array","Uint32Array","_pako","_pakoAction","_pakoOptions","meta","inherits","processChunk","_createPako","transformTo","flush","cleanUp","raw","onData","pako","8","A","fromCharCode","file","O","utf8encode","I","m","_","y","w","k","z","C","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCFullYear","getUTCMonth","getUTCDate","B","E","fileRecord","R","LOCAL_FILE_HEADER","dirRecord","CENTRAL_FILE_HEADER","bytesWritten","zipComment","zipPlatform","encodeFileName","streamFiles","accumulate","contentBuffer","dirRecords","currentSourceOffset","entriesCount","currentFile","_sources","percent","openedSource","closedSource","DATA_DESCRIPTOR","shift","CENTRAL_DIRECTORY_END","prepareNextSource","previous","isPaused","pause","resume","registerPrevious","generatedError","lock","9","generateWorker","forEach","_compressWorker","10","files","create","root","clone","loadAsync","support","defaults","version","external","11","decompressed","checkCRC32","optimizedBinaryString","decodeFileName","utf8decode","isNode","isStream","prepareContent","load","all","fileNameStr","fileCommentStr","12","_upstreamEnded","_bindStream","_stream","13","Readable","_helper","emit","_read","14","Buffer","newBufferFrom","allocBuffer","alloc","fill","isBuffer","15","Date","toUpperCase","lastIndexOf","filter","folder","generate","generateInternalStream","mimeType","checkSupport","generateAsync","generateNodeStream","toNodejsStream","16","stream","17","byteAt","zero","lastIndexOfSignature","readAndCheckSignature","readData","checkOffset","18","checkIndex","setIndex","skip","readInt","readString","readDate","UTC","19","20","21","subarray","22","23","ZIP64_CENTRAL_DIRECTORY_LOCATOR","ZIP64_CENTRAL_DIRECTORY_END","24","destType","25","26","propName","27","dataIsReady","_tickScheduled","_tickAndRepeat","isFinished","_tick","28","extraStreamInfo","isLocked","_listeners","mergeStreamInfo","hasOwnProperty","29","nodestream","_internalType","_outputType","_mimeType","newBlob","set","_worker","objectMode","30","array","string","arraybuffer","ArrayBuffer","nodebuffer","blob","Blob","self","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","append","getBlob","31","leftOver","applyFromCharCode","Utf8DecodeWorker","Utf8EncodeWorker","32","stringifyByChunk","stringifyByChar","applyCanBeUsed","buffer","byteLength","MAX_VALUE_16BITS","MAX_VALUE_32BITS","pretty","FileReader","onload","onerror","readAsArrayBuffer","33","loadOptions","checkSignature","reader","isSignature","readBlockEndOfCentral","diskNumber","diskWithCentralDirStart","centralDirRecordsOnThisDisk","centralDirRecords","centralDirSize","centralDirOffset","zipCommentLength","readBlockZip64EndOfCentral","zip64EndOfCentralSize","zip64ExtensibleData","readBlockZip64EndOfCentralLocator","diskWithZip64CentralDirStart","relativeOffsetEndOfZip64CentralDir","disksCount","readLocalFiles","localHeaderOffset","readLocalPart","handleUTF8","processAttributes","readCentralDir","zip64","readCentralPart","readEndOfCentral","prepareReader","34","isEncrypted","bitFlag","useUTF8","fileNameLength","compressionMethod","versionMadeBy","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","readExtraFields","parseZIP64ExtraField","fileComment","extraFields","findExtraFieldUnicodePath","findExtraFieldUnicodeComment","35","_data","_dataBinary","internalStream","_decompressWorker","async","nodeStream","36","MutationObserver","WebKitMutationObserver","document","createTextNode","observe","characterData","setImmediate","MessageChannel","createElement","onreadystatechange","parentNode","removeChild","documentElement","appendChild","port1","onmessage","port2","postMessage","global","window","37","TypeError","queue","outcome","promise","onFulfilled","callFulfilled","otherCallFulfilled","onRejected","callRejected","otherCallRejected","finally","race","38","39","chunkSize","windowBits","memLevel","strategy","gzip","err","msg","ended","chunks","strm","avail_out","deflateInit2","header","deflateSetHeader","dictionary","string2buf","deflateSetDictionary","_dict_set","input","next_in","avail_in","output","Buf8","next_out","deflate","buf2binstring","shrinkBuf","deflateEnd","flattenChunks","Deflate","deflateRaw","40","inflateInit2","Z_OK","inflateGetHeader","Z_FINISH","Z_NO_FLUSH","binstring2buf","inflate","Z_NEED_DICT","inflateSetDictionary","Z_BUF_ERROR","Z_STREAM_END","Z_SYNC_FLUSH","utf8border","buf2string","arraySet","inflateEnd","Inflate","inflateRaw","ungzip","41","Int32Array","setTyped","Buf16","Buf32","42","43","44","Z_PARTIAL_FLUSH","Z_FULL_FLUSH","Z_BLOCK","Z_TREES","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","45","46","T","D","F","pending","pending_buf","pending_out","total_out","N","_tr_flush_block","block_start","strstart","U","P","L","max_chain_length","prev_length","nice_match","w_size","w_mask","prev","good_match","lookahead","match_start","j","window_size","hash_size","head","wrap","adler","total_in","insert","ins_h","hash_shift","hash_mask","Z","match_length","_tr_tally","max_lazy_match","last_lit","W","prev_match","match_available","M","good_length","max_lazy","nice_length","max_chain","func","pending_buf_size","gzhead","gzindex","last_flush","w_bits","hash_bits","dyn_ltree","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","heap","heap_len","heap_max","depth","l_buf","lit_bufsize","d_buf","opt_len","static_len","matches","bi_buf","bi_valid","G","data_type","_tr_init","K","Y","deflateInit","deflateReset","deflateResetKeep","hcrc","extra","time","os","_tr_align","_tr_stored_block","deflateInfo","47","xflags","extra_len","done","48","dmax","wsize","whave","wnext","hold","bits","lencode","distcode","lenbits","distbits","mode","sane","49","last","havedict","flags","check","total","wbits","ncode","nlen","ndist","have","next","lens","work","lendyn","distdyn","back","was","inflateReset","inflateReset2","inflateResetKeep","inflateInit","inflateInfo","50","51","0","52","static_tree","extra_bits","extra_base","elems","max_length","has_stree","dyn_tree","max_code","stat_desc","X","J","53","54","splice","PI","LN10","pow","sqrt","atan2","_max","_cos","cos","_sin","sin","dateToMilliseconds","MAX_PIXEL_COUNT","PI_DIV_180","_Number","_NaN","NaN","getLog","base","getAdjustedLog10","raiseTo","power","normalizeAngle","angle","degreesToRadians","getCosAndSin","angleInRadians","getDistance","x1","y1","x2","y2","diffX","diffY","getPower","toExponential","split","callback","len","normalizeEnum","normalizeBBoxField","normalizeBBox","bBox","xl","yt","xr","yb","isEmpty","rotateBBox","toFixed","w2","h2","centerX","centerY","w2_","h2_","centerX_","centerY_","parseScalar","defaultValue","enumParser","values","stored","_value","patchFontOptions","fontOptions","key","convertPolarToXY","centerCoords","startAngle","radius","normalizedRadius","cosSin","convertXYToPolar","phi","processSeriesTemplate","generatedSeries","seriesOrder","nameFieldValue","orderedName","group","getCategoriesInfo","swapBuf","categoriesValue","category","valueOf","indexStartValue","indexEndValue","visibleCategories","lastIdx","start","unique","item","getVerticallyShiftedAngularCoords","dy","isPositive","horizontalOffset1","verticalOffset1","verticalOffset2","horizontalOffset2","dx","mergeMarginOptions","opt1","opt2","checkInterval","percentStick","sizePointNormalState","getVizRangeObject","convertVisualRangeObject","visualRange","convertToVisualRange","getAddFunction","range","correctZeroLevel","dataType","rangeValue","marginValue","getTime","axisType","getLogExt","raiseToExt","adjustVisualRange","wholeRange","dataRange","minDefined","maxDefined","nonDiscrete","add","rangeLength","isFinite","categoriesInfo","_categoriesInfo","allowNegatives","transformValue","rangesAreEqual","rangeFromOptions","every","_isDefined","_isDate","_isFunction","minSelector","maxSelector","minVisibleSelector","maxVisibleSelector","baseSelector","axisTypeSelector","otherLessThan","thisValue","otherValue","otherGreaterThan","compareAndReplace","setValue","compare","otherValueDefined","Range","_Range","addRange","otherRange","otherCategories","isDiscrete","compareAndReplaceByField","field","controlValuesByVisibleBounds","visibleValueField","checkField","correctValueZeroLevel","setZeroLevel","sort","sortValues","filteredSeriesCategories","notAFunction","EXPONENTIAL","dateUnitIntervals","prevDate","curDate","nextDate","tickFormat","prevDifferences","nextDifferences","dateUnitsLength","tickFormatIndex","setDateUnitInterval","resetDateUnitInterval","isDateTimeStart","unitNumbers","unitIndex","intervalIndex","getNoZeroIndex","getTransitionTickIndex","curDiff","minDiff","nearestTickIndex","splitDecimalNumber","createFormat","smartFormatter","tickIntervalIndex","tickIndex","actualIndex","typeFormat","separatedTickInterval","datesDifferences","log10Tick","prevDateIndex","nextDateIndex","stringTick","indexOfFormat","indexOfTick","labelOptions","isLogarithmic","showTransition","getHighDiffFormat","diff","getHighAndSelfDiffFormat","interval","formatDateRange","diffFormatType","diffFormat","rangeFormat","_rangeFormat","highValue","processDateInterval","dateUnits","keys","sum","reduce","dateUnit","formatRange","formatOptions","logarithmic","discrete","numeric","horizontal","vertical","convertTicksToValues","validateOverlappingMode","getTicksCountInRange","valueKey","coords","areLabelsOverlap","bBox1","bBox2","spacing","horizontalInverted","verticalInverted","width1","width2","hasHorizontalOverlapping","hasVerticalOverlapping","parsedVal","datetime","numVal","deserializeDate","correctValueType","getParser","convertDateUnitToMilliseconds","mathAbs","mathFloor","mathCeil","mathPow","NUMBER_MULTIPLIERS","LOGARITHMIC_MULTIPLIERS","DATETIME_MULTIPLIERS","DATETIME_MULTIPLIERS_WITH_BIG_WEEKEND","DATETIME_MINOR_MULTIPLIERS","MINOR_DELIMITERS","VISIBILITY_DELIMITER","MINUTE","dummyGenerator","screenDelta","forceTickInterval","axisDivisionFactor","discreteGenerator","getLogValue","mathRaiseTo","logAbsValue","correctValueByInterval","getValue","correctMinValueByEndOnTick","floorFunc","ceilFunc","resolveEndOnTick","businessViewInfo","forceEndOnTick","floorTickValue","curValue","tickValue","prevTickDataDiff","intervalCount","businessDelta","businessRatio","potentialTickScreenDiff","delimiterFactor","delimiterMultiplier","isSpacedMargin","screenDelimiter","resolveEndOnTickLog","resolveEndOnTickDate","getBusinessDelta","getBusinessDeltaLog","getIntervalByFactor","addTickCount","getMultiplierFactor","factorDelta","calculateTickInterval","multipliers","minTickInterval","onlyIntegers","factor","calculateMinorTickInterval","cur","getCalculateTickIntervalLog","skipCalculationLimits","__","adjustInterval","getAdjustIntervalLog","getDataTimeMultipliers","gapSize","numbersReducer","yearsReducer","calculateTickIntervalDateTime","adjustIntervalDateTime","calculateMinorTickIntervalDateTime","getTickIntervalByCustomTicks","postProcess","isNegative","addInterval","addIntervalLog","raise","addIntervalDate","addIntervalWithBreaks","correctValue","breakSize","calculateTicks","correctMinValue","gaps","generateExtraTick","correctTickValue","correctTickValueOnGapSize","calculateMinorTicks","updateTickInterval","majorTicks","maxCount","lastMajor","firstMajor","tickBalance","middleTicks","prevTick","minors","maxValue","filterTicks","tmpTicks","generator","getMajorTickIntervalByCustomTicks","getMinorTickIntervalByCustomTicks","convertTickInterval","processScaleBreaks","correctUserTickInterval","limit","incidentOccurred","customTicks","majors","minorTicks","numberMultipliers","skipTickGeneration","calculateMinors","minorBusinessDelta","minorScreenDelta","minorAxisDivisionFactor","getBaseTick","breakValue","insideTick","getScaleBreaksProcessor","addCorrection","correction","breakTicks","cumulativeWidth","numericGenerator","calculateTickIntervalByCustomTicks","correctValueByIntervalLog","getRound","logarithmicGenerator","logBase","absLog","absRaise","ceilNumber","dateGenerator","floorNumber","intervalObject","getDateIntervalByString","divider","correctDateWithUnitBeginning","firstDayOfWeek","floorAtStartDate","getTimezoneOffset","setFullYear","setMonth","setHours","setMinutes","setSeconds","convertMillisecondsToDateUnits","tickGenerator","rangeIsEmpty","translate","directionOffset","canvasOptions","_canvasOptions","categoryIndex","_categoriesToPoints","specialValue","translateSpecialCase","startPointIndex","stickInterval","_options","stick","stickDelta","_calculateProjection","getInterval","getEventScale","zoomEvent","deltaScale","_categories","zoom","endCategoryIndex","invert","translateCategories","visibleCount","startCategoryIndex","categoriesLength","canvasLength","newVisibleCategories","newInterval","_getDiscreteInterval","startPoint","getMinScale","getScale","visibleArea","getCanvasVisibleArea","stickOffset","minPoint","maxPoint","getCorrectValue","_businessRange","_add","toValue","isValueProlonged","minZoom","minVisibleIndex","minVisible","maxVisibleIndex","maxVisible","startIndex","endIndex","_intervalize","bp","ratioOfCanvasRange","rangeMax","rangeMin","_parse","fromValue","co","v1","v2","res","_to","p2","rMin","rangeMinVisible","rMax","rangeMaxVisible","_conversionValue","origInterval","_calculateUnProjection","parse","addDateInterval","convert","getMinBarSize","minValue","checkMinBarSize","initialValue","minShownValue","stackValue","updateValue","prevValue","baseMethod","_abs","CANVAS_PROP","dummyTranslator","coord","conversionValue","endPoint","validateCanvas","canvas","makeCategoriesToPoints","categoriesToPoints","validateBusinessRange","businessRange","validate","valueSelector","baseValueSelector","prepareBreaks","br","transformFrom","transform","trFrom","trTo","getCanvasBounds","getCheckingMethodsAboutBreaks","isStartSide","pos","isEndSide","isInBreak","isBetweenBreaks","prevBreak","getLength","lastBreak","getBreaksSize","_Translator2d","update","reinit","script","_prepareCanvasOptions","addSpiderCategory","_oldMethods","methodName","sc","_checkingMethodsAboutBreaks","isInverted","_translateBreaks","_calculateSpecialValues","_breaks","breaksSize","_checkValueAboutBreaks","inBreak","isHorizontal","correctedCategoriesCount","_canvas","startPadding","endPadding","rangeDoubleError","updateCanvas","updateBusinessRange","_userBreaks","userBreaks","getBusinessRange","canvas_position_default","canvas_position_center_middle","canvas_position_left","canvas_position_top","canvas_position_center","canvas_position_middle","canvas_position_right","canvas_position_bottom","canvas_position_start","canvas_position_end","distance","_interval","zoomZeroLengthRange","newStart","newEnd","_correctValueAboutBreaks","isDateTime","newMin","newMax","getDateTimeMinScale","val1","val2","shiftZeroValue","commonBreakSize","getRange","getScreenRange","coeff","getPathStyle","stroke","createTick","renderer","tickOptions","gridOptions","skippedCategory","skipLabels","tickOffset","_tickOffset","lineGroup","_axisLineGroup","elementsGroup","_axisElementsGroup","tickStyle","gridStyle","emptyStrRegExp","axisOptions","getOptions","labelStyle","_textOptions","getLabelFontStyle","fontStyle","_textFontStyles","customizeColor","createLabelHint","labelHint","formatHint","getContentContainer","setTitle","initCoords","_getTranslatedValue","labelCoords","_lastStoredCoordinates","_storedCoords","_storedLabelsCoords","templateContainer","_getTemplateCoords","areCoordsOutsideAxis","mark","sharp","getSharpDirectionByCoords","updateTickPosition","_createPathElement","lineElement","settings","storedSettings","isGridLine","points","partitionDuration","_rotateTick","_updateLine","_getTickMarkPoints","drawLabel","template","isRendered","updateLabelPosition","labelIsVisible","getTranslator","templateOption","formatLabel","rotate","_templateDef","render","valueText","labelFontStyle","onRendered","containerForData","removeLabel","startSettings","endSettings","animationSettings","_fadeOutLabel","grid","_axisGridGroup","_renderer","toBackground","_getLabelAdjustedCoord","_constantLabelOffset","labelOffset","lCoords","_lCoords","_fadeInLabel","textsAlignment","labelAlignment","drawGrid","drawLine","updateGridPosition","_getGridPoints","contentContainer","getWeekendDays","workdays","some","workDay","getNextDayIndex","dayIndex","dayBetweenWeekend","weekend","getDaysDistance","separateBreak","scaleBreak","dayEnd","setDate","getWeekEndDayIndices","workDays","indices","pop","generateDateBreaksForWeekend","weekendDayIndices","weekends","obj","currentWeekEnd","currentDate","trimTime","getDay","excludeWorkDaysFromWeekEndBreaks","exactWorkDays","processWorkDay","workday","separatedBreak","generateBreaksForHolidays","dayInWeekend","adjustedMin","adjustedMax","holiday","holidayStart","holidayEnd","calculateGaps","generateDateBreaks","getNextDateUnit","_math","TOP","BOTTOM","LEFT","RIGHT","CENTER","SCALE_BREAK_OFFSET","RANGE_RATIO","WAVED_LINE_CENTER","WAVED_LINE_TOP","WAVED_LINE_BOTTOM","WAVED_LINE_LENGTH","TICKS_CORRECTIONS","prepareDatesDifferences","sortingBreaks","getMarkerDates","markerInterval","dates","origMin","getSequenceByInterval","getStripHorizontalAlignmentPosition","getStripVerticalAlignmentPosition","getMarkerInterval","getMarkerFormat","getMaxSide","act","boxes","box","getDistanceByAngle","atan","getMaxConstantLinePadding","constantLines","padding","getConstantLineLabelMarginForVerticalAlignment","labelHeight","getLeftMargin","getRightMargin","generateRangesOnPoints","edgePoints","curRange","ranges","generateAutoBreaks","_ref2","maxAutoBreakCount","visibleRange","getPointsInViewPort","sortedAllPoints","epsilon","_maxAutoBreakCount","linear","_getStep","minSpacing","_isHorizontal","maxLabelLength","_getMaxLabelHeight","_majorTicks","_validateOverlappingMode","_validateDisplayMode","getMarkerTrackers","_markerTrackers","_getSharpParam","opposite","_createAxisElement","path","_updateAxisElementPosition","axisCoord","_axisPosition","_getCanvasStartEnd","_axisElement","_getTranslatedCoord","_translator","customPositionIsAvailable","_customBoundaryPosition","getCustomBoundaryPosition","customPositionIsBoundary","getPredefinedPosition","getResolvedBoundaryPosition","getCustomPosition","tickStartCoord","tickOrientation","labelPosition","getTickStartPositionShift","hasNonBoundaryPosition","_getTitleCoords","align","fromStartToEnd","canvasStart","canvasEnd","_drawTitleText","titleOptions","attrs","class","cssClass","_checkTitleOverflow","_updateTitleCoords","_title","_drawTitle","_axisTitleGroup","_measureTitle","originalSize","getBBox","_drawDateMarker","pathElement","markerOptions","textIndent","withoutStick","cropped","getEnd","labelBBox","hideLabel","dispose","hidden","_drawDateMarkers","dateMarker","translator","viewport","_getViewportRange","minBound","dateMarkers","draw","markerDate","markersAreaTop","_getLabelFormatOptions","argumentType","_tickInterval","markerDates","markers","_adjustDateMarkers","prevDateMarker","_dateMarkers","_checkMarkersPosition","translateX","translateY","_initializeMarkersTrackers","nextMarker","markerTracker","formatString","markerLabelOptions","_markerLabelOptions","_adjustConstantLineLabels","axisPosition","getCanvas","canvasLeft","canvasRight","canvasTop","canvasBottom","verticalCenter","horizontalCenter","maxLabel","linesOptions","labelVerticalAlignment","labelHorizontalAlignment","labelIsInside","_drawConstantLinesForEstimating","_drawConstantLineLabelText","_estimateLabelHeight","drawingType","staggeringSpacing","sinCos","indentFromAxis","estimateMargins","ticksData","_createTicksAndLabelFormat","constantLineOptions","_outsideConstantLines","rootElement","labelValue","labelElement","titleElement","constantLinesLabelsElement","labelBox","titleBox","constantLinesBox","titleHeight","constantLinesHeight","margins","_checkAlignmentConstantLineLabels","_getConstantLineLabelsCoords","lineLabelOptions","_orthogonalPositions","_getAdjustedStripLabelCoords","strip","stripOptions","labelWidth","_adjustTitle","boxTitle","loCoord","hiCoord","params","_getScreenDelta","setMaxSize","_wrapped","moreThanOriginalSize","restoreText","coordsIn","_boundaryTicksVisibility","seriesData","_seriesData","_series","isVisible","seriesRange","getViewport","showZero","_getScaleBreaks","isArgumentAxis","_getStick","valueMarginsEnabled","_getStripLabelCoords","stripLabelOptions","orthogonalPositions","pos1","pos2","getVisibleArea","_getSkippedCategory","_filterBreaks","currentBreak","newBreak","lastResult","_lastResult$cumulativ","_lastResult$cumulativ2","autoBreaksEnabled","_drawBreak","translatedEnd","positionFrom","positionTo","breakStart","borderColor","isWaved","spaceAttr","getPoints","rotateLine","drawer","getLineDrawer","_createBreakClipRect","clipRect","clipWidth","_breaksElements","_createBreaksGroup","clipFrom","clipTo","_axisCssPrefix","_scaleBreaksGroup","_disposeBreaksGroup","drawScaleBreaks","customCanvas","additionGroup","additionBreakFrom","additionBreakTo","breakOptions","containerColor","_axisShift","mainGroup","breakCoord","_getSpiderCategoryOption","axesSpacing","getMultipleAxesSpacing","constantLinesGroups","_axisConstantLineGroups","shiftGroup","_axisGroup","above","under","orthogonalAxis","getOrthogonalAxis","resolvedPosition","getResolvedPositionOption","orthogonalTranslator","orthogonalAxisType","validPosition","validateUnit","positionIsBoundary","customPosition","_options$customPositi","_this$_orthogonalPosi","oppositeAxes","overlappingObj","axes","_detectElementsOverlapping","_shiftThroughOrthogonalAxisOverlappedTick","oppositeTick","oppositeLabel","_shiftThroughAxisOverlappedTick","orthogonalAxisPosition","getAxisPosition","orthogonalAxisLabelOptions","orthogonalAxisLabelPosition","orthogonalAxisLabelIndent","translateCoordName","defaultOrthogonalAxisLabelPosition","labelCoord","labelSize","outsidePart","insidePart","_tick$mark","tickMarkBBox","labelIndent","defaultLabelPosition","markerSize","element1","element2","rotatePoints","elementType","topPoint","centerPoint","bottomPoint","lineCoords","calculateCanvasMargins","bBoxes","cLeft","cTop","cRight","cBottom","measureLabels","xyAxesLinear","HALF_PI_ANGLE","getPolarQuarter","circularAxes","_calculateValueMargins","_calculateRangeInterval","_getTranslatorOptions","getCenter","_center","getRadius","_radius","getAngles","endAngle","rad","_updateCenter","_processCanvas","_updateRadius","circle","cx","cy","firstPointOnStartAngle","originValue","period","_viewport","tickOuterLength","labelBoxes","_adjustLabelsCoord","_checkBoundedLabelsOverlapping","_setVisualRange","applyVisualRangeSetter","_getStripGraphicAttributes","fromAngle","toAngle","innerRadius","outerRadius","_createStrip","arc","halfRad","_getConstantLineGraphicAttributes","_createConstantLine","_adjustDivisionFactor","angles","radiusWithTicks","inside","outside","_offset","_maxWidth","checkCanvas","labelY","labelAngle","halfWidth","halfHeight","shiftX","shiftY","boxShiftX","boxShiftY","originalLeft","originalRight","originalTop","originalBottom","_getGridLineDrawer","getTranslatedAngle","maxLabelBox","angle1","angle2","labelOpt","lastVisibleLabelIndex","hideFirstOrLast","circular","circularSpider","getSpiderTicks","getFullTicks","_spiderTicks","firstTick","lastTick","nextTick","spiderTicks","_setTickOffset","_reinitTranslator","centerCoord","xy","reverse","fromPoint","toPoint","labelPos","linearSpider","setSpiderTicks","_getGridPointsByRadius","innerPoints","outerPoints","createConstantLine","parsedValue","lastStoredCoordinates","storedCoord","valueIsParsed","getParsedValue","_getConstantLinePos","rootGroup","displayBehindSeries","_drawConstantLineLabels","_rotateConstantLine","createStrip","rect","_getStripPos","_drawLabel","_axisStripLabelGroup","stripPos","_getCoord","outOfCanvas","_axisStripGroup","_isArray","DEFAULT_AXIS_LABEL_SPACING","MAX_GRID_BORDER_ADHENSION","KEEP","SHIFT","RESET","ROTATE","DEFAULT_AXIS_DIVISION_FACTOR","DEFAULT_MINOR_AXIS_DIVISION_FACTOR","SCROLL_THRESHOLD","MIN_BAR_MARGIN","MAX_MARGIN_VALUE","dateIntervals","getTickGenerator","adjustDivisionFactor","_options$workWeek","minorGrid","createMajorTick","createMinorTick","createBoundaryTick","isFirst","callAction","elements","actionArgument1","actionArgument2","initTickCoords","drawTickMarks","drawGrids","updateTicksPosition","updateGridsPosition","cleanUpInvalidTicks","removeInvalidTick","validateAxisOptions","_labelOptions$minSpac","defaultPosition","secondaryPosition","userAlignment","getOptimalAngle","asin","updateLabels","getZoomBoundValue","dataValue","configureGenerator","viewPort","tickGeneratorOptions","getConstantLineSharpDirection","axisCanvas","Axis","renderSettings","_incidentOccurred","_eventTrigger","eventTrigger","_stripsGroup","stripsGroup","_stripLabelAxesGroup","stripLabelAxesGroup","_labelsAxesGroup","labelsAxesGroup","_constantLinesGroup","constantLinesGroup","scaleBreaksGroup","_axesContainerGroup","axesContainerGroup","_gridContainerGroup","gridGroup","widgetClass","axisClass","_setType","_createAxisGroups","_createTranslator","_prevDataInfo","_firstDrawing","_initRange","_getTemplate","getTemplate","getAxisSharpDirection","sharpDirection","svgElement","resolveOverlappingForCustomPositioning","customPositionIsBoundaryOrthogonalAxis","maxCoord","tickPositionField","borderOptions","firstBorderLinePosition","lastBorderLinePosition","minDelta","maxDelta","_text","swap","isContinuous","cat","parsedStartValue","parsedEndValue","stripPosition","_adjustStripLabels","_strips","maxWidth","getContainerAttrs","updateMultilineTextAlignment","_adjustLabels","positionsAreConsistent","maxSize","labelRotationAngle","additionalOffset","templateBox","textAlign","isFlatLabel","labelX","_createAxisConstantLineGroups","classSelector","constantLinesClass","insideGroup","outsideGroup1","outsideGroup2","outside1","outside2","clear","enableLinks","linkOn","linkAppend","_clearAxisGroups","_getLabelFormatObject","formatObject","customizeHint","discreteAxisDivisionMode","resetApplyingAnimation","isFirstDrawing","_resetApplyingAnimation","getMargins","crosshairMargin","isDefinedCustomPositionOption","boundaryPosition","edgeMarginCorrection","constantLineAboveSeries","constantLineUnderSeries","moveByOffset","unit","idError","parameters","axisTypeMethods","_axisBreaksGroup","_minorTicks","_templatesRendered","setPane","setTypes","typeSelector","_updateTranslator","resetTypes","_initTypes","updateOptions","priority","_hasLabelFormat","logarithmBaseError","_createConstantLines","strips","calculateInterval","canvasRedesign","positions","_initAxisPositions","hideTitle","getTitle","hideOuterElements","adjustRange","_addConstantLinesToRange","_wholeRange$startValu","_wholeRange$endValue","adjustedVisualRange","_resolveLogarithmicOptionsForRange","disabledNegatives","tmp","newRange","oppositeValue","visualRangeUpdateMode","prevDataInfo","containsConstantLine","newCategories","minVisiblePoint","maxVisiblePoint","oppositeVisualRangeUpdateMode","axisReinitialized","_lastVisualRangeUpdateMode","_getVisualRangeUpdateMode","getVisualRangeLength","currentBusinessRange","useMerge","argCategories","_that$_seriesData$min","_that$_seriesData$max","_handleBusinessRangeChanged","dataIsEmpty","rangeWithConstantLines","synchronizedValue","sortCategories","getCategoriesSorter","minValueField","maxValueField","_insideConstantLines","cl","extendAxis","setGroupSeries","getLabelsPosition","labelShift","getFormattedValue","_getBoundaryTicks","customBounds","customBoundTicks","addMinMax","boundaryTicks","setPercentLabelFormat","resetAutoLabelFormat","multipleAxesSpacing","getTicksValues","majorTicksValues","minorTicksValues","estimateTickInterval","_getTicks","setTicks","_isSynchronized","customMinorTicks","forceUserTickInterval","_initialBreaks","useAllAggregatedPoints","_visualRange$startVal","_visualRange$endValue","_that$_seriesData","marginOptions","_marginOptions","minInterval","generateTicks","maxMinDistance","filteredBreaks","_aggregationInterval","createTicks","_estimatedTickInterval","adjustViewport","_boundaryTicks","minor","_minorTickInterval","oldMajorTicks","majorTicksByValues","sameType","setSkippedCategory","oldMinorTicks","_ticksToRemove","_t$label","removeTitle","setMarginOptions","_this$_marginOptions","minArgs","addToArgs","_calculateWorkWeekInterval","businessInterval","weekendsCount","intervalInPx","_resetMargins","rangeInterval","minPercentPadding","maxPercentPadding","getMarginOptions","marginSize","minValueMargin","maxValueMargin","minPadding","maxPadding","stubData","pxInterval","_getConvertIntervalCoefficient","maxPaddingValue","_minValue","_maxValue","_minValue2","_maxValue2","canvasStartEnd","commonMargin","screenDeltaWithMargins","skipViewportExtending","firstTickPosition","lastTickPosition","invertMultiplier","minTickPadding","maxTickPadding","commonPadding","correctedMin","correctedMax","getCorrectedValuesToZero","minExpectedPadding","maxExpectedPadding","applyMargins","_drawAxis","drawGridLine","_applyWordWrap","_setLabelsPlacement","getTemplateDeferred","_drawn","convertedTickInterval","textWidth","textHeight","overlappingMode","wordWrapMode","overflowMode","usefulSpace","correctByWidth","correctByHeight","updateTitle","_resetStartCoordinates","prepareAnimation","_updateLabelsPosition","applyClipRects","elementsClipID","canvasClipID","_validateVisualRange","_customVisualRange","_validateOptions","isSilent","handleZooming","allowPartialUpdate","_resetVisualRangeOption","actionType","cancel","previousRange","zoomFactor","rangeStart","rangeEnd","secondPriorityRange","getZoomBounds","_startValue","_endValue","adjustedRange","_getAdjustedBusinessRange","zoomResults","isPrevented","_visualRange","preventEvents","domEvent","zoomStartEvent","getZoomStartEventArg","skipEventRising","_applyZooming","_storedZoomEndParams","startRange","prevent","previousBusinessRange","typeIsNotChanged","getVisualRangeCenter","zoomEndEvent","_getZoomEndEventArg","checkZoomingLowerLimitOvercome","stopInteraction","_restorePreviousVisualRange","minVisualRangeLength","correctedRange","isOvercoming","beforeVisualRangeLength","afterVisualRangeLength","getRangeByMinZoomValue","fullRange","isMax","extremeDataValue","extremePoint","visualRangePoint","withIndents","widthAxis","viewportRange","maxText","prevLabel","notRecastStep","ignoreOverlapping","_applyLabelMode","_applyLabelOverlapping","_checkShiftedLabels","_options$workWeek2","_options$breakStyle$w","_options$breakStyle","semiDiscreteInterval","breaksLength","visualRangeSetter","categoriesSortingMethod","HEIGHT_COMPACT_MODE","POINTER_SIZE","EMPTY_SLIDER_MARKER_TEXT","utils","trackerSettings","consts","emptySliderMarkerText","pointerSize","formatValue","tickIntervalsInfo","SLIDER_MARKER_UPDATE_DELAY","SliderMarker","isLeftPointer","_isLeftPointer","_isOverlapped","_group","_area","_label","_tracker","cursor","_border","_getRectSize","textSize","_paddingLeftRight","_paddingTopBottom","_getTextSize","_textHeight","_getAreaPointsInfo","rectSize","rectWidth","rectHeight","rectLeftBorder","rectRightBorder","pointerRightPoint","pointerCenterPoint","pointerLeftPoint","isLeft","correctCloudBorders","checkPointerBorders","borderPosition","_range","_borderPosition","isCut","_update","_timeout","currentTextSize","updateSliderMarker","pointsData","_textSize","setText","setPosition","applyOptions","screenRange","_colors","getTracker","setValid","setColor","setOverlapped","isOverlapped","getBorderPosition","SPLITTER_WIDTH","TOUCH_SPLITTER_WIDTH","getSliderTrackerWidth","sliderHandleWidth","_sliderGroup","_line","_marker","trackersGroup","cancelAnimation","stopAnimation","applyPosition","isAnimated","slider","tracker","_setValid","_setText","verticalRange","sliderHandleOptions","sliderMarkerOptions","_formatOptions","trackerWidth","toForeground","getSliderTracker","getPosition","setDisplayValue","getCloudBorder","buildRectPoints","isLess","isGreater","selectClosestValue","middle","dummyProcessSelectionChanged","_lastSelectedRange","getSelectedRange","_processSelectionChanged","suppressSetSelectedRange","controller","setSelectedRange","restoreSetSelectedRange","SlidersController","sliderParams","_params","_areaTracker","_selectedAreaTracker","_shutter","_sliders","getTrackerTargets","selectedArea","sliders","selectedRange","updateSelectedRange","isCompactMode","shutterOptions","rangeBounds","fullTicks","_verticalRange","_minRange","_maxRange","_animationEnabled","_allowSlidersSwap","_values","_isCompactMode","_shutterOffset","_updateSelectedView","_isOnMoving","_updateSelectedRange","_applyTotalPosition","areOverlapped","_applyAreaTrackersPosition","_applySelectedRangePosition","position1","position2","beginSelectedAreaMoving","initialPosition","move","complete","_dockSelectedArea","_moveSelectedArea","moveSelectedArea","screenPosition","startPosition","endPosition","placeSliderAndBeginMoving","firstPosition","secondPosition","thresholdPosition","antiCompare","beginSliderMoving","initialIndex","minPosition","maxPosition","staticPosition","compareMin","compareMax","moveOffset","swapOffset","temp","invalidStateValue","_changeMovingSlider","foregroundSlider","MIN_MANUAL_SELECTING_WIDTH","isLeftButtonPressed","originalEvent","touches","pointerType","eventTouches","isMSPointerLeftClick","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_MOUSE","buttons","isTouches","which","isMultiTouches","stopPropagationAndPreventDefault","isTouchEventArgs","getEventPageX","pageX","changedTouches","initializeAreaEvents","getRootOffsetLeft","isTouchEvent","isActive","movingHandler","docEvents","up","initializeSelectedAreaEvents","initializeSliderEvents","Tracker","_state","targets","getRootOffset","msTouchAction","_docEvents","events","drawSeriesView","seriesDataSource","isAnimationEnabled","seriesList","getSeries","getValueAxis","adjustSeriesDimensions","valueRange","getBoundRange","setBusinessRange","_extGroups","seriesGroup","labelsGroup","merge","RangeView","_clipRect","backgroundOption","backgroundTheme","canvasWidth","isShowChart","mouseover","mouseout","mousemove","touchstart","touchmove","touchend","mousedown","mouseup","selectSeries","deselectSeries","selectPoint","deselectPoint","showPointTooltip","hidePointTooltip","states","hover","normal","selection","normalMark","hoverMark","selectedMark","applyHover","applySelected","resetItem","radialLabelIndent","pieLabelSpacing","pieSeriesSpacing","_floor","CONNECTOR_LENGTH","LABEL_BACKGROUND_PADDING_X","LABEL_BACKGROUND_PADDING_Y","getClosestCoord","closestCoord","closestDistance","getCrossCoord","indexOffset","barPointStrategy","isLabelInside","labelPoint","figure","xc","yc","prepareLabelPoints","rotatedBBox","figureCenter","labelPoints","isRectangular","getFigureCenter","findFigurePoint","adjustPoints","lineIsVertical","lineIsHorizontal","symbolPointStrategy","piePointStrategy","_0","_1","isOutside","pair","point1x","point1y","point2x","point2y","selectStrategy","disposeItem","checkBackground","checkConnector","formatText","argumentText","argument","percentText","percentPrecision","totalText","openValue","openValueText","closeValue","closeValueText","lowValue","lowValueText","highValueText","reductionValue","reductionValueText","Label","_container","_point","_strategy","_rowCount","_color","setOptions","setData","setDataField","fieldName","fieldValue","getData","setFigureToDrawConnector","_figure","_textContent","_visible","_insideGroup","_background","_connector","_setVisibility","visibility","holdInvisible","_holdVisibility","_hide","holdVisible","correctPosition","hasValue","_show","correctLabelPosition","attributes","textAlignment","_updateBackground","_getLabelVisibility","_bBoxWithoutRotation","_bBox","_getConnectorPoints","_shiftBBox","getBoundingRect","rowCountChanged","rowCount","textIsEmpty","resetEllipsis","setTrackerData","hideInsideLabel","_x","_y","getLayoutOptions","radialOffset","connectorOffset","_extend","_ceil","DEFAULT_IMAGE_WIDTH","DEFAULT_IMAGE_HEIGHT","LABEL_OFFSET","CANVAS_POSITION_DEFAULT","getSquareMarkerCoords","getPolygonMarkerCoords","getCrossMarkerCoords","floorHalfRadius","ceilHalfRadius","getTriangleDownMarkerCoords","getTriangleUpMarkerCoords","deleteLabel","_hasGraphic","graphic","clearVisibility","inVisibleArea","setInvisibility","_errorBar","clearMarker","_emptySettings","_createLabel","_labelsGroup","_updateLabelData","_updateLabelOptions","_checkImage","_fillStyle","_styles","styles","_checkSymbol","oldOptions","newOptions","oldSymbol","newSymbol","symbolChanged","imageChanged","_populatePointShape","hasCoords","properValue","resetCorrection","resetValue","_getTranslates","rotated","defaultX","defaultY","_createImageMarker","_createSymbolMarker","pointSettings","_createMarker","_getSymbolBBox","_getImageBBox","_getGraphicBBox","_getShiftLabelCoords","_addLabelAlignmentAndOffset","_getLabelCoords","_checkLabelPosition","customVisibility","_getCustomLabelVisibility","_showForZeroValues","getLabelVisibility","_getLabelConnector","pointPosition","_getPositionFromLocation","_isPointInVisibleArea","graphicBBox","minX","maxX","minY","maxY","_getVisibleArea","fullGraphicBBox","isInside","_getLabelCoordOfPosition","_getLabelPosition","_drawMarker","translates","style","_getStyle","_getErrorBarSettings","getPointRadius","_drawErrorBar","errorBars","errorBarOptions","_errorBarPos","high","_highErrorCoord","low","_lowErrorCoord","isHighDisplayMode","isLowDisplayMode","highErrorOnly","lowErrorOnly","_getErrorBarBaseEdgeLength","_baseErrorBarPos","getTooltipParams","setPercentValue","absTotal","leftHoleTotal","rightHoleTotal","valuePercent","minValuePercent","isFullStackedSeries","leftHole","minLeftHole","rightHole","minRightHole","_storeTrackerR","navigator","minTrackerSize","msPointerEnabled","msMaxTouchPoints","pointerEnabled","maxTouchPoints","trackerR","_translateErrorBars","_getValTranslator","lowError","highError","vy","vx","_translate","valTranslator","argTranslator","_getArgTranslator","_calculateVisibility","_updateData","originalValue","initialMinValue","originalMinValue","_getImageSettings","href","getCrosshairData","xValue","yValue","extraSpace","isSquare","isTriangle","_updateMarker","initialArgument","originalArgument","seriesName","lowErrorValue","highErrorValue","_getFormatObject","labelFormatObject","getMarkerVisibility","trackerRadius","getMinValue","noErrorBar","getMaxValue","DEFAULT_BAR_TRACKER_SIZE","CORRECTING_BAR_TRACKER_VALUE","getLabelOrientation","isDiscreteValue","valueAxisType","isFullStacked","notAxisInverted","correctOptions","yCorrection","xCorrection","isTop","resolveLabelsOverlapping","getMarkerCoords","rx","ry","smartAttr","_getSettingsForTracker","getGraphicSettings","xCoord","yCoord","invertedBusinessRange","_getEdgeTooltipParams","getCenterCoord","_truncateCoord","bounds","argVisibleArea","valAxis","argAxis","valIntervalName","argIntervalName","getArgumentAxis","valVisibleArea","arg","minVal","edgeOffset","argAxisPosition","isStartFromAxis","getAxisShift","MIN_BUBBLE_HEIGHT","correctCoordinates","diameter","bubbleSize","initialSize","sizeText","_sqrt","_acos","acos","DEG","RADIAL_LABEL_INDENT","argumentChanged","radiusOuter","radiusInner","correctRadius","correctLabelRadius","radiusLabels","normalInitialValue","_isLabelDrawingWithoutPoints","_getLabelExtraCoord","_checkVerticalLabelPosition","getAnnotationCoords","_getElementCoords","elementRadius","angleFunctions","middleAngle","columnsPosition","_correctLabelCoord","moveLabelsFromCenter","rightBorderX","leftBorderX","angleOfPoint","updateLabelCoord","_checkHorizontalLabelPosition","shiftCoord","applyWordWrap","setLabelTrackerData","seriesStyle","strokeWidthBy2","firstDrawing","shiftedAngle","getLegendStyles","legendStyles","isInVisibleArea","hideTooltip","visibilityChanged","getColor","lx","ly","_topLabel","_bottomLabel","hideMarker","topMarker","bottomMarker","emptySettings","markerType","labelsInside","_getLabelMinFormatObject","maxFormatObject","images","_getImage","_checkOverlay","bottomCoord","topCoord","topValue","_getOverlayCorrections","topCoords","bottomCoords","coordSelector","maxBound","coord1","coord2","_checkLabelsOverlay","topLocation","corrections","labels","notInverted","topLabel","bottomLabel","visibleTopMarker","visibleBottomMarker","imageOption","oldImages","newImages","topImageChanged","bottomImageChanged","_getSettingsForTwoMarkers","_drawOneMarker","imageSettings","_updateOneMarker","visibleRangeArea","visibleArgArea","visibleValArea","notVisibleByArg","notVisibleByVal","rangeValue1Text","rangeValue2Text","rangeValue1","rangeValue2","getLabel","getLabels","xCond","yCond","edgeLocation","barMethods","DEFAULT_FINANCIAL_TRACKER_MARGIN","_getContinuousPoints","openCoord","closeCoord","createPoint","highCoord","highY","lowY","closeY","_getCrockPoints","_getPoints","openY","_isReduction","_drawMarkerInGroup","_isPositive","reductionPositive","positive","_getMinTrackerWidth","minWidth","_getMarkerGroup","markerGroup","reductionPositiveMarkersGroup","reductionMarkersGroup","defaultPositiveMarkersGroup","defaultMarkersGroup","centerValue","origY","reductionColor","originalLowValue","originalHighValue","originalOpenValue","originalCloseValue","isReduction","symbolMethods","_isNumeric","openYExist","closeYExist","ERROR_BARS_ANGLE_OFFSET","CANVAS_POSITION_START","CANVAS_POSITION_END","polarSymbolPoint","_moveLabelOnCanvas","_getCoords","maxRadius","_checkRadiusForVisibleArea","getDefaultCoords","rotateX","rotateY","getCoords","polarBarPoint","defaultRadius","middleAngleCorrection","isBetweenAngles","mixins","statesConsts","SYMBOL_POINT","POLAR_SYMBOL_POINT","BAR_POINT","POLAR_BAR_POINT","PIE_POINT","SELECTED_STATE","HOVER_STATE","NORMAL_STATE","HOVER","NORMAL","SELECTION","pointTypes","pie","doughnut","donut","polar","isNoneMode","Point","dataItem","fullState","_viewCounters","symbolPoint","barPoint","bubblePoint","piePoint","rangeSymbolPoint","rangeBarPoint","candlestickPoint","stockPoint","usePointCustomOptions","customizePoint","_dataItem","_currentStyle","updateData","argumentWasChanged","aggregationInfo","deleteMarker","groups","_needDeletingOnDraw","autoHidePointMarkers","isSelected","_needClearingOnDraw","_getViewStyle","applyView","legendCallback","getRenderer","getMarkersGroup","setView","resetView","viewCounters","releaseHoverState","select","clearSelection","hoverPoint","clearHover","clearPointHover","showTooltip","_checkLabelsChanging","oldType","newType","isNewRange","isOldRange","widgetType","newPointTypeMixin","_resetType","_checkCustomize","translated","useLabelCustomOptions","isHovered","_argumentChecker","valueChecker","_valueChecker","isArgumentCorrect","isValueCorrect","getTooltipFormatObject","stackPoints","tooltipFormatObject","sharedTooltipValuesArray","tooltipStackPointsFormatObject","stackName","getStackName","rangeText","intervalStart","intervalEnd","setHole","holeValue","resetHoles","DISCRETE","continuousRangeCalculator","createGetLogFunction","getRangeCalculator","rangeCalculator","getInitialRange","firstValue","processCategories","getValueForArgument","extraPoint","calculateRangeBetweenPoints","prevPoint","bound","isLineSeries","getViewportReducer","argumentAxis","calculatePointBetweenPoints","viewportFilter","getViewPortFilter","startCalc","endCalc","getArgumentRange","argumentAxisType","i1","i2","getRangeData","useAggregation","argumentCalculator","valueRangeCalculator","viewportReducer","getArgumentRangeInitialValue","getValueRangeInitialValue","argumentRange","reducer","argumentViewPortFilter","valueViewPort","valueViewPortFilter","addValue","isEdge","isMinValueInViewPort","isMaxValueInViewPort","addEdgePoints","nextPoint","DEFAULT_TRACKER_WIDTH","DEFAULT_DURATION","HIGH_ERROR","LOW_ERROR","VARIANCE","STANDARD_DEVIATION","STANDARD_ERROR","PERCENT","FIXED","UNDEFINED","LOGARITHMIC","DATETIME","isErrorBarTypeCorrect","variance","expectedValue","calculateAvgErrorBars","errorBarsOptions","getValueFields","areErrorBarsVisible","fusionData","calculateSumErrorBars","getMinMaxAggregator","targetData","getArgumentField","_getIntervalCenter","checkFields","fieldsToCheck","skippedFields","allFieldsIsValid","isArgument","selector","baseScatterMethods","_defaultDuration","_defaultTrackerWidth","_applyStyle","_updateOptions","_parseStyle","_prepareSegment","_drawSegment","_appendInGroup","_createLegendState","styleOptions","defaultColor","_applyElementsClipRect","_paneClipRectID","_applyMarkerClipRect","_forceClipping","_createGroup","groupName","parent","_applyClearingSettings","_createGroups","_setMarkerGroupSettings","_createPointStyles","_getMarkerGroupOptions","_markersGroup","_visibleArea","_errorBarsEnabled","getVisiblePoints","pointCoord","_createErrorBarGroup","_widePaneClipRectID","_setGroupsSettings","_setLabelGroupSettings","_getCreatingPointOptions","defaultPointOptions","normalStyle","creatingPointOptions","_predefinedPointOptions","_getPointOptions","_parsePointOptions","_preparePointOptions","_getOptionsForPoint","_parsePointStyle","defaultBorderColor","defaultSize","sizeValue","pointOptions","mainPointColor","mainSeriesColor","_checkData","_points$0$aggregation","_points$aggregationIn","_getRangeData","_getPointDataSelector","getTagField","pointData","_processEmptyValue","_drawPoint","hasAnimation","_drawnPoints","_animateComplete","_errorBarGroup","lastPointIndex","_defaultAggregator","_aggregators","aggregationResult","_ref3","_ref4","_endUpdateData","valueFields","_calculateErrorBars","valueArray","valueArrayLength","meanValue","processDataItem","errorBarType","floatErrorValue","addSubError","_i","_patchMarginOptions","usePointsToDefineAutoHiding","drawTrackers","trackers","segments","_segments","_trackers","_trackersGroup","segment","_updateTrackerElement","_drawTrackerElement","_trackersTranslator","groupPointsByCoords","oppositeCoord","isOpposite","coordName","oppositeCoordName","tmpCoord","_checkAxisVisibleAreaCoord","_getNearestPoints","_getBezierPoints","allPoints","bezierPoints","nearestPoints","getNeighborPoint","minDistance","pCoord","nCoord","_applyVisibleArea","visibleX","visibleY","getPointsByArg","paramName","tmpPoint","clonePoint","newX","newY","newAngle","getTangentPoint","nextStepAngle","correctAngle","obtainCubicBezierTCoef","p0","p1","p3","lineMethods","autoHidePointMarkersEnabled","_applyGroupSettings","_elementsGroup","_bordersGroup","_areBordersVisible","_getDefaultSegment","pt","_parseLineOptions","_graphics","_drawElement","_createMainElement","_removeElement","_updateElement","animationComplete","lastIndex","elem","_sortPoints","segmentCount","lastSegment","_getTrackerSettings","defaultTrackerWidth","strokeWidthFromElements","_getMainPointsFromSegment","checkSeriesViewportCoord","lineSeries","_getNearestPointsByCoord","needValueCoord","_calculateStepLinePoints","_calculateBezierPoints","src","pointsCopy","checkExtremum","otherPointCoord","controlCoord","curPoint","leftControlX","leftControlY","rightControlX","rightControlY","xCur","yCur","curIsExtremum","leftPoint","rightPoint","bezierCoordName","bezierOppositeCoordName","_loop","ts","_ret","seg","preparedPoints","_closeSegment","_getTangentPoints","_getRemainingAngle","normAngle","_modifyReflectedPoint","lastPoint","differenceAngle","tangentPoints","betweenAngle","coordParam","isInsideInterval","neighborPoints","getNeighborPoints","stepAngle","k1","b1","k2","b2","y0","param","closed","firstPointCopy","lastPointCopy","rearwardRefPoint","forwardRefPoint","chartLineSeries","polarLineSeries","calculateBezierPoints","baseAreaMethods","_createBorderElement","defaultSegment","lineParams","areaParams","borderElement","borderStyle","singlePointSegment","createAreaPoints","areaSeries","processedPoints","_processSinglePointsAreaSegment","areaPoints","stepLineSeries","getSeriesPairCoord","_areaPointsToSplineAreaPoints","previousMiddlePoint","middlePoint","areaSegment","areaDefaultSegment","chartSeries","polarSeries","_each","baseBarSeriesMethods","_getAffineCoordOptions","scaleX","scaleY","_getMainColor","mainColor","_updatePointsVisibility","_points","_animatePoints","drawnPoints","animateFunc","markersSettings","groupSettings","barSeries","baseRangeSeries","val1Field","val2Field","minCoordName","processedMinPointsCoords","bottomLine","drawnElement","bordersGroup","bottomLineParams","bottomBorderElement","chartBarSeries","polarBarSeries","_noop","getSizeField","baseGetter","aggregate","labelAnimFunc","processBubbleSize","chartScatterSeries","_map","_isFinite","ANIMATION_DURATION","INSIDE","_legendCallback","_getOldPoint","oldPointsByArgument","adjustLabels","drawLabelsWOPoints","getPointsCount","setMaxPointsCount","_pointsCount","dataIndex","labelSpace","paintNullPoints","pointsByArg","argumentIndex","_rangeData","_getArrangeMinShownValue","minSegmentSize","totalMinSegmentSize","totalNotMinValues","_applyArrangeCorrection","isClockWise","segmentsDirection","zeroTotalCorrection","el","updatedZeroValue","_removePoint","arrangePoints","originalPoints","isAllPointsNegative","setVisibleArea","labelRadius","animatePoint","pointsCount","completeFunc","getPointsByKeys","DEFAULT_FINANCIAL_POINT_SIZE","markersGroup","defaultStyle","defaultPositiveStyle","reductionStyle","reductionPositiveStyle","markerSettings","prevLevelValue","_getDefaultStyle","_getReductionStyle","positiveStyle","ohlc","chartAreaSeries","baseStackedSeries","_stackName","stackedBar","preparePointsForStackedAreaSegment","getPointsByArgFromPrevSeries","prevSeries","_segmentByArg","_prevSeries","forwardPoints","backwardPoints","prevSeriesForwardPoints","pointByArg","prevSeriesPoints","seriesNS","APPLY_SELECTED","APPLY_HOVER","RESET_ITEM","NONE_MODE","INCLUDE_POINTS","NEAREST_POINT","SERIES_SELECTION_CHANGED","POINT_SELECTION_CHANGED","SERIES_HOVER_CHANGED","POINT_HOVER_CHANGED","ALL_SERIES_POINTS","ALL_ARGUMENT_POINTS","POINT_HOVER","CLEAR_POINT_HOVER","SERIES_SELECT","POINT_SELECT","POINT_DESELECT","getEmptyBusinessRange","includePointsMode","getLabelOptions","opt","labelFont","labelBorder","labelConnector","backgroundAttr","connectorAttr","setPointHoverState","releasePointHoverState","setPointSelectedState","releasePointSelectedState","mergePointOptionsCore","mergePointOptions","Series","_eventPipe","eventPipe","getValueChecker","_createStyles","baseId","wideId","forceClipping","clipLabels","_clipLabels","applyClip","resetClip","_createPoint","oldPoint","pointsByArgument","lastSelectionMode","pointByArgument","_deleteGroup","_checkType","_checkPolarBarType","isUpdated","_defineDrawingState","_pointOptions","_seriesModes","commonSeriesModes","_valueAxis","_argumentAxis","_disposePoints","updateDataType","_canRenderCompleteHandle","dataSelector","itemsWithoutArgument","pointDataItem","_resample","getAggregationInfo","_useAllAggregatedPoints","_normalizeUsingAllAggregatedPoints","_createPoints","_getData","pointIndex","_removeOldSegments","_drawElements","translateAllPoints","closeSegment","groupForPoint","setDefaultCoords","hideLayoutLabels","hideLabels","_changeStyle","lastHoverMode","spiderWidget","seriesType","_setPointsView","view","_resetPointsView","_resetNearestPoint","_nearestPoint","_setSelectedState","_releaseSelectedState","isStackedSeries","isFinancialSeries","_canChangeView","skipPoints","updateHover","currentNearestPoint","_getMainAxisName","areLabelsVisible","customizeObject","customLabelOptions","customOptions","customizeLabel","_changeVisibility","parsedOptions","_getAggregationMethod","aggregator","customAggregator","addAggregatedData","processData","aggregationMethod","dataInInterval","aggregatedData","canRenderCompleteHandle","getAllPoints","_createAllAggregatedPoints","getPointByPos","currentPoint","skipPointsCreation","argValue","createPoints","seriesModes","targetOptions","pointHoverMode","selectionModeOfPoint","_hoverPointHandler","notifyLegend","_clearPointHoverHandler","seriesSelectionMode","pointSelectionMode","_selectPointHandler","_deselectPointHandler","_deletePoints","_deleteTrackers","getOpacity","getBarOverlapGroup","getPointByCoord","DEFAULT_BAR_GROUP_PADDING","validateBarPadding","validateBarGroupPadding","isStackExist","correctStackCoordinates","currentStacks","barsArea","seriesStackIndexCallback","extraParameters","stackIndex","getOffset","calculateParams","correctPointCoordinates","adjustBarSeriesDimensionsCore","_series$","_series$2","commonStacks","allArguments","seriesInStacks","_series$3","isDateArgAxis","getTickInterval","getAggregationInterval","stacks","percentWidth","fixedBarWidth","middleIndex","rawWidth","getValueType","getVisibleSeries","getAbsStackSumByArg","stackKeepers","positiveStackValue","negativeStackValue","negative","getStackSumByArg","getSeriesStackIndexCallback","stackCount","adjustBarSeriesDimensions","getFirstValueSign","adjustStackedSeriesValues","holesStack","lastSeriesInPositiveStack","lastSeriesInNegativeStack","singleSeries","hole","holes","isNotBarSeries","currentStack","_skipSetLeftHole","_skipSetRightHole","_stackKeepers","updateStackedSeriesValues","valueAxisTranslator","minShownBusinessValue","fullStacked","updateFullStackedSeriesValues","stackSum","updateBarSeriesValues","adjustCandlestickSeriesDimensions","adjustBubbleSeriesDimensions","pointSize","bubbleArea","sizeProportion","visibleAreaX","visibleAreaY","minBubbleArea","maxBubbleArea","equalBubbleSize","minPointSize","maxPointSize","seriesItem","sizeDispersion","areaDispersion","SeriesFamily","updateSeriesValues","adjustSeriesValues","STRING","NUMERIC","SEMIDISCRETE","CONTINUOUS","VALUE_TYPE","ARGUMENT_TYPE","axisTypeParser","groupingValues","others","cell","processGroups","asc","valA","valB","aa","bb","resetArgumentAxes","parseCategories","newArray","parsedCategory","parseAxisCategories","groupsData","parsers","argumentCategories","argumentOptions","valueGroup","valueOptions","eigen","getType","correctAxisType","hasCategories","validUnit","createParserUnit","filterInfinity","parseUnit","prepareParsers","sizeParser","valueParser","argumentParser","categoryParsers","cache","list","groupIndex","getParsedCell","parsedData","findIndexByThreshold","threshold","groupMinSlices","originalData","smallValuesGrouping","topCount","groupPieData","firstSeries","isPie","addUniqueItemToCollection","collection","itemsHash","getUniqueArgumentFields","uniqueArgumentFields","hash","sortByArgument","sortByCallback","checkValueTypeOfGroup","getSortByCategories","sortData","reSortCategories","dataByArguments","userCategories","sortFunction","sortingMethodOption","getCategories","_skipArgumentSorting","checkItemExistence","collectionItem","checkArgumentTypeOfGroup","currentSeries","checkType","groupsIndexes","groupsWithUndefinedValueType","groupsWithUndefinedArgumentType","argumentTypeGroup","valueTypeGroup","defineArg","checkAxisType","userArgumentCategories","valueCategories","optionsSeries","argumentAxes","verifyData","source","sourceIsDefined","hasError","validateData","dataByArgumentFields","currentPaletteName","HIGHLIGHTING_STEP","DEFAULT_PALETTE","officePalette","simpleSet","indicatingSet","gradientSet","accentColor","palettes","office","pastel","bright","soft","ocean","vintage","carmine","currentPalette","getPalette","themeDefault","getAccentColor","RingBuf","buf","ind","reset","getAlternateColorsStrategy","stepHighlight","useHighlight","paletteSteps","_reset","getAlteredPalette","generateColors","colors","getExtrapolateColorsStrategy","paletteCount","cycles","cycleIndex","cycleCount","diapason","minL","maxL","cycleMiddle","cycleDiff","getColorMixer","extendedPalette","distributeColors","colorsCount","distribution","groupSize","extraItems","getColorAndDistance","arr","extendPalette","colorInGroups","currentColorIndex","cleanColorIndices","keepLastColorInEnd","paletteWithEmptyColors","paletteLength","color1","c2","color2","repeat","createPalette","themeDefaultPalette","paletteObj","_extensionStrategy","_currentColor","extensionMode","originalPalette","getNewColor","currentColor","newColor","lightness","getLightness","getDiscretePalette","createDiscreteColors","colorCount","sourceCount","gradient","addColor","kl","kr","getGradientPalette","WHITE","BLACK","LIGHT_GREY","GREY_GREEN","SOME_GREY","RED","PRIMARY_TITLE_COLOR","SECONDARY_TITLE_COLOR","NONE","SOLID","OUTSIDE","isDefault","primaryTitleColor","secondaryTitleColor","gridColor","axisColor","button","focus","active","shadowColor","arrowLength","shared","shadow","offsetX","offsetY","blur","interactive","legend","columnCount","columnItemSpacing","rowItemSpacing","easing","maxPointCountSupported","equalRowHeight","adaptiveLayout","keepLabels","_rtl","itemTextPosition","resolveLabelOverlapping","stripStyle","constantLineStyle","tooltipEnabled","arrowWidth","allowDragging","rangesplinearea","crosshair","verticalLine","horizontalLine","commonAxisSettings","horizontalAxis","verticalAxis","commonPaneSettings","scrollBar","adjustOnZoom","synchronizeMultiAxes","stickyHovering","zoomAndPan","dragBoxStyle","panKey","allowMouseWheel","allowTouchGestures","minDiameter","gauge","rangeContainer","valueIndicators","_default","space","twocolorneedle","secondColor","trianglemarker","textcloud","indicator","hasPositiveMeaning","layout","_circular","scaleDivisionFactor","orientation","indentFromTick","valueIndicatorType","subvalueIndicatorType","_type","indentFromCenter","spindleSize","spindleGapSize","beginAdaptingAtRadius","triangleneedle","secondFraction","_linear","horizontalOrientation","verticalOrientation","rectangle","barGauge","relativeInnerRadius","barSpacing","connectorWidth","rangeSelector","layer","hoveredBorderColor","selectedBorderWidth","selectedBorderColor","hoveredColor","selectedColor","selectedStep","backStep","backColor","backOpacity","minSize","hoveredBorderWidth","backgroundOpacity","controlBar","treeMap","tile","sparkline","lineColor","areaOpacity","minColor","maxColor","barPositiveColor","barNegativeColor","winColor","lossColor","firstLastColor","pointSymbol","pointColor","winlossThreshold","showFirstLast","showMinMax","bullet","targetColor","targetWidth","showTarget","showZeroLevel","funnel","colorField","hoverEnabled","customizeTooltip","info","algorithm","neckWidth","neckHeight","sankey","sourceField","targetField","weightField","useNodeColors","node","link","colorMode","baseThemeName","ACCENT_COLOR","BACKGROUND_COLOR","TITLE_COLOR","SUBTITLE_COLOR","TEXT_COLOR","BORDER_COLOR","defaultPalette","RANGE_COLOR","AREA_LAYER_COLOR","LINE_COLOR","TARGET_COLOR","POSITIVE_COLOR","CONTRAST_ACTIVE","MARKER_COLOR","menuButtonColor","activeBackgroundColor","activeColor","FONT_FAMILY","LIGHT_TITLE_COLOR","LIGHT_LABEL_COLOR","DARK_TITLE_COLOR","DARK_LABEL_COLOR","DARK_BACKGROUND_COLOR","LABEL_BORDER_COLOR","BREAK_STYLE_COLOR","commonAnnotationSettings","getMaterialColorScheme","accentName","markerColor","materialAccents","accent","defaultTheme","themesMapping","themesSchemeMapping","currentThemeName","nextCacheUid","widgetsCache","getTheme","currentTheme","findThemeNameByName","scheme","findThemeNameByPlatform","colorScheme","getThemeInfo","splitter","registerThemeName","targetThemeName","themeInfo","registerTheme","patchTheme","mergeScalar","sourceValue","mergeObject","patchAxes","section","patchMapLayers","addCacheItem","cacheUid","_cache","removeCacheItem","material","_getTheme","_addCacheItem","_removeCacheItem","getThemePart","_theme","pathItem","BaseThemeManager","ctor","_themeSection","themeSection","_fontFields","fontFields","_callback","_font","setCallback","setTheme","rtl","_current","refresh","current","_themeName","_defaultPalette","_initializeTheme","createDiscretePalette","createGradientPalette","_initializeFont","ThemeManager","processAxisOptions","applyParticularAxisOptions","userOptions","processedUserOptions","_userOptions","mergeOptions","_mergedSettings","applyParticularTheme","valueAxisRangeSelector","seriesCount","seriesVisibility","userCommonSettings","themeCommonSettings","isBar","isLine","isArea","isBubble","getNextColor","_multiPieColors","parseOption","pan","none","dragToZoom","_mergeAxisTitleOptions","resetPalette","updatePalette","resetOptions","createThemeManager","chartOptions","processSeriesFamilies","barOptions","families","types","SeriesDataSource","themeManager","_themeManager","_indent","_hideChart","_calculateSeries","_seriesFamilies","particularSeriesOptions","seriesTheme","newSeries","chartThemeManager","allSeriesOptions","negativesAsZeros","rangeData","rangeYSize","rangeVisibleSizeY","minIndent","maxIndent","valRange","argRange","seriesOptions","getCalculatedValueType","getThemeManager","isServerSide","Flags","combineMaps","baseMap","thisMap","combineLists","baseList","thisList","buildTotalChanges","proto","_totalChangesOrder","_optionChangesOrder","_layoutChangesOrder","_customChangesOrder","addChange","isThemeDependent","_themeDependentChanges","_optionChangesMap","isOptionChange","createChainExecutor","executeChain","_chain","copy","executor","expand","expander","addPlugin","plugin","_plugins","members","customize","extenders","codes","_flags","has","replaceInherit","widget","_inherit","plugins","eventsMap","_eventsMap","initialChanges","_initialChanges","themeDependentChanges","optionChangesMap","partialOptionChangesMap","_partialOptionChangesMap","partialOptionChangesPath","_partialOptionChangesPath","optionChangesOrder","layoutChangesOrder","customChangesOrder","errors","ERROR_MESSAGES","E2001","E2002","E2003","E2004","E2005","E2006","E2007","E2008","E2009","E2101","E2102","E2103","E2104","E2105","E2202","E2203","W2002","W2003","W2101","W2102","W2103","W2104","W2105","W2106","W2107","W2108","W2301","noop","easingFunctions","easeOutCubic","animationSvgStep","progress","currentParams","curSeg","attributeName","currentSettings","now","attrName","animateStep","_animateStep","_progress","_calcProgress","anim","_easing","_currentParams","delayTick","_startTime","Animation","AnimationController","_animationCount","_timerId","_animations","disableComplete","an","animations","activeAnimation","endAnimation","_endAnimation","_endAnimationTimer","addAnimation","_startDelay","animateElement","onEndAnimation","unstoppable","hasUnstoppableInAnimations","SHARPING_CORRECTION","ARC_COORD_PREC","pxAddingExceptions","order","orphans","widows","KEY_TEXT","KEY_STROKE","KEY_STROKE_WIDTH","KEY_STROKE_OPACITY","KEY_FONT_SIZE","KEY_FONT_STYLE","KEY_FONT_WEIGHT","KEY_TEXT_DECORATION","KEY_TEXTS_ALIGNMENT","DEFAULT_FONT_SIZE","ELLIPSIS","objectCreate","DEFAULTS","getBackup","backupContainer","backupCounter","backupRoot","getBody","restoreRoot","getNextDefsSvgId","numDefsSvgElements","isObjectArgument","tagName","createElementNS","getFuncIri","exp","getBoundingClientRect","preserveAspectRatioMap","full","lefttop","leftcenter","leftbottom","centertop","centerbottom","righttop","rightcenter","rightbottom","processHatchingAttrs","_hatching","lockHatching","releaseHatching","normalizeArcParams","innerR","outerR","isCircle","noArc","angleDiff","buildArcPath","startAngleCos","startAngleSin","endAngleCos","endAngleSin","longFlag","buildPathSegments","buildLineSegments","buildCurveSegments","close","buildSegments","buildSimpleLineSegment","buildSimpleCurveSegment","buildSimpleSegment","_points$","k0","combinePathParam","jj","compensateSegments","oldSegments","newSegments","originalNewSegments","oldLength","newLength","makeEqualSegments","makeEqualAreaSegments","makeEqualLineSegments","prepareConstSegment","constSeg","short","long","constsSeg1","constsSeg2","shortLength","longLength","baseCss","elemStyles","fixFuncIri","wrapper","attribute","removeAttribute","setAttribute","baseAttr","hasTransformations","recalculateDashStyle","sw","_settings","_addFixIRICallback","_originalSW","_applyTransformation","pathAttr","arcAttr","rectAttr","maxSW","newSW","_originalX","_originalY","_originalWidth","_originalHeight","textAttr","isResetRequired","wasStroked","alignTextNodes","isStroked","createTextNodes","_hasEllipsis","locateTextNodes","strokeTextNodes","textCss","orderHtmlTree","parentStyle","parentClassName","realStyle","nodes","wholeText","className","isElementNode","fontSize","fontWeight","textDecoration","childNodes","adjustLineHeights","currentItem","maxLengthFontSize","removeExtraAttrs","html","findStyleAndClassAttrs","allTagAttrs","match","parseHTML","div","innerHTML","parseMultiline","texts","trim","createTspans","applyEllipsis","lines","lineParts","hasEllipsis","ellipsis","ellipsisWidth","_getElementBBox","prepareLines","_texts","parts","commonLength","setNewText","startBox","removeTextSpan","cloneAndRemoveAttrs","cloneNode","detachTitleElements","titleElements","querySelectorAll","detachAndStoreTitleElements","maxHeight","textChanged","ellipsisMaxWidth","restoreTitleElement","applyOverflowRules","setMaxHeight","_getLineHeight","tspan","textContent","getIndexForEllipsis","endBox","kk","getSubStringLength","getTextWidth","getSpaceBreakIndex","initialIndices","spaceIndices","char","spaceIndex","getWordBreakIndex","getEllipsisString","hideOverflowEllipsis","setEllipsis","lastStepBreakIndex","breakIndex","restText","restLines","newTextOffset","restString","restTspan","calculateLineHeight","lineHeight","getItemLineHeight","commonHeight","prevLine","textValue","lineNumber","wordWrapLines","insertString","newText","parsedHtml","encodeHtml","setTextNodeAttribute","maxTextWidth","fontSize1","fontSize2","parsedHeight1","parsedHeight2","height1","height2","strokeWidth","strokeOpacity","baseAnimate","animationParams","getAttribute","_animation","pathAnimate","endSegments","curSegments","arcAnimate","arcParams","buildLink","is","after","virtual","SvgElement","removeFuncIriCallback","fixFuncIriCallbacks","_getJQElement","_$element","fn","_fixFuncIri","_clearChildrenFuncIri","clearChildren","_links","virtualLink","linkItem","_link","linkAfter","_linkAfter","linkOff","unlinkItem","_insert","insertBefore","linkRemove","empty","firstChild","tr","transformations","sharpMode","trDirection","strokeOdd","correctionX","correctionY","scaleXDefined","scaleYDefined","animOptions","offsetWidth","offsetHeight","transformation","markup","titleElem","PathSvgElement","ArcSvgElement","RectSvgElement","TextSvgElement","updateIndexes","Renderer","_createElement","xmlns","display","overflow","_$container","fixPlacement","_locker","_backed","getHatchingHash","_defs","_animationController","browser","mozilla","removePlacementFix","updateAnimationOptions","unlock","resize","removeByRenderer","stopAllAnimations","svg","simpleRect","preserveAspectRatio","setAttributeNS","linearGradient","stops","pattern","_id","stepTo2","stepBy15","patternUnits","_getPointsWithYOffset","clipShape","methodArgs","clipPath","shape","shadowFilter","gaussianBlur","in","stdDeviation","flood","composite","in2","operator","finalComposite","filterAttrs","offsetAttrs","floodAttrs","brightFilter","slope","componentTransferElement","getGrayScaleFilter","_grayScaleFilter","initHatching","storage","_hatchingStorage","byHash","refToHash","nextId","ref","storageItem","callbacks","fire","ALIGN_START","ALIGN_MIDDLE","ALIGN_END","horizontalAlignmentMap","verticalAlignmentMap","sideMap","slicersMap","BBOX_CEIL_CORRECTION","pickValue","normalizeLayoutOptions","primary","bringToEdge","secondary","weak","getConjugateSide","getSlice","getShrink","processForward","measure","minSide","processRectBackward","alignmentRect","primarySide","secondarySide","itemRect","processBackward","fitRect","targetRect","itemFitRect","freeSpace","Layout","_targets","createTargets","layoutOptions","processWeakItems","headerItem","weakItem","makeHeader","processBackwardHeaderRect","rectCopy","weakElement","weakSize","headerSize","weakRect","headerFitReact","headerRect","forward","backward","backwardRect","targetSide","createEventTrigger","callbackGetter","changes","triggers","createEvent","triggerEvent","change","eventInfo","applyChanges","newName","createIncidentOccurred","widgetName","createResizeHandler","timeout","_log","OPTION_RTL_ENABLED","SIZED_ELEMENT_CLASS","_option","getTrue","getFalse","areCanvasesDifferent","canvas1","canvas2","defaultOnIncidentOccurred","component","_eventsStrategy","hasEvent","pickPositiveValue","getEmptyComponent","emptyComponentConfig","sizedElement","_getDefaultSize","setStyle","setClass","insertElement","EmptyComponent","originalInherit","callForEach","functions","sizeIsValid","baseWidget","_useLinks","children","_changesLocker","_optionChangedLocker","_asyncFirstDrawing","_changes","_suspendChanges","_createThemeManager","_requestChange","_renderElementAttributes","_initRenderer","linkTarget","_renderVisibilityChange","_attachVisibilityChangeHandlers","_toggleParentsScrollSubscription","_isVisible","_initEventTrigger","_layout","_initPlugins","_initCore","_change","_getThemeManagerOptions","init","_disposePlugins","_resumeChanges","_applyingChanges","_applyChanges","_changesApplied","_optionsQueue","_applyQueuedOptions","resolveItemsDeferred","_legend","_notify","_resolveDeferred","_getTemplatesItems","_collectTemplatesFromItems","getTemplatesDef","getTemplatesGroups","_getExtraTemplatesItems","launchRequest","doneRequest","_setGroupsVisibility","_changesApplying","syncRendering","beginUpdate","endUpdate","_change_EVENTS","_change_THEME","_setThemeAndRtl","_change_RENDERER","_setRendererOptions","_change_RESIZE_HANDLER","_setupResizeHandler","_change_ELEMENT_ATTR","_change_CONTAINER_SIZE","_updateSize","_change_LAYOUT","_setContentSize","_change_DISABLED","_initDisabledState","_calculateCanvas","_rootClassPrefix","_rootClass","_disposeRenderer","_getAnimationOptions","_stopCurrentHandling","subscribe","$parents","parents","_proxiedTargetParentsScrollHandler","_$prevRootParents","_removeResizeHandler","_disposeCore","defaultCanvas","getSizeOfSide","getter","elementSize","elementWidth","elementHeight","__forceRender","_recreateSizeDependentObjects","_getMinSize","_getAlignmentRect","nextRect","_applySize","_getOption","isScalar","_resizeHandler","_onBeginUpdate","_initialized","_isUpdateAllowed","_getActionForUpdating","partialChanges","getPartialChangeOptionsName","pc","changedOption","fullName","sections","partialChangeOptionsName","op","_addOptionsNameForPartialUpdate","_checkOptionsForPartialUpdate","optionObject","optionKeys","_getRendererOptions","getSize","isReady","_dataIsReady","_resetIsReady","pointerActions","BUTTON_SIZE","ICON_COORDS","LIST_PADDING_TOP","LIST_WIDTH","VERTICAL_TEXT_MARGIN","HORIZONTAL_TEXT_MARGIN","MENU_ITEM_HEIGHT","LIST_STROKE_WIDTH","MARGIN","SHADOW_OFFSET","SHADOW_BLUR","DEFAULT_EXPORT_FORMAT","ALLOWED_IMAGE_FORMATS","ALLOWED_EXTRA_FORMATS","EXPORT_CSS_CLASS","A4WidthCm","EXPORT_DATA_KEY","FORMAT_DATA_KEY","getValidFormats","imageFormats","testFormats","unsupported","supported","validateFormat","validFormats","getCreatorFunc","print","imageSrc","iFrame","setPrint","body","calculatePrintPageWidth","iFrameBody","contentWindow","img","widthRatio","removeFrame","parentElement","addEventListener","getItemAttributes","itemIndex","separator","createMenuItem","itemData","menuItem","resetState","fixPosition","textBBox","createMenuItems","getFormatter","ExportMenu","_exportTo","exportTo","_print","_shadow","_buttonGroup","_listGroup","_overlay","_subscribeEvents","getExportOptions","exportOptions","forceProxy","exportingAction","exportedAction","fileSavingAction","_hiddenDueToLayout","cutSide","cutLayoutSide","_updateButton","_updateList","_hideList","_unsubscribeEvents","_fillSpace","_listShown","_setButtonState","_menuItems","_button","_icon","_showList","enter","leave","exportData","buttonDefault","listGroup","_exportMenu","pointerEventsValue","menu","_disablePointerEvents","fail","always","eventArgs","__test","_getExportMenuOptions","defaultOffset","alignFactors","LayoutElement","WrapperLayoutElement","renderElement","_renderElement","_cacheBBox","ofBBox","myBBox","wrapperLayoutElementPrototype","parseHorizontalAlignment","parseVerticalAlignment","DEFAULT_MARGIN","hasText","processTitleLength","pickMarginValue","validateMargin","checkRect","boundingRect","Title","_hasText","processTitleOptions","_titleElement","_subtitleElement","_updateStructure","_updateTexts","subtitleOptions","subtitleElement","_baseLineCorrection","_updateBoundingRectAlignment","_boundingRect","themeOptions","isLayoutChanged","_updateBoundingRect","_correctTitleLength","_shiftSubtitle","getCorrectedLayoutOptions","srcBox","changeLink","STATE_HIDDEN","STATE_SHOWN","ANIMATION_EASING","LOADING_INDICATOR_READY","LoadingIndicator","_rect","_createStates","_states","setSize","_transit","stateId","_isHiding","_noHiding","scheduleHiding","fulfillHiding","_loadingIndicator","_skipLoadingIndicatorOptions","_scheduleLoadingIndicatorHiding","_fulfillLoadingIndicatorHiding","showLoadingIndicator","hideLoadingIndicator","isLoading","silent","_dataSourceChangedHandler","onLoadingIndicatorReady","postCtor","_dataSourceLoadErrorHandler","_dataSourceOptions","paginate","_updateDataSource","_refreshDataSource","_dataIsLoaded","_dataSource","isLoaded","_dataSourceItems","START_VALUE","END_VALUE","VALUE","VALUE_CHANGED","CONTAINER_BACKGROUND_COLOR","SLIDER_MARKER","OPTION_BACKGROUND","INVISIBLE_POS","SEMIDISCRETE_GRID_SPACING_FACTOR","calculateMarkerHeight","getTextBBox","calculateScaleLabelHalfWidth","scaleOptions","calculateIndents","indentOptions","leftMarkerHeight","rightMarkerHeight","placeholderWidthLeft","placeholderWidthRight","startTickValue","endTickValue","leftScaleLabelWidth","rightScaleLabelWidth","calculateValueType","secondValue","typeFirstValue","typeSecondValue","validType","showScaleMarkers","updateTranslatorRangeInterval","translatorRange","intervalX","checkLogarithmicOptions","defaultLogarithmBase","calculateScaleAreaHeight","visibleMarkers","labelScaleOptions","markerScaleOptions","getMinorTickIntervalUnit","withCorrection","majorUnit","idx","getNextTickInterval","isDateType","calculateTickIntervalsForSemidiscreteScale","tickCountByInterval","tickCountByScreen","gridSpacingFactor","updateTickIntervals","ticksInfo","getFirstDayOfWeek","calculateTranslatorRange","rangeForCategories","isDate","startEndNotDefined","textElement","getDateMarkerVisibilityChecker","isDateScale","isMarkerVisible","updateScaleOptions","checkDateMarkerVisibility","isEmptyInterval","intervals","getIntervalCustomTicks","altIntervals","prepareScaleOptions","scaleOption","calculatedValueType","validateStartEndValues","messageToIncidentOccurred","getPrecisionForSlider","tail","dxRangeSelector","rangeViewGroup","slidersGroup","scaleGroup","_axis","AxisWrapper","_rangeView","_slidersController","lastSelectedRange","_rangeOption","_clientRect","_change_SCALE","valueIsReady","__skipAnimation","_dataSourceIsAsync","rangesInfo","allScaleSelected","_change_DATA_SOURCE","_change_MOSTLY_TOTAL","_applyMostlyTotalChange","_change_SLIDER_SELECTION","_change_VALUE","_validateRange","__isResizing","currentAnimationEnabled","_updateContent","_setValueByDataSource","_createSeriesDataSource","_completeSeriesDataSourceCreation","argTranslatorRange","_prepareSliderMarkersOptions","indents","rangeContainerCanvas","_updateElements","isNotSemiDiscrete","_isUpdating","doNotSnap","isTypeDiscrete","isValueTypeDatetime","prepareAxisOptions","createDateMarkersEvent","markerTrackers","onPointerDown","getShiftDirection","checkShiftedLabels","checkLabelsOverlapping","nearestLabelsIndexes","getTwoVisibleLabels","_updateSelectedRangeCallback","FILE_EXTESIONS","EXCEL","CSS","PNG","JPEG","GIF","SVG","PDF","MIME_TYPES","fileSaver","_revokeObjectURLTimeout","_getDataUri","_getMimeType","_linkDownloader","exportLinkElement","download","_formDownloader","contentType","formAttributes","enctype","exportForm","setAttributes","_saveByProxy","_winJSBlobSave","savePicker","Windows","Storage","Pickers","FileSavePicker","suggestedStartLocation","PickerLocationId","documentsLibrary","fileExtension","fileTypeChoices","suggestedFileName","pickSaveFileAsync","openAsync","FileAccessMode","readWrite","outputStream","inputStream","msDetachStream","Streams","RandomAccessStream","copyAsync","flushAsync","_click","dispatchEvent","MouseEvent","cancelable","initMouseEvent","_saveBlobAs","_blobSaved","msSaveOrOpenBlob","WinJS","URL","webkitURL","mozURL","msURL","oURL","objectURL","createObjectURL","downloadLink","revokeObjectURL","_objectUrlRevoked","warn","saveAs","proxyURL","userAgent","LANGUAGE_CODES","ar","bg","ca","cs","da","de","en","es","fi","fr","he","hu","ja","ko","nl","no","pl","rm","ro","ru","hr","sk","sq","sv","th","ur","uk","be","sl","et","lv","lt","tg","fa","vi","hy","az","eu","hsb","mk","tn","xh","zu","af","ka","fo","hi","mt","se","ga","ms","ky","tk","uz","tt","bn","pa","gu","or","ta","te","kn","ml","as","mr","sa","mn","bo","km","lo","gl","kok","syr","si","iu","am","tzm","ne","fy","ps","fil","dv","ha","yo","quz","nso","ba","lb","ig","arn","moh","ug","mi","oc","gsw","sah","qut","rw","wo","prs","gd","smn","sms","zh","nn","bs","sma","nb","sr","dsb","smj","getLanguageId","locale","ARABIC_ZERO_CODE","DEFINED_NUMBER_FORMTATS","thousands","millions","billions","trillions","decimal","fixedpoint","exponential","PERIOD_REGEXP","DAY_REGEXP","DO_REGEXP","STANDALONE_MONTH_REGEXP","HOUR_REGEXP","ANY_REGEXP","excelFormatConverter","_applyPrecision","_hasArabicDigits","_convertDateFormatToOpenXml","datePart","_convertDateFormat","formattedValue","_getLanguageInfo","defaultPattern","languageID","languageIDStr","languageInfo","_convertNumberFormat","excelFormat","getOpenXmlCurrencyFormat","convertFormat","tagHelper","toXml","content","attributeValue","cellAlignmentHelper","tryCreateTag","sourceObj","wrapText","areEqual","leftTag","rightTag","colorHelper","_tryConvertColor","colorCode","patternFillHelper","patternType","foregroundColor","fillHelper","patternFill","tryCreateFillFromSimpleFormat","fillPatternType","fillPatternColor","copySimpleFormat","fontHelper","bold","italic","underline","cellFormatHelper","sharedItemsContainer","numberFormatId","numberFormat","registerNumberFormat","fontId","registerFont","fillId","registerFill","applyNumberFormat","isAlignmentEmpty","xfId","applyAlignment","numFmtId","numberFormatHelper","ID_PROPERTY_NAME","formatCode","_cellFormatTags","_fillTags","_fontTags","_numberFormatTags","cellFormat","cellFormatTag","cellFormatTagsAsXmlStringsArray","fillTag","tagsAsXmlStringsArray","fontTag","xmlStringsArray","_convertNumberFormatIndexToId","XML_TAG","GROUP_SHEET_PR_XML","SINGLE_SHEET_PR_XML","BASE_STYLE_XML2","OPEN_XML_FORMAT_URL","RELATIONSHIP_PART_NAME","XL_FOLDER_NAME","WORKBOOK_FILE_NAME","CONTENTTYPES_FILE_NAME","SHAREDSTRING_FILE_NAME","STYLE_FILE_NAME","WORKSHEETS_FOLDER","WORKSHEET_FILE_NAME","WORKSHEET_HEADER_XML","VALID_TYPES","boolean","EXCEL_START_TIME","DAYS_COUNT_BEFORE_29_FEB_1900","MAX_DIGIT_WIDTH_IN_PIXELS","UNSUPPORTED_FORMAT_MAPPING","quarterAndYear","ExcelCreator","_getXMLTag","_convertToExcelCellRef","zeroBasedRowIndex","zeroBasedCellIndex","charCode","isCellIndexFound","columnName","_convertToExcelCellRefAndTrackMaxIndex","rowIndex","cellIndex","_maxRowIndex","_maxColumnIndex","_getDataType","_tryGetExcelCellDataType","object","_formatObjectConverter","_tryConvertToExcelNumberFormat","newFormat","_appendString","_stringHash","_stringArray","_tryGetExcelDateValue","totalTime","_prepareValue","dataProvider","_dataProvider","cellSourceData","getCellData","getCellType","_callCustomizeExcelCell","sourceData","styleCopy","copyCellFormat","clearStyle","wrapTextEnabled","customizeExcelCell","newStyle","_getDataArray","cellsArray","cellData","cellsLength","rowsLength","getRowsCount","columns","getColumns","styleArrayIndex","getStyleId","cellStyleId","_styleArrayIndexToCellStyleIdMap","hasCustomizeExcelCell","modifiedExcelCell","_styleArray","cellDataType","excelDateValue","_excelFile","registerCellFormat","_needSheetPr","getGroupLevel","_calculateWidth","pixelsWidth","_prepareStyleData","getStyles","column","_colsArray","fonts","_prepareCellData","_cellsArray","_createXMLRelationships","xmlRelationships","_createXMLRelationship","_getWorkbookContent","_getContentTypesContent","_generateStylesXML","_zip","XML","generateNumberFormatsXml","generateFontsXml","generateFillsXml","generateCellFormatsXml","_generateStringsXML","stringIndex","stringsLength","sharedStringXml","_getPaneXML","frozenArea","getFrozenArea","_getAutoFilterXML","maxCellIndex","autoFilterEnabled","getHeaderRowCount","_getIgnoredErrorsXML","ignoreErrors","_generateWorksheetXML","colIndex","xmlCells","xmlRows","colsLength","rSpans","headerRowCount","xmlResult","_rtlEnabled","rightBottomCellRef","_generateMergingXML","mergeIndex","columnsLength","usedArea","mergeArray","mergeXML","cellMerge","getCellMerging","colspan","rowspan","mergeArrayLength","_generateCommonXML","relsFileContent","relsXML","_generateContent","_generateWorkXML","JSZip","_checkZipState","ready","isBlob","deferred","excelCreator","parseAttributes","_min","_pow","_atan2","_number","IMAGE_QUALITY","TEXT_DECORATION_LINE_WIDTH_COEFF","DEFAULT_FONT_FAMILY","DEFAULT_TEXT_COLOR","getStringFromCanvas","dataURL","toDataURL","imageData","atob","arcTo","largeArcFlag","clockwise","cBx","cBy","aB","opSide","adjSide","getElementOptions","rootAppended","rotationX","rotationY","parseStyles","drawRect","save","moveTo","lineTo","restore","drawImage","Image","globalAlpha","transformElement","clipElement","drawPath","dAttr","prevParams","prevParamsLen","dArray","bezierCurveTo","closePath","getComputedStyle","textDecorationLine","parseUrl","urlString","setFontStyle","fontParams","fontFamily","fillStyle","drawText","applyFilter","fillText","strokeElement","drawTextDecoration","measureText","fillElement","aggregateOpacity","fillOpacity","hasTspan","drawTextElement","drawElement","elementOptions","mergedOptions","widths","offsets","commonWidth","xDiff","currentOffset","parentOptions","isText","isImage","beginPath","applyGradient","gradients","createLinearGradient","addColorStop","stopColor","filterOptions","filters","shadowOffsetX","shadowOffsetY","shadowBlur","clipPaths","clip","hex2rgba","hexColor","alpha","createGradient","createFilter","asyncEach","drawCanvasElements","onDone","patterns","setLineDash","lineJoin","strokeStyle","strokeText","getPattern","patternCanvas","imageCreator","_createCanvas","patternContext","getContext","createPattern","search","drawBackground","fillRect","createInvisibleDiv","invisibleDiv","convertSvgToCanvas","getCanvasFromSvg","scaledScreenInfo","calcScaledInfo","setTransform","pixelRatio","svgElem","markupIsDomElement","newAttributes","getImageData","__parseAttributesFn","binaryData","_getBlob","_getBase64","dataArray","btoa","devicePixelRatio","svgCreator","_markup","_imageArray","_imageDeferreds","_getBinaryFile","ajax","sendRequest","responseType","_loadImages","bytes","_parseImages","_prepareImages","$svgObject","find","dataURI","regexpString","RegExp","mainPageTemplate","contentTemplate","infoTemplate","imageStartTemplate","imageEndTemplate","trailerTemplate","xrefTemplate","pad","composePdfString","imageString","widthPt","heightPt","mainPage","xref","getXref","mainContent","trailer","mainPageLength","contentLength","infoLength","getCurDate","getBase64","pdfData","_export","excel","creator","formatConverter","pdf","DxOptions","DxButton","DxTextBox","text_box_1","inputAttr","labelMode","mask","maskChar","maskInvalidMessage","maskRules","maxLength","onChange","onCopy","onCut","onEnterKey","onFocusIn","onFocusOut","onInput","onKeyDown","onKeyUp","onPaste","placeholder","showClearButton","showMaskMode","spellcheck","stylingMode","useMaskedValue","valueChangeEvent","bindingOptions","onClick","useSubmitBehavior","validationGroup","_vm","_h","$createElement","_c","_self","_v","_s","$route","campaignId","staticClass","_e","address2","dateRangeRefKey","$event","staticStyle","addDay","runTime","_f","dailyBudget","directives","rawName","expression","exchangeVoucher","removeVoucher","removeVoucherCaption","voucherCode","applyVoucher","totalBudget","euro","$options","reductionAmount","reductionExplanation","totalVat","paymentTotal","$$v","paymentMethod","buySubscription","staticRenderFns","entityNotFound","strategyNotFound","startDate","toDate","endDate","enterVoucherVisible","voucherEntered","voucherId","voucherValue","enterVoucherLinkVisible","voucherMinimumSpentAmount","vatPerc","components","$store","dispatch","console","idCustomer","AppActiveUser","uid","vatPercentage","amountVat","IdProduct","Description","PricePerUnit","Quantity","StartDate","loading","rs","created","moduleCampaignManagement","registerModule","moduleStrategyManagement","moduleSubscriptionManagement","reductionVisible","NUMBER_SERIALIZATION_FORMAT","DATE_SERIALIZATION_FORMAT","DATETIME_SERIALIZATION_FORMAT","ISO8601_PATTERN","ISO8601_TIME_PATTERN","ISO8601_PATTERN_PARTS","DATE_SERIALIZATION_PATTERN","MILLISECOND_LENGHT","dateParser","skipISO8601Parsing","parseISO8601String","parseDate","getTimePart","part","isDefaultSerializationFormat","getDateSerializationFormat","newDate","timeZoneHour","timeZoneMinute","correctYear","getIso8601Format","useUtc","forceIsoDateParsing","serializeDate","serializationFormat","toMilliseconds","getDatesInterval","intervalUnit","millisecondCount","withWeeks","dateUnitCount","maxInterval","tickIntervalToFormatMap","getQuarter","getFirstQuarterMonth","dateInterval","firstQuarterMonth","oldDate","getFirstWeekDate","fixTimezoneGap","setToDayEnd","date1","date2","counter","getTimezonesDifference","setTime","getViewFirstCellDate","viewType","createDateWithFullYear","getFirstYearInDecade","getFirstDecadeInCentury","getViewLastCellDate","getLastMonthDay","getViewMinBoundaryDate","resultDate","getViewMaxBoundaryDate","getViewUp","typeView","getViewDown","getDifferenceInMonth","difference","getDifferenceInMonthForCells","intervalString","sameDate","sameMonthAndYear","sameYear","sameDecade","startDecadeDate1","startDecadeDate2","sameCentury","startCenturyDate1","startCenturyDate2","getShortDateFormat","getFirstMonthDate","getLastMonthDate","normalizeDateByWeek","differenceInDays","dateUtils","dateInRange","normalizeDate","intervalsOverlap","firstMin","firstMax","secondMin","secondMax","dateTimeFromDecimal","roundDateByStartDayHour","startDayHour","startTime","normalizedDate","trial","roundToHour","makeDate","getDatesOfInterval","sameMonth","getMarkup","fixNamespaces","first","decodeHtmlEntities","HIDDEN_FOR_EXPORT","getSvgMarkup","getSvgElement","DOMParser","parseFromString"],"mappings":"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T,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,QAAS,KACT,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,SAAU,KACV,SAAU,KACV,QAAS,KACT,aAAc,KACd,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,SAAU,KACV,QAAS,KACT,aAAc,KACd,QAAS,KACT,SAAU,KACV,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,SAAU,KACV,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,SAAU,KACV,SAAU,KACV,SAAU,KACV,QAAS,KACT,QAAS,KACT,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,QAAS,KACT,aAAc,KACd,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,QAAS,KACT,aAAc,KACd,aAAc,KACd,cAAe,KACf,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,QAAS,KACT,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,SAAU,KACV,QAAS,KACT,QAAS,KACT,QAAS,KACT,aAAc,KACd,SAAU,KACV,QAAS,KACT,SAAU,KACV,QAAS,KACT,aAAc,KACd,SAAU,KACV,QAAS,MACT,QAAS,MACT,QAAS,MACT,aAAc,MACd,QAAS,MACT,QAAS,MACT,QAAS,MACT,aAAc,MACd,QAAS,MACT,QAAS,MACT,QAAS,MACT,aAAc,MACd,QAAS,MACT,QAAS,MACT,QAAS,MACT,QAAS,MACT,QAAS,MACT,QAAS,MACT,QAAS,MACT,QAAS,MACT,QAAS,MACT,QAAS,MACT,QAAS,MACT,QAAS,MACT,QAAS,MACT,QAAS,MACT,QAAS,MACT,QAAS,MACT,QAAS,MACT,UAAW,MACX,UAAW,MACX,UAAW,MACX,UAAW,MACXC,IAAK,MACL,UAAW,MACXC,IAAK,MACLC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJ,UAAW,MACXC,IAAK,MACL,UAAW,MACX,UAAW,MACX,UAAW,MACX,UAAW,MACXC,GAAI,MACJC,GAAI,MACJ,UAAW,MACXC,IAAK,MACLC,IAAK,MACL,UAAW,MACX,UAAW,MACX,UAAW,MACX,WAAY,MACZ,UAAW,OAER,SAASC,IACZ,OAAOhH,EAAe,OAAsBiH,U,cCnV5CC,EAAmB,KACnBC,EAA0B,CAC1BC,UAAW,yBACXC,SAAU,0BACVC,SAAU,2BACVC,UAAW,4BACX12J,Q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","file":"js/chunk-04ac1986.577721cb.js","sourcesContent":["export const notifyMixin = {\r\n methods: {\r\n\r\n notifyError (error, i18tSection) {\r\n\r\n let message = error.message ? error.message : error\r\n if (error.response) {\r\n if ((error.response.status == 404 || error.response.status == 406) && error.response.data.responseStatus) {\r\n const errorCode = error.response.data.responseStatus.errorCode.replace(\"Exception\", \"\")\r\n message = i18tSection ? this.$t(`${i18tSection}.${errorCode}`) : this.$t(errorCode)\r\n }\r\n\r\n }\r\n this.$vs.notify({\r\n title: this.$t('Error'),\r\n text: message,\r\n iconPack: 'feather',\r\n icon: 'icon-alert-circle',\r\n color: 'danger'\r\n })\r\n },\r\n notifySuccess (message) {\r\n this.$vs.notify({\r\n title: this.$t('Success'),\r\n text: message,\r\n iconPack: 'feather',\r\n icon: 'icon-check',\r\n color: 'success'\r\n })\r\n }\r\n }\r\n}","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CampaignBuySubscription.vue?vue&type=style&index=0&lang=scss&\"","/*!\n * devextreme-vue\n * Version: 21.2.5\n * Build date: Mon Jan 17 2022\n *\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\n *\n * This software may be modified and distributed under the terms\n * of the MIT license. See the LICENSE file in the root of the project for details.\n *\n * https://github.com/DevExpress/devextreme-vue\n */\n\n\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DxSliderHandle = exports.DxSize = exports.DxShutter = exports.DxSeriesTemplate = exports.DxSeriesBorder = exports.DxSeries = exports.DxSelectionStyle = exports.DxScaleLabel = exports.DxScale = exports.DxReduction = exports.DxPointSelectionStyle = exports.DxPointImage = exports.DxPointHoverStyle = exports.DxPointBorder = exports.DxPoint = exports.DxMinRange = exports.DxMinorTickInterval = exports.DxMinorTick = exports.DxMaxRange = exports.DxMarkerLabel = exports.DxMarker = exports.DxMargin = exports.DxLoadingIndicator = exports.DxLength = exports.DxLabel = exports.DxIndent = exports.DxImage = exports.DxHoverStyle = exports.DxHeight = exports.DxHatching = exports.DxFormat = exports.DxFont = exports.DxExport = exports.DxDataPrepareSettings = exports.DxConnector = exports.DxCommonSeriesSettingsSelectionStyle = exports.DxCommonSeriesSettingsLabel = exports.DxCommonSeriesSettingsHoverStyle = exports.DxCommonSeriesSettings = exports.DxChart = exports.DxBreakStyle = exports.DxBreak = exports.DxBorder = exports.DxBehavior = exports.DxBackgroundImage = exports.DxBackground = exports.DxArgumentFormat = exports.DxAggregationInterval = exports.DxAggregation = exports.DxRangeSelector = void 0;\nexports.DxWidth = exports.DxValueErrorBar = exports.DxValueAxis = exports.DxValue = exports.DxUrl = exports.DxTitle = exports.DxTickInterval = exports.DxTick = exports.DxSubtitle = exports.DxSliderMarker = void 0;\nvar range_selector_1 = __importDefault(require(\"devextreme/viz/range_selector\"));\nvar index_1 = require(\"./core/index\");\nvar index_2 = require(\"./core/index\");\nvar DxRangeSelector = index_1.createComponent({\n props: {\n background: Object,\n behavior: Object,\n chart: Object,\n containerBackgroundColor: String,\n dataSource: [Array, Object, String],\n dataSourceField: String,\n disabled: Boolean,\n elementAttr: Object,\n export: Object,\n indent: Object,\n loadingIndicator: Object,\n margin: Object,\n onDisposing: Function,\n onDrawn: Function,\n onExported: Function,\n onExporting: Function,\n onFileSaving: Function,\n onIncidentOccurred: Function,\n onInitialized: Function,\n onOptionChanged: Function,\n onValueChanged: Function,\n pathModified: Boolean,\n redrawOnResize: Boolean,\n rtlEnabled: Boolean,\n scale: Object,\n selectedRangeColor: String,\n selectedRangeUpdateMode: String,\n shutter: Object,\n size: Object,\n sliderHandle: Object,\n sliderMarker: Object,\n theme: String,\n title: [Object, String],\n value: [Array, Object]\n },\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:background\": null,\n \"update:behavior\": null,\n \"update:chart\": null,\n \"update:containerBackgroundColor\": null,\n \"update:dataSource\": null,\n \"update:dataSourceField\": null,\n \"update:disabled\": null,\n \"update:elementAttr\": null,\n \"update:export\": null,\n \"update:indent\": null,\n \"update:loadingIndicator\": null,\n \"update:margin\": null,\n \"update:onDisposing\": null,\n \"update:onDrawn\": null,\n \"update:onExported\": null,\n \"update:onExporting\": null,\n \"update:onFileSaving\": null,\n \"update:onIncidentOccurred\": null,\n \"update:onInitialized\": null,\n \"update:onOptionChanged\": null,\n \"update:onValueChanged\": null,\n \"update:pathModified\": null,\n \"update:redrawOnResize\": null,\n \"update:rtlEnabled\": null,\n \"update:scale\": null,\n \"update:selectedRangeColor\": null,\n \"update:selectedRangeUpdateMode\": null,\n \"update:shutter\": null,\n \"update:size\": null,\n \"update:sliderHandle\": null,\n \"update:sliderMarker\": null,\n \"update:theme\": null,\n \"update:title\": null,\n \"update:value\": null,\n },\n computed: {\n instance: function () {\n return this.$_instance;\n }\n },\n beforeCreate: function () {\n this.$_WidgetClass = range_selector_1.default;\n this.$_hasAsyncTemplate = true;\n this.$_expectedChildren = {\n background: { isCollectionItem: false, optionName: \"background\" },\n behavior: { isCollectionItem: false, optionName: \"behavior\" },\n chart: { isCollectionItem: false, optionName: \"chart\" },\n export: { isCollectionItem: false, optionName: \"export\" },\n indent: { isCollectionItem: false, optionName: \"indent\" },\n loadingIndicator: { isCollectionItem: false, optionName: \"loadingIndicator\" },\n margin: { isCollectionItem: false, optionName: \"margin\" },\n scale: { isCollectionItem: false, optionName: \"scale\" },\n shutter: { isCollectionItem: false, optionName: \"shutter\" },\n size: { isCollectionItem: false, optionName: \"size\" },\n sliderHandle: { isCollectionItem: false, optionName: \"sliderHandle\" },\n sliderMarker: { isCollectionItem: false, optionName: \"sliderMarker\" },\n title: { isCollectionItem: false, optionName: \"title\" },\n value: { isCollectionItem: false, optionName: \"value\" }\n };\n }\n});\nexports.DxRangeSelector = DxRangeSelector;\nvar DxAggregation = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:calculate\": null,\n \"update:enabled\": null,\n \"update:method\": null,\n },\n props: {\n calculate: Function,\n enabled: Boolean,\n method: String\n }\n});\nexports.DxAggregation = DxAggregation;\nDxAggregation.$_optionName = \"aggregation\";\nvar DxAggregationInterval = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:days\": null,\n \"update:hours\": null,\n \"update:milliseconds\": null,\n \"update:minutes\": null,\n \"update:months\": null,\n \"update:quarters\": null,\n \"update:seconds\": null,\n \"update:weeks\": null,\n \"update:years\": null,\n },\n props: {\n days: Number,\n hours: Number,\n milliseconds: Number,\n minutes: Number,\n months: Number,\n quarters: Number,\n seconds: Number,\n weeks: Number,\n years: Number\n }\n});\nexports.DxAggregationInterval = DxAggregationInterval;\nDxAggregationInterval.$_optionName = \"aggregationInterval\";\nvar DxArgumentFormat = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:currency\": null,\n \"update:formatter\": null,\n \"update:parser\": null,\n \"update:precision\": null,\n \"update:type\": null,\n },\n props: {\n currency: String,\n formatter: Function,\n parser: Function,\n precision: Number,\n type: String\n }\n});\nexports.DxArgumentFormat = DxArgumentFormat;\nDxArgumentFormat.$_optionName = \"argumentFormat\";\nvar DxBackground = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:color\": null,\n \"update:image\": null,\n \"update:visible\": null,\n },\n props: {\n color: String,\n image: Object,\n visible: Boolean\n }\n});\nexports.DxBackground = DxBackground;\nDxBackground.$_optionName = \"background\";\nDxBackground.$_expectedChildren = {\n backgroundImage: { isCollectionItem: false, optionName: \"image\" },\n image: { isCollectionItem: false, optionName: \"image\" }\n};\nvar DxBackgroundImage = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:location\": null,\n \"update:url\": null,\n },\n props: {\n location: String,\n url: String\n }\n});\nexports.DxBackgroundImage = DxBackgroundImage;\nDxBackgroundImage.$_optionName = \"image\";\nvar DxBehavior = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:allowSlidersSwap\": null,\n \"update:animationEnabled\": null,\n \"update:callValueChanged\": null,\n \"update:manualRangeSelectionEnabled\": null,\n \"update:moveSelectedRangeByClick\": null,\n \"update:snapToTicks\": null,\n },\n props: {\n allowSlidersSwap: Boolean,\n animationEnabled: Boolean,\n callValueChanged: String,\n manualRangeSelectionEnabled: Boolean,\n moveSelectedRangeByClick: Boolean,\n snapToTicks: Boolean\n }\n});\nexports.DxBehavior = DxBehavior;\nDxBehavior.$_optionName = \"behavior\";\nvar DxBorder = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:color\": null,\n \"update:dashStyle\": null,\n \"update:visible\": null,\n \"update:width\": null,\n },\n props: {\n color: String,\n dashStyle: String,\n visible: Boolean,\n width: Number\n }\n});\nexports.DxBorder = DxBorder;\nDxBorder.$_optionName = \"border\";\nvar DxBreak = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:endValue\": null,\n \"update:startValue\": null,\n },\n props: {\n endValue: {},\n startValue: {}\n }\n});\nexports.DxBreak = DxBreak;\nDxBreak.$_optionName = \"breaks\";\nDxBreak.$_isCollectionItem = true;\nvar DxBreakStyle = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:color\": null,\n \"update:line\": null,\n \"update:width\": null,\n },\n props: {\n color: String,\n line: String,\n width: Number\n }\n});\nexports.DxBreakStyle = DxBreakStyle;\nDxBreakStyle.$_optionName = \"breakStyle\";\nvar DxChart = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:barGroupPadding\": null,\n \"update:barGroupWidth\": null,\n \"update:bottomIndent\": null,\n \"update:commonSeriesSettings\": null,\n \"update:dataPrepareSettings\": null,\n \"update:maxBubbleSize\": null,\n \"update:minBubbleSize\": null,\n \"update:negativesAsZeroes\": null,\n \"update:palette\": null,\n \"update:paletteExtensionMode\": null,\n \"update:series\": null,\n \"update:seriesTemplate\": null,\n \"update:topIndent\": null,\n \"update:valueAxis\": null,\n },\n props: {\n barGroupPadding: Number,\n barGroupWidth: Number,\n bottomIndent: Number,\n commonSeriesSettings: Object,\n dataPrepareSettings: Object,\n maxBubbleSize: Number,\n minBubbleSize: Number,\n negativesAsZeroes: Boolean,\n palette: [Array, String],\n paletteExtensionMode: String,\n series: [Array, Object],\n seriesTemplate: Object,\n topIndent: Number,\n valueAxis: Object\n }\n});\nexports.DxChart = DxChart;\nDxChart.$_optionName = \"chart\";\nDxChart.$_expectedChildren = {\n commonSeriesSettings: { isCollectionItem: false, optionName: \"commonSeriesSettings\" },\n dataPrepareSettings: { isCollectionItem: false, optionName: \"dataPrepareSettings\" },\n series: { isCollectionItem: true, optionName: \"series\" },\n seriesTemplate: { isCollectionItem: false, optionName: \"seriesTemplate\" },\n valueAxis: { isCollectionItem: false, optionName: \"valueAxis\" }\n};\nvar DxCommonSeriesSettings = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:aggregation\": null,\n \"update:area\": null,\n \"update:argumentField\": null,\n \"update:axis\": null,\n \"update:bar\": null,\n \"update:barOverlapGroup\": null,\n \"update:barPadding\": null,\n \"update:barWidth\": null,\n \"update:border\": null,\n \"update:bubble\": null,\n \"update:candlestick\": null,\n \"update:closeValueField\": null,\n \"update:color\": null,\n \"update:cornerRadius\": null,\n \"update:dashStyle\": null,\n \"update:fullstackedarea\": null,\n \"update:fullstackedbar\": null,\n \"update:fullstackedline\": null,\n \"update:fullstackedspline\": null,\n \"update:fullstackedsplinearea\": null,\n \"update:highValueField\": null,\n \"update:hoverMode\": null,\n \"update:hoverStyle\": null,\n \"update:ignoreEmptyPoints\": null,\n \"update:innerColor\": null,\n \"update:label\": null,\n \"update:line\": null,\n \"update:lowValueField\": null,\n \"update:maxLabelCount\": null,\n \"update:minBarSize\": null,\n \"update:opacity\": null,\n \"update:openValueField\": null,\n \"update:pane\": null,\n \"update:point\": null,\n \"update:rangearea\": null,\n \"update:rangebar\": null,\n \"update:rangeValue1Field\": null,\n \"update:rangeValue2Field\": null,\n \"update:reduction\": null,\n \"update:scatter\": null,\n \"update:selectionMode\": null,\n \"update:selectionStyle\": null,\n \"update:showInLegend\": null,\n \"update:sizeField\": null,\n \"update:spline\": null,\n \"update:splinearea\": null,\n \"update:stack\": null,\n \"update:stackedarea\": null,\n \"update:stackedbar\": null,\n \"update:stackedline\": null,\n \"update:stackedspline\": null,\n \"update:stackedsplinearea\": null,\n \"update:steparea\": null,\n \"update:stepline\": null,\n \"update:stock\": null,\n \"update:tagField\": null,\n \"update:type\": null,\n \"update:valueErrorBar\": null,\n \"update:valueField\": null,\n \"update:visible\": null,\n \"update:width\": null,\n },\n props: {\n aggregation: Object,\n area: {},\n argumentField: String,\n axis: String,\n bar: {},\n barOverlapGroup: String,\n barPadding: Number,\n barWidth: Number,\n border: Object,\n bubble: {},\n candlestick: {},\n closeValueField: String,\n color: String,\n cornerRadius: Number,\n dashStyle: String,\n fullstackedarea: {},\n fullstackedbar: {},\n fullstackedline: {},\n fullstackedspline: {},\n fullstackedsplinearea: {},\n highValueField: String,\n hoverMode: String,\n hoverStyle: Object,\n ignoreEmptyPoints: Boolean,\n innerColor: String,\n label: Object,\n line: {},\n lowValueField: String,\n maxLabelCount: Number,\n minBarSize: Number,\n opacity: Number,\n openValueField: String,\n pane: String,\n point: Object,\n rangearea: {},\n rangebar: {},\n rangeValue1Field: String,\n rangeValue2Field: String,\n reduction: Object,\n scatter: {},\n selectionMode: String,\n selectionStyle: Object,\n showInLegend: Boolean,\n sizeField: String,\n spline: {},\n splinearea: {},\n stack: String,\n stackedarea: {},\n stackedbar: {},\n stackedline: {},\n stackedspline: {},\n stackedsplinearea: {},\n steparea: {},\n stepline: {},\n stock: {},\n tagField: String,\n type: String,\n valueErrorBar: Object,\n valueField: String,\n visible: Boolean,\n width: Number\n }\n});\nexports.DxCommonSeriesSettings = DxCommonSeriesSettings;\nDxCommonSeriesSettings.$_optionName = \"commonSeriesSettings\";\nDxCommonSeriesSettings.$_expectedChildren = {\n aggregation: { isCollectionItem: false, optionName: \"aggregation\" },\n border: { isCollectionItem: false, optionName: \"border\" },\n commonSeriesSettingsHoverStyle: { isCollectionItem: false, optionName: \"hoverStyle\" },\n commonSeriesSettingsLabel: { isCollectionItem: false, optionName: \"label\" },\n commonSeriesSettingsSelectionStyle: { isCollectionItem: false, optionName: \"selectionStyle\" },\n hoverStyle: { isCollectionItem: false, optionName: \"hoverStyle\" },\n label: { isCollectionItem: false, optionName: \"label\" },\n point: { isCollectionItem: false, optionName: \"point\" },\n reduction: { isCollectionItem: false, optionName: \"reduction\" },\n selectionStyle: { isCollectionItem: false, optionName: \"selectionStyle\" },\n seriesBorder: { isCollectionItem: false, optionName: \"border\" },\n valueErrorBar: { isCollectionItem: false, optionName: \"valueErrorBar\" }\n};\nvar DxCommonSeriesSettingsHoverStyle = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:border\": null,\n \"update:color\": null,\n \"update:dashStyle\": null,\n \"update:hatching\": null,\n \"update:width\": null,\n },\n props: {\n border: Object,\n color: String,\n dashStyle: String,\n hatching: Object,\n width: Number\n }\n});\nexports.DxCommonSeriesSettingsHoverStyle = DxCommonSeriesSettingsHoverStyle;\nDxCommonSeriesSettingsHoverStyle.$_optionName = \"hoverStyle\";\nDxCommonSeriesSettingsHoverStyle.$_expectedChildren = {\n border: { isCollectionItem: false, optionName: \"border\" },\n hatching: { isCollectionItem: false, optionName: \"hatching\" },\n seriesBorder: { isCollectionItem: false, optionName: \"border\" }\n};\nvar DxCommonSeriesSettingsLabel = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:alignment\": null,\n \"update:argumentFormat\": null,\n \"update:backgroundColor\": null,\n \"update:border\": null,\n \"update:connector\": null,\n \"update:customizeText\": null,\n \"update:font\": null,\n \"update:format\": null,\n \"update:horizontalOffset\": null,\n \"update:position\": null,\n \"update:rotationAngle\": null,\n \"update:showForZeroValues\": null,\n \"update:verticalOffset\": null,\n \"update:visible\": null,\n },\n props: {\n alignment: String,\n argumentFormat: [Object, Function, String],\n backgroundColor: String,\n border: Object,\n connector: Object,\n customizeText: Function,\n font: Object,\n format: [Object, Function, String],\n horizontalOffset: Number,\n position: String,\n rotationAngle: Number,\n showForZeroValues: Boolean,\n verticalOffset: Number,\n visible: Boolean\n }\n});\nexports.DxCommonSeriesSettingsLabel = DxCommonSeriesSettingsLabel;\nDxCommonSeriesSettingsLabel.$_optionName = \"label\";\nDxCommonSeriesSettingsLabel.$_expectedChildren = {\n argumentFormat: { isCollectionItem: false, optionName: \"argumentFormat\" },\n border: { isCollectionItem: false, optionName: \"border\" },\n connector: { isCollectionItem: false, optionName: \"connector\" },\n font: { isCollectionItem: false, optionName: \"font\" },\n format: { isCollectionItem: false, optionName: \"format\" },\n seriesBorder: { isCollectionItem: false, optionName: \"border\" }\n};\nvar DxCommonSeriesSettingsSelectionStyle = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:border\": null,\n \"update:color\": null,\n \"update:dashStyle\": null,\n \"update:hatching\": null,\n \"update:width\": null,\n },\n props: {\n border: Object,\n color: String,\n dashStyle: String,\n hatching: Object,\n width: Number\n }\n});\nexports.DxCommonSeriesSettingsSelectionStyle = DxCommonSeriesSettingsSelectionStyle;\nDxCommonSeriesSettingsSelectionStyle.$_optionName = \"selectionStyle\";\nDxCommonSeriesSettingsSelectionStyle.$_expectedChildren = {\n border: { isCollectionItem: false, optionName: \"border\" },\n hatching: { isCollectionItem: false, optionName: \"hatching\" },\n seriesBorder: { isCollectionItem: false, optionName: \"border\" }\n};\nvar DxConnector = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:color\": null,\n \"update:visible\": null,\n \"update:width\": null,\n },\n props: {\n color: String,\n visible: Boolean,\n width: Number\n }\n});\nexports.DxConnector = DxConnector;\nDxConnector.$_optionName = \"connector\";\nvar DxDataPrepareSettings = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:checkTypeForAllData\": null,\n \"update:convertToAxisDataType\": null,\n \"update:sortingMethod\": null,\n },\n props: {\n checkTypeForAllData: Boolean,\n convertToAxisDataType: Boolean,\n sortingMethod: [Boolean, Function]\n }\n});\nexports.DxDataPrepareSettings = DxDataPrepareSettings;\nDxDataPrepareSettings.$_optionName = \"dataPrepareSettings\";\nvar DxExport = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:backgroundColor\": null,\n \"update:enabled\": null,\n \"update:fileName\": null,\n \"update:formats\": null,\n \"update:margin\": null,\n \"update:printingEnabled\": null,\n \"update:proxyUrl\": null,\n \"update:svgToCanvas\": null,\n },\n props: {\n backgroundColor: String,\n enabled: Boolean,\n fileName: String,\n formats: Array,\n margin: Number,\n printingEnabled: Boolean,\n proxyUrl: String,\n svgToCanvas: Function\n }\n});\nexports.DxExport = DxExport;\nDxExport.$_optionName = \"export\";\nvar DxFont = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:color\": null,\n \"update:family\": null,\n \"update:opacity\": null,\n \"update:size\": null,\n \"update:weight\": null,\n },\n props: {\n color: String,\n family: String,\n opacity: Number,\n size: [Number, String],\n weight: Number\n }\n});\nexports.DxFont = DxFont;\nDxFont.$_optionName = \"font\";\nvar DxFormat = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:currency\": null,\n \"update:formatter\": null,\n \"update:parser\": null,\n \"update:precision\": null,\n \"update:type\": null,\n },\n props: {\n currency: String,\n formatter: Function,\n parser: Function,\n precision: Number,\n type: String\n }\n});\nexports.DxFormat = DxFormat;\nDxFormat.$_optionName = \"format\";\nvar DxHatching = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:direction\": null,\n \"update:opacity\": null,\n \"update:step\": null,\n \"update:width\": null,\n },\n props: {\n direction: String,\n opacity: Number,\n step: Number,\n width: Number\n }\n});\nexports.DxHatching = DxHatching;\nDxHatching.$_optionName = \"hatching\";\nvar DxHeight = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:rangeMaxPoint\": null,\n \"update:rangeMinPoint\": null,\n },\n props: {\n rangeMaxPoint: Number,\n rangeMinPoint: Number\n }\n});\nexports.DxHeight = DxHeight;\nDxHeight.$_optionName = \"height\";\nvar DxHoverStyle = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:border\": null,\n \"update:color\": null,\n \"update:dashStyle\": null,\n \"update:hatching\": null,\n \"update:size\": null,\n \"update:width\": null,\n },\n props: {\n border: Object,\n color: String,\n dashStyle: String,\n hatching: Object,\n size: Number,\n width: Number\n }\n});\nexports.DxHoverStyle = DxHoverStyle;\nDxHoverStyle.$_optionName = \"hoverStyle\";\nvar DxImage = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:height\": null,\n \"update:location\": null,\n \"update:url\": null,\n \"update:width\": null,\n },\n props: {\n height: [Number, Object],\n location: String,\n url: String,\n width: [Number, Object]\n }\n});\nexports.DxImage = DxImage;\nDxImage.$_optionName = \"image\";\nvar DxIndent = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:left\": null,\n \"update:right\": null,\n },\n props: {\n left: Number,\n right: Number\n }\n});\nexports.DxIndent = DxIndent;\nDxIndent.$_optionName = \"indent\";\nvar DxLabel = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:alignment\": null,\n \"update:argumentFormat\": null,\n \"update:backgroundColor\": null,\n \"update:border\": null,\n \"update:connector\": null,\n \"update:customizeText\": null,\n \"update:font\": null,\n \"update:format\": null,\n \"update:horizontalOffset\": null,\n \"update:overlappingBehavior\": null,\n \"update:position\": null,\n \"update:rotationAngle\": null,\n \"update:showForZeroValues\": null,\n \"update:topIndent\": null,\n \"update:verticalOffset\": null,\n \"update:visible\": null,\n },\n props: {\n alignment: String,\n argumentFormat: [Object, Function, String],\n backgroundColor: String,\n border: Object,\n connector: Object,\n customizeText: Function,\n font: Object,\n format: [Object, Function, String],\n horizontalOffset: Number,\n overlappingBehavior: String,\n position: String,\n rotationAngle: Number,\n showForZeroValues: Boolean,\n topIndent: Number,\n verticalOffset: Number,\n visible: Boolean\n }\n});\nexports.DxLabel = DxLabel;\nDxLabel.$_optionName = \"label\";\nvar DxLength = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:days\": null,\n \"update:hours\": null,\n \"update:milliseconds\": null,\n \"update:minutes\": null,\n \"update:months\": null,\n \"update:quarters\": null,\n \"update:seconds\": null,\n \"update:weeks\": null,\n \"update:years\": null,\n },\n props: {\n days: Number,\n hours: Number,\n milliseconds: Number,\n minutes: Number,\n months: Number,\n quarters: Number,\n seconds: Number,\n weeks: Number,\n years: Number\n }\n});\nexports.DxLength = DxLength;\nDxLength.$_optionName = \"length\";\nvar DxLoadingIndicator = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:backgroundColor\": null,\n \"update:enabled\": null,\n \"update:font\": null,\n \"update:show\": null,\n \"update:text\": null,\n },\n props: {\n backgroundColor: String,\n enabled: Boolean,\n font: Object,\n show: Boolean,\n text: String\n }\n});\nexports.DxLoadingIndicator = DxLoadingIndicator;\nDxLoadingIndicator.$_optionName = \"loadingIndicator\";\nDxLoadingIndicator.$_expectedChildren = {\n font: { isCollectionItem: false, optionName: \"font\" }\n};\nvar DxMargin = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:bottom\": null,\n \"update:left\": null,\n \"update:right\": null,\n \"update:top\": null,\n },\n props: {\n bottom: Number,\n left: Number,\n right: Number,\n top: Number\n }\n});\nexports.DxMargin = DxMargin;\nDxMargin.$_optionName = \"margin\";\nvar DxMarker = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:label\": null,\n \"update:separatorHeight\": null,\n \"update:textLeftIndent\": null,\n \"update:textTopIndent\": null,\n \"update:topIndent\": null,\n \"update:visible\": null,\n },\n props: {\n label: Object,\n separatorHeight: Number,\n textLeftIndent: Number,\n textTopIndent: Number,\n topIndent: Number,\n visible: Boolean\n }\n});\nexports.DxMarker = DxMarker;\nDxMarker.$_optionName = \"marker\";\nDxMarker.$_expectedChildren = {\n label: { isCollectionItem: false, optionName: \"label\" },\n markerLabel: { isCollectionItem: false, optionName: \"label\" }\n};\nvar DxMarkerLabel = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:customizeText\": null,\n \"update:format\": null,\n },\n props: {\n customizeText: Function,\n format: [Object, Function, String]\n }\n});\nexports.DxMarkerLabel = DxMarkerLabel;\nDxMarkerLabel.$_optionName = \"label\";\nDxMarkerLabel.$_expectedChildren = {\n format: { isCollectionItem: false, optionName: \"format\" }\n};\nvar DxMaxRange = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:days\": null,\n \"update:hours\": null,\n \"update:milliseconds\": null,\n \"update:minutes\": null,\n \"update:months\": null,\n \"update:quarters\": null,\n \"update:seconds\": null,\n \"update:weeks\": null,\n \"update:years\": null,\n },\n props: {\n days: Number,\n hours: Number,\n milliseconds: Number,\n minutes: Number,\n months: Number,\n quarters: Number,\n seconds: Number,\n weeks: Number,\n years: Number\n }\n});\nexports.DxMaxRange = DxMaxRange;\nDxMaxRange.$_optionName = \"maxRange\";\nvar DxMinorTick = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:color\": null,\n \"update:opacity\": null,\n \"update:visible\": null,\n \"update:width\": null,\n },\n props: {\n color: String,\n opacity: Number,\n visible: Boolean,\n width: Number\n }\n});\nexports.DxMinorTick = DxMinorTick;\nDxMinorTick.$_optionName = \"minorTick\";\nvar DxMinorTickInterval = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:days\": null,\n \"update:hours\": null,\n \"update:milliseconds\": null,\n \"update:minutes\": null,\n \"update:months\": null,\n \"update:quarters\": null,\n \"update:seconds\": null,\n \"update:weeks\": null,\n \"update:years\": null,\n },\n props: {\n days: Number,\n hours: Number,\n milliseconds: Number,\n minutes: Number,\n months: Number,\n quarters: Number,\n seconds: Number,\n weeks: Number,\n years: Number\n }\n});\nexports.DxMinorTickInterval = DxMinorTickInterval;\nDxMinorTickInterval.$_optionName = \"minorTickInterval\";\nvar DxMinRange = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:days\": null,\n \"update:hours\": null,\n \"update:milliseconds\": null,\n \"update:minutes\": null,\n \"update:months\": null,\n \"update:quarters\": null,\n \"update:seconds\": null,\n \"update:weeks\": null,\n \"update:years\": null,\n },\n props: {\n days: Number,\n hours: Number,\n milliseconds: Number,\n minutes: Number,\n months: Number,\n quarters: Number,\n seconds: Number,\n weeks: Number,\n years: Number\n }\n});\nexports.DxMinRange = DxMinRange;\nDxMinRange.$_optionName = \"minRange\";\nvar DxPoint = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:border\": null,\n \"update:color\": null,\n \"update:hoverMode\": null,\n \"update:hoverStyle\": null,\n \"update:image\": null,\n \"update:selectionMode\": null,\n \"update:selectionStyle\": null,\n \"update:size\": null,\n \"update:symbol\": null,\n \"update:visible\": null,\n },\n props: {\n border: Object,\n color: String,\n hoverMode: String,\n hoverStyle: Object,\n image: [Object, String],\n selectionMode: String,\n selectionStyle: Object,\n size: Number,\n symbol: String,\n visible: Boolean\n }\n});\nexports.DxPoint = DxPoint;\nDxPoint.$_optionName = \"point\";\nDxPoint.$_expectedChildren = {\n border: { isCollectionItem: false, optionName: \"border\" },\n hoverStyle: { isCollectionItem: false, optionName: \"hoverStyle\" },\n image: { isCollectionItem: false, optionName: \"image\" },\n pointBorder: { isCollectionItem: false, optionName: \"border\" },\n pointHoverStyle: { isCollectionItem: false, optionName: \"hoverStyle\" },\n pointImage: { isCollectionItem: false, optionName: \"image\" },\n pointSelectionStyle: { isCollectionItem: false, optionName: \"selectionStyle\" },\n selectionStyle: { isCollectionItem: false, optionName: \"selectionStyle\" }\n};\nvar DxPointBorder = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:color\": null,\n \"update:visible\": null,\n \"update:width\": null,\n },\n props: {\n color: String,\n visible: Boolean,\n width: Number\n }\n});\nexports.DxPointBorder = DxPointBorder;\nDxPointBorder.$_optionName = \"border\";\nvar DxPointHoverStyle = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:border\": null,\n \"update:color\": null,\n \"update:size\": null,\n },\n props: {\n border: Object,\n color: String,\n size: Number\n }\n});\nexports.DxPointHoverStyle = DxPointHoverStyle;\nDxPointHoverStyle.$_optionName = \"hoverStyle\";\nDxPointHoverStyle.$_expectedChildren = {\n border: { isCollectionItem: false, optionName: \"border\" },\n pointBorder: { isCollectionItem: false, optionName: \"border\" }\n};\nvar DxPointImage = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:height\": null,\n \"update:url\": null,\n \"update:width\": null,\n },\n props: {\n height: [Number, Object],\n url: [Object, String],\n width: [Number, Object]\n }\n});\nexports.DxPointImage = DxPointImage;\nDxPointImage.$_optionName = \"image\";\nDxPointImage.$_expectedChildren = {\n height: { isCollectionItem: false, optionName: \"height\" },\n url: { isCollectionItem: false, optionName: \"url\" },\n width: { isCollectionItem: false, optionName: \"width\" }\n};\nvar DxPointSelectionStyle = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:border\": null,\n \"update:color\": null,\n \"update:size\": null,\n },\n props: {\n border: Object,\n color: String,\n size: Number\n }\n});\nexports.DxPointSelectionStyle = DxPointSelectionStyle;\nDxPointSelectionStyle.$_optionName = \"selectionStyle\";\nDxPointSelectionStyle.$_expectedChildren = {\n border: { isCollectionItem: false, optionName: \"border\" },\n pointBorder: { isCollectionItem: false, optionName: \"border\" }\n};\nvar DxReduction = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:color\": null,\n \"update:level\": null,\n },\n props: {\n color: String,\n level: String\n }\n});\nexports.DxReduction = DxReduction;\nDxReduction.$_optionName = \"reduction\";\nvar DxScale = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:aggregateByCategory\": null,\n \"update:aggregationGroupWidth\": null,\n \"update:aggregationInterval\": null,\n \"update:allowDecimals\": null,\n \"update:breaks\": null,\n \"update:breakStyle\": null,\n \"update:categories\": null,\n \"update:endOnTick\": null,\n \"update:endValue\": null,\n \"update:holidays\": null,\n \"update:label\": null,\n \"update:linearThreshold\": null,\n \"update:logarithmBase\": null,\n \"update:marker\": null,\n \"update:maxRange\": null,\n \"update:minorTick\": null,\n \"update:minorTickCount\": null,\n \"update:minorTickInterval\": null,\n \"update:minRange\": null,\n \"update:placeholderHeight\": null,\n \"update:showCustomBoundaryTicks\": null,\n \"update:singleWorkdays\": null,\n \"update:startValue\": null,\n \"update:tick\": null,\n \"update:tickInterval\": null,\n \"update:type\": null,\n \"update:valueType\": null,\n \"update:workdaysOnly\": null,\n \"update:workWeek\": null,\n },\n props: {\n aggregateByCategory: Boolean,\n aggregationGroupWidth: Number,\n aggregationInterval: [Number, Object, String],\n allowDecimals: Boolean,\n breaks: Array,\n breakStyle: Object,\n categories: Array,\n endOnTick: Boolean,\n endValue: {},\n holidays: Array,\n label: Object,\n linearThreshold: Number,\n logarithmBase: Number,\n marker: Object,\n maxRange: [Number, Object, String],\n minorTick: Object,\n minorTickCount: Number,\n minorTickInterval: [Number, Object, String],\n minRange: [Number, Object, String],\n placeholderHeight: Number,\n showCustomBoundaryTicks: Boolean,\n singleWorkdays: Array,\n startValue: {},\n tick: Object,\n tickInterval: [Number, Object, String],\n type: String,\n valueType: String,\n workdaysOnly: Boolean,\n workWeek: Array\n }\n});\nexports.DxScale = DxScale;\nDxScale.$_optionName = \"scale\";\nDxScale.$_expectedChildren = {\n aggregationInterval: { isCollectionItem: false, optionName: \"aggregationInterval\" },\n break: { isCollectionItem: true, optionName: \"breaks\" },\n breakStyle: { isCollectionItem: false, optionName: \"breakStyle\" },\n label: { isCollectionItem: false, optionName: \"label\" },\n marker: { isCollectionItem: false, optionName: \"marker\" },\n maxRange: { isCollectionItem: false, optionName: \"maxRange\" },\n minorTick: { isCollectionItem: false, optionName: \"minorTick\" },\n minorTickInterval: { isCollectionItem: false, optionName: \"minorTickInterval\" },\n minRange: { isCollectionItem: false, optionName: \"minRange\" },\n scaleLabel: { isCollectionItem: false, optionName: \"label\" },\n tick: { isCollectionItem: false, optionName: \"tick\" },\n tickInterval: { isCollectionItem: false, optionName: \"tickInterval\" }\n};\nvar DxScaleLabel = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:customizeText\": null,\n \"update:font\": null,\n \"update:format\": null,\n \"update:overlappingBehavior\": null,\n \"update:topIndent\": null,\n \"update:visible\": null,\n },\n props: {\n customizeText: Function,\n font: Object,\n format: [Object, Function, String],\n overlappingBehavior: String,\n topIndent: Number,\n visible: Boolean\n }\n});\nexports.DxScaleLabel = DxScaleLabel;\nDxScaleLabel.$_optionName = \"label\";\nDxScaleLabel.$_expectedChildren = {\n font: { isCollectionItem: false, optionName: \"font\" },\n format: { isCollectionItem: false, optionName: \"format\" }\n};\nvar DxSelectionStyle = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:border\": null,\n \"update:color\": null,\n \"update:dashStyle\": null,\n \"update:hatching\": null,\n \"update:size\": null,\n \"update:width\": null,\n },\n props: {\n border: Object,\n color: String,\n dashStyle: String,\n hatching: Object,\n size: Number,\n width: Number\n }\n});\nexports.DxSelectionStyle = DxSelectionStyle;\nDxSelectionStyle.$_optionName = \"selectionStyle\";\nvar DxSeries = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:aggregation\": null,\n \"update:argumentField\": null,\n \"update:axis\": null,\n \"update:barOverlapGroup\": null,\n \"update:barPadding\": null,\n \"update:barWidth\": null,\n \"update:border\": null,\n \"update:closeValueField\": null,\n \"update:color\": null,\n \"update:cornerRadius\": null,\n \"update:dashStyle\": null,\n \"update:highValueField\": null,\n \"update:hoverMode\": null,\n \"update:hoverStyle\": null,\n \"update:ignoreEmptyPoints\": null,\n \"update:innerColor\": null,\n \"update:label\": null,\n \"update:lowValueField\": null,\n \"update:maxLabelCount\": null,\n \"update:minBarSize\": null,\n \"update:name\": null,\n \"update:opacity\": null,\n \"update:openValueField\": null,\n \"update:pane\": null,\n \"update:point\": null,\n \"update:rangeValue1Field\": null,\n \"update:rangeValue2Field\": null,\n \"update:reduction\": null,\n \"update:selectionMode\": null,\n \"update:selectionStyle\": null,\n \"update:showInLegend\": null,\n \"update:sizeField\": null,\n \"update:stack\": null,\n \"update:tag\": null,\n \"update:tagField\": null,\n \"update:type\": null,\n \"update:valueErrorBar\": null,\n \"update:valueField\": null,\n \"update:visible\": null,\n \"update:width\": null,\n },\n props: {\n aggregation: Object,\n argumentField: String,\n axis: String,\n barOverlapGroup: String,\n barPadding: Number,\n barWidth: Number,\n border: Object,\n closeValueField: String,\n color: String,\n cornerRadius: Number,\n dashStyle: String,\n highValueField: String,\n hoverMode: String,\n hoverStyle: Object,\n ignoreEmptyPoints: Boolean,\n innerColor: String,\n label: Object,\n lowValueField: String,\n maxLabelCount: Number,\n minBarSize: Number,\n name: String,\n opacity: Number,\n openValueField: String,\n pane: String,\n point: Object,\n rangeValue1Field: String,\n rangeValue2Field: String,\n reduction: Object,\n selectionMode: String,\n selectionStyle: Object,\n showInLegend: Boolean,\n sizeField: String,\n stack: String,\n tag: {},\n tagField: String,\n type: String,\n valueErrorBar: Object,\n valueField: String,\n visible: Boolean,\n width: Number\n }\n});\nexports.DxSeries = DxSeries;\nDxSeries.$_optionName = \"series\";\nDxSeries.$_isCollectionItem = true;\nvar DxSeriesBorder = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:color\": null,\n \"update:dashStyle\": null,\n \"update:visible\": null,\n \"update:width\": null,\n },\n props: {\n color: String,\n dashStyle: String,\n visible: Boolean,\n width: Number\n }\n});\nexports.DxSeriesBorder = DxSeriesBorder;\nDxSeriesBorder.$_optionName = \"border\";\nvar DxSeriesTemplate = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:customizeSeries\": null,\n \"update:nameField\": null,\n },\n props: {\n customizeSeries: Function,\n nameField: String\n }\n});\nexports.DxSeriesTemplate = DxSeriesTemplate;\nDxSeriesTemplate.$_optionName = \"seriesTemplate\";\nvar DxShutter = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:color\": null,\n \"update:opacity\": null,\n },\n props: {\n color: String,\n opacity: Number\n }\n});\nexports.DxShutter = DxShutter;\nDxShutter.$_optionName = \"shutter\";\nvar DxSize = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:height\": null,\n \"update:width\": null,\n },\n props: {\n height: Number,\n width: Number\n }\n});\nexports.DxSize = DxSize;\nDxSize.$_optionName = \"size\";\nvar DxSliderHandle = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:color\": null,\n \"update:opacity\": null,\n \"update:width\": null,\n },\n props: {\n color: String,\n opacity: Number,\n width: Number\n }\n});\nexports.DxSliderHandle = DxSliderHandle;\nDxSliderHandle.$_optionName = \"sliderHandle\";\nvar DxSliderMarker = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:color\": null,\n \"update:customizeText\": null,\n \"update:font\": null,\n \"update:format\": null,\n \"update:invalidRangeColor\": null,\n \"update:paddingLeftRight\": null,\n \"update:paddingTopBottom\": null,\n \"update:placeholderHeight\": null,\n \"update:visible\": null,\n },\n props: {\n color: String,\n customizeText: Function,\n font: Object,\n format: [Object, Function, String],\n invalidRangeColor: String,\n paddingLeftRight: Number,\n paddingTopBottom: Number,\n placeholderHeight: Number,\n visible: Boolean\n }\n});\nexports.DxSliderMarker = DxSliderMarker;\nDxSliderMarker.$_optionName = \"sliderMarker\";\nDxSliderMarker.$_expectedChildren = {\n font: { isCollectionItem: false, optionName: \"font\" },\n format: { isCollectionItem: false, optionName: \"format\" }\n};\nvar DxSubtitle = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:font\": null,\n \"update:offset\": null,\n \"update:text\": null,\n \"update:textOverflow\": null,\n \"update:wordWrap\": null,\n },\n props: {\n font: Object,\n offset: Number,\n text: String,\n textOverflow: String,\n wordWrap: String\n }\n});\nexports.DxSubtitle = DxSubtitle;\nDxSubtitle.$_optionName = \"subtitle\";\nDxSubtitle.$_expectedChildren = {\n font: { isCollectionItem: false, optionName: \"font\" }\n};\nvar DxTick = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:color\": null,\n \"update:opacity\": null,\n \"update:width\": null,\n },\n props: {\n color: String,\n opacity: Number,\n width: Number\n }\n});\nexports.DxTick = DxTick;\nDxTick.$_optionName = \"tick\";\nvar DxTickInterval = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:days\": null,\n \"update:hours\": null,\n \"update:milliseconds\": null,\n \"update:minutes\": null,\n \"update:months\": null,\n \"update:quarters\": null,\n \"update:seconds\": null,\n \"update:weeks\": null,\n \"update:years\": null,\n },\n props: {\n days: Number,\n hours: Number,\n milliseconds: Number,\n minutes: Number,\n months: Number,\n quarters: Number,\n seconds: Number,\n weeks: Number,\n years: Number\n }\n});\nexports.DxTickInterval = DxTickInterval;\nDxTickInterval.$_optionName = \"tickInterval\";\nvar DxTitle = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:font\": null,\n \"update:horizontalAlignment\": null,\n \"update:margin\": null,\n \"update:placeholderSize\": null,\n \"update:subtitle\": null,\n \"update:text\": null,\n \"update:textOverflow\": null,\n \"update:verticalAlignment\": null,\n \"update:wordWrap\": null,\n },\n props: {\n font: Object,\n horizontalAlignment: String,\n margin: [Number, Object],\n placeholderSize: Number,\n subtitle: [Object, String],\n text: String,\n textOverflow: String,\n verticalAlignment: String,\n wordWrap: String\n }\n});\nexports.DxTitle = DxTitle;\nDxTitle.$_optionName = \"title\";\nDxTitle.$_expectedChildren = {\n font: { isCollectionItem: false, optionName: \"font\" },\n margin: { isCollectionItem: false, optionName: \"margin\" },\n subtitle: { isCollectionItem: false, optionName: \"subtitle\" }\n};\nvar DxUrl = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:rangeMaxPoint\": null,\n \"update:rangeMinPoint\": null,\n },\n props: {\n rangeMaxPoint: String,\n rangeMinPoint: String\n }\n});\nexports.DxUrl = DxUrl;\nDxUrl.$_optionName = \"url\";\nvar DxValue = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:endValue\": null,\n \"update:length\": null,\n \"update:startValue\": null,\n },\n props: {\n endValue: {},\n length: [Number, Object, String],\n startValue: {}\n }\n});\nexports.DxValue = DxValue;\nDxValue.$_optionName = \"value\";\nDxValue.$_expectedChildren = {\n length: { isCollectionItem: false, optionName: \"length\" }\n};\nvar DxValueAxis = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:inverted\": null,\n \"update:logarithmBase\": null,\n \"update:max\": null,\n \"update:min\": null,\n \"update:type\": null,\n \"update:valueType\": null,\n },\n props: {\n inverted: Boolean,\n logarithmBase: Number,\n max: Number,\n min: Number,\n type: String,\n valueType: String\n }\n});\nexports.DxValueAxis = DxValueAxis;\nDxValueAxis.$_optionName = \"valueAxis\";\nvar DxValueErrorBar = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:color\": null,\n \"update:displayMode\": null,\n \"update:edgeLength\": null,\n \"update:highValueField\": null,\n \"update:lineWidth\": null,\n \"update:lowValueField\": null,\n \"update:opacity\": null,\n \"update:type\": null,\n \"update:value\": null,\n },\n props: {\n color: String,\n displayMode: String,\n edgeLength: Number,\n highValueField: String,\n lineWidth: Number,\n lowValueField: String,\n opacity: Number,\n type: String,\n value: Number\n }\n});\nexports.DxValueErrorBar = DxValueErrorBar;\nDxValueErrorBar.$_optionName = \"valueErrorBar\";\nvar DxWidth = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:rangeMaxPoint\": null,\n \"update:rangeMinPoint\": null,\n },\n props: {\n rangeMaxPoint: Number,\n rangeMinPoint: Number\n }\n});\nexports.DxWidth = DxWidth;\nDxWidth.$_optionName = \"width\";\nexports.default = DxRangeSelector;\n","/**\r\n * DevExtreme (esm/ui/popover/ui.popover.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n getWidth,\r\n setWidth,\r\n getHeight,\r\n setHeight\r\n} from \"../../core/utils/size\";\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n move\r\n} from \"../../animation/translator\";\r\nimport positionUtils from \"../../animation/position\";\r\nimport {\r\n isObject,\r\n isString\r\n} from \"../../core/utils/type\";\r\nimport {\r\n fitIntoRange\r\n} from \"../../core/utils/math\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport Popup from \"../popup\";\r\nimport {\r\n getBoundingRect\r\n} from \"../../core/utils/position\";\r\nimport {\r\n PopoverPositionController,\r\n POPOVER_POSITION_ALIASES\r\n} from \"./popover_position_controller\";\r\nvar POPOVER_CLASS = \"dx-popover\";\r\nvar POPOVER_WRAPPER_CLASS = \"dx-popover-wrapper\";\r\nvar POPOVER_ARROW_CLASS = \"dx-popover-arrow\";\r\nvar POPOVER_WITHOUT_TITLE_CLASS = \"dx-popover-without-title\";\r\nvar POSITION_FLIP_MAP = {\r\n left: \"right\",\r\n top: \"bottom\",\r\n right: \"left\",\r\n bottom: \"top\",\r\n center: \"center\"\r\n};\r\nvar getEventNameByOption = function(optionValue) {\r\n return isObject(optionValue) ? optionValue.name : optionValue\r\n};\r\nvar getEventName = function(that, optionName) {\r\n var optionValue = that.option(optionName);\r\n return getEventNameByOption(optionValue)\r\n};\r\nvar getEventDelay = function(that, optionName) {\r\n var optionValue = that.option(optionName);\r\n return isObject(optionValue) && optionValue.delay\r\n};\r\nvar attachEvent = function(that, name) {\r\n var {\r\n target: target,\r\n shading: shading,\r\n disabled: disabled,\r\n hideEvent: hideEvent\r\n } = that.option();\r\n var isSelector = isString(target);\r\n var shouldIgnoreHideEvent = shading && \"hide\" === name;\r\n var event = shouldIgnoreHideEvent ? null : getEventName(that, \"\".concat(name, \"Event\"));\r\n if (shouldIgnoreHideEvent && hideEvent) {\r\n errors.log(\"W1020\")\r\n }\r\n if (!event || disabled) {\r\n return\r\n }\r\n var eventName = addNamespace(event, that.NAME);\r\n var action = that._createAction(function() {\r\n var delay = getEventDelay(that, name + \"Event\");\r\n this._clearEventsTimeouts();\r\n if (delay) {\r\n this._timeouts[name] = setTimeout((function() {\r\n that[name]()\r\n }), delay)\r\n } else {\r\n that[name]()\r\n }\r\n }.bind(that), {\r\n validatingTargetName: \"target\"\r\n });\r\n var handler = function(e) {\r\n action({\r\n event: e,\r\n target: $(e.currentTarget)\r\n })\r\n };\r\n var EVENT_HANDLER_NAME = \"_\" + name + \"EventHandler\";\r\n if (isSelector) {\r\n that[EVENT_HANDLER_NAME] = handler;\r\n eventsEngine.on(domAdapter.getDocument(), eventName, target, handler)\r\n } else {\r\n var targetElement = getPublicElement($(target));\r\n that[EVENT_HANDLER_NAME] = void 0;\r\n eventsEngine.on(targetElement, eventName, handler)\r\n }\r\n};\r\nvar detachEvent = function(that, target, name, event) {\r\n var eventName = event || getEventName(that, name + \"Event\");\r\n if (!eventName) {\r\n return\r\n }\r\n eventName = addNamespace(eventName, that.NAME);\r\n var EVENT_HANDLER_NAME = \"_\" + name + \"EventHandler\";\r\n if (that[EVENT_HANDLER_NAME]) {\r\n eventsEngine.off(domAdapter.getDocument(), eventName, target, that[EVENT_HANDLER_NAME])\r\n } else {\r\n eventsEngine.off(getPublicElement($(target)), eventName)\r\n }\r\n};\r\nvar Popover = Popup.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n target: void 0,\r\n shading: false,\r\n position: extend({}, POPOVER_POSITION_ALIASES.bottom),\r\n closeOnOutsideClick: true,\r\n animation: {\r\n show: {\r\n type: \"fade\",\r\n from: 0,\r\n to: 1\r\n },\r\n hide: {\r\n type: \"fade\",\r\n to: 0\r\n }\r\n },\r\n showTitle: false,\r\n width: \"auto\",\r\n height: \"auto\",\r\n dragEnabled: false,\r\n resizeEnabled: false,\r\n fullScreen: false,\r\n hideOnParentScroll: true,\r\n arrowPosition: \"\",\r\n arrowOffset: 0,\r\n _fixWrapperPosition: true\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return [{\r\n device: {\r\n platform: \"ios\"\r\n },\r\n options: {\r\n arrowPosition: {\r\n boundaryOffset: {\r\n h: 20,\r\n v: -10\r\n },\r\n collision: \"fit\"\r\n }\r\n }\r\n }, {\r\n device: function() {\r\n return !hasWindow()\r\n },\r\n options: {\r\n animation: null\r\n }\r\n }]\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._renderArrow();\r\n this._timeouts = {};\r\n this.$element().addClass(POPOVER_CLASS);\r\n this.$wrapper().addClass(POPOVER_WRAPPER_CLASS)\r\n },\r\n _render: function() {\r\n this.callBase.apply(this, arguments);\r\n this._detachEvents(this.option(\"target\"));\r\n this._attachEvents()\r\n },\r\n _detachEvents: function(target) {\r\n detachEvent(this, target, \"show\");\r\n detachEvent(this, target, \"hide\")\r\n },\r\n _attachEvents: function() {\r\n attachEvent(this, \"show\");\r\n attachEvent(this, \"hide\")\r\n },\r\n _renderArrow: function() {\r\n this._$arrow = $(\"
\").addClass(POPOVER_ARROW_CLASS).prependTo(this.$overlayContent())\r\n },\r\n _documentDownHandler: function(e) {\r\n if (this._isOutsideClick(e)) {\r\n return this.callBase(e)\r\n }\r\n return true\r\n },\r\n _isOutsideClick: function(e) {\r\n return !$(e.target).closest(this.option(\"target\")).length\r\n },\r\n _animate: function(animation) {\r\n if (animation && animation.to && \"object\" === typeof animation.to) {\r\n extend(animation.to, {\r\n position: this._getContainerPosition()\r\n })\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _stopAnimation: function() {\r\n this.callBase.apply(this, arguments)\r\n },\r\n _renderTitle: function() {\r\n this.$wrapper().toggleClass(POPOVER_WITHOUT_TITLE_CLASS, !this.option(\"showTitle\"));\r\n this.callBase()\r\n },\r\n _renderPosition: function() {\r\n this.callBase();\r\n this._renderOverlayPosition();\r\n this._actions.onPositioned()\r\n },\r\n _renderOverlayPosition: function() {\r\n this._resetOverlayPosition();\r\n this._updateContentSize();\r\n var contentPosition = this._getContainerPosition();\r\n var resultLocation = positionUtils.setup(this.$overlayContent(), contentPosition);\r\n var positionSide = this._getSideByLocation(resultLocation);\r\n this._togglePositionClass(\"dx-position-\" + positionSide);\r\n this._toggleFlippedClass(resultLocation.h.flip, resultLocation.v.flip);\r\n var isArrowVisible = this._isHorizontalSide() || this._isVerticalSide();\r\n if (isArrowVisible) {\r\n this._renderArrowPosition(positionSide)\r\n }\r\n },\r\n _resetOverlayPosition: function() {\r\n this._setContentHeight(true);\r\n this._togglePositionClass(\"dx-position-\" + this._positionController._positionSide);\r\n move(this.$overlayContent(), {\r\n left: 0,\r\n top: 0\r\n });\r\n this._$arrow.css({\r\n top: \"auto\",\r\n right: \"auto\",\r\n bottom: \"auto\",\r\n left: \"auto\"\r\n })\r\n },\r\n _updateContentSize: function() {\r\n if (!this.$content()) {\r\n return\r\n }\r\n var containerLocation = positionUtils.calculate(this.$overlayContent(), this._getContainerPosition());\r\n if (containerLocation.h.oversize > 0 && this._isHorizontalSide() && !containerLocation.h.fit) {\r\n var newContainerWidth = getWidth(this.$overlayContent()) - containerLocation.h.oversize;\r\n setWidth(this.$overlayContent(), newContainerWidth)\r\n }\r\n if (containerLocation.v.oversize > 0 && this._isVerticalSide() && !containerLocation.v.fit) {\r\n var newOverlayContentHeight = getHeight(this.$overlayContent()) - containerLocation.v.oversize;\r\n var newPopupContentHeight = getHeight(this.$content()) - containerLocation.v.oversize;\r\n setHeight(this.$overlayContent(), newOverlayContentHeight);\r\n setHeight(this.$content(), newPopupContentHeight)\r\n }\r\n },\r\n _getContainerPosition: function() {\r\n return this._positionController._getContainerPosition()\r\n },\r\n _getSideByLocation: function(location) {\r\n var isFlippedByVertical = location.v.flip;\r\n var isFlippedByHorizontal = location.h.flip;\r\n return this._isVerticalSide() && isFlippedByVertical || this._isHorizontalSide() && isFlippedByHorizontal || this._isPopoverInside() ? POSITION_FLIP_MAP[this._positionController._positionSide] : this._positionController._positionSide\r\n },\r\n _togglePositionClass: function(positionClass) {\r\n this.$wrapper().removeClass(\"dx-position-left dx-position-right dx-position-top dx-position-bottom\").addClass(positionClass)\r\n },\r\n _toggleFlippedClass: function(isFlippedHorizontal, isFlippedVertical) {\r\n this.$wrapper().toggleClass(\"dx-popover-flipped-horizontal\", isFlippedHorizontal).toggleClass(\"dx-popover-flipped-vertical\", isFlippedVertical)\r\n },\r\n _renderArrowPosition: function(side) {\r\n var arrowRect = getBoundingRect(this._$arrow.get(0));\r\n var arrowFlip = -(this._isVerticalSide(side) ? arrowRect.height : arrowRect.width);\r\n this._$arrow.css(POSITION_FLIP_MAP[side], arrowFlip);\r\n var axis = this._isVerticalSide(side) ? \"left\" : \"top\";\r\n var sizeProperty = this._isVerticalSide(side) ? \"width\" : \"height\";\r\n var $target = $(this._positionController._position.of);\r\n var targetOffset = positionUtils.offset($target) || {\r\n top: 0,\r\n left: 0\r\n };\r\n var contentOffset = positionUtils.offset(this.$overlayContent());\r\n var arrowSize = arrowRect[sizeProperty];\r\n var contentLocation = contentOffset[axis];\r\n var contentSize = getBoundingRect(this.$overlayContent().get(0))[sizeProperty];\r\n var targetLocation = targetOffset[axis];\r\n var targetElement = $target.get(0);\r\n var targetSize = targetElement && !targetElement.preventDefault ? getBoundingRect(targetElement)[sizeProperty] : 0;\r\n var min = Math.max(contentLocation, targetLocation);\r\n var max = Math.min(contentLocation + contentSize, targetLocation + targetSize);\r\n var arrowLocation;\r\n if (\"start\" === this.option(\"arrowPosition\")) {\r\n arrowLocation = min - contentLocation\r\n } else if (\"end\" === this.option(\"arrowPosition\")) {\r\n arrowLocation = max - contentLocation - arrowSize\r\n } else {\r\n arrowLocation = (min + max) / 2 - contentLocation - arrowSize / 2\r\n }\r\n var borderWidth = this._positionController._getContentBorderWidth(side);\r\n var finalArrowLocation = fitIntoRange(arrowLocation - borderWidth + this.option(\"arrowOffset\"), borderWidth, contentSize - arrowSize - 2 * borderWidth);\r\n this._$arrow.css(axis, finalArrowLocation)\r\n },\r\n _isPopoverInside: function() {\r\n return this._positionController._isPopoverInside()\r\n },\r\n _setContentHeight: function(fullUpdate) {\r\n if (fullUpdate) {\r\n this.callBase()\r\n }\r\n },\r\n _getPositionControllerConfig() {\r\n var {\r\n shading: shading\r\n } = this.option();\r\n return extend({}, this.callBase(), {\r\n shading: shading,\r\n $arrow: this._$arrow\r\n })\r\n },\r\n _initPositionController() {\r\n this._positionController = new PopoverPositionController(this._getPositionControllerConfig())\r\n },\r\n _renderWrapperDimensions: function() {\r\n if (this.option(\"shading\")) {\r\n this.$wrapper().css({\r\n width: \"100%\",\r\n height: \"100%\"\r\n })\r\n }\r\n },\r\n _isVerticalSide: function(side) {\r\n return this._positionController._isVerticalSide(side)\r\n },\r\n _isHorizontalSide: function(side) {\r\n return this._positionController._isHorizontalSide(side)\r\n },\r\n _clearEventTimeout: function(name) {\r\n clearTimeout(this._timeouts[name])\r\n },\r\n _clearEventsTimeouts: function() {\r\n this._clearEventTimeout(\"show\");\r\n this._clearEventTimeout(\"hide\")\r\n },\r\n _clean: function() {\r\n this._detachEvents(this.option(\"target\"));\r\n this.callBase.apply(this, arguments)\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"arrowPosition\":\r\n case \"arrowOffset\":\r\n this._renderGeometry();\r\n break;\r\n case \"fullScreen\":\r\n if (args.value) {\r\n this.option(\"fullScreen\", false)\r\n }\r\n break;\r\n case \"target\":\r\n args.previousValue && this._detachEvents(args.previousValue);\r\n this.callBase(args);\r\n break;\r\n case \"showEvent\":\r\n case \"hideEvent\":\r\n var name = args.name.substring(0, 4);\r\n var event = getEventNameByOption(args.previousValue);\r\n this.hide();\r\n detachEvent(this, this.option(\"target\"), name, event);\r\n attachEvent(this, name);\r\n break;\r\n case \"visible\":\r\n this._clearEventTimeout(args.value ? \"show\" : \"hide\");\r\n this.callBase(args);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n show: function(target) {\r\n if (target) {\r\n this.option(\"target\", target)\r\n }\r\n return this.callBase()\r\n }\r\n});\r\nregisterComponent(\"dxPopover\", Popover);\r\nexport default Popover;\r\n","/**\r\n * DevExtreme (esm/ui/popover.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport Popover from \"./popover/ui.popover\";\r\nexport default Popover;\r\n","/**\r\n * DevExtreme (esm/ui/tooltip/tooltip.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport $ from \"../../core/renderer\";\r\nimport Guid from \"../../core/guid\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport Popover from \"../popover\";\r\nvar TOOLTIP_CLASS = \"dx-tooltip\";\r\nvar TOOLTIP_WRAPPER_CLASS = \"dx-tooltip-wrapper\";\r\nimport {\r\n isWindow\r\n} from \"../../core/utils/type\";\r\nvar Tooltip = Popover.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n toolbarItems: [],\r\n showCloseButton: false,\r\n showTitle: false,\r\n title: null,\r\n titleTemplate: null,\r\n onTitleRendered: null,\r\n bottomTemplate: null,\r\n propagateOutsideClick: true\r\n })\r\n },\r\n _render: function() {\r\n this.$element().addClass(TOOLTIP_CLASS);\r\n this.$wrapper().addClass(TOOLTIP_WRAPPER_CLASS);\r\n this.callBase()\r\n },\r\n _renderContent: function() {\r\n this.callBase();\r\n this._contentId = \"dx-\" + new Guid;\r\n this.$overlayContent().attr({\r\n id: this._contentId,\r\n role: \"tooltip\"\r\n });\r\n this._toggleAriaDescription(true)\r\n },\r\n _toggleAriaDescription: function(showing) {\r\n var $target = $(this.option(\"target\"));\r\n var label = showing ? this._contentId : void 0;\r\n if (!isWindow($target.get(0))) {\r\n this.setAria(\"describedby\", label, $target)\r\n }\r\n }\r\n});\r\nregisterComponent(\"dxTooltip\", Tooltip);\r\nexport default Tooltip;\r\n","/**\r\n * DevExtreme (esm/ui/tooltip.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport Tooltip from \"./tooltip/tooltip\";\r\nexport default Tooltip;\r\n","/**\r\n * DevExtreme (esm/ui/slider/slider_tooltip_position_controller.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n PopoverPositionController\r\n} from \"../popover/popover_position_controller\";\r\nimport {\r\n move\r\n} from \"../../animation/translator\";\r\nimport positionUtils from \"../../animation/position\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n isString\r\n} from \"../../core/utils/type\";\r\nvar SLIDER_TOOLTIP_POSITION_ALIASES = {\r\n top: {\r\n my: \"bottom center\",\r\n at: \"top center\",\r\n collision: \"fit none\"\r\n },\r\n bottom: {\r\n my: \"top center\",\r\n at: \"bottom center\",\r\n collision: \"fit none\"\r\n }\r\n};\r\nvar SLIDER_TOOLTIP_DEFAULT_BOUNDARY_OFFSET = {\r\n h: 2,\r\n v: 1\r\n};\r\nvar SLIDER_CLASS = \"dx-slider\";\r\nclass SliderTooltipPositionController extends PopoverPositionController {\r\n _normalizePosition(positionProp, $sliderHandle) {\r\n var sliderClass = \".\".concat(SLIDER_CLASS);\r\n var $slider = null === $sliderHandle || void 0 === $sliderHandle ? void 0 : $sliderHandle.closest(sliderClass);\r\n var defaultPositionConfig = {\r\n of: $sliderHandle,\r\n boundaryOffset: SLIDER_TOOLTIP_DEFAULT_BOUNDARY_OFFSET,\r\n boundary: null === $slider || void 0 === $slider ? void 0 : $slider.get(0)\r\n };\r\n var resultPosition = extend(true, {}, defaultPositionConfig, this._positionToObject(positionProp));\r\n this._positionSide = this._getDisplaySide(resultPosition);\r\n return resultPosition\r\n }\r\n _renderContentInitialPosition() {\r\n super._renderContentInitialPosition();\r\n this._fitIntoSlider()\r\n }\r\n _fitIntoSlider() {\r\n var {\r\n collisionSide: collisionSide,\r\n oversize: oversize\r\n } = positionUtils.calculate(this._$content, this._position).h;\r\n var left = this._visualPosition.left;\r\n var isLeftSide = \"left\" === collisionSide;\r\n var offset = (isLeftSide ? 1 : -1) * oversize;\r\n move(this._$content, {\r\n left: left + offset\r\n });\r\n this._updateVisualPositionValue()\r\n }\r\n _positionToObject(positionProp) {\r\n if (isString(positionProp)) {\r\n return extend({}, SLIDER_TOOLTIP_POSITION_ALIASES[positionProp])\r\n }\r\n return positionProp\r\n }\r\n}\r\nexport {\r\n SliderTooltipPositionController\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/slider/ui.slider_tooltip.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport Tooltip from \"../tooltip\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n SliderTooltipPositionController\r\n} from \"./slider_tooltip_position_controller\";\r\nimport numberLocalization from \"../../localization/number\";\r\nvar SLIDER_TOOLTIP_VISIBILITY_CLASS = \"dx-slider-tooltip-visible-on-hover\";\r\nvar SliderTooltip = Tooltip.inherit({\r\n _getDefaultOptions() {\r\n return extend(this.callBase(), {\r\n visible: false,\r\n position: \"top\",\r\n closeOnOutsideClick: false,\r\n hideTopOverlayHandler: null,\r\n hideOnParentScroll: false,\r\n animation: null,\r\n arrowPosition: null,\r\n templatesRenderAsynchronously: false,\r\n _fixWrapperPosition: false,\r\n useResizeObserver: false,\r\n showMode: \"onHover\",\r\n format: value => value,\r\n value: 0\r\n })\r\n },\r\n _initMarkup() {\r\n this.callBase();\r\n this._attachToMarkup(this.option(\"visible\"));\r\n this._toggleShowModeClass()\r\n },\r\n _renderContent() {\r\n this.callBase();\r\n this._renderContentText()\r\n },\r\n _renderContentText() {\r\n var {\r\n value: value,\r\n format: format\r\n } = this.option();\r\n var formattedText = numberLocalization.format(null !== value && void 0 !== value ? value : 0, format);\r\n this.$content().text(formattedText);\r\n this._renderPosition()\r\n },\r\n _toggleShowModeClass() {\r\n var isHoverMode = \"onHover\" === this.option(\"showMode\");\r\n this._positionController.$container.toggleClass(SLIDER_TOOLTIP_VISIBILITY_CLASS, isHoverMode)\r\n },\r\n _initPositionController() {\r\n this._positionController = new SliderTooltipPositionController(this._getPositionControllerConfig())\r\n },\r\n _attachToMarkup(enabled) {\r\n enabled ? this.$element().appendTo(this._positionController.$container) : this.$element().detach()\r\n },\r\n _optionChanged(args) {\r\n var {\r\n name: name,\r\n value: value\r\n } = args;\r\n switch (name) {\r\n case \"visible\":\r\n this._attachToMarkup(value);\r\n this.callBase(args);\r\n break;\r\n case \"showMode\":\r\n this._toggleShowModeClass();\r\n break;\r\n case \"format\":\r\n case \"value\":\r\n this._renderContentText();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n updatePosition() {\r\n this._renderPosition()\r\n }\r\n});\r\nexport default SliderTooltip;\r\n","/**\r\n * DevExtreme (esm/ui/slider/ui.slider_handle.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport $ from \"../../core/renderer\";\r\nimport Widget from \"../widget/ui.widget\";\r\nimport SliderTooltip from \"./ui.slider_tooltip\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nvar SLIDER_HANDLE_CLASS = \"dx-slider-handle\";\r\nvar SliderHandle = Widget.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n hoverStateEnabled: false,\r\n value: 0,\r\n tooltip: {\r\n enabled: false,\r\n format: value => value,\r\n position: \"top\",\r\n showMode: \"onHover\"\r\n }\r\n })\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n this.$element().addClass(SLIDER_HANDLE_CLASS);\r\n this.setAria({\r\n role: \"slider\",\r\n valuenow: this.option(\"value\")\r\n })\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._renderTooltip()\r\n },\r\n _renderTooltip: function() {\r\n var {\r\n tooltip: tooltip,\r\n value: value\r\n } = this.option();\r\n var {\r\n position: position,\r\n format: format,\r\n enabled: enabled,\r\n showMode: showMode\r\n } = tooltip;\r\n this._sliderTooltip = this._createComponent($(\"
\"), SliderTooltip, {\r\n target: this.$element(),\r\n container: this.$element(),\r\n position: position,\r\n visible: enabled,\r\n showMode: showMode,\r\n format: format,\r\n value: value\r\n })\r\n },\r\n _clean: function() {\r\n this.callBase();\r\n this._sliderTooltip = null\r\n },\r\n _updateTooltipOptions(args) {\r\n var _this$_sliderTooltip;\r\n var tooltipOptions = Widget.getOptionsFromContainer(args);\r\n this._setWidgetOption(\"_sliderTooltip\", [tooltipOptions]);\r\n null === (_this$_sliderTooltip = this._sliderTooltip) || void 0 === _this$_sliderTooltip ? void 0 : _this$_sliderTooltip.option(\"visible\", tooltipOptions.enabled)\r\n },\r\n _optionChanged: function(args) {\r\n var {\r\n name: name,\r\n value: value\r\n } = args;\r\n switch (name) {\r\n case \"value\":\r\n var _this$_sliderTooltip2;\r\n null === (_this$_sliderTooltip2 = this._sliderTooltip) || void 0 === _this$_sliderTooltip2 ? void 0 : _this$_sliderTooltip2.option(\"value\", value);\r\n this.setAria(\"valuenow\", value);\r\n break;\r\n case \"tooltip\":\r\n this._updateTooltipOptions(args);\r\n break;\r\n default:\r\n this.callBase(arguments)\r\n }\r\n },\r\n updateTooltipPosition: function() {\r\n var _this$_sliderTooltip3;\r\n null === (_this$_sliderTooltip3 = this._sliderTooltip) || void 0 === _this$_sliderTooltip3 ? void 0 : _this$_sliderTooltip3.updatePosition()\r\n },\r\n repaint: function() {\r\n var _this$_sliderTooltip4;\r\n null === (_this$_sliderTooltip4 = this._sliderTooltip) || void 0 === _this$_sliderTooltip4 ? void 0 : _this$_sliderTooltip4.repaint()\r\n }\r\n});\r\nexport default SliderHandle;\r\n","/**\r\n * DevExtreme (esm/ui/slider/ui.slider.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n getWidth,\r\n setWidth\r\n} from \"../../core/utils/size\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport devices from \"../../core/devices\";\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n applyServerDecimalSeparator\r\n} from \"../../core/utils/common\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n name as clickName\r\n} from \"../../events/click\";\r\nimport {\r\n lock\r\n} from \"../../events/core/emitter.feedback\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport Swipeable from \"../../events/gesture/swipeable\";\r\nimport pointerEvents from \"../../events/pointer\";\r\nimport {\r\n addNamespace,\r\n isMouseEvent,\r\n isTouchEvent,\r\n eventData\r\n} from \"../../events/utils/index\";\r\nimport numberLocalization from \"../../localization/number\";\r\nimport {\r\n isMaterial,\r\n current as currentTheme\r\n} from \"../themes\";\r\nimport TrackBar from \"../track_bar\";\r\nimport {\r\n render\r\n} from \"../widget/utils.ink_ripple\";\r\nimport SliderHandle from \"./ui.slider_handle\";\r\nimport {\r\n roundFloatPart,\r\n getExponentLength,\r\n getRemainderByDivision\r\n} from \"../../core/utils/math\";\r\nvar SLIDER_CLASS = \"dx-slider\";\r\nvar SLIDER_WRAPPER_CLASS = \"dx-slider-wrapper\";\r\nvar SLIDER_HANDLE_SELECTOR = \".dx-slider-handle\";\r\nvar SLIDER_BAR_CLASS = \"dx-slider-bar\";\r\nvar SLIDER_RANGE_CLASS = \"dx-slider-range\";\r\nvar SLIDER_RANGE_VISIBLE_CLASS = \"dx-slider-range-visible\";\r\nvar SLIDER_LABEL_CLASS = \"dx-slider-label\";\r\nvar SLIDER_LABEL_POSITION_CLASS_PREFIX = \"dx-slider-label-position-\";\r\nvar SLIDER_TOOLTIP_POSITION_CLASS_PREFIX = \"dx-slider-tooltip-position-\";\r\nvar INVALID_MESSAGE_VISIBLE_CLASS = \"dx-invalid-message-visible\";\r\nvar SLIDER_VALIDATION_NAMESPACE = \"Validation\";\r\nvar Slider = TrackBar.inherit({\r\n _activeStateUnit: SLIDER_HANDLE_SELECTOR,\r\n _supportedKeys: function() {\r\n var isRTL = this.option(\"rtlEnabled\");\r\n var roundedValue = (offset, isLeftDirection) => {\r\n offset = this._valueStep(offset);\r\n var step = this.option(\"step\");\r\n var value = this.option(\"value\");\r\n var currentPosition = value - this.option(\"min\");\r\n var remainder = getRemainderByDivision(currentPosition, step, this._getValueExponentLength());\r\n var result = isLeftDirection ? value - offset + (remainder ? step - remainder : 0) : value + offset - remainder;\r\n var min = this.option(\"min\");\r\n var max = this.option(\"max\");\r\n if (result < min) {\r\n result = min\r\n } else if (result > max) {\r\n result = max\r\n }\r\n return this._roundToExponentLength(result)\r\n };\r\n var moveHandleRight = offset => {\r\n this.option(\"value\", roundedValue(offset, isRTL))\r\n };\r\n var moveHandleLeft = offset => {\r\n this.option(\"value\", roundedValue(offset, !isRTL))\r\n };\r\n return extend(this.callBase(), {\r\n leftArrow: function(e) {\r\n this._processKeyboardEvent(e);\r\n moveHandleLeft(this.option(\"step\"))\r\n },\r\n rightArrow: function(e) {\r\n this._processKeyboardEvent(e);\r\n moveHandleRight(this.option(\"step\"))\r\n },\r\n pageUp: function(e) {\r\n this._processKeyboardEvent(e);\r\n moveHandleRight(this.option(\"step\") * this.option(\"keyStep\"))\r\n },\r\n pageDown: function(e) {\r\n this._processKeyboardEvent(e);\r\n moveHandleLeft(this.option(\"step\") * this.option(\"keyStep\"))\r\n },\r\n home: function(e) {\r\n this._processKeyboardEvent(e);\r\n var min = this.option(\"min\");\r\n this.option(\"value\", min)\r\n },\r\n end: function(e) {\r\n this._processKeyboardEvent(e);\r\n var max = this.option(\"max\");\r\n this.option(\"value\", max)\r\n }\r\n })\r\n },\r\n _processKeyboardEvent: function(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this._saveValueChangeEvent(e)\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n value: 50,\r\n hoverStateEnabled: true,\r\n activeStateEnabled: true,\r\n step: 1,\r\n showRange: true,\r\n tooltip: {\r\n enabled: false,\r\n format: function(value) {\r\n return value\r\n },\r\n position: \"top\",\r\n showMode: \"onHover\"\r\n },\r\n label: {\r\n visible: false,\r\n position: \"bottom\",\r\n format: function(value) {\r\n return value\r\n }\r\n },\r\n keyStep: 1,\r\n useInkRipple: false,\r\n validationMessageOffset: isMaterial() ? {\r\n h: 18,\r\n v: 0\r\n } : {\r\n h: 7,\r\n v: 4\r\n },\r\n focusStateEnabled: true\r\n })\r\n },\r\n _toggleValidationMessage: function(visible) {\r\n if (!this.option(\"isValid\")) {\r\n this.$element().toggleClass(INVALID_MESSAGE_VISIBLE_CLASS, visible)\r\n }\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function() {\r\n return \"desktop\" === devices.real().deviceType && !devices.isSimulator()\r\n },\r\n options: {\r\n focusStateEnabled: true\r\n }\r\n }, {\r\n device: function() {\r\n var themeName = currentTheme();\r\n return isMaterial(themeName)\r\n },\r\n options: {\r\n useInkRipple: true\r\n }\r\n }])\r\n },\r\n _initMarkup: function() {\r\n this.$element().addClass(SLIDER_CLASS);\r\n this._renderSubmitElement();\r\n this.option(\"useInkRipple\") && this._renderInkRipple();\r\n this.callBase();\r\n this._renderLabels();\r\n this._renderStartHandler();\r\n this._renderAriaMinAndMax()\r\n },\r\n _attachFocusEvents: function() {\r\n this.callBase();\r\n var namespace = this.NAME + SLIDER_VALIDATION_NAMESPACE;\r\n var focusInEvent = addNamespace(\"focusin\", namespace);\r\n var focusOutEvent = addNamespace(\"focusout\", namespace);\r\n var $focusTarget = this._focusTarget();\r\n eventsEngine.on($focusTarget, focusInEvent, this._toggleValidationMessage.bind(this, true));\r\n eventsEngine.on($focusTarget, focusOutEvent, this._toggleValidationMessage.bind(this, false))\r\n },\r\n _detachFocusEvents: function() {\r\n this.callBase();\r\n var $focusTarget = this._focusTarget();\r\n this._toggleValidationMessage(false);\r\n eventsEngine.off($focusTarget, this.NAME + SLIDER_VALIDATION_NAMESPACE)\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._repaintHandle()\r\n },\r\n _renderSubmitElement: function() {\r\n this._$submitElement = $(\"\").attr(\"type\", \"hidden\").appendTo(this.$element())\r\n },\r\n _getSubmitElement: function() {\r\n return this._$submitElement\r\n },\r\n _renderInkRipple: function() {\r\n this._inkRipple = render({\r\n waveSizeCoefficient: .7,\r\n isCentered: true,\r\n wavesNumber: 2,\r\n useHoldAnimation: false\r\n })\r\n },\r\n _renderInkWave: function(element, dxEvent, doRender, waveIndex) {\r\n if (!this._inkRipple) {\r\n return\r\n }\r\n var config = {\r\n element: element,\r\n event: dxEvent,\r\n wave: waveIndex\r\n };\r\n if (doRender) {\r\n this._inkRipple.showWave(config)\r\n } else {\r\n this._inkRipple.hideWave(config)\r\n }\r\n },\r\n _visibilityChanged: function() {\r\n this.repaint()\r\n },\r\n _renderWrapper: function() {\r\n this.callBase();\r\n this._$wrapper.addClass(SLIDER_WRAPPER_CLASS);\r\n this._createComponent(this._$wrapper, Swipeable, {\r\n elastic: false,\r\n immediate: true,\r\n onStart: this._swipeStartHandler.bind(this),\r\n onUpdated: this._swipeUpdateHandler.bind(this),\r\n onEnd: this._swipeEndHandler.bind(this),\r\n itemSizeFunc: this._itemWidthFunc.bind(this)\r\n })\r\n },\r\n _renderContainer: function() {\r\n this.callBase();\r\n this._$bar.addClass(SLIDER_BAR_CLASS)\r\n },\r\n _renderRange: function() {\r\n this.callBase();\r\n this._$range.addClass(SLIDER_RANGE_CLASS);\r\n this._renderHandle();\r\n this._renderRangeVisibility()\r\n },\r\n _renderRangeVisibility: function() {\r\n this._$range.toggleClass(SLIDER_RANGE_VISIBLE_CLASS, Boolean(this.option(\"showRange\")))\r\n },\r\n _renderHandle: function() {\r\n this._$handle = this._renderHandleImpl(this.option(\"value\"), this._$handle)\r\n },\r\n _renderHandleImpl: function(value, $element) {\r\n var $handle = $element || $(\"
\").appendTo(this._$range);\r\n var tooltip = this.option(\"tooltip\");\r\n this.$element().toggleClass(SLIDER_TOOLTIP_POSITION_CLASS_PREFIX + \"bottom\", tooltip.enabled && \"bottom\" === tooltip.position).toggleClass(SLIDER_TOOLTIP_POSITION_CLASS_PREFIX + \"top\", tooltip.enabled && \"top\" === tooltip.position);\r\n this._createComponent($handle, SliderHandle, {\r\n value: value,\r\n tooltip: tooltip\r\n });\r\n return $handle\r\n },\r\n _renderAriaMinAndMax: function() {\r\n this.setAria({\r\n valuemin: this.option(\"min\"),\r\n valuemax: this.option(\"max\")\r\n }, this._$handle)\r\n },\r\n _toggleActiveState: function($element, value) {\r\n this.callBase($element, value);\r\n this._renderInkWave($element, null, !!value, 1)\r\n },\r\n _toggleFocusClass: function(isFocused, $element) {\r\n this.callBase(isFocused, $element);\r\n if (this._disposed) {\r\n return\r\n }\r\n var $focusTarget = $($element || this._focusTarget());\r\n this._renderInkWave($focusTarget, null, isFocused, 0)\r\n },\r\n _renderLabels: function() {\r\n this.$element().removeClass(SLIDER_LABEL_POSITION_CLASS_PREFIX + \"bottom\").removeClass(SLIDER_LABEL_POSITION_CLASS_PREFIX + \"top\");\r\n if (this.option(\"label.visible\")) {\r\n var min = this.option(\"min\");\r\n var max = this.option(\"max\");\r\n var position = this.option(\"label.position\");\r\n var labelFormat = this.option(\"label.format\");\r\n if (!this._$minLabel) {\r\n this._$minLabel = $(\"
\").addClass(SLIDER_LABEL_CLASS).appendTo(this._$wrapper)\r\n }\r\n this._$minLabel.text(numberLocalization.format(min, labelFormat));\r\n if (!this._$maxLabel) {\r\n this._$maxLabel = $(\"
\").addClass(SLIDER_LABEL_CLASS).appendTo(this._$wrapper)\r\n }\r\n this._$maxLabel.text(numberLocalization.format(max, labelFormat));\r\n this.$element().addClass(SLIDER_LABEL_POSITION_CLASS_PREFIX + position)\r\n } else {\r\n if (this._$minLabel) {\r\n this._$minLabel.remove();\r\n delete this._$minLabel\r\n }\r\n if (this._$maxLabel) {\r\n this._$maxLabel.remove();\r\n delete this._$maxLabel\r\n }\r\n }\r\n },\r\n _renderStartHandler: function() {\r\n var pointerDownEventName = addNamespace(pointerEvents.down, this.NAME);\r\n var clickEventName = addNamespace(clickName, this.NAME);\r\n var startAction = this._createAction(this._startHandler.bind(this));\r\n var $element = this.$element();\r\n eventsEngine.off($element, pointerDownEventName);\r\n eventsEngine.on($element, pointerDownEventName, e => {\r\n if (isMouseEvent(e)) {\r\n startAction({\r\n event: e\r\n })\r\n }\r\n });\r\n eventsEngine.off($element, clickEventName);\r\n eventsEngine.on($element, clickEventName, e => {\r\n var $handle = this._activeHandle();\r\n if ($handle) {\r\n eventsEngine.trigger($handle, \"focusin\");\r\n eventsEngine.trigger($handle, \"focus\")\r\n }\r\n startAction({\r\n event: e\r\n })\r\n })\r\n },\r\n _itemWidthFunc: function() {\r\n return this._itemWidthRatio\r\n },\r\n _swipeStartHandler: function(e) {\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n if (isTouchEvent(e.event)) {\r\n this._createAction(this._startHandler.bind(this))({\r\n event: e.event\r\n })\r\n }\r\n this._feedbackDeferred = new Deferred;\r\n lock(this._feedbackDeferred);\r\n this._toggleActiveState(this._activeHandle(), this.option(\"activeStateEnabled\"));\r\n this._startOffset = this._currentRatio;\r\n var startOffset = this._startOffset * this._swipePixelRatio();\r\n var endOffset = (1 - this._startOffset) * this._swipePixelRatio();\r\n e.event.maxLeftOffset = rtlEnabled ? endOffset : startOffset;\r\n e.event.maxRightOffset = rtlEnabled ? startOffset : endOffset;\r\n this._itemWidthRatio = getWidth(this.$element()) / this._swipePixelRatio();\r\n this._needPreventAnimation = true\r\n },\r\n _swipeEndHandler: function(e) {\r\n this._feedbackDeferred.resolve();\r\n this._toggleActiveState(this._activeHandle(), false);\r\n var offsetDirection = this.option(\"rtlEnabled\") ? -1 : 1;\r\n delete this._needPreventAnimation;\r\n this._saveValueChangeEvent(e.event);\r\n this._changeValueOnSwipe(this._startOffset + offsetDirection * e.event.targetOffset / this._swipePixelRatio());\r\n delete this._startOffset;\r\n this._renderValue()\r\n },\r\n _activeHandle: function() {\r\n return this._$handle\r\n },\r\n _swipeUpdateHandler: function(e) {\r\n this._saveValueChangeEvent(e.event);\r\n this._updateHandlePosition(e)\r\n },\r\n _updateHandlePosition: function(e) {\r\n var offsetDirection = this.option(\"rtlEnabled\") ? -1 : 1;\r\n var newRatio = Math.min(this._startOffset + offsetDirection * e.event.offset / this._swipePixelRatio(), 1);\r\n setWidth(this._$range, 100 * newRatio + \"%\");\r\n SliderHandle.getInstance(this._activeHandle()).fitTooltipPosition;\r\n this._changeValueOnSwipe(newRatio)\r\n },\r\n _swipePixelRatio: function() {\r\n var min = this.option(\"min\");\r\n var max = this.option(\"max\");\r\n var step = this._valueStep(this.option(\"step\"));\r\n return (max - min) / step\r\n },\r\n _valueStep: function(step) {\r\n if (!step || isNaN(step)) {\r\n step = 1\r\n }\r\n return step\r\n },\r\n _getValueExponentLength: function() {\r\n var {\r\n step: step,\r\n min: min\r\n } = this.option();\r\n return Math.max(getExponentLength(step), getExponentLength(min))\r\n },\r\n _roundToExponentLength: function(value) {\r\n var valueExponentLength = this._getValueExponentLength();\r\n return roundFloatPart(value, valueExponentLength)\r\n },\r\n _changeValueOnSwipe: function(ratio) {\r\n var min = this.option(\"min\");\r\n var max = this.option(\"max\");\r\n var step = this._valueStep(this.option(\"step\"));\r\n var newChange = ratio * (max - min);\r\n var newValue = min + newChange;\r\n if (step < 0) {\r\n return\r\n }\r\n if (newValue === max || newValue === min) {\r\n this._setValueOnSwipe(newValue)\r\n } else {\r\n var stepCount = Math.round((newValue - min) / step);\r\n newValue = this._roundToExponentLength(stepCount * step + min);\r\n this._setValueOnSwipe(Math.max(Math.min(newValue, max), min))\r\n }\r\n },\r\n _setValueOnSwipe: function(value) {\r\n this.option(\"value\", value);\r\n this._saveValueChangeEvent(void 0)\r\n },\r\n _startHandler: function(args) {\r\n var e = args.event;\r\n this._currentRatio = (eventData(e).x - this._$bar.offset().left) / getWidth(this._$bar);\r\n if (this.option(\"rtlEnabled\")) {\r\n this._currentRatio = 1 - this._currentRatio\r\n }\r\n this._saveValueChangeEvent(e);\r\n this._changeValueOnSwipe(this._currentRatio)\r\n },\r\n _renderValue: function() {\r\n this.callBase();\r\n var value = this.option(\"value\");\r\n this._getSubmitElement().val(applyServerDecimalSeparator(value));\r\n SliderHandle.getInstance(this._activeHandle()).option(\"value\", value)\r\n },\r\n _setRangeStyles: function(options) {\r\n options && this._$range.css(options)\r\n },\r\n _callHandlerMethod: function(name, args) {\r\n SliderHandle.getInstance(this._$handle)[name](args)\r\n },\r\n _repaintHandle: function() {\r\n this._callHandlerMethod(\"repaint\")\r\n },\r\n _fitTooltip: function() {\r\n this._callHandlerMethod(\"updateTooltipPosition\")\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"visible\":\r\n this.callBase(args);\r\n this._renderHandle();\r\n this._repaintHandle();\r\n break;\r\n case \"min\":\r\n case \"max\":\r\n this._renderValue();\r\n this.callBase(args);\r\n this._renderLabels();\r\n this._renderAriaMinAndMax();\r\n this._fitTooltip();\r\n break;\r\n case \"step\":\r\n this._renderValue();\r\n break;\r\n case \"keyStep\":\r\n break;\r\n case \"showRange\":\r\n this._renderRangeVisibility();\r\n break;\r\n case \"tooltip\":\r\n this._renderHandle();\r\n break;\r\n case \"label\":\r\n this._renderLabels();\r\n break;\r\n case \"useInkRipple\":\r\n this._invalidate();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _refresh: function() {\r\n this._toggleRTLDirection(this.option(\"rtlEnabled\"));\r\n this._renderDimensions();\r\n this._renderValue();\r\n this._renderHandle();\r\n this._repaintHandle()\r\n },\r\n _clean: function() {\r\n delete this._inkRipple;\r\n this.callBase()\r\n }\r\n});\r\nregisterComponent(\"dxSlider\", Slider);\r\nexport default Slider;\r\n","/**\r\n * DevExtreme (esm/ui/slider.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport Slider from \"./slider/ui.slider\";\r\nexport default Slider;\r\n","module.exports = \"data:image/png;base64,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\"","export default {\r\n\r\n}\r\n","export default {\r\n}\r\n","import jwt from '@/http/requests/auth/jwt'\r\n\r\nexport default {\r\n\r\n fetchSubscriptions ({ commit }, payload) {\r\n\r\n return new Promise((resolve, reject) => {\r\n jwt.get('/api/subscription/list', payload)\r\n .then((response) => {\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n fetchSubscription (context, subscriptionId) {\r\n return new Promise((resolve, reject) => {\r\n const url = subscriptionId ? `/api/subscription/${subscriptionId}` : \"/api/admin/subscription/new\"\r\n jwt.get(url)\r\n .then((response) => {\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n createSubscription (context, data) {\r\n return new Promise((resolve, reject) => {\r\n jwt.post('/api/subscription/create', data)\r\n .then((response) => {\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n requestPause (context, subscriptionId) {\r\n return new Promise((resolve, reject) => {\r\n jwt.post('/api/subscription/pause', { id: subscriptionId })\r\n .then((response) => {\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n requestResume (context, subscriptionId) {\r\n return new Promise((resolve, reject) => {\r\n jwt.post('/api/subscription/resume', { id: subscriptionId })\r\n .then((response) => {\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n requestStop (context, subscriptionId) {\r\n return new Promise((resolve, reject) => {\r\n jwt.post('/api/subscription/stop', { id: subscriptionId })\r\n .then((response) => {\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n removeRecord ({ commit }, subscriptionId) {\r\n return new Promise((resolve, reject) => {\r\n jwt.post(`/api/subscription/delete/${subscriptionId}`)\r\n .then((response) => {\r\n commit('REMOVE_RECORD', subscriptionId)\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n buy (context, payload) {\r\n return new Promise((resolve, reject) => {\r\n jwt.post('/api/order/create', payload)\r\n .then((response) => {\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n startPayment (context, payload) {\r\n return new Promise((resolve, reject) => {\r\n jwt.post('/api/order/payment/start', payload)\r\n .then((response) => {\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n}\r\n","export default {}","import state from './moduleSubscriptionManagementState.js'\r\nimport mutations from './moduleSubscriptionManagementMutations.js'\r\nimport actions from './moduleSubscriptionManagementActions.js'\r\nimport getters from './moduleSubscriptionManagementGetters.js'\r\n\r\nexport default {\r\n isRegistered: false,\r\n namespaced: true,\r\n state,\r\n mutations,\r\n actions,\r\n getters\r\n}\r\n","/**\r\n * DevExtreme (esm/color.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nvar standardColorNames = {\r\n aliceblue: \"f0f8ff\",\r\n antiquewhite: \"faebd7\",\r\n aqua: \"00ffff\",\r\n aquamarine: \"7fffd4\",\r\n azure: \"f0ffff\",\r\n beige: \"f5f5dc\",\r\n bisque: \"ffe4c4\",\r\n black: \"000000\",\r\n blanchedalmond: \"ffebcd\",\r\n blue: \"0000ff\",\r\n blueviolet: \"8a2be2\",\r\n brown: \"a52a2a\",\r\n burlywood: \"deb887\",\r\n cadetblue: \"5f9ea0\",\r\n chartreuse: \"7fff00\",\r\n chocolate: \"d2691e\",\r\n coral: \"ff7f50\",\r\n cornflowerblue: \"6495ed\",\r\n cornsilk: \"fff8dc\",\r\n crimson: \"dc143c\",\r\n cyan: \"00ffff\",\r\n darkblue: \"00008b\",\r\n darkcyan: \"008b8b\",\r\n darkgoldenrod: \"b8860b\",\r\n darkgray: \"a9a9a9\",\r\n darkgreen: \"006400\",\r\n darkgrey: \"a9a9a9\",\r\n darkkhaki: \"bdb76b\",\r\n darkmagenta: \"8b008b\",\r\n darkolivegreen: \"556b2f\",\r\n darkorange: \"ff8c00\",\r\n darkorchid: \"9932cc\",\r\n darkred: \"8b0000\",\r\n darksalmon: \"e9967a\",\r\n darkseagreen: \"8fbc8f\",\r\n darkslateblue: \"483d8b\",\r\n darkslategray: \"2f4f4f\",\r\n darkslategrey: \"2f4f4f\",\r\n darkturquoise: \"00ced1\",\r\n darkviolet: \"9400d3\",\r\n deeppink: \"ff1493\",\r\n deepskyblue: \"00bfff\",\r\n dimgray: \"696969\",\r\n dimgrey: \"696969\",\r\n dodgerblue: \"1e90ff\",\r\n feldspar: \"d19275\",\r\n firebrick: \"b22222\",\r\n floralwhite: \"fffaf0\",\r\n forestgreen: \"228b22\",\r\n fuchsia: \"ff00ff\",\r\n gainsboro: \"dcdcdc\",\r\n ghostwhite: \"f8f8ff\",\r\n gold: \"ffd700\",\r\n goldenrod: \"daa520\",\r\n gray: \"808080\",\r\n green: \"008000\",\r\n greenyellow: \"adff2f\",\r\n grey: \"808080\",\r\n honeydew: \"f0fff0\",\r\n hotpink: \"ff69b4\",\r\n indianred: \"cd5c5c\",\r\n indigo: \"4b0082\",\r\n ivory: \"fffff0\",\r\n khaki: \"f0e68c\",\r\n lavender: \"e6e6fa\",\r\n lavenderblush: \"fff0f5\",\r\n lawngreen: \"7cfc00\",\r\n lemonchiffon: \"fffacd\",\r\n lightblue: \"add8e6\",\r\n lightcoral: \"f08080\",\r\n lightcyan: \"e0ffff\",\r\n lightgoldenrodyellow: \"fafad2\",\r\n lightgray: \"d3d3d3\",\r\n lightgreen: \"90ee90\",\r\n lightgrey: \"d3d3d3\",\r\n lightpink: \"ffb6c1\",\r\n lightsalmon: \"ffa07a\",\r\n lightseagreen: \"20b2aa\",\r\n lightskyblue: \"87cefa\",\r\n lightslateblue: \"8470ff\",\r\n lightslategray: \"778899\",\r\n lightslategrey: \"778899\",\r\n lightsteelblue: \"b0c4de\",\r\n lightyellow: \"ffffe0\",\r\n lime: \"00ff00\",\r\n limegreen: \"32cd32\",\r\n linen: \"faf0e6\",\r\n magenta: \"ff00ff\",\r\n maroon: \"800000\",\r\n mediumaquamarine: \"66cdaa\",\r\n mediumblue: \"0000cd\",\r\n mediumorchid: \"ba55d3\",\r\n mediumpurple: \"9370d8\",\r\n mediumseagreen: \"3cb371\",\r\n mediumslateblue: \"7b68ee\",\r\n mediumspringgreen: \"00fa9a\",\r\n mediumturquoise: \"48d1cc\",\r\n mediumvioletred: \"c71585\",\r\n midnightblue: \"191970\",\r\n mintcream: \"f5fffa\",\r\n mistyrose: \"ffe4e1\",\r\n moccasin: \"ffe4b5\",\r\n navajowhite: \"ffdead\",\r\n navy: \"000080\",\r\n oldlace: \"fdf5e6\",\r\n olive: \"808000\",\r\n olivedrab: \"6b8e23\",\r\n orange: \"ffa500\",\r\n orangered: \"ff4500\",\r\n orchid: \"da70d6\",\r\n palegoldenrod: \"eee8aa\",\r\n palegreen: \"98fb98\",\r\n paleturquoise: \"afeeee\",\r\n palevioletred: \"d87093\",\r\n papayawhip: \"ffefd5\",\r\n peachpuff: \"ffdab9\",\r\n peru: \"cd853f\",\r\n pink: \"ffc0cb\",\r\n plum: \"dda0dd\",\r\n powderblue: \"b0e0e6\",\r\n purple: \"800080\",\r\n rebeccapurple: \"663399\",\r\n red: \"ff0000\",\r\n rosybrown: \"bc8f8f\",\r\n royalblue: \"4169e1\",\r\n saddlebrown: \"8b4513\",\r\n salmon: \"fa8072\",\r\n sandybrown: \"f4a460\",\r\n seagreen: \"2e8b57\",\r\n seashell: \"fff5ee\",\r\n sienna: \"a0522d\",\r\n silver: \"c0c0c0\",\r\n skyblue: \"87ceeb\",\r\n slateblue: \"6a5acd\",\r\n slategray: \"708090\",\r\n slategrey: \"708090\",\r\n snow: \"fffafa\",\r\n springgreen: \"00ff7f\",\r\n steelblue: \"4682b4\",\r\n tan: \"d2b48c\",\r\n teal: \"008080\",\r\n thistle: \"d8bfd8\",\r\n tomato: \"ff6347\",\r\n turquoise: \"40e0d0\",\r\n violet: \"ee82ee\",\r\n violetred: \"d02090\",\r\n wheat: \"f5deb3\",\r\n white: \"ffffff\",\r\n whitesmoke: \"f5f5f5\",\r\n yellow: \"ffff00\",\r\n yellowgreen: \"9acd32\"\r\n};\r\nvar standardColorTypes = [{\r\n re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\r\n process: function(colorString) {\r\n return [parseInt(colorString[1], 10), parseInt(colorString[2], 10), parseInt(colorString[3], 10)]\r\n }\r\n}, {\r\n re: /^rgba\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d*\\.*\\d+)\\)$/,\r\n process: function(colorString) {\r\n return [parseInt(colorString[1], 10), parseInt(colorString[2], 10), parseInt(colorString[3], 10), parseFloat(colorString[4])]\r\n }\r\n}, {\r\n re: /^#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})$/,\r\n process: function(colorString) {\r\n return [parseInt(colorString[1], 16), parseInt(colorString[2], 16), parseInt(colorString[3], 16)]\r\n }\r\n}, {\r\n re: /^#([a-f0-9]{1})([a-f0-9]{1})([a-f0-9]{1})$/,\r\n process: function(colorString) {\r\n return [parseInt(colorString[1] + colorString[1], 16), parseInt(colorString[2] + colorString[2], 16), parseInt(colorString[3] + colorString[3], 16)]\r\n }\r\n}, {\r\n re: /^hsv\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\r\n process: function(colorString) {\r\n var h = parseInt(colorString[1], 10);\r\n var s = parseInt(colorString[2], 10);\r\n var v = parseInt(colorString[3], 10);\r\n var rgb = hsvToRgb(h, s, v);\r\n return [rgb[0], rgb[1], rgb[2], 1, [h, s, v]]\r\n }\r\n}, {\r\n re: /^hsl\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\r\n process: function(colorString) {\r\n var h = parseInt(colorString[1], 10);\r\n var s = parseInt(colorString[2], 10);\r\n var l = parseInt(colorString[3], 10);\r\n var rgb = hslToRgb(h, s, l);\r\n return [rgb[0], rgb[1], rgb[2], 1, null, [h, s, l]]\r\n }\r\n}];\r\nvar _round = Math.round;\r\n\r\nfunction Color(value) {\r\n this.baseColor = value;\r\n var color;\r\n if (value) {\r\n color = String(value).toLowerCase().replace(/ /g, \"\");\r\n color = standardColorNames[color] ? \"#\" + standardColorNames[color] : color;\r\n color = parseColor(color)\r\n }\r\n if (!color) {\r\n this.colorIsInvalid = true\r\n }\r\n color = color || {};\r\n this.r = normalize(color[0]);\r\n this.g = normalize(color[1]);\r\n this.b = normalize(color[2]);\r\n this.a = normalize(color[3], 1, 1);\r\n if (color[4]) {\r\n this.hsv = {\r\n h: color[4][0],\r\n s: color[4][1],\r\n v: color[4][2]\r\n }\r\n } else {\r\n this.hsv = toHsvFromRgb(this.r, this.g, this.b)\r\n }\r\n if (color[5]) {\r\n this.hsl = {\r\n h: color[5][0],\r\n s: color[5][1],\r\n l: color[5][2]\r\n }\r\n } else {\r\n this.hsl = toHslFromRgb(this.r, this.g, this.b)\r\n }\r\n}\r\n\r\nfunction parseColor(color) {\r\n if (\"transparent\" === color) {\r\n return [0, 0, 0, 0]\r\n }\r\n var i = 0;\r\n var ii = standardColorTypes.length;\r\n var str;\r\n for (; i < ii; ++i) {\r\n str = standardColorTypes[i].re.exec(color);\r\n if (str) {\r\n return standardColorTypes[i].process(str)\r\n }\r\n }\r\n return null\r\n}\r\n\r\nfunction normalize(colorComponent, def, max) {\r\n def = def || 0;\r\n max = max || 255;\r\n return colorComponent < 0 || isNaN(colorComponent) ? def : colorComponent > max ? max : colorComponent\r\n}\r\n\r\nfunction toHexFromRgb(r, g, b) {\r\n return \"#\" + (16777216 | r << 16 | g << 8 | b).toString(16).slice(1)\r\n}\r\n\r\nfunction toHsvFromRgb(r, g, b) {\r\n var max = Math.max(r, g, b);\r\n var min = Math.min(r, g, b);\r\n var delta = max - min;\r\n var H;\r\n var S;\r\n var V = max;\r\n S = 0 === max ? 0 : 1 - min / max;\r\n if (max === min) {\r\n H = 0\r\n } else {\r\n switch (max) {\r\n case r:\r\n H = (g - b) / delta * 60;\r\n if (g < b) {\r\n H += 360\r\n }\r\n break;\r\n case g:\r\n H = (b - r) / delta * 60 + 120;\r\n break;\r\n case b:\r\n H = (r - g) / delta * 60 + 240\r\n }\r\n }\r\n S *= 100;\r\n V *= 100 / 255;\r\n return {\r\n h: Math.round(H),\r\n s: Math.round(S),\r\n v: Math.round(V)\r\n }\r\n}\r\n\r\nfunction hsvToRgb(h, s, v) {\r\n var index = Math.floor(h % 360 / 60);\r\n var vMin = (100 - s) * v / 100;\r\n var a = h % 60 / 60 * (v - vMin);\r\n var vInc = vMin + a;\r\n var vDec = v - a;\r\n var r;\r\n var g;\r\n var b;\r\n switch (index) {\r\n case 0:\r\n r = v;\r\n g = vInc;\r\n b = vMin;\r\n break;\r\n case 1:\r\n r = vDec;\r\n g = v;\r\n b = vMin;\r\n break;\r\n case 2:\r\n r = vMin;\r\n g = v;\r\n b = vInc;\r\n break;\r\n case 3:\r\n r = vMin;\r\n g = vDec;\r\n b = v;\r\n break;\r\n case 4:\r\n r = vInc;\r\n g = vMin;\r\n b = v;\r\n break;\r\n case 5:\r\n r = v;\r\n g = vMin;\r\n b = vDec\r\n }\r\n return [Math.round(2.55 * r), Math.round(2.55 * g), Math.round(2.55 * b)]\r\n}\r\n\r\nfunction calculateHue(r, g, b, delta) {\r\n var max = Math.max(r, g, b);\r\n switch (max) {\r\n case r:\r\n return (g - b) / delta + (g < b ? 6 : 0);\r\n case g:\r\n return (b - r) / delta + 2;\r\n case b:\r\n return (r - g) / delta + 4\r\n }\r\n}\r\n\r\nfunction toHslFromRgb(r, g, b) {\r\n r = convertTo01Bounds(r, 255);\r\n g = convertTo01Bounds(g, 255);\r\n b = convertTo01Bounds(b, 255);\r\n var max = Math.max(r, g, b);\r\n var min = Math.min(r, g, b);\r\n var maxMinSum = max + min;\r\n var h;\r\n var s;\r\n var l = maxMinSum / 2;\r\n if (max === min) {\r\n h = s = 0\r\n } else {\r\n var delta = max - min;\r\n if (l > .5) {\r\n s = delta / (2 - maxMinSum)\r\n } else {\r\n s = delta / maxMinSum\r\n }\r\n h = calculateHue(r, g, b, delta);\r\n h /= 6\r\n }\r\n return {\r\n h: _round(360 * h),\r\n s: _round(100 * s),\r\n l: _round(100 * l)\r\n }\r\n}\r\n\r\nfunction makeColorTint(colorPart, h) {\r\n var colorTint = h;\r\n if (\"r\" === colorPart) {\r\n colorTint = h + 1 / 3\r\n }\r\n if (\"b\" === colorPart) {\r\n colorTint = h - 1 / 3\r\n }\r\n return colorTint\r\n}\r\n\r\nfunction modifyColorTint(colorTint) {\r\n if (colorTint < 0) {\r\n colorTint += 1\r\n }\r\n if (colorTint > 1) {\r\n colorTint -= 1\r\n }\r\n return colorTint\r\n}\r\n\r\nfunction hueToRgb(p, q, colorTint) {\r\n colorTint = modifyColorTint(colorTint);\r\n if (colorTint < 1 / 6) {\r\n return p + 6 * (q - p) * colorTint\r\n }\r\n if (colorTint < .5) {\r\n return q\r\n }\r\n if (colorTint < 2 / 3) {\r\n return p + (q - p) * (2 / 3 - colorTint) * 6\r\n }\r\n return p\r\n}\r\n\r\nfunction hslToRgb(h, s, l) {\r\n var r;\r\n var g;\r\n var b;\r\n h = convertTo01Bounds(h, 360);\r\n s = convertTo01Bounds(s, 100);\r\n l = convertTo01Bounds(l, 100);\r\n if (0 === s) {\r\n r = g = b = l\r\n } else {\r\n var q = l < .5 ? l * (1 + s) : l + s - l * s;\r\n var p = 2 * l - q;\r\n r = hueToRgb(p, q, makeColorTint(\"r\", h));\r\n g = hueToRgb(p, q, makeColorTint(\"g\", h));\r\n b = hueToRgb(p, q, makeColorTint(\"b\", h))\r\n }\r\n return [_round(255 * r), _round(255 * g), _round(255 * b)]\r\n}\r\n\r\nfunction convertTo01Bounds(n, max) {\r\n n = Math.min(max, Math.max(0, parseFloat(n)));\r\n if (Math.abs(n - max) < 1e-6) {\r\n return 1\r\n }\r\n return n % max / parseFloat(max)\r\n}\r\n\r\nfunction isIntegerBetweenMinAndMax(number, min, max) {\r\n min = min || 0;\r\n max = max || 255;\r\n if (number % 1 !== 0 || number < min || number > max || \"number\" !== typeof number || isNaN(number)) {\r\n return false\r\n }\r\n return true\r\n}\r\nColor.prototype = {\r\n constructor: Color,\r\n highlight: function(step) {\r\n step = step || 10;\r\n return this.alter(step).toHex()\r\n },\r\n darken: function(step) {\r\n step = step || 10;\r\n return this.alter(-step).toHex()\r\n },\r\n alter: function(step) {\r\n var result = new Color;\r\n result.r = normalize(this.r + step);\r\n result.g = normalize(this.g + step);\r\n result.b = normalize(this.b + step);\r\n return result\r\n },\r\n blend: function(blendColor, opacity) {\r\n var other = blendColor instanceof Color ? blendColor : new Color(blendColor);\r\n var result = new Color;\r\n result.r = normalize(_round(this.r * (1 - opacity) + other.r * opacity));\r\n result.g = normalize(_round(this.g * (1 - opacity) + other.g * opacity));\r\n result.b = normalize(_round(this.b * (1 - opacity) + other.b * opacity));\r\n return result\r\n },\r\n toHex: function() {\r\n return toHexFromRgb(this.r, this.g, this.b)\r\n },\r\n getPureColor: function() {\r\n var rgb = hsvToRgb(this.hsv.h, 100, 100);\r\n return new Color(\"rgb(\" + rgb.join(\",\") + \")\")\r\n },\r\n isValidHex: function(hex) {\r\n return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(hex)\r\n },\r\n isValidRGB: function(r, g, b) {\r\n if (!isIntegerBetweenMinAndMax(r) || !isIntegerBetweenMinAndMax(g) || !isIntegerBetweenMinAndMax(b)) {\r\n return false\r\n }\r\n return true\r\n },\r\n isValidAlpha: function(a) {\r\n if (isNaN(a) || a < 0 || a > 1 || \"number\" !== typeof a) {\r\n return false\r\n }\r\n return true\r\n },\r\n colorIsInvalid: false,\r\n fromHSL: function(hsl) {\r\n var color = new Color;\r\n var rgb = hslToRgb(hsl.h, hsl.s, hsl.l);\r\n color.r = rgb[0];\r\n color.g = rgb[1];\r\n color.b = rgb[2];\r\n return color\r\n }\r\n};\r\nexport default Color;\r\n","/**\r\n * DevExtreme (esm/events/gesture/swipeable.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n start as swipeEventStart,\r\n swipe as swipeEventSwipe,\r\n end as swipeEventEnd\r\n} from \"../swipe\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport DOMComponent from \"../../core/dom_component\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n addNamespace\r\n} from \"../utils/index\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n name\r\n} from \"../../core/utils/public_component\";\r\nvar DX_SWIPEABLE = \"dxSwipeable\";\r\nvar SWIPEABLE_CLASS = \"dx-swipeable\";\r\nvar ACTION_TO_EVENT_MAP = {\r\n onStart: swipeEventStart,\r\n onUpdated: swipeEventSwipe,\r\n onEnd: swipeEventEnd,\r\n onCancel: \"dxswipecancel\"\r\n};\r\nvar Swipeable = DOMComponent.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n elastic: true,\r\n immediate: false,\r\n direction: \"horizontal\",\r\n itemSizeFunc: null,\r\n onStart: null,\r\n onUpdated: null,\r\n onEnd: null,\r\n onCancel: null\r\n })\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this.$element().addClass(SWIPEABLE_CLASS);\r\n this._attachEventHandlers()\r\n },\r\n _attachEventHandlers: function() {\r\n this._detachEventHandlers();\r\n if (this.option(\"disabled\")) {\r\n return\r\n }\r\n var NAME = this.NAME;\r\n this._createEventData();\r\n each(ACTION_TO_EVENT_MAP, function(actionName, eventName) {\r\n var action = this._createActionByOption(actionName, {\r\n context: this\r\n });\r\n eventName = addNamespace(eventName, NAME);\r\n eventsEngine.on(this.$element(), eventName, this._eventData, (function(e) {\r\n return action({\r\n event: e\r\n })\r\n }))\r\n }.bind(this))\r\n },\r\n _createEventData: function() {\r\n this._eventData = {\r\n elastic: this.option(\"elastic\"),\r\n itemSizeFunc: this.option(\"itemSizeFunc\"),\r\n direction: this.option(\"direction\"),\r\n immediate: this.option(\"immediate\")\r\n }\r\n },\r\n _detachEventHandlers: function() {\r\n eventsEngine.off(this.$element(), \".\" + DX_SWIPEABLE)\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"disabled\":\r\n case \"onStart\":\r\n case \"onUpdated\":\r\n case \"onEnd\":\r\n case \"onCancel\":\r\n case \"elastic\":\r\n case \"immediate\":\r\n case \"itemSizeFunc\":\r\n case \"direction\":\r\n this._detachEventHandlers();\r\n this._attachEventHandlers();\r\n break;\r\n case \"rtlEnabled\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _useTemplates: function() {\r\n return false\r\n }\r\n});\r\nname(Swipeable, DX_SWIPEABLE);\r\nexport default Swipeable;\r\n","export default {\r\n\r\n}\r\n","export default {\r\n}\r\n","import jwt from '@/http/requests/auth/jwt'\r\n\r\nexport default {\r\n\r\n fetchStrategies ({ commit }, idCampaign) {\r\n\r\n return new Promise((resolve, reject) => {\r\n jwt.get('/api/admin/strategy/list', { idCampaign: idCampaign })\r\n .then((response) => {\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n fetchStrategiesSmall ({ commit }, idCampaign) {\r\n\r\n return new Promise((resolve, reject) => {\r\n jwt.get('/api/admin/strategy/listsmall', { idCampaign: idCampaign })\r\n .then((response) => {\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n fetchStrategy (context, idStrategy) {\r\n return new Promise((resolve, reject) => {\r\n const url = idStrategy ? `/api/admin/strategy/${idStrategy}` : \"/api/admin/strategy/new\"\r\n jwt.get(url)\r\n .then((response) => {\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n saveStrategy (context, data) {\r\n return new Promise((resolve, reject) => {\r\n jwt.post('/api/admin/strategy/save', data)\r\n .then((response) => {\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n syncStrategies (context, idCampaign) {\r\n return new Promise((resolve, reject) => {\r\n jwt.post(`/api/admin/campaign/${idCampaign}/syncstrategies`)\r\n .then((response) => {\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n removeRecord ({ commit }, idStrategy) {\r\n return new Promise((resolve, reject) => {\r\n jwt.post(`/api/admin/strategy/delete/${idStrategy}`)\r\n .then((response) => {\r\n commit('REMOVE_RECORD', idStrategy)\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n }\r\n}\r\n","export default {}","import state from './moduleStrategyManagementState.js'\r\nimport mutations from './moduleStrategyManagementMutations.js'\r\nimport actions from './moduleStrategyManagementActions.js'\r\nimport getters from './moduleStrategyManagementGetters.js'\r\n\r\nexport default {\r\n isRegistered: false,\r\n namespaced: true,\r\n state,\r\n mutations,\r\n actions,\r\n getters\r\n}\r\n","// 20.2.2.34 Math.trunc(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n trunc: function trunc(it) {\n return (it > 0 ? Math.floor : Math.ceil)(it);\n }\n});\n","/**\r\n * DevExtreme (esm/format_helper.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n isString,\r\n isNumeric,\r\n isFunction,\r\n isDefined,\r\n isDate,\r\n isPlainObject\r\n} from \"./core/utils/type\";\r\nimport dateUtils from \"./core/utils/date\";\r\nimport numberLocalization from \"./localization/number\";\r\nimport dateLocalization from \"./localization/date\";\r\nimport dependencyInjector from \"./core/utils/dependency_injector\";\r\nimport \"./localization/currency\";\r\nexport default dependencyInjector({\r\n format: function(value, _format) {\r\n var formatIsValid = isString(_format) && \"\" !== _format || isPlainObject(_format) || isFunction(_format);\r\n var valueIsValid = isNumeric(value) || isDate(value);\r\n if (!formatIsValid || !valueIsValid) {\r\n return isDefined(value) ? value.toString() : \"\"\r\n }\r\n if (isFunction(_format)) {\r\n return _format(value)\r\n }\r\n if (isString(_format)) {\r\n _format = {\r\n type: _format\r\n }\r\n }\r\n if (isNumeric(value)) {\r\n return numberLocalization.format(value, _format)\r\n }\r\n if (isDate(value)) {\r\n return dateLocalization.format(value, _format)\r\n }\r\n },\r\n getTimeFormat: function(showSecond) {\r\n return showSecond ? \"longtime\" : \"shorttime\"\r\n },\r\n _normalizeFormat: function(format) {\r\n if (!Array.isArray(format)) {\r\n return format\r\n }\r\n if (1 === format.length) {\r\n return format[0]\r\n }\r\n return function(date) {\r\n return format.map((function(formatPart) {\r\n return dateLocalization.format(date, formatPart)\r\n })).join(\" \")\r\n }\r\n },\r\n getDateFormatByDifferences: function(dateDifferences, intervalFormat) {\r\n var resultFormat = [];\r\n var needSpecialSecondFormatter = intervalFormat && dateDifferences.millisecond && !(dateDifferences.year || dateDifferences.month || dateDifferences.day);\r\n if (needSpecialSecondFormatter) {\r\n resultFormat.push((function(date) {\r\n return date.getSeconds() + date.getMilliseconds() / 1e3 + \"s\"\r\n }))\r\n } else if (dateDifferences.millisecond) {\r\n resultFormat.push(\"millisecond\")\r\n }\r\n if (dateDifferences.hour || dateDifferences.minute || !needSpecialSecondFormatter && dateDifferences.second) {\r\n resultFormat.unshift(this.getTimeFormat(dateDifferences.second))\r\n }\r\n if (dateDifferences.year && dateDifferences.month && dateDifferences.day) {\r\n if (intervalFormat && \"month\" === intervalFormat) {\r\n return \"monthandyear\"\r\n } else {\r\n resultFormat.unshift(\"shortdate\");\r\n return this._normalizeFormat(resultFormat)\r\n }\r\n }\r\n if (dateDifferences.year && dateDifferences.month) {\r\n return \"monthandyear\"\r\n }\r\n if (dateDifferences.year && dateDifferences.quarter) {\r\n return \"quarterandyear\"\r\n }\r\n if (dateDifferences.year) {\r\n return \"year\"\r\n }\r\n if (dateDifferences.quarter) {\r\n return \"quarter\"\r\n }\r\n if (dateDifferences.month && dateDifferences.day) {\r\n if (intervalFormat) {\r\n resultFormat.unshift((function(date) {\r\n return dateLocalization.getMonthNames(\"abbreviated\")[date.getMonth()] + \" \" + dateLocalization.format(date, \"day\")\r\n }))\r\n } else {\r\n resultFormat.unshift(\"monthandday\")\r\n }\r\n return this._normalizeFormat(resultFormat)\r\n }\r\n if (dateDifferences.month) {\r\n return \"month\"\r\n }\r\n if (dateDifferences.day) {\r\n if (intervalFormat) {\r\n resultFormat.unshift(\"day\")\r\n } else {\r\n resultFormat.unshift((function(date) {\r\n return dateLocalization.format(date, \"dayofweek\") + \", \" + dateLocalization.format(date, \"day\")\r\n }))\r\n }\r\n return this._normalizeFormat(resultFormat)\r\n }\r\n return this._normalizeFormat(resultFormat)\r\n },\r\n getDateFormatByTicks: function(ticks) {\r\n var maxDiff;\r\n var currentDiff;\r\n var i;\r\n if (ticks.length > 1) {\r\n maxDiff = dateUtils.getDatesDifferences(ticks[0], ticks[1]);\r\n for (i = 1; i < ticks.length - 1; i++) {\r\n currentDiff = dateUtils.getDatesDifferences(ticks[i], ticks[i + 1]);\r\n if (maxDiff.count < currentDiff.count) {\r\n maxDiff = currentDiff\r\n }\r\n }\r\n } else {\r\n maxDiff = {\r\n year: true,\r\n month: true,\r\n day: true,\r\n hour: ticks[0].getHours() > 0,\r\n minute: ticks[0].getMinutes() > 0,\r\n second: ticks[0].getSeconds() > 0,\r\n millisecond: ticks[0].getMilliseconds() > 0\r\n }\r\n }\r\n var resultFormat = this.getDateFormatByDifferences(maxDiff);\r\n return resultFormat\r\n },\r\n getDateFormatByTickInterval: function(startValue, endValue, tickInterval) {\r\n var dateUnitInterval;\r\n var correctDateDifferences = function(dateDifferences, tickInterval, value) {\r\n switch (tickInterval) {\r\n case \"year\":\r\n case \"quarter\":\r\n dateDifferences.month = value;\r\n case \"month\":\r\n dateDifferences.day = value;\r\n case \"week\":\r\n case \"day\":\r\n dateDifferences.hour = value;\r\n case \"hour\":\r\n dateDifferences.minute = value;\r\n case \"minute\":\r\n dateDifferences.second = value;\r\n case \"second\":\r\n dateDifferences.millisecond = value\r\n }\r\n };\r\n tickInterval = isString(tickInterval) ? tickInterval.toLowerCase() : tickInterval;\r\n var dateDifferences = dateUtils.getDatesDifferences(startValue, endValue);\r\n if (startValue !== endValue) {\r\n ! function(differences, minDate, maxDate) {\r\n if (!maxDate.getMilliseconds() && maxDate.getSeconds()) {\r\n if (maxDate.getSeconds() - minDate.getSeconds() === 1) {\r\n differences.millisecond = true;\r\n differences.second = false\r\n }\r\n } else if (!maxDate.getSeconds() && maxDate.getMinutes()) {\r\n if (maxDate.getMinutes() - minDate.getMinutes() === 1) {\r\n differences.second = true;\r\n differences.minute = false\r\n }\r\n } else if (!maxDate.getMinutes() && maxDate.getHours()) {\r\n if (maxDate.getHours() - minDate.getHours() === 1) {\r\n differences.minute = true;\r\n differences.hour = false\r\n }\r\n } else if (!maxDate.getHours() && maxDate.getDate() > 1) {\r\n if (maxDate.getDate() - minDate.getDate() === 1) {\r\n differences.hour = true;\r\n differences.day = false\r\n }\r\n } else if (1 === maxDate.getDate() && maxDate.getMonth()) {\r\n if (maxDate.getMonth() - minDate.getMonth() === 1) {\r\n differences.day = true;\r\n differences.month = false\r\n }\r\n } else if (!maxDate.getMonth() && maxDate.getFullYear()) {\r\n if (maxDate.getFullYear() - minDate.getFullYear() === 1) {\r\n differences.month = true;\r\n differences.year = false\r\n }\r\n }\r\n }(dateDifferences, startValue > endValue ? endValue : startValue, startValue > endValue ? startValue : endValue)\r\n }\r\n dateUnitInterval = dateUtils.getDateUnitInterval(dateDifferences);\r\n correctDateDifferences(dateDifferences, dateUnitInterval, true);\r\n dateUnitInterval = dateUtils.getDateUnitInterval(tickInterval || \"second\");\r\n correctDateDifferences(dateDifferences, dateUnitInterval, false);\r\n dateDifferences[{\r\n week: \"day\"\r\n } [dateUnitInterval] || dateUnitInterval] = true;\r\n var resultFormat = this.getDateFormatByDifferences(dateDifferences);\r\n return resultFormat\r\n }\r\n});\r\n","/*!\n * devextreme-vue\n * Version: 21.2.5\n * Build date: Mon Jan 17 2022\n *\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\n *\n * This software may be modified and distributed under the terms\n * of the MIT license. See the LICENSE file in the root of the project for details.\n *\n * https://github.com/DevExpress/devextreme-vue\n */\n\n\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DxTooltip = exports.DxLabel = exports.DxFormat = exports.DxSlider = void 0;\nvar slider_1 = __importDefault(require(\"devextreme/ui/slider\"));\nvar index_1 = require(\"./core/index\");\nvar index_2 = require(\"./core/index\");\nvar DxSlider = index_1.createComponent({\n props: {\n accessKey: String,\n activeStateEnabled: Boolean,\n disabled: Boolean,\n elementAttr: Object,\n focusStateEnabled: Boolean,\n height: [Function, Number, String],\n hint: String,\n hoverStateEnabled: Boolean,\n isValid: Boolean,\n keyStep: Number,\n label: Object,\n max: Number,\n min: Number,\n name: String,\n onContentReady: Function,\n onDisposing: Function,\n onInitialized: Function,\n onOptionChanged: Function,\n onValueChanged: Function,\n readOnly: Boolean,\n rtlEnabled: Boolean,\n showRange: Boolean,\n step: Number,\n tabIndex: Number,\n tooltip: Object,\n validationError: {},\n validationErrors: Array,\n validationMessageMode: String,\n validationStatus: String,\n value: Number,\n visible: Boolean,\n width: [Function, Number, String]\n },\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:accessKey\": null,\n \"update:activeStateEnabled\": null,\n \"update:disabled\": null,\n \"update:elementAttr\": null,\n \"update:focusStateEnabled\": null,\n \"update:height\": null,\n \"update:hint\": null,\n \"update:hoverStateEnabled\": null,\n \"update:isValid\": null,\n \"update:keyStep\": null,\n \"update:label\": null,\n \"update:max\": null,\n \"update:min\": null,\n \"update:name\": null,\n \"update:onContentReady\": null,\n \"update:onDisposing\": null,\n \"update:onInitialized\": null,\n \"update:onOptionChanged\": null,\n \"update:onValueChanged\": null,\n \"update:readOnly\": null,\n \"update:rtlEnabled\": null,\n \"update:showRange\": null,\n \"update:step\": null,\n \"update:tabIndex\": null,\n \"update:tooltip\": null,\n \"update:validationError\": null,\n \"update:validationErrors\": null,\n \"update:validationMessageMode\": null,\n \"update:validationStatus\": null,\n \"update:value\": null,\n \"update:visible\": null,\n \"update:width\": null,\n },\n model: { prop: \"value\", event: \"update:value\" },\n computed: {\n instance: function () {\n return this.$_instance;\n }\n },\n beforeCreate: function () {\n this.$_WidgetClass = slider_1.default;\n this.$_hasAsyncTemplate = true;\n this.$_expectedChildren = {\n label: { isCollectionItem: false, optionName: \"label\" },\n tooltip: { isCollectionItem: false, optionName: \"tooltip\" }\n };\n }\n});\nexports.DxSlider = DxSlider;\nvar DxFormat = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:currency\": null,\n \"update:formatter\": null,\n \"update:parser\": null,\n \"update:precision\": null,\n \"update:type\": null,\n },\n props: {\n currency: String,\n formatter: Function,\n parser: Function,\n precision: Number,\n type: String\n }\n});\nexports.DxFormat = DxFormat;\nDxFormat.$_optionName = \"format\";\nvar DxLabel = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:format\": null,\n \"update:position\": null,\n \"update:visible\": null,\n },\n props: {\n format: [Object, Function, String],\n position: String,\n visible: Boolean\n }\n});\nexports.DxLabel = DxLabel;\nDxLabel.$_optionName = \"label\";\nDxLabel.$_expectedChildren = {\n format: { isCollectionItem: false, optionName: \"format\" }\n};\nvar DxTooltip = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:enabled\": null,\n \"update:format\": null,\n \"update:position\": null,\n \"update:showMode\": null,\n },\n props: {\n enabled: Boolean,\n format: [Object, Function, String],\n position: String,\n showMode: String\n }\n});\nexports.DxTooltip = DxTooltip;\nDxTooltip.$_optionName = \"tooltip\";\nDxTooltip.$_expectedChildren = {\n format: { isCollectionItem: false, optionName: \"format\" }\n};\nexports.default = DxSlider;\n","/**\r\n * DevExtreme (esm/ui/track_bar.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport $ from \"../core/renderer\";\r\nimport Editor from \"./editor/editor\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n hasWindow\r\n} from \"../core/utils/window\";\r\nimport fx from \"../animation/fx\";\r\nvar TRACKBAR_CLASS = \"dx-trackbar\";\r\nvar TRACKBAR_CONTAINER_CLASS = \"dx-trackbar-container\";\r\nvar TRACKBAR_RANGE_CLASS = \"dx-trackbar-range\";\r\nvar TRACKBAR_WRAPPER_CLASS = \"dx-trackbar-wrapper\";\r\nvar TrackBar = Editor.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n min: 0,\r\n max: 100,\r\n value: 0\r\n })\r\n },\r\n _initMarkup: function() {\r\n this.$element().addClass(TRACKBAR_CLASS);\r\n this._renderWrapper();\r\n this._renderContainer();\r\n this._renderRange();\r\n this._renderValue();\r\n this._setRangeStyles();\r\n this.callBase()\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._setRangeStyles(this._rangeStylesConfig())\r\n },\r\n _renderWrapper: function() {\r\n this._$wrapper = $(\"
\").addClass(TRACKBAR_WRAPPER_CLASS).appendTo(this.$element())\r\n },\r\n _renderContainer: function() {\r\n this._$bar = $(\"
\").addClass(TRACKBAR_CONTAINER_CLASS).appendTo(this._$wrapper)\r\n },\r\n _renderRange: function() {\r\n this._$range = $(\"
\").addClass(TRACKBAR_RANGE_CLASS).appendTo(this._$bar)\r\n },\r\n _renderValue: function() {\r\n var val = this.option(\"value\");\r\n var min = this.option(\"min\");\r\n var max = this.option(\"max\");\r\n if (min > max) {\r\n return\r\n }\r\n if (val < min) {\r\n this.option(\"value\", min);\r\n this._currentRatio = 0;\r\n return\r\n }\r\n if (val > max) {\r\n this.option(\"value\", max);\r\n this._currentRatio = 1;\r\n return\r\n }\r\n var ratio = min === max ? 0 : (val - min) / (max - min);\r\n !this._needPreventAnimation && this._setRangeStyles({\r\n width: 100 * ratio + \"%\"\r\n });\r\n this.setAria({\r\n valuemin: this.option(\"min\"),\r\n valuemax: max,\r\n valuenow: val\r\n });\r\n this._currentRatio = ratio\r\n },\r\n _rangeStylesConfig: function() {\r\n return {\r\n width: 100 * this._currentRatio + \"%\"\r\n }\r\n },\r\n _setRangeStyles: function(options) {\r\n fx.stop(this._$range);\r\n if (!options) {\r\n this._$range.css({\r\n width: 0\r\n });\r\n return\r\n }\r\n if (this._needPreventAnimation || !hasWindow()) {\r\n return\r\n }\r\n fx.animate(this._$range, {\r\n type: \"custom\",\r\n duration: 100,\r\n to: options\r\n })\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"value\":\r\n this._renderValue();\r\n this.callBase(args);\r\n break;\r\n case \"max\":\r\n case \"min\":\r\n this._renderValue();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _dispose: function() {\r\n fx.stop(this._$range);\r\n this.callBase()\r\n }\r\n});\r\nregisterComponent(\"dxTrackBar\", TrackBar);\r\nexport default TrackBar;\r\n","export default {\r\n unmappedCampaigns: []\r\n}\r\n","export default {\r\n SET_UNMAPPED_CAMPAIGNS (state, campaigns) {\r\n state.unmappedCampaigns = campaigns\r\n }\r\n}\r\n","import jwt from '@/http/requests/auth/jwt'\r\n\r\nexport default {\r\n\r\n fetchCampaigns ({ commit }, idOrganisation) {\r\n return new Promise((resolve, reject) => {\r\n jwt.get('/api/admin/campaign/list', { idOrganisation })\r\n .then((response) => {\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n fetchCampaignsByAdvertiser ({ commit }, idAdvertiser) {\r\n return new Promise((resolve, reject) => {\r\n jwt.get('/api/admin/campaign/list', { idAdvertiser: idAdvertiser })\r\n .then((response) => {\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n fetchCampaign (context, idCampaign) {\r\n return new Promise((resolve, reject) => {\r\n const url = idCampaign ? `/api/admin/campaign/${idCampaign}` : \"/api/admin/campaign/new\"\r\n jwt.get(url)\r\n .then((response) => {\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n fetchVoucher (context, payload) {\r\n return new Promise((resolve, reject) => {\r\n const url = `/api/admin/voucher/bycode`\r\n jwt.get(url, payload)\r\n .then((response) => {\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n fetchCampaignCategories (context, idCampaign) {\r\n return new Promise((resolve, reject) => {\r\n const url = `/api/admin/campaign/${idCampaign}/categories`\r\n jwt.get(url)\r\n .then((response) => {\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n saveCampaign (context, updatedData) {\r\n return new Promise((resolve, reject) => {\r\n jwt.get(`/api/admin/campaign/${updatedData.id}`)\r\n .then((response) => {\r\n const data = response.data.campaign\r\n Object.assign(data, updatedData)\r\n jwt.post('/api/admin/campaign/save', data)\r\n .then((response) => {\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n }).catch((error) => { reject(error) })\r\n\r\n })\r\n },\r\n removeRecord ({ commit }, idCampaign) {\r\n return new Promise((resolve, reject) => {\r\n jwt.post(`/api/admin/campaign/delete/${idCampaign}`)\r\n .then((response) => {\r\n commit('REMOVE_RECORD', idCampaign)\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n fetchImages (context, idCampaign) {\r\n return new Promise((resolve, reject) => {\r\n const url = `/api/admin/campaign/${idCampaign}/images`\r\n jwt.get(url)\r\n .then((response) => {\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n reorderImages (context, data) {\r\n return new Promise((resolve, reject) => {\r\n const url = `/api/admin/campaign/${data.idCampaign}/images/reorder`\r\n jwt.post(url, data)\r\n .then((response) => {\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n addImage (context, data) {\r\n return new Promise((resolve, reject) => {\r\n const url = `/api/admin/campaign/${data.idCampaign}/image`\r\n jwt.post(url, data)\r\n .then((response) => {\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n deleteImage (context, id) {\r\n return new Promise((resolve, reject) => {\r\n const url = `/api/admin/campaign/image/delete/${id}`\r\n jwt.post(url)\r\n .then((response) => {\r\n resolve(response)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n fetchUnmappedCampaigns ({ commit }, idAdvertiser) {\r\n return new Promise((resolve, reject) => {\r\n jwt.get(`/api/admin/advertiser/${idAdvertiser}/campaigns/unmapped`)\r\n .then((response) => {\r\n commit('SET_UNMAPPED_CAMPAIGNS', response.data.items)\r\n resolve(response.data.items)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n addCampaignsToAdvertiser (context, payload) {\r\n return jwt.post(`/api/admin/advertiser/${payload.id}/campaigns/add`, payload)\r\n },\r\n fetchCampaignBanners (context, idCampaign) {\r\n return new Promise((resolve, reject) => {\r\n const url = `/api/campaign/${idCampaign}/banners`\r\n jwt.get(url)\r\n .then((response) => {\r\n resolve(response.data.items)\r\n })\r\n .catch((error) => { reject(error) })\r\n })\r\n },\r\n}\r\n","export default {}","import state from './moduleCampaignManagementState.js'\r\nimport mutations from './moduleCampaignManagementMutations.js'\r\nimport actions from './moduleCampaignManagementActions.js'\r\nimport getters from './moduleCampaignManagementGetters.js'\r\n\r\nexport default {\r\n isRegistered: false,\r\n namespaced: true,\r\n state,\r\n mutations,\r\n actions,\r\n getters\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/resizable/utils.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n isWindow\r\n} from \"../../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nimport {\r\n getOuterWidth,\r\n getInnerWidth,\r\n getOuterHeight,\r\n getInnerHeight,\r\n getOffset\r\n} from \"../../../core/utils/size\";\r\nexport var borderWidthStyles = {\r\n left: \"borderLeftWidth\",\r\n top: \"borderTopWidth\",\r\n right: \"borderRightWidth\",\r\n bottom: \"borderBottomWidth\"\r\n};\r\n\r\nfunction getBorderWidth(el, direction) {\r\n if (!isWindow(el)) {\r\n var borderWidth = el.style[borderWidthStyles[direction]];\r\n return parseInt(borderWidth, 10) || 0\r\n }\r\n return 0\r\n}\r\nvar correctGeometry = function(area, mainEl) {\r\n var el = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : void 0;\r\n var {\r\n height: height,\r\n offset: offset,\r\n width: width\r\n } = area;\r\n var {\r\n left: left,\r\n top: top\r\n } = offset;\r\n var areaBorderLeft = el ? getBorderWidth(el, \"left\") : 0;\r\n var areaBorderTop = el ? getBorderWidth(el, \"top\") : 0;\r\n return {\r\n width: width - getOuterWidth(mainEl) - getInnerWidth(mainEl),\r\n height: height - getOuterHeight(mainEl) - getInnerHeight(mainEl),\r\n offset: {\r\n left: left + areaBorderLeft + getBorderWidth(mainEl, \"left\"),\r\n top: top + areaBorderTop + getBorderWidth(mainEl, \"top\")\r\n }\r\n }\r\n};\r\nexport var getAreaFromElement = (el, mainEl) => correctGeometry({\r\n width: getInnerWidth(el),\r\n height: getInnerHeight(el),\r\n offset: extend({\r\n top: 0,\r\n left: 0\r\n }, isWindow(el) ? {} : getOffset(el))\r\n}, mainEl, el);\r\nexport var getAreaFromObject = (_ref, mainEl) => {\r\n var {\r\n bottom: bottom,\r\n left: left,\r\n right: right,\r\n top: top\r\n } = _ref;\r\n return correctGeometry({\r\n width: right - left,\r\n height: bottom - top,\r\n offset: {\r\n left: left,\r\n top: top\r\n }\r\n }, mainEl)\r\n};\r\nexport var getMovingSides = el => {\r\n var {\r\n className: className\r\n } = el;\r\n var hasCornerTopLeftClass = className.includes(\"dx-resizable-handle-corner-top-left\");\r\n var hasCornerTopRightClass = className.includes(\"dx-resizable-handle-corner-top-right\");\r\n var hasCornerBottomLeftClass = className.includes(\"dx-resizable-handle-corner-bottom-left\");\r\n var hasCornerBottomRightClass = className.includes(\"dx-resizable-handle-corner-bottom-right\");\r\n return {\r\n top: className.includes(\"dx-resizable-handle-top\") || hasCornerTopLeftClass || hasCornerTopRightClass,\r\n left: className.includes(\"dx-resizable-handle-left\") || hasCornerTopLeftClass || hasCornerBottomLeftClass,\r\n bottom: className.includes(\"dx-resizable-handle-bottom\") || hasCornerBottomLeftClass || hasCornerBottomRightClass,\r\n right: className.includes(\"dx-resizable-handle-right\") || hasCornerTopRightClass || hasCornerBottomRightClass\r\n }\r\n};\r\nexport function getDragOffsets(area, handleEl, areaProp) {\r\n var hWidth = getOuterWidth(handleEl);\r\n var hHeight = getOuterHeight(handleEl);\r\n var hOffset = getOffset(handleEl);\r\n var areaOffset = area.offset;\r\n var isAreaWindow = isWindow(areaProp);\r\n var scrollOffset_scrollX = isAreaWindow ? areaProp.pageXOffset : 0,\r\n scrollOffset_scrollY = isAreaWindow ? areaProp.pageYOffset : 0;\r\n return {\r\n maxLeftOffset: hOffset.left - areaOffset.left - scrollOffset_scrollX,\r\n maxRightOffset: areaOffset.left + area.width - hOffset.left - hWidth + scrollOffset_scrollX,\r\n maxTopOffset: hOffset.top - areaOffset.top - scrollOffset_scrollY,\r\n maxBottomOffset: areaOffset.top + area.height - hOffset.top - hHeight + scrollOffset_scrollY\r\n }\r\n}\r\nexport var filterOffsets = (offset, handleEl) => {\r\n var sides = getMovingSides(handleEl);\r\n var offsetX = !sides.left && !sides.right ? 0 : offset.x;\r\n var offsetY = !sides.top && !sides.bottom ? 0 : offset.y;\r\n return {\r\n x: offsetX,\r\n y: offsetY\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/popover/popover_position_controller.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nvar _excluded = [\"shading\", \"$arrow\"];\r\nimport {\r\n isDefined,\r\n isString\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport positionUtils from \"../../animation/position\";\r\nimport {\r\n pairToObject\r\n} from \"../../core/utils/common\";\r\nimport {\r\n borderWidthStyles\r\n} from \"../../renovation/ui/resizable/utils\";\r\nimport {\r\n getWidth,\r\n getHeight\r\n} from \"../../core/utils/size\";\r\nimport {\r\n OverlayPositionController\r\n} from \"../overlay/overlay_position_controller\";\r\nvar WEIGHT_OF_SIDES = {\r\n left: -1,\r\n top: -1,\r\n center: 0,\r\n right: 1,\r\n bottom: 1\r\n};\r\nvar POPOVER_POSITION_ALIASES = {\r\n top: {\r\n my: \"bottom center\",\r\n at: \"top center\",\r\n collision: \"fit flip\"\r\n },\r\n bottom: {\r\n my: \"top center\",\r\n at: \"bottom center\",\r\n collision: \"fit flip\"\r\n },\r\n right: {\r\n my: \"left center\",\r\n at: \"right center\",\r\n collision: \"flip fit\"\r\n },\r\n left: {\r\n my: \"right center\",\r\n at: \"left center\",\r\n collision: \"flip fit\"\r\n }\r\n};\r\nvar POPOVER_DEFAULT_BOUNDARY_OFFSET = {\r\n h: 10,\r\n v: 10\r\n};\r\nclass PopoverPositionController extends OverlayPositionController {\r\n constructor(_ref) {\r\n var {\r\n shading: shading,\r\n $arrow: $arrow\r\n } = _ref, args = _objectWithoutPropertiesLoose(_ref, _excluded);\r\n super(args);\r\n this._props = _extends({}, this._props, {\r\n shading: shading\r\n });\r\n this._$arrow = $arrow;\r\n this._positionSide = void 0\r\n }\r\n positionWrapper() {\r\n if (this._props.shading) {\r\n this._$wrapper.css({\r\n top: 0,\r\n left: 0\r\n })\r\n }\r\n }\r\n _renderBoundaryOffset() {}\r\n _getContainerPosition() {\r\n var offset = pairToObject(this._position.offset || \"\");\r\n var {\r\n h: hOffset,\r\n v: vOffset\r\n } = offset;\r\n var isVerticalSide = this._isVerticalSide();\r\n var isHorizontalSide = this._isHorizontalSide();\r\n if (isVerticalSide || isHorizontalSide) {\r\n var isPopoverInside = this._isPopoverInside();\r\n var sign = (isPopoverInside ? -1 : 1) * WEIGHT_OF_SIDES[this._positionSide];\r\n var arrowSize = isVerticalSide ? getHeight(this._$arrow) : getWidth(this._$arrow);\r\n var arrowSizeCorrection = this._getContentBorderWidth(this._positionSide);\r\n var arrowOffset = sign * (arrowSize - arrowSizeCorrection);\r\n isVerticalSide ? vOffset += arrowOffset : hOffset += arrowOffset\r\n }\r\n return extend({}, this._position, {\r\n offset: hOffset + \" \" + vOffset\r\n })\r\n }\r\n _getContentBorderWidth(side) {\r\n var borderWidth = this._$content.css(borderWidthStyles[side]);\r\n return parseInt(borderWidth) || 0\r\n }\r\n _isPopoverInside() {\r\n var my = positionUtils.setup.normalizeAlign(this._position.my);\r\n var at = positionUtils.setup.normalizeAlign(this._position.at);\r\n return my.h === at.h && my.v === at.v\r\n }\r\n _isVerticalSide() {\r\n var side = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._positionSide;\r\n return \"top\" === side || \"bottom\" === side\r\n }\r\n _isHorizontalSide() {\r\n var side = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._positionSide;\r\n return \"left\" === side || \"right\" === side\r\n }\r\n _getDisplaySide(position) {\r\n var my = positionUtils.setup.normalizeAlign(position.my);\r\n var at = positionUtils.setup.normalizeAlign(position.at);\r\n var weightSign = WEIGHT_OF_SIDES[my.h] === WEIGHT_OF_SIDES[at.h] && WEIGHT_OF_SIDES[my.v] === WEIGHT_OF_SIDES[at.v] ? -1 : 1;\r\n var horizontalWeight = Math.abs(WEIGHT_OF_SIDES[my.h] - weightSign * WEIGHT_OF_SIDES[at.h]);\r\n var verticalWeight = Math.abs(WEIGHT_OF_SIDES[my.v] - weightSign * WEIGHT_OF_SIDES[at.v]);\r\n return horizontalWeight > verticalWeight ? at.h : at.v\r\n }\r\n _normalizePosition(positionProp, targetProp) {\r\n var defaultPositionConfig = {\r\n of: targetProp,\r\n boundaryOffset: POPOVER_DEFAULT_BOUNDARY_OFFSET\r\n };\r\n var resultPosition;\r\n if (isDefined(positionProp)) {\r\n resultPosition = extend(true, {}, defaultPositionConfig, this._positionToObject(positionProp))\r\n } else {\r\n resultPosition = defaultPositionConfig\r\n }\r\n this._positionSide = this._getDisplaySide(resultPosition);\r\n return resultPosition\r\n }\r\n _positionToObject(positionProp) {\r\n if (isString(positionProp)) {\r\n return extend({}, POPOVER_POSITION_ALIASES[positionProp])\r\n }\r\n return positionProp\r\n }\r\n}\r\nexport {\r\n PopoverPositionController,\r\n POPOVER_POSITION_ALIASES\r\n};\r\n","/*!\n\nJSZip v3.7.1 - A JavaScript class for generating and reading zip files\n\n\n(c) 2009-2016 Stuart Knightley \nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/master/LICENSE\n*/\n\n!function(t){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=t();else if(\"function\"==typeof define&&define.amd)define([],t);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=t()}}(function(){return function s(a,o,h){function u(r,t){if(!o[r]){if(!a[r]){var e=\"function\"==typeof require&&require;if(!t&&e)return e(r,!0);if(l)return l(r,!0);var i=new Error(\"Cannot find module '\"+r+\"'\");throw i.code=\"MODULE_NOT_FOUND\",i}var n=o[r]={exports:{}};a[r][0].call(n.exports,function(t){var e=a[r][1][t];return u(e||t)},n,n.exports,s,a,o,h)}return o[r].exports}for(var l=\"function\"==typeof require&&require,t=0;t>2,s=(3&e)<<4|r>>4,a=1>6:64,o=2>4,r=(15&n)<<4|(s=p.indexOf(t.charAt(o++)))>>2,i=(3&s)<<6|(a=p.indexOf(t.charAt(o++))),l[h++]=e,64!==s&&(l[h++]=r),64!==a&&(l[h++]=i);return l}},{\"./support\":30,\"./utils\":32}],2:[function(t,e,r){\"use strict\";var i=t(\"./external\"),n=t(\"./stream/DataWorker\"),s=t(\"./stream/Crc32Probe\"),a=t(\"./stream/DataLengthProbe\");function o(t,e,r,i,n){this.compressedSize=t,this.uncompressedSize=e,this.crc32=r,this.compression=i,this.compressedContent=n}o.prototype={getContentWorker:function(){var t=new n(i.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a(\"data_length\")),e=this;return t.on(\"end\",function(){if(this.streamInfo.data_length!==e.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),t},getCompressedWorker:function(){return new n(i.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},o.createWorkerFrom=function(t,e,r){return t.pipe(new s).pipe(new a(\"uncompressedSize\")).pipe(e.compressWorker(r)).pipe(new a(\"compressedSize\")).withStreamInfo(\"compression\",e)},e.exports=o},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(t,e,r){\"use strict\";var i=t(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(t){return new i(\"STORE compression\")},uncompressWorker:function(){return new i(\"STORE decompression\")}},r.DEFLATE=t(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(t,e,r){\"use strict\";var i=t(\"./utils\");var o=function(){for(var t,e=[],r=0;r<256;r++){t=r;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[r]=t}return e}();e.exports=function(t,e){return void 0!==t&&t.length?\"string\"!==i.getTypeOf(t)?function(t,e,r,i){var n=o,s=i+r;t^=-1;for(var a=i;a>>8^n[255&(t^e[a])];return-1^t}(0|e,t,t.length,0):function(t,e,r,i){var n=o,s=i+r;t^=-1;for(var a=i;a>>8^n[255&(t^e.charCodeAt(a))];return-1^t}(0|e,t,t.length,0):0}},{\"./utils\":32}],5:[function(t,e,r){\"use strict\";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(t,e,r){\"use strict\";var i=null;i=\"undefined\"!=typeof Promise?Promise:t(\"lie\"),e.exports={Promise:i}},{lie:37}],7:[function(t,e,r){\"use strict\";var i=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,n=t(\"pako\"),s=t(\"./utils\"),a=t(\"./stream/GenericWorker\"),o=i?\"uint8array\":\"array\";function h(t,e){a.call(this,\"FlateWorker/\"+t),this._pako=null,this._pakoAction=t,this._pakoOptions=e,this.meta={}}r.magic=\"\\b\\0\",s.inherits(h,a),h.prototype.processChunk=function(t){this.meta=t.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,t.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new n[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var e=this;this._pako.onData=function(t){e.push({data:t,meta:e.meta})}},r.compressWorker=function(t){return new h(\"Deflate\",t)},r.uncompressWorker=function(){return new h(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(t,e,r){\"use strict\";function A(t,e){var r,i=\"\";for(r=0;r>>=8;return i}function i(t,e,r,i,n,s){var a,o,h=t.file,u=t.compression,l=s!==O.utf8encode,f=I.transformTo(\"string\",s(h.name)),d=I.transformTo(\"string\",O.utf8encode(h.name)),c=h.comment,p=I.transformTo(\"string\",s(c)),m=I.transformTo(\"string\",O.utf8encode(c)),_=d.length!==h.name.length,g=m.length!==c.length,b=\"\",v=\"\",y=\"\",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};e&&!r||(x.crc32=t.crc32,x.compressedSize=t.compressedSize,x.uncompressedSize=t.uncompressedSize);var S=0;e&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),\"UNIX\"===n?(C=798,z|=function(t,e){var r=t;return t||(r=e?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(t){return 63&(t||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+d,b+=\"up\"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+=\"uc\"+A(y.length,2)+y);var E=\"\";return E+=\"\\n\\0\",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+\"\\0\\0\\0\\0\"+A(z,4)+A(i,4)+f+b+p}}var I=t(\"../utils\"),n=t(\"../stream/GenericWorker\"),O=t(\"../utf8\"),B=t(\"../crc32\"),R=t(\"../signature\");function s(t,e,r,i){n.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=e,this.zipPlatform=r,this.encodeFileName=i,this.streamFiles=t,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,n),s.prototype.push=function(t){var e=t.meta.percent||0,r=this.entriesCount,i=this._sources.length;this.accumulate?this.contentBuffer.push(t):(this.bytesWritten+=t.data.length,n.prototype.push.call(this,{data:t.data,meta:{currentFile:this.currentFile,percent:r?(e+100*(r-i-1))/r:100}}))},s.prototype.openedSource=function(t){this.currentSourceOffset=this.bytesWritten,this.currentFile=t.file.name;var e=this.streamFiles&&!t.file.dir;if(e){var r=i(t,e,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(t){this.accumulate=!1;var e=this.streamFiles&&!t.file.dir,r=i(t,e,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),e)this.push({data:function(t){return R.DATA_DESCRIPTOR+A(t.crc32,4)+A(t.compressedSize,4)+A(t.uncompressedSize,4)}(t),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var t=this.bytesWritten,e=0;e=this.index;e--)r=(r<<8)+this.byteAt(e);return this.index+=t,r},readString:function(t){return i.transformTo(\"string\",this.readData(t))},readData:function(t){},lastIndexOfSignature:function(t){},readAndCheckSignature:function(t){},readDate:function(){var t=this.readInt(4);return new Date(Date.UTC(1980+(t>>25&127),(t>>21&15)-1,t>>16&31,t>>11&31,t>>5&63,(31&t)<<1))}},e.exports=n},{\"../utils\":32}],19:[function(t,e,r){\"use strict\";var i=t(\"./Uint8ArrayReader\");function n(t){i.call(this,t)}t(\"../utils\").inherits(n,i),n.prototype.readData=function(t){this.checkOffset(t);var e=this.data.slice(this.zero+this.index,this.zero+this.index+t);return this.index+=t,e},e.exports=n},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(t,e,r){\"use strict\";var i=t(\"./DataReader\");function n(t){i.call(this,t)}t(\"../utils\").inherits(n,i),n.prototype.byteAt=function(t){return this.data.charCodeAt(this.zero+t)},n.prototype.lastIndexOfSignature=function(t){return this.data.lastIndexOf(t)-this.zero},n.prototype.readAndCheckSignature=function(t){return t===this.readData(4)},n.prototype.readData=function(t){this.checkOffset(t);var e=this.data.slice(this.zero+this.index,this.zero+this.index+t);return this.index+=t,e},e.exports=n},{\"../utils\":32,\"./DataReader\":18}],21:[function(t,e,r){\"use strict\";var i=t(\"./ArrayReader\");function n(t){i.call(this,t)}t(\"../utils\").inherits(n,i),n.prototype.readData=function(t){if(this.checkOffset(t),0===t)return new Uint8Array(0);var e=this.data.subarray(this.zero+this.index,this.zero+this.index+t);return this.index+=t,e},e.exports=n},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(t,e,r){\"use strict\";var i=t(\"../utils\"),n=t(\"../support\"),s=t(\"./ArrayReader\"),a=t(\"./StringReader\"),o=t(\"./NodeBufferReader\"),h=t(\"./Uint8ArrayReader\");e.exports=function(t){var e=i.getTypeOf(t);return i.checkSupport(e),\"string\"!==e||n.uint8array?\"nodebuffer\"===e?new o(t):n.uint8array?new h(i.transformTo(\"uint8array\",t)):new s(i.transformTo(\"array\",t)):new a(t)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(t,e,r){\"use strict\";r.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",r.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",r.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",r.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],24:[function(t,e,r){\"use strict\";var i=t(\"./GenericWorker\"),n=t(\"../utils\");function s(t){i.call(this,\"ConvertWorker to \"+t),this.destType=t}n.inherits(s,i),s.prototype.processChunk=function(t){this.push({data:n.transformTo(this.destType,t.data),meta:t.meta})},e.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(t,e,r){\"use strict\";var i=t(\"./GenericWorker\"),n=t(\"../crc32\");function s(){i.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}t(\"../utils\").inherits(s,i),s.prototype.processChunk=function(t){this.streamInfo.crc32=n(t.data,this.streamInfo.crc32||0),this.push(t)},e.exports=s},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(t,e,r){\"use strict\";var i=t(\"../utils\"),n=t(\"./GenericWorker\");function s(t){n.call(this,\"DataLengthProbe for \"+t),this.propName=t,this.withStreamInfo(t,0)}i.inherits(s,n),s.prototype.processChunk=function(t){if(t){var e=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=e+t.data.length}n.prototype.processChunk.call(this,t)},e.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(t,e,r){\"use strict\";var i=t(\"../utils\"),n=t(\"./GenericWorker\");function s(t){n.call(this,\"DataWorker\");var e=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,t.then(function(t){e.dataIsReady=!0,e.data=t,e.max=t&&t.length||0,e.type=i.getTypeOf(t),e.isPaused||e._tickAndRepeat()},function(t){e.error(t)})}i.inherits(s,n),s.prototype.cleanUp=function(){n.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,i.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(i.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var t=null,e=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":t=this.data.substring(this.index,e);break;case\"uint8array\":t=this.data.subarray(this.index,e);break;case\"array\":case\"nodebuffer\":t=this.data.slice(this.index,e)}return this.index=e,this.push({data:t,meta:{percent:this.max?this.index/this.max*100:0}})},e.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(t,e,r){\"use strict\";function i(t){this.name=t||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}i.prototype={push:function(t){this.emit(\"data\",t)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(t){this.emit(\"error\",t)}return!0},error:function(t){return!this.isFinished&&(this.isPaused?this.generatedError=t:(this.isFinished=!0,this.emit(\"error\",t),this.previous&&this.previous.error(t),this.cleanUp()),!0)},on:function(t,e){return this._listeners[t].push(e),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(t,e){if(this._listeners[t])for(var r=0;r \"+t:t}},e.exports=i},{}],29:[function(t,e,r){\"use strict\";var h=t(\"../utils\"),n=t(\"./ConvertWorker\"),s=t(\"./GenericWorker\"),u=t(\"../base64\"),i=t(\"../support\"),a=t(\"../external\"),o=null;if(i.nodestream)try{o=t(\"../nodejs/NodejsStreamOutputAdapter\")}catch(t){}function l(t,o){return new a.Promise(function(e,r){var i=[],n=t._internalType,s=t._outputType,a=t._mimeType;t.on(\"data\",function(t,e){i.push(t),o&&o(e)}).on(\"error\",function(t){i=[],r(t)}).on(\"end\",function(){try{var t=function(t,e,r){switch(t){case\"blob\":return h.newBlob(h.transformTo(\"arraybuffer\",e),r);case\"base64\":return u.encode(e);default:return h.transformTo(t,e)}}(s,function(t,e){var r,i=0,n=null,s=0;for(r=0;r>>6:(r<65536?e[s++]=224|r>>>12:(e[s++]=240|r>>>18,e[s++]=128|r>>>12&63),e[s++]=128|r>>>6&63),e[s++]=128|63&r);return e}(t)},s.utf8decode=function(t){return h.nodebuffer?o.transformTo(\"nodebuffer\",t).toString(\"utf-8\"):function(t){var e,r,i,n,s=t.length,a=new Array(2*s);for(e=r=0;e>10&1023,a[r++]=56320|1023&i)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(t=o.transformTo(h.uint8array?\"uint8array\":\"array\",t))},o.inherits(a,i),a.prototype.processChunk=function(t){var e=o.transformTo(h.uint8array?\"uint8array\":\"array\",t.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=e;(e=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),e.set(r,this.leftOver.length)}else e=this.leftOver.concat(e);this.leftOver=null}var i=function(t,e){var r;for((e=e||t.length)>t.length&&(e=t.length),r=e-1;0<=r&&128==(192&t[r]);)r--;return r<0?e:0===r?e:r+u[t[r]]>e?r:e}(e),n=e;i!==e.length&&(h.uint8array?(n=e.subarray(0,i),this.leftOver=e.subarray(i,e.length)):(n=e.slice(0,i),this.leftOver=e.slice(i,e.length))),this.push({data:s.utf8decode(n),meta:t.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,i),l.prototype.processChunk=function(t){this.push({data:s.utf8encode(t.data),meta:t.meta})},s.Utf8EncodeWorker=l},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(t,e,a){\"use strict\";var o=t(\"./support\"),h=t(\"./base64\"),r=t(\"./nodejsUtils\"),i=t(\"set-immediate-shim\"),u=t(\"./external\");function n(t){return t}function l(t,e){for(var r=0;r>8;this.dir=!!(16&this.externalFileAttributes),0==t&&(this.dosPermissions=63&this.externalFileAttributes),3==t&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(t){if(this.extraFields[1]){var e=i(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(t){var e,r,i,n=t.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});t.index+4>>6:(r<65536?e[s++]=224|r>>>12:(e[s++]=240|r>>>18,e[s++]=128|r>>>12&63),e[s++]=128|r>>>6&63),e[s++]=128|63&r);return e},r.buf2binstring=function(t){return l(t,t.length)},r.binstring2buf=function(t){for(var e=new h.Buf8(t.length),r=0,i=e.length;r>10&1023,o[i++]=56320|1023&n)}return l(o,i)},r.utf8border=function(t,e){var r;for((e=e||t.length)>t.length&&(e=t.length),r=e-1;0<=r&&128==(192&t[r]);)r--;return r<0?e:0===r?e:r+u[t[r]]>e?r:e}},{\"./common\":41}],43:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,i){for(var n=65535&t|0,s=t>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3>>1:t>>>1;e[r]=t}return e}();e.exports=function(t,e,r,i){var n=o,s=i+r;t^=-1;for(var a=i;a>>8^n[255&(t^e[a])];return-1^t}},{}],46:[function(t,e,r){\"use strict\";var h,d=t(\"../utils/common\"),u=t(\"./trees\"),c=t(\"./adler32\"),p=t(\"./crc32\"),i=t(\"./messages\"),l=0,f=4,m=0,_=-2,g=-1,b=4,n=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(t,e){return t.msg=i[e],e}function T(t){return(t<<1)-(4t.avail_out&&(r=t.avail_out),0!==r&&(d.arraySet(t.output,e.pending_buf,e.pending_out,r,t.next_out),t.next_out+=r,e.pending_out+=r,t.total_out+=r,t.avail_out-=r,e.pending-=r,0===e.pending&&(e.pending_out=0))}function N(t,e){u._tr_flush_block(t,0<=t.block_start?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,F(t.strm)}function U(t,e){t.pending_buf[t.pending++]=e}function P(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e}function L(t,e){var r,i,n=t.max_chain_length,s=t.strstart,a=t.prev_length,o=t.nice_match,h=t.strstart>t.w_size-z?t.strstart-(t.w_size-z):0,u=t.window,l=t.w_mask,f=t.prev,d=t.strstart+S,c=u[s+a-1],p=u[s+a];t.prev_length>=t.good_match&&(n>>=2),o>t.lookahead&&(o=t.lookahead);do{if(u[(r=e)+a]===p&&u[r+a-1]===c&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&sh&&0!=--n);return a<=t.lookahead?a:t.lookahead}function j(t){var e,r,i,n,s,a,o,h,u,l,f=t.w_size;do{if(n=t.window_size-t.lookahead-t.strstart,t.strstart>=f+(f-z)){for(d.arraySet(t.window,t.window,f,f,0),t.match_start-=f,t.strstart-=f,t.block_start-=f,e=r=t.hash_size;i=t.head[--e],t.head[e]=f<=i?i-f:0,--r;);for(e=r=f;i=t.prev[--e],t.prev[e]=f<=i?i-f:0,--r;);n+=f}if(0===t.strm.avail_in)break;if(a=t.strm,o=t.window,h=t.strstart+t.lookahead,u=n,l=void 0,l=a.avail_in,u=x)for(s=t.strstart-t.insert,t.ins_h=t.window[s],t.ins_h=(t.ins_h<=x&&(t.ins_h=(t.ins_h<=x)if(i=u._tr_tally(t,t.strstart-t.match_start,t.match_length-x),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=x){for(t.match_length--;t.strstart++,t.ins_h=(t.ins_h<=x&&(t.ins_h=(t.ins_h<=x&&t.match_length<=t.prev_length){for(n=t.strstart+t.lookahead-x,i=u._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-x),t.lookahead-=t.prev_length-1,t.prev_length-=2;++t.strstart<=n&&(t.ins_h=(t.ins_h<t.pending_buf_size-5&&(r=t.pending_buf_size-5);;){if(t.lookahead<=1){if(j(t),0===t.lookahead&&e===l)return A;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var i=t.block_start+r;if((0===t.strstart||t.strstart>=i)&&(t.lookahead=t.strstart-i,t.strstart=i,N(t,!1),0===t.strm.avail_out))return A;if(t.strstart-t.block_start>=t.w_size-z&&(N(t,!1),0===t.strm.avail_out))return A}return t.insert=0,e===f?(N(t,!0),0===t.strm.avail_out?O:B):(t.strstart>t.block_start&&(N(t,!1),t.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(t,e){return Y(t,e,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(t,e){return t&&t.state?2!==t.state.wrap?_:(t.state.gzhead=e,m):_},r.deflate=function(t,e){var r,i,n,s;if(!t||!t.state||5>8&255),U(i,i.gzhead.time>>16&255),U(i,i.gzhead.time>>24&255),U(i,9===i.level?2:2<=i.strategy||i.level<2?4:0),U(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(U(i,255&i.gzhead.extra.length),U(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(t.adler=p(t.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69):(U(i,0),U(i,0),U(i,0),U(i,0),U(i,0),U(i,9===i.level?2:2<=i.strategy||i.level<2?4:0),U(i,3),i.status=E);else{var a=v+(i.w_bits-8<<4)<<8;a|=(2<=i.strategy||i.level<2?0:i.level<6?1:6===i.level?2:3)<<6,0!==i.strstart&&(a|=32),a+=31-a%31,i.status=E,P(i,a),0!==i.strstart&&(P(i,t.adler>>>16),P(i,65535&t.adler)),t.adler=1}if(69===i.status)if(i.gzhead.extra){for(n=i.pending;i.gzindex<(65535&i.gzhead.extra.length)&&(i.pending!==i.pending_buf_size||(i.gzhead.hcrc&&i.pending>n&&(t.adler=p(t.adler,i.pending_buf,i.pending-n,n)),F(t),n=i.pending,i.pending!==i.pending_buf_size));)U(i,255&i.gzhead.extra[i.gzindex]),i.gzindex++;i.gzhead.hcrc&&i.pending>n&&(t.adler=p(t.adler,i.pending_buf,i.pending-n,n)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=73)}else i.status=73;if(73===i.status)if(i.gzhead.name){n=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>n&&(t.adler=p(t.adler,i.pending_buf,i.pending-n,n)),F(t),n=i.pending,i.pending===i.pending_buf_size)){s=1;break}s=i.gzindexn&&(t.adler=p(t.adler,i.pending_buf,i.pending-n,n)),0===s&&(i.gzindex=0,i.status=91)}else i.status=91;if(91===i.status)if(i.gzhead.comment){n=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>n&&(t.adler=p(t.adler,i.pending_buf,i.pending-n,n)),F(t),n=i.pending,i.pending===i.pending_buf_size)){s=1;break}s=i.gzindexn&&(t.adler=p(t.adler,i.pending_buf,i.pending-n,n)),0===s&&(i.status=103)}else i.status=103;if(103===i.status&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&F(t),i.pending+2<=i.pending_buf_size&&(U(i,255&t.adler),U(i,t.adler>>8&255),t.adler=0,i.status=E)):i.status=E),0!==i.pending){if(F(t),0===t.avail_out)return i.last_flush=-1,m}else if(0===t.avail_in&&T(e)<=T(r)&&e!==f)return R(t,-5);if(666===i.status&&0!==t.avail_in)return R(t,-5);if(0!==t.avail_in||0!==i.lookahead||e!==l&&666!==i.status){var o=2===i.strategy?function(t,e){for(var r;;){if(0===t.lookahead&&(j(t),0===t.lookahead)){if(e===l)return A;break}if(t.match_length=0,r=u._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,r&&(N(t,!1),0===t.strm.avail_out))return A}return t.insert=0,e===f?(N(t,!0),0===t.strm.avail_out?O:B):t.last_lit&&(N(t,!1),0===t.strm.avail_out)?A:I}(i,e):3===i.strategy?function(t,e){for(var r,i,n,s,a=t.window;;){if(t.lookahead<=S){if(j(t),t.lookahead<=S&&e===l)return A;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=x&&0t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=x?(r=u._tr_tally(t,1,t.match_length-x),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(r=u._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),r&&(N(t,!1),0===t.strm.avail_out))return A}return t.insert=0,e===f?(N(t,!0),0===t.strm.avail_out?O:B):t.last_lit&&(N(t,!1),0===t.strm.avail_out)?A:I}(i,e):h[i.level].func(i,e);if(o!==O&&o!==B||(i.status=666),o===A||o===O)return 0===t.avail_out&&(i.last_flush=-1),m;if(o===I&&(1===e?u._tr_align(i):5!==e&&(u._tr_stored_block(i,0,0,!1),3===e&&(D(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),F(t),0===t.avail_out))return i.last_flush=-1,m}return e!==f?m:i.wrap<=0?1:(2===i.wrap?(U(i,255&t.adler),U(i,t.adler>>8&255),U(i,t.adler>>16&255),U(i,t.adler>>24&255),U(i,255&t.total_in),U(i,t.total_in>>8&255),U(i,t.total_in>>16&255),U(i,t.total_in>>24&255)):(P(i,t.adler>>>16),P(i,65535&t.adler)),F(t),0=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new d.Buf8(r.w_size),d.arraySet(u,e,l-r.w_size,r.w_size,0),e=u,l=r.w_size),a=t.avail_in,o=t.next_in,h=t.input,t.avail_in=l,t.next_in=0,t.input=e,j(r);r.lookahead>=x;){for(i=r.strstart,n=r.lookahead-(x-1);r.ins_h=(r.ins_h<>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(c&(1<>>=y,p-=y),p<15&&(c+=z[i++]<>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(c&(1<>>=y,p-=y,(y=s-a)>3,c&=(1<<(p-=w<<3))-1,t.next_in=i,t.next_out=s,t.avail_in=i>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg=\"\",e.wrap&&(t.adler=1&e.wrap),e.mode=P,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new I.Buf32(i),e.distcode=e.distdyn=new I.Buf32(n),e.sane=1,e.back=-1,N):U}function o(t){var e;return t&&t.state?((e=t.state).wsize=0,e.whave=0,e.wnext=0,a(t)):U}function h(t,e){var r,i;return t&&t.state?(i=t.state,e<0?(r=0,e=-e):(r=1+(e>>4),e<48&&(e&=15)),e&&(e<8||15=s.wsize?(I.arraySet(s.window,e,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(i<(n=s.wsize-s.wnext)&&(n=i),I.arraySet(s.window,e,r-i,n,s.wnext),(i-=n)?(I.arraySet(s.window,e,r-i,i,0),s.wnext=i,s.whave=s.wsize):(s.wnext+=n,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){t.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&u)){t.msg=\"unknown compression method\",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){t.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break t;o--,u+=i[s++]<>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break t;o--,u+=i[s++]<>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break t;o--,u+=i[s++]<>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(c=r.length)&&(c=o),c&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,i,s,c,k)),512&r.flags&&(r.check=B(r.check,i,c,s)),o-=c,s+=c,r.length-=c),r.length))break t;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break t;for(c=0;k=i[s+c++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&c>9&1,r.head.done=!0),t.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break t;o--,u+=i[s++]<>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break t;o--,u+=i[s++]<>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==e)break;u>>>=2,l-=2;break t;case 2:r.mode=17;break;case 3:t.msg=\"invalid block type\",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break t;o--,u+=i[s++]<>>16^65535)){t.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===e)break t;case 15:r.mode=16;case 16:if(c=r.length){if(o>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){t.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break t;o--,u+=i[s++]<>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l>>=_,l-=_,0===r.have){t.msg=\"invalid bit length repeat\",r.mode=30;break}k=r.lens[r.have-1],c=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l>>=_)),u>>>=3,l-=3}else{for(z=_+7;l>>=_)),u>>>=7,l-=7}if(r.have+c>r.nlen+r.ndist){t.msg=\"invalid bit length repeat\",r.mode=30;break}for(;c--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){t.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){t.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){t.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===e)break t;case 20:r.mode=21;case 21:if(6<=o&&258<=h){t.next_out=a,t.avail_out=h,t.next_in=s,t.avail_in=o,r.hold=u,r.bits=l,R(t,d),a=t.next_out,n=t.output,h=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break t;o--,u+=i[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break t;o--,u+=i[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){t.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break t;o--,u+=i[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break t;o--,u+=i[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){t.msg=\"invalid distance code\",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){t.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===h)break t;if(c=d-h,r.offset>c){if((c=r.offset-c)>r.whave&&r.sane){t.msg=\"invalid distance too far back\",r.mode=30;break}p=c>r.wnext?(c-=r.wnext,r.wsize-c):r.wnext-c,c>r.length&&(c=r.length),m=r.window}else m=n,p=a-r.offset,c=r.length;for(hc?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=e[r+a[v]]}if(k>>7)]}function U(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255}function P(t,e,r){t.bi_valid>c-r?(t.bi_buf|=e<>c-t.bi_valid,t.bi_valid+=r-c):(t.bi_buf|=e<>>=1,r<<=1,0<--e;);return r>>>1}function Z(t,e,r){var i,n,s=new Array(g+1),a=0;for(i=1;i<=g;i++)s[i]=a=a+r[i-1]<<1;for(n=0;n<=e;n++){var o=t[2*n+1];0!==o&&(t[2*n]=j(s[o]++,o))}}function W(t){var e;for(e=0;e>1;1<=r;r--)G(t,s,r);for(n=h;r=t.heap[1],t.heap[1]=t.heap[t.heap_len--],G(t,s,1),i=t.heap[1],t.heap[--t.heap_max]=r,t.heap[--t.heap_max]=i,s[2*n]=s[2*r]+s[2*i],t.depth[n]=(t.depth[r]>=t.depth[i]?t.depth[r]:t.depth[i])+1,s[2*r+1]=s[2*i+1]=n,t.heap[1]=n++,G(t,s,1),2<=t.heap_len;);t.heap[--t.heap_max]=t.heap[1],function(t,e){var r,i,n,s,a,o,h=e.dyn_tree,u=e.max_code,l=e.stat_desc.static_tree,f=e.stat_desc.has_stree,d=e.stat_desc.extra_bits,c=e.stat_desc.extra_base,p=e.stat_desc.max_length,m=0;for(s=0;s<=g;s++)t.bl_count[s]=0;for(h[2*t.heap[t.heap_max]+1]=0,r=t.heap_max+1;r<_;r++)p<(s=h[2*h[2*(i=t.heap[r])+1]+1]+1)&&(s=p,m++),h[2*i+1]=s,u>=7;i>>=1)if(1&r&&0!==t.dyn_ltree[2*e])return o;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return h;for(e=32;e>>3,(s=t.static_len+3+7>>>3)<=n&&(n=s)):n=s=r+5,r+4<=n&&-1!==e?J(t,e,r,i):4===t.strategy||s===n?(P(t,2+(i?1:0),3),K(t,z,C)):(P(t,4+(i?1:0),3),function(t,e,r,i){var n;for(P(t,e-257,5),P(t,r-1,5),P(t,i-4,4),n=0;n>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&r,t.last_lit++,0===e?t.dyn_ltree[2*r]++:(t.matches++,e--,t.dyn_ltree[2*(A[r]+u+1)]++,t.dyn_dtree[2*N(e)]++),t.last_lit===t.lit_bufsize-1},r._tr_align=function(t){P(t,2,3),L(t,m,z),function(t){16===t.bi_valid?(U(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):8<=t.bi_valid&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}(t)}},{\"../utils/common\":41}],53:[function(t,e,r){\"use strict\";e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(t,e,r){\"use strict\";e.exports=\"function\"==typeof setImmediate?setImmediate:function(){var t=[].slice.apply(arguments);t.splice(1,0,0),setTimeout.apply(null,t)}},{}]},{},[10])(10)});","/**\r\n * DevExtreme (esm/viz/core/utils.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isDefined,\r\n isNumeric,\r\n isExponential,\r\n isFunction,\r\n isString\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n adjust,\r\n sign\r\n} from \"../../core/utils/math\";\r\nimport dateUtils from \"../../core/utils/date\";\r\nimport Color from \"../../color\";\r\nvar {\r\n PI: PI,\r\n LN10: LN10,\r\n abs: abs,\r\n log: log,\r\n floor: floor,\r\n ceil: ceil,\r\n pow: pow,\r\n sqrt: sqrt,\r\n atan2: atan2\r\n} = Math;\r\nvar _min = Math.min;\r\nvar _max = Math.max;\r\nvar _cos = Math.cos;\r\nvar _sin = Math.sin;\r\nvar _round = Math.round;\r\nvar dateToMilliseconds = dateUtils.dateToMilliseconds;\r\nvar MAX_PIXEL_COUNT = 1e10;\r\nvar PI_DIV_180 = PI / 180;\r\nvar _isNaN = isNaN;\r\nvar _Number = Number;\r\nvar _NaN = NaN;\r\nexport var PANE_PADDING = 10;\r\nexport var getLog = function(value, base) {\r\n if (!value) {\r\n return _NaN\r\n }\r\n return log(value) / log(base)\r\n};\r\nexport var getAdjustedLog10 = function(value) {\r\n return adjust(getLog(value, 10))\r\n};\r\nexport var raiseTo = function(power, base) {\r\n return pow(base, power)\r\n};\r\nexport var normalizeAngle = function(angle) {\r\n return (angle % 360 + 360) % 360\r\n};\r\nexport var convertAngleToRendererSpace = function(angle) {\r\n return 90 - angle\r\n};\r\nexport var degreesToRadians = function(value) {\r\n return PI * value / 180\r\n};\r\nexport var getCosAndSin = function(angle) {\r\n var angleInRadians = degreesToRadians(angle);\r\n return {\r\n cos: _cos(angleInRadians),\r\n sin: _sin(angleInRadians)\r\n }\r\n};\r\nvar DECIMAL_ORDER_THRESHOLD = 1e-14;\r\nexport var getDistance = function(x1, y1, x2, y2) {\r\n var diffX = x2 - x1;\r\n var diffY = y2 - y1;\r\n return sqrt(diffY * diffY + diffX * diffX)\r\n};\r\nexport var getDecimalOrder = function(number) {\r\n var n = abs(number);\r\n var cn;\r\n if (!_isNaN(n)) {\r\n if (n > 0) {\r\n n = log(n) / LN10;\r\n cn = ceil(n);\r\n return cn - n < DECIMAL_ORDER_THRESHOLD ? cn : floor(n)\r\n }\r\n return 0\r\n }\r\n return _NaN\r\n};\r\nexport var getAppropriateFormat = function(start, end, count) {\r\n var order = _max(getDecimalOrder(start), getDecimalOrder(end));\r\n var precision = -getDecimalOrder(abs(end - start) / count);\r\n var format;\r\n if (!_isNaN(order) && !_isNaN(precision)) {\r\n if (abs(order) <= 4) {\r\n format = \"fixedPoint\";\r\n precision < 0 && (precision = 0);\r\n precision > 4 && (precision = 4)\r\n } else {\r\n format = \"exponential\";\r\n precision += order - 1;\r\n precision > 3 && (precision = 3)\r\n }\r\n return {\r\n type: format,\r\n precision: precision\r\n }\r\n }\r\n return null\r\n};\r\nexport var roundValue = function(value, precision) {\r\n if (precision > 20) {\r\n precision = 20\r\n }\r\n if (isNumeric(value)) {\r\n if (isExponential(value)) {\r\n return _Number(value.toExponential(precision))\r\n } else {\r\n return _Number(value.toFixed(precision))\r\n }\r\n }\r\n};\r\nexport var getPower = function(value) {\r\n return value.toExponential().split(\"e\")[1]\r\n};\r\nexport function map(array, callback) {\r\n var i = 0;\r\n var len = array.length;\r\n var result = [];\r\n var value;\r\n while (i < len) {\r\n value = callback(array[i], i);\r\n if (null !== value) {\r\n result.push(value)\r\n }\r\n i++\r\n }\r\n return result\r\n}\r\n\r\nfunction selectByKeys(object, keys) {\r\n return map(keys, key => object[key] ? object[key] : null)\r\n}\r\n\r\nfunction decreaseFields(object, keys, eachDecrease, decrease) {\r\n var dec = decrease;\r\n each(keys, (_, key) => {\r\n if (object[key]) {\r\n object[key] -= eachDecrease;\r\n dec -= eachDecrease\r\n }\r\n });\r\n return dec\r\n}\r\nexport function normalizeEnum(value) {\r\n return String(value).toLowerCase()\r\n}\r\nexport function setCanvasValues(canvas) {\r\n if (canvas) {\r\n canvas.originalTop = canvas.top;\r\n canvas.originalBottom = canvas.bottom;\r\n canvas.originalLeft = canvas.left;\r\n canvas.originalRight = canvas.right\r\n }\r\n return canvas\r\n}\r\n\r\nfunction normalizeBBoxField(value) {\r\n return -MAX_PIXEL_COUNT < value && value < +MAX_PIXEL_COUNT ? value : 0\r\n}\r\nexport function normalizeBBox(bBox) {\r\n var xl = normalizeBBoxField(floor(bBox.x));\r\n var yt = normalizeBBoxField(floor(bBox.y));\r\n var xr = normalizeBBoxField(ceil(bBox.width + bBox.x));\r\n var yb = normalizeBBoxField(ceil(bBox.height + bBox.y));\r\n var result = {\r\n x: xl,\r\n y: yt,\r\n width: xr - xl,\r\n height: yb - yt\r\n };\r\n result.isEmpty = !result.x && !result.y && !result.width && !result.height;\r\n return result\r\n}\r\nexport function rotateBBox(bBox, center, angle) {\r\n var cos = _Number(_cos(angle * PI_DIV_180).toFixed(3));\r\n var sin = _Number(_sin(angle * PI_DIV_180).toFixed(3));\r\n var w2 = bBox.width / 2;\r\n var h2 = bBox.height / 2;\r\n var centerX = bBox.x + w2;\r\n var centerY = bBox.y + h2;\r\n var w2_ = abs(w2 * cos) + abs(h2 * sin);\r\n var h2_ = abs(w2 * sin) + abs(h2 * cos);\r\n var centerX_ = center[0] + (centerX - center[0]) * cos + (centerY - center[1]) * sin;\r\n var centerY_ = center[1] - (centerX - center[0]) * sin + (centerY - center[1]) * cos;\r\n return normalizeBBox({\r\n x: centerX_ - w2_,\r\n y: centerY_ - h2_,\r\n width: 2 * w2_,\r\n height: 2 * h2_\r\n })\r\n}\r\nexport var decreaseGaps = function(object, keys, decrease) {\r\n var arrayGaps;\r\n do {\r\n arrayGaps = selectByKeys(object, keys);\r\n arrayGaps.push(ceil(decrease / arrayGaps.length));\r\n decrease = decreaseFields(object, keys, _min.apply(null, arrayGaps), decrease)\r\n } while (decrease > 0 && arrayGaps.length > 1);\r\n return decrease\r\n};\r\nexport var parseScalar = function(value, defaultValue) {\r\n return void 0 !== value ? value : defaultValue\r\n};\r\nexport var enumParser = function(values) {\r\n var stored = {};\r\n var i;\r\n var ii;\r\n for (i = 0, ii = values.length; i < ii; ++i) {\r\n stored[normalizeEnum(values[i])] = 1\r\n }\r\n return function(value, defaultValue) {\r\n var _value = normalizeEnum(value);\r\n return stored[_value] ? _value : defaultValue\r\n }\r\n};\r\nexport var patchFontOptions = function(options) {\r\n var fontOptions = {};\r\n each(options || {}, (function(key, value) {\r\n if (/^(cursor)$/i.test(key)) {} else if (\"opacity\" === key) {\r\n value = null\r\n } else if (\"color\" === key) {\r\n key = \"fill\";\r\n if (\"opacity\" in options) {\r\n var color = new Color(value);\r\n value = \"rgba(\".concat(color.r, \",\").concat(color.g, \",\").concat(color.b, \",\").concat(options.opacity, \")\")\r\n }\r\n } else {\r\n key = \"font-\" + key\r\n }\r\n fontOptions[key] = value\r\n }));\r\n return fontOptions\r\n};\r\nexport function convertPolarToXY(centerCoords, startAngle, angle, radius) {\r\n var normalizedRadius = radius > 0 ? radius : 0;\r\n angle = isDefined(angle) ? angle + startAngle - 90 : 0;\r\n var cosSin = getCosAndSin(angle);\r\n return {\r\n x: _round(centerCoords.x + normalizedRadius * cosSin.cos),\r\n y: _round(centerCoords.y + normalizedRadius * cosSin.sin)\r\n }\r\n}\r\nexport var convertXYToPolar = function(centerCoords, x, y) {\r\n var radius = getDistance(centerCoords.x, centerCoords.y, x, y);\r\n var angle = atan2(y - centerCoords.y, x - centerCoords.x);\r\n return {\r\n phi: _round(normalizeAngle(180 * angle / PI)),\r\n r: _round(radius)\r\n }\r\n};\r\nexport var processSeriesTemplate = function(seriesTemplate, items) {\r\n var customizeSeries = isFunction(seriesTemplate.customizeSeries) ? seriesTemplate.customizeSeries : noop;\r\n var nameField = seriesTemplate.nameField;\r\n var generatedSeries = {};\r\n var seriesOrder = [];\r\n var series;\r\n var i = 0;\r\n var length;\r\n var data;\r\n items = items || [];\r\n for (length = items.length; i < length; i++) {\r\n data = items[i];\r\n if (nameField in data) {\r\n series = generatedSeries[data[nameField]];\r\n if (!series) {\r\n series = generatedSeries[data[nameField]] = {\r\n name: data[nameField],\r\n nameFieldValue: data[nameField]\r\n };\r\n seriesOrder.push(series.name)\r\n }\r\n }\r\n }\r\n return map(seriesOrder, (function(orderedName) {\r\n var group = generatedSeries[orderedName];\r\n return extend(group, customizeSeries.call(null, group.name))\r\n }))\r\n};\r\nexport var getCategoriesInfo = function(categories, startValue, endValue) {\r\n if (0 === categories.length) {\r\n return {\r\n categories: []\r\n }\r\n }\r\n startValue = isDefined(startValue) ? startValue : categories[0];\r\n endValue = isDefined(endValue) ? endValue : categories[categories.length - 1];\r\n var categoriesValue = map(categories, category => null === category || void 0 === category ? void 0 : category.valueOf());\r\n var indexStartValue = categoriesValue.indexOf(startValue.valueOf());\r\n var indexEndValue = categoriesValue.indexOf(endValue.valueOf());\r\n var swapBuf;\r\n var inverted = false;\r\n indexStartValue < 0 && (indexStartValue = 0);\r\n indexEndValue < 0 && (indexEndValue = categories.length - 1);\r\n if (indexEndValue < indexStartValue) {\r\n swapBuf = indexEndValue;\r\n indexEndValue = indexStartValue;\r\n indexStartValue = swapBuf;\r\n inverted = true\r\n }\r\n var visibleCategories = categories.slice(indexStartValue, indexEndValue + 1);\r\n var lastIdx = visibleCategories.length - 1;\r\n return {\r\n categories: visibleCategories,\r\n start: visibleCategories[inverted ? lastIdx : 0],\r\n end: visibleCategories[inverted ? 0 : lastIdx],\r\n inverted: inverted\r\n }\r\n};\r\nexport function isRelativeHeightPane(pane) {\r\n return !(pane.unit % 2)\r\n}\r\nexport function normalizePanesHeight(panes) {\r\n panes.forEach(pane => {\r\n var height = pane.height;\r\n var unit = 0;\r\n var parsedHeight = parseFloat(height) || void 0;\r\n if (isString(height) && height.indexOf(\"px\") > -1 || isNumeric(height) && height > 1) {\r\n parsedHeight = _round(parsedHeight);\r\n unit = 1\r\n }\r\n if (!unit && parsedHeight) {\r\n if (isString(height) && height.indexOf(\"%\") > -1) {\r\n parsedHeight /= 100;\r\n unit = 2\r\n } else if (parsedHeight < 0) {\r\n parsedHeight = parsedHeight < -1 ? 1 : abs(parsedHeight)\r\n }\r\n }\r\n pane.height = parsedHeight;\r\n pane.unit = unit\r\n });\r\n var relativeHeightPanes = panes.filter(isRelativeHeightPane);\r\n var weightSum = relativeHeightPanes.reduce((prev, next) => prev + (next.height || 0), 0);\r\n var weightHeightCount = relativeHeightPanes.length;\r\n var emptyHeightPanes = relativeHeightPanes.filter(pane => !pane.height);\r\n var emptyHeightCount = emptyHeightPanes.length;\r\n if (weightSum < 1 && emptyHeightCount) {\r\n emptyHeightPanes.forEach(pane => pane.height = (1 - weightSum) / emptyHeightCount)\r\n } else if (weightSum > 1 || weightSum < 1 && !emptyHeightCount || 1 === weightSum && emptyHeightCount) {\r\n if (emptyHeightCount) {\r\n var weightForEmpty = weightSum / weightHeightCount;\r\n var emptyWeightSum = emptyHeightCount * weightForEmpty;\r\n relativeHeightPanes.filter(pane => pane.height).forEach(pane => pane.height *= (weightSum - emptyWeightSum) / weightSum);\r\n emptyHeightPanes.forEach(pane => pane.height = weightForEmpty)\r\n }\r\n relativeHeightPanes.forEach(pane => pane.height *= 1 / weightSum)\r\n }\r\n}\r\nexport function updatePanesCanvases(panes, canvas, rotated) {\r\n var distributedSpace = 0;\r\n var padding = PANE_PADDING;\r\n var paneSpace = rotated ? canvas.width - canvas.left - canvas.right : canvas.height - canvas.top - canvas.bottom;\r\n var totalCustomSpace = panes.reduce((prev, cur) => prev + (!isRelativeHeightPane(cur) ? cur.height : 0), 0);\r\n var usefulSpace = paneSpace - padding * (panes.length - 1) - totalCustomSpace;\r\n var startName = rotated ? \"left\" : \"top\";\r\n var endName = rotated ? \"right\" : \"bottom\";\r\n panes.forEach(pane => {\r\n var calcLength = !isRelativeHeightPane(pane) ? pane.height : _round(pane.height * usefulSpace);\r\n pane.canvas = pane.canvas || {};\r\n extend(pane.canvas, canvas);\r\n pane.canvas[startName] = canvas[startName] + distributedSpace;\r\n pane.canvas[endName] = canvas[endName] + (paneSpace - calcLength - distributedSpace);\r\n distributedSpace = distributedSpace + calcLength + padding;\r\n setCanvasValues(pane.canvas)\r\n })\r\n}\r\nexport var unique = function(array) {\r\n var values = {};\r\n return map(array, (function(item) {\r\n var result = !values[item] ? item : null;\r\n values[item] = true;\r\n return result\r\n }))\r\n};\r\nexport var getVerticallyShiftedAngularCoords = function(bBox, dy, center) {\r\n var isPositive = bBox.x + bBox.width / 2 >= center.x;\r\n var horizontalOffset1 = (isPositive ? bBox.x : bBox.x + bBox.width) - center.x;\r\n var verticalOffset1 = bBox.y - center.y;\r\n var verticalOffset2 = verticalOffset1 + dy;\r\n var horizontalOffset2 = _round(sqrt(horizontalOffset1 * horizontalOffset1 + verticalOffset1 * verticalOffset1 - verticalOffset2 * verticalOffset2));\r\n var dx = (isPositive ? +horizontalOffset2 : -horizontalOffset2) || horizontalOffset1;\r\n return {\r\n x: center.x + (isPositive ? dx : dx - bBox.width),\r\n y: bBox.y + dy\r\n }\r\n};\r\nexport function mergeMarginOptions(opt1, opt2) {\r\n return {\r\n checkInterval: opt1.checkInterval || opt2.checkInterval,\r\n size: _max(opt1.size || 0, opt2.size || 0),\r\n percentStick: opt1.percentStick || opt2.percentStick,\r\n sizePointNormalState: _max(opt1.sizePointNormalState || 0, opt2.sizePointNormalState || 0)\r\n }\r\n}\r\nexport function getVizRangeObject(value) {\r\n if (Array.isArray(value)) {\r\n return {\r\n startValue: value[0],\r\n endValue: value[1]\r\n }\r\n } else {\r\n return value || {}\r\n }\r\n}\r\nexport function convertVisualRangeObject(visualRange, convertToVisualRange) {\r\n if (convertToVisualRange) {\r\n return visualRange\r\n }\r\n return [visualRange.startValue, visualRange.endValue]\r\n}\r\nexport function getAddFunction(range, correctZeroLevel) {\r\n if (\"datetime\" === range.dataType) {\r\n return function(rangeValue, marginValue) {\r\n var sign = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1;\r\n return new Date(rangeValue.getTime() + sign * marginValue)\r\n }\r\n }\r\n if (\"logarithmic\" === range.axisType) {\r\n return function(rangeValue, marginValue) {\r\n var sign = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1;\r\n var log = getLogExt(rangeValue, range.base) + sign * marginValue;\r\n return raiseToExt(log, range.base)\r\n }\r\n }\r\n return function(rangeValue, marginValue) {\r\n var sign = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1;\r\n var newValue = rangeValue + sign * marginValue;\r\n return correctZeroLevel && newValue * rangeValue <= 0 ? 0 : newValue\r\n }\r\n}\r\nexport function adjustVisualRange(options, visualRange, wholeRange, dataRange) {\r\n var minDefined = isDefined(visualRange.startValue);\r\n var maxDefined = isDefined(visualRange.endValue);\r\n var nonDiscrete = \"discrete\" !== options.axisType;\r\n dataRange = dataRange || wholeRange;\r\n var add = getAddFunction(options, false);\r\n var min = minDefined ? visualRange.startValue : dataRange.min;\r\n var max = maxDefined ? visualRange.endValue : dataRange.max;\r\n var rangeLength = visualRange.length;\r\n var categories = dataRange.categories;\r\n if (nonDiscrete && !isDefined(min) && !isDefined(max)) {\r\n return {\r\n startValue: min,\r\n endValue: max\r\n }\r\n }\r\n if (isDefined(rangeLength)) {\r\n if (nonDiscrete) {\r\n if (\"datetime\" === options.dataType && !isNumeric(rangeLength)) {\r\n rangeLength = dateToMilliseconds(rangeLength)\r\n }\r\n if (maxDefined && !minDefined || !maxDefined && !minDefined) {\r\n isDefined(wholeRange.max) && (max = max > wholeRange.max ? wholeRange.max : max);\r\n min = add(max, rangeLength, -1)\r\n } else if (minDefined && !maxDefined) {\r\n isDefined(wholeRange.min) && (min = min < wholeRange.min ? wholeRange.min : min);\r\n max = add(min, rangeLength)\r\n }\r\n } else {\r\n rangeLength = parseInt(rangeLength);\r\n if (!isNaN(rangeLength) && isFinite(rangeLength)) {\r\n rangeLength--;\r\n if (!maxDefined && !minDefined) {\r\n max = categories[categories.length - 1];\r\n min = categories[categories.length - 1 - rangeLength]\r\n } else if (minDefined && !maxDefined) {\r\n var categoriesInfo = getCategoriesInfo(categories, min, void 0);\r\n max = categoriesInfo.categories[rangeLength]\r\n } else if (!minDefined && maxDefined) {\r\n var _categoriesInfo = getCategoriesInfo(categories, void 0, max);\r\n min = _categoriesInfo.categories[_categoriesInfo.categories.length - 1 - rangeLength]\r\n }\r\n }\r\n }\r\n }\r\n if (nonDiscrete) {\r\n if (isDefined(wholeRange.max) && max > wholeRange.max) {\r\n max = wholeRange.max\r\n }\r\n if (isDefined(wholeRange.min) && min < wholeRange.min) {\r\n min = wholeRange.min\r\n }\r\n }\r\n return {\r\n startValue: min,\r\n endValue: max\r\n }\r\n}\r\nexport function getLogExt(value, base) {\r\n var allowNegatives = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false;\r\n var linearThreshold = arguments.length > 3 ? arguments[3] : void 0;\r\n if (!allowNegatives) {\r\n return getLog(value, base)\r\n }\r\n if (0 === value) {\r\n return 0\r\n }\r\n var transformValue = getLog(abs(value), base) - (linearThreshold - 1);\r\n if (transformValue < 0) {\r\n return 0\r\n }\r\n return adjust(sign(value) * transformValue, Number(pow(base, linearThreshold - 1).toFixed(abs(linearThreshold))))\r\n}\r\nexport function raiseToExt(value, base) {\r\n var allowNegatives = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false;\r\n var linearThreshold = arguments.length > 3 ? arguments[3] : void 0;\r\n if (!allowNegatives) {\r\n return raiseTo(value, base)\r\n }\r\n if (0 === value) {\r\n return 0\r\n }\r\n var transformValue = raiseTo(abs(value) + (linearThreshold - 1), base);\r\n if (transformValue < 0) {\r\n return 0\r\n }\r\n return adjust(sign(value) * transformValue, Number(pow(base, linearThreshold).toFixed(abs(linearThreshold))))\r\n}\r\nexport function rangesAreEqual(range, rangeFromOptions) {\r\n if (Array.isArray(rangeFromOptions)) {\r\n return range.length === rangeFromOptions.length && range.every((item, i) => valueOf(item) === valueOf(rangeFromOptions[i]))\r\n } else {\r\n return valueOf(range.startValue) === valueOf(rangeFromOptions.startValue) && valueOf(range.endValue) === valueOf(rangeFromOptions.endValue)\r\n }\r\n}\r\nexport function valueOf(value) {\r\n return value && value.valueOf()\r\n}\r\nexport function pointInCanvas(canvas, x, y) {\r\n return x >= canvas.left && x <= canvas.right && y >= canvas.top && y <= canvas.bottom\r\n}\r\n","/**\r\n * DevExtreme (esm/viz/translators/range.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n isDefined,\r\n isDate,\r\n isFunction\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nvar _isDefined = isDefined;\r\nvar _isDate = isDate;\r\nvar _isFunction = isFunction;\r\nimport {\r\n unique\r\n} from \"../core/utils\";\r\nvar minSelector = \"min\";\r\nvar maxSelector = \"max\";\r\nvar minVisibleSelector = \"minVisible\";\r\nvar maxVisibleSelector = \"maxVisible\";\r\nvar baseSelector = \"base\";\r\nvar axisTypeSelector = \"axisType\";\r\n\r\nfunction otherLessThan(thisValue, otherValue) {\r\n return otherValue < thisValue\r\n}\r\n\r\nfunction otherGreaterThan(thisValue, otherValue) {\r\n return otherValue > thisValue\r\n}\r\n\r\nfunction compareAndReplace(thisValue, otherValue, setValue, compare) {\r\n var otherValueDefined = _isDefined(otherValue);\r\n if (_isDefined(thisValue)) {\r\n if (otherValueDefined && compare(thisValue, otherValue)) {\r\n setValue(otherValue)\r\n }\r\n } else if (otherValueDefined) {\r\n setValue(otherValue)\r\n }\r\n}\r\nexport var Range = function(range) {\r\n range && extend(this, range)\r\n};\r\nvar _Range = Range;\r\n_Range.prototype = {\r\n constructor: _Range,\r\n addRange: function(otherRange) {\r\n var that = this;\r\n var categories = that.categories;\r\n var otherCategories = otherRange.categories;\r\n var isDiscrete = \"discrete\" === that[axisTypeSelector];\r\n var compareAndReplaceByField = function(field, compare) {\r\n compareAndReplace(that[field], otherRange[field], (function(value) {\r\n that[field] = value\r\n }), compare)\r\n };\r\n var controlValuesByVisibleBounds = function(valueField, visibleValueField, compare) {\r\n compareAndReplace(that[valueField], that[visibleValueField], (function(value) {\r\n _isDefined(that[valueField]) && (that[valueField] = value)\r\n }), compare)\r\n };\r\n var checkField = function(field) {\r\n that[field] = that[field] || otherRange[field]\r\n };\r\n checkField(\"invert\");\r\n checkField(\"containsConstantLine\");\r\n checkField(axisTypeSelector);\r\n checkField(\"dataType\");\r\n checkField(\"isSpacedMargin\");\r\n if (\"logarithmic\" === that[axisTypeSelector]) {\r\n checkField(baseSelector)\r\n } else {\r\n that[baseSelector] = void 0\r\n }\r\n compareAndReplaceByField(minSelector, otherLessThan);\r\n compareAndReplaceByField(maxSelector, otherGreaterThan);\r\n if (isDiscrete) {\r\n checkField(minVisibleSelector);\r\n checkField(maxVisibleSelector)\r\n } else {\r\n compareAndReplaceByField(minVisibleSelector, otherLessThan);\r\n compareAndReplaceByField(maxVisibleSelector, otherGreaterThan)\r\n }\r\n compareAndReplaceByField(\"interval\", otherLessThan);\r\n if (!isDiscrete) {\r\n controlValuesByVisibleBounds(minSelector, minVisibleSelector, otherLessThan);\r\n controlValuesByVisibleBounds(minSelector, maxVisibleSelector, otherLessThan);\r\n controlValuesByVisibleBounds(maxSelector, maxVisibleSelector, otherGreaterThan);\r\n controlValuesByVisibleBounds(maxSelector, minVisibleSelector, otherGreaterThan)\r\n }\r\n if (void 0 === categories) {\r\n that.categories = otherCategories\r\n } else {\r\n that.categories = otherCategories ? unique(categories.concat(otherCategories)) : categories\r\n }\r\n if (\"logarithmic\" === that[axisTypeSelector]) {\r\n checkField(\"allowNegatives\");\r\n compareAndReplaceByField(\"linearThreshold\", otherLessThan)\r\n }\r\n return that\r\n },\r\n isEmpty: function() {\r\n return (!_isDefined(this[minSelector]) || !_isDefined(this[maxSelector])) && (!this.categories || 0 === this.categories.length)\r\n },\r\n correctValueZeroLevel: function() {\r\n var that = this;\r\n if (_isDate(that[maxSelector]) || _isDate(that[minSelector])) {\r\n return that\r\n }\r\n\r\n function setZeroLevel(min, max) {\r\n that[min] < 0 && that[max] < 0 && (that[max] = 0);\r\n that[min] > 0 && that[max] > 0 && (that[min] = 0)\r\n }\r\n setZeroLevel(minSelector, maxSelector);\r\n setZeroLevel(minVisibleSelector, maxVisibleSelector);\r\n return that\r\n },\r\n sortCategories(sort) {\r\n if (false === sort || !this.categories) {\r\n return\r\n }\r\n if (Array.isArray(sort)) {\r\n var sortValues = sort.map(item => item.valueOf());\r\n var filteredSeriesCategories = this.categories.filter(item => -1 === sortValues.indexOf(item.valueOf()));\r\n this.categories = sort.concat(filteredSeriesCategories)\r\n } else {\r\n var notAFunction = !_isFunction(sort);\r\n if (notAFunction && \"string\" !== this.dataType) {\r\n sort = (a, b) => a.valueOf() - b.valueOf()\r\n } else if (notAFunction) {\r\n sort = false\r\n }\r\n sort && this.categories.sort(sort)\r\n }\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/viz/axes/smart_formatter.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport formatHelper from \"../../format_helper\";\r\nimport {\r\n isDefined,\r\n isFunction,\r\n isExponential,\r\n isObject\r\n} from \"../../core/utils/type\";\r\nimport dateUtils from \"../../core/utils/date\";\r\nimport {\r\n adjust,\r\n getPrecision,\r\n getExponent\r\n} from \"../../core/utils/math\";\r\nimport {\r\n getAdjustedLog10 as log10\r\n} from \"../core/utils\";\r\nvar _format = formatHelper.format;\r\nvar {\r\n abs: abs,\r\n floor: floor\r\n} = Math;\r\nvar EXPONENTIAL = \"exponential\";\r\nvar formats = [\"fixedPoint\", \"thousands\", \"millions\", \"billions\", \"trillions\", EXPONENTIAL];\r\nvar dateUnitIntervals = [\"millisecond\", \"second\", \"minute\", \"hour\", \"day\", \"month\", \"year\"];\r\n\r\nfunction getDatesDifferences(prevDate, curDate, nextDate, tickFormat) {\r\n var prevDifferences;\r\n var nextDifferences;\r\n var dateUnitInterval;\r\n var dateUnitsLength = dateUnitIntervals.length;\r\n var i;\r\n var j;\r\n if (\"week\" === tickFormat) {\r\n tickFormat = \"day\"\r\n } else if (\"quarter\" === tickFormat) {\r\n tickFormat = \"month\"\r\n } else if (\"shorttime\" === tickFormat) {\r\n tickFormat = \"hour\"\r\n } else if (\"longtime\" === tickFormat) {\r\n tickFormat = \"second\"\r\n }\r\n var tickFormatIndex = dateUnitIntervals.indexOf(tickFormat);\r\n if (nextDate) {\r\n nextDifferences = dateUtils.getDatesDifferences(curDate, nextDate);\r\n prevDifferences = dateUtils.getDatesDifferences(curDate, prevDate);\r\n if (nextDifferences[tickFormat]) {\r\n for (i = dateUnitsLength - 1; i >= tickFormatIndex; i--) {\r\n dateUnitInterval = dateUnitIntervals[i];\r\n if (i === tickFormatIndex) {\r\n setDateUnitInterval(nextDifferences, tickFormatIndex + (nextDifferences.millisecond ? 2 : 1))\r\n } else if (nextDifferences[dateUnitInterval]) {\r\n resetDateUnitInterval(nextDifferences, i);\r\n break\r\n }\r\n }\r\n }\r\n } else {\r\n prevDifferences = dateUtils.getDatesDifferences(prevDate, curDate);\r\n for (i = dateUnitsLength - 1; i >= tickFormatIndex; i--) {\r\n dateUnitInterval = dateUnitIntervals[i];\r\n if (prevDifferences[dateUnitInterval]) {\r\n if (i - tickFormatIndex > 1) {\r\n for (j = tickFormatIndex + 1; j >= 0; j--) {\r\n resetDateUnitInterval(prevDifferences, j)\r\n }\r\n break\r\n } else if (isDateTimeStart(curDate, dateUnitInterval)) {\r\n for (j = i - 1; j > 0; j--) {\r\n resetDateUnitInterval(prevDifferences, j)\r\n }\r\n break\r\n }\r\n }\r\n }\r\n }\r\n return nextDate ? nextDifferences : prevDifferences\r\n}\r\n\r\nfunction isDateTimeStart(date, dateUnitInterval) {\r\n var unitNumbers = [date.getMilliseconds(), date.getSeconds(), date.getMinutes(), date.getHours(), date.getDate(), date.getMonth()];\r\n var unitIndex = dateUnitIntervals.indexOf(dateUnitInterval);\r\n var i;\r\n for (i = 0; i < unitIndex; i++) {\r\n if (4 === i && 1 !== unitNumbers[i] || 4 !== i && 0 !== unitNumbers[i]) {\r\n return false\r\n }\r\n }\r\n return true\r\n}\r\n\r\nfunction resetDateUnitInterval(differences, intervalIndex) {\r\n var dateUnitInterval = dateUnitIntervals[intervalIndex];\r\n if (differences[dateUnitInterval]) {\r\n differences[dateUnitInterval] = false;\r\n differences.count--\r\n }\r\n}\r\n\r\nfunction setDateUnitInterval(differences, intervalIndex) {\r\n var dateUnitInterval = dateUnitIntervals[intervalIndex];\r\n if (false === differences[dateUnitInterval]) {\r\n differences[dateUnitInterval] = true;\r\n differences.count++\r\n }\r\n}\r\n\r\nfunction getNoZeroIndex(str) {\r\n return str.length - parseInt(str).toString().length\r\n}\r\n\r\nfunction getTransitionTickIndex(ticks, value) {\r\n var i;\r\n var curDiff;\r\n var minDiff;\r\n var nearestTickIndex = 0;\r\n minDiff = abs(value - ticks[0]);\r\n for (i = 1; i < ticks.length; i++) {\r\n curDiff = abs(value - ticks[i]);\r\n if (curDiff < minDiff) {\r\n minDiff = curDiff;\r\n nearestTickIndex = i\r\n }\r\n }\r\n return nearestTickIndex\r\n}\r\n\r\nfunction splitDecimalNumber(value) {\r\n return value.toString().split(\".\")\r\n}\r\n\r\nfunction createFormat(type) {\r\n var formatter;\r\n if (isFunction(type)) {\r\n formatter = type;\r\n type = null\r\n }\r\n return {\r\n type: type,\r\n formatter: formatter\r\n }\r\n}\r\nexport function smartFormatter(tick, options) {\r\n var tickInterval = options.tickInterval;\r\n var tickIntervalIndex;\r\n var tickIndex;\r\n var actualIndex;\r\n var stringTick = abs(tick).toString();\r\n var precision = 0;\r\n var typeFormat;\r\n var offset = 0;\r\n var separatedTickInterval;\r\n var indexOfFormat = 0;\r\n var indexOfTick = -1;\r\n var datesDifferences;\r\n var format = options.labelOptions.format;\r\n var ticks = options.ticks;\r\n var log10Tick;\r\n var prevDateIndex;\r\n var nextDateIndex;\r\n var isLogarithmic = \"logarithmic\" === options.type;\r\n if (1 === ticks.length && 0 === ticks.indexOf(tick) && !isDefined(tickInterval)) {\r\n tickInterval = abs(tick) >= 1 ? 1 : adjust(1 - abs(tick), tick)\r\n }\r\n if (!isDefined(format) && \"discrete\" !== options.type && tick && (10 === options.logarithmBase || !isLogarithmic)) {\r\n if (\"datetime\" !== options.dataType && isDefined(tickInterval)) {\r\n if (ticks.length && -1 === ticks.indexOf(tick)) {\r\n indexOfTick = getTransitionTickIndex(ticks, tick);\r\n tickInterval = adjust(abs(tick - ticks[indexOfTick]), tick)\r\n }\r\n separatedTickInterval = splitDecimalNumber(tickInterval);\r\n if (separatedTickInterval < 2) {\r\n separatedTickInterval = splitDecimalNumber(tick)\r\n }\r\n if (isLogarithmic) {\r\n log10Tick = log10(abs(tick));\r\n if (log10Tick > 0) {\r\n typeFormat = formats[floor(log10Tick / 3)] || EXPONENTIAL\r\n } else if (log10Tick < -4) {\r\n typeFormat = EXPONENTIAL\r\n } else {\r\n return _format(adjust(tick))\r\n }\r\n } else if (separatedTickInterval.length > 1 && !isExponential(tickInterval)) {\r\n precision = separatedTickInterval[1].length;\r\n typeFormat = formats[indexOfFormat]\r\n } else if (isExponential(tickInterval) && (-1 !== stringTick.indexOf(\".\") || isExponential(tick))) {\r\n typeFormat = EXPONENTIAL;\r\n if (!isExponential(tick)) {\r\n precision = abs(getNoZeroIndex(stringTick.split(\".\")[1]) - getExponent(tickInterval) + 1)\r\n } else {\r\n precision = Math.max(abs(getExponent(tick) - getExponent(tickInterval)), abs(getPrecision(tick) - getPrecision(tickInterval)))\r\n }\r\n } else {\r\n tickIntervalIndex = floor(log10(tickInterval));\r\n actualIndex = tickIndex = floor(log10(abs(tick)));\r\n if (tickIndex - tickIntervalIndex >= 2) {\r\n actualIndex = tickIntervalIndex\r\n }\r\n indexOfFormat = floor(actualIndex / 3);\r\n offset = 3 * indexOfFormat;\r\n if (indexOfFormat < 5) {\r\n if (tickIntervalIndex - offset === 2 && tickIndex >= 3) {\r\n indexOfFormat++;\r\n offset = 3 * indexOfFormat\r\n }\r\n typeFormat = formats[indexOfFormat]\r\n } else {\r\n typeFormat = formats[formats.length - 1]\r\n }\r\n if (offset > 0) {\r\n separatedTickInterval = splitDecimalNumber(tickInterval / Math.pow(10, offset));\r\n if (separatedTickInterval[1]) {\r\n precision = separatedTickInterval[1].length\r\n }\r\n }\r\n }\r\n if (void 0 !== typeFormat || void 0 !== precision) {\r\n format = {\r\n type: typeFormat,\r\n precision: precision\r\n }\r\n }\r\n } else if (\"datetime\" === options.dataType) {\r\n typeFormat = dateUtils.getDateFormatByTickInterval(tickInterval);\r\n if (options.showTransition && ticks.length) {\r\n indexOfTick = ticks.map(Number).indexOf(+tick);\r\n if (1 === ticks.length && 0 === indexOfTick) {\r\n typeFormat = formatHelper.getDateFormatByTicks(ticks)\r\n } else {\r\n if (-1 === indexOfTick) {\r\n prevDateIndex = getTransitionTickIndex(ticks, tick)\r\n } else {\r\n prevDateIndex = 0 === indexOfTick ? ticks.length - 1 : indexOfTick - 1;\r\n nextDateIndex = 0 === indexOfTick ? 1 : -1\r\n }\r\n datesDifferences = getDatesDifferences(ticks[prevDateIndex], tick, ticks[nextDateIndex], typeFormat);\r\n typeFormat = formatHelper.getDateFormatByDifferences(datesDifferences, typeFormat)\r\n }\r\n }\r\n format = createFormat(typeFormat)\r\n }\r\n }\r\n return _format(tick, format)\r\n}\r\n\r\nfunction getHighDiffFormat(diff) {\r\n var stop = false;\r\n for (var i in diff) {\r\n if (true === diff[i] || \"hour\" === i || stop) {\r\n diff[i] = false;\r\n stop = true\r\n } else if (false === diff[i]) {\r\n diff[i] = true\r\n }\r\n }\r\n return createFormat(formatHelper.getDateFormatByDifferences(diff))\r\n}\r\n\r\nfunction getHighAndSelfDiffFormat(diff, interval) {\r\n var stop = false;\r\n for (var i in diff) {\r\n if (stop) {\r\n diff[i] = false\r\n } else if (i === interval) {\r\n stop = true\r\n } else {\r\n diff[i] = true\r\n }\r\n }\r\n return createFormat(formatHelper.getDateFormatByDifferences(diff))\r\n}\r\n\r\nfunction formatDateRange(startValue, endValue, tickInterval) {\r\n var diff = getDatesDifferences(startValue, endValue);\r\n var typeFormat = dateUtils.getDateFormatByTickInterval(tickInterval);\r\n var diffFormatType = formatHelper.getDateFormatByDifferences(diff, typeFormat);\r\n var diffFormat = createFormat(diffFormatType);\r\n var values = [];\r\n if (tickInterval in diff) {\r\n var rangeFormat = getHighAndSelfDiffFormat(getDatesDifferences(startValue, endValue), tickInterval);\r\n var value = _format(startValue, rangeFormat);\r\n if (value) {\r\n values.push(value)\r\n }\r\n } else {\r\n var _rangeFormat = getHighDiffFormat(getDatesDifferences(startValue, endValue));\r\n var highValue = _format(startValue, _rangeFormat);\r\n if (highValue) {\r\n values.push(highValue)\r\n }\r\n values.push(\"\".concat(_format(startValue, diffFormat), \" - \").concat(_format(endValue, diffFormat)))\r\n }\r\n return values.join(\", \")\r\n}\r\n\r\nfunction processDateInterval(interval) {\r\n if (isObject(interval)) {\r\n var dateUnits = Object.keys(interval);\r\n var sum = dateUnits.reduce((sum, k) => interval[k] + sum, 0);\r\n if (1 === sum) {\r\n var dateUnit = dateUnits.filter(k => 1 === interval[k])[0];\r\n return dateUnit.slice(0, dateUnit.length - 1)\r\n }\r\n }\r\n return interval\r\n}\r\nexport function formatRange(startValue, endValue, tickInterval, _ref) {\r\n var {\r\n dataType: dataType,\r\n type: type,\r\n logarithmBase: logarithmBase\r\n } = _ref;\r\n if (\"discrete\" === type) {\r\n return \"\"\r\n }\r\n if (\"datetime\" === dataType) {\r\n return formatDateRange(startValue, endValue, processDateInterval(tickInterval))\r\n }\r\n var formatOptions = {\r\n ticks: [],\r\n type: type,\r\n dataType: dataType,\r\n tickInterval: tickInterval,\r\n logarithmBase: logarithmBase,\r\n labelOptions: {}\r\n };\r\n return \"\".concat(smartFormatter(startValue, formatOptions), \" - \").concat(smartFormatter(endValue, formatOptions))\r\n}\r\n","/**\r\n * DevExtreme (esm/viz/axes/axes_constants.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n map as _map\r\n} from \"../core/utils\";\r\nexport default {\r\n logarithmic: \"logarithmic\",\r\n discrete: \"discrete\",\r\n numeric: \"numeric\",\r\n left: \"left\",\r\n right: \"right\",\r\n top: \"top\",\r\n bottom: \"bottom\",\r\n center: \"center\",\r\n horizontal: \"horizontal\",\r\n vertical: \"vertical\",\r\n convertTicksToValues: function(ticks) {\r\n return _map(ticks || [], (function(item) {\r\n return item.value\r\n }))\r\n },\r\n validateOverlappingMode: function(mode) {\r\n return \"ignore\" === mode || \"none\" === mode ? mode : \"hide\"\r\n },\r\n getTicksCountInRange: function(ticks, valueKey, range) {\r\n var i = 1;\r\n if (ticks.length > 1) {\r\n for (; i < ticks.length; i++) {\r\n if (Math.abs(ticks[i].coords[valueKey] - ticks[0].coords[valueKey]) >= range) {\r\n break\r\n }\r\n }\r\n }\r\n return i\r\n },\r\n areLabelsOverlap: function(bBox1, bBox2, spacing, alignment) {\r\n var horizontalInverted = bBox1.x > bBox2.x;\r\n var verticalInverted = bBox1.y > bBox2.y;\r\n var x1 = bBox1.x;\r\n var x2 = bBox2.x;\r\n var width1 = bBox1.width;\r\n var width2 = bBox2.width;\r\n if (\"left\" === alignment) {\r\n x1 += width1 / 2;\r\n x2 += width2 / 2\r\n } else if (\"right\" === alignment) {\r\n x1 -= width1 / 2;\r\n x2 -= width2 / 2\r\n }\r\n var hasHorizontalOverlapping = horizontalInverted ? x2 + width2 + spacing > x1 : x1 + width1 + spacing > x2;\r\n var hasVerticalOverlapping = verticalInverted ? bBox2.y + bBox2.height > bBox1.y : bBox1.y + bBox1.height > bBox2.y;\r\n return hasHorizontalOverlapping && hasVerticalOverlapping\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/viz/components/parse_utils.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport dateSerialization from \"../../core/utils/date_serialization\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nvar parsers = {\r\n string: function(val) {\r\n return isDefined(val) ? \"\" + val : val\r\n },\r\n numeric: function(val) {\r\n if (!isDefined(val)) {\r\n return val\r\n }\r\n var parsedVal = Number(val);\r\n if (isNaN(parsedVal)) {\r\n parsedVal = void 0\r\n }\r\n return parsedVal\r\n },\r\n datetime: function(val) {\r\n if (!isDefined(val)) {\r\n return val\r\n }\r\n var parsedVal;\r\n var numVal = Number(val);\r\n if (!isNaN(numVal)) {\r\n parsedVal = new Date(numVal)\r\n } else {\r\n parsedVal = dateSerialization.deserializeDate(val)\r\n }\r\n if (isNaN(Number(parsedVal))) {\r\n parsedVal = void 0\r\n }\r\n return parsedVal\r\n }\r\n};\r\nexport function correctValueType(type) {\r\n return \"numeric\" === type || \"datetime\" === type || \"string\" === type ? type : \"\"\r\n}\r\nexport var getParser = function(valueType) {\r\n return parsers[correctValueType(valueType)] || noop\r\n};\r\n","/**\r\n * DevExtreme (esm/viz/axes/tick_generator.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n getLogExt as getLog,\r\n getCategoriesInfo,\r\n raiseToExt,\r\n getLog as mathLog,\r\n raiseTo as mathRaise\r\n} from \"../core/utils\";\r\nimport dateUtils from \"../../core/utils/date\";\r\nimport {\r\n isDefined,\r\n isString\r\n} from \"../../core/utils/type\";\r\nimport {\r\n adjust,\r\n sign\r\n} from \"../../core/utils/math\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nvar convertDateUnitToMilliseconds = dateUtils.convertDateUnitToMilliseconds;\r\nvar dateToMilliseconds = dateUtils.dateToMilliseconds;\r\nvar math = Math;\r\nvar mathAbs = math.abs;\r\nvar mathFloor = math.floor;\r\nvar mathCeil = math.ceil;\r\nvar mathPow = math.pow;\r\nvar NUMBER_MULTIPLIERS = [1, 2, 2.5, 5];\r\nvar LOGARITHMIC_MULTIPLIERS = [1, 2, 3, 5];\r\nvar DATETIME_MULTIPLIERS = {\r\n millisecond: [1, 2, 5, 10, 25, 50, 100, 250, 500],\r\n second: [1, 2, 3, 5, 10, 15, 20, 30],\r\n minute: [1, 2, 3, 5, 10, 15, 20, 30],\r\n hour: [1, 2, 3, 4, 6, 8, 12],\r\n day: [1, 2],\r\n week: [1, 2],\r\n month: [1, 2, 3, 6]\r\n};\r\nvar DATETIME_MULTIPLIERS_WITH_BIG_WEEKEND = extend({}, DATETIME_MULTIPLIERS, {\r\n day: [1]\r\n});\r\nvar DATETIME_MINOR_MULTIPLIERS = {\r\n millisecond: [1, 2, 5, 10, 25, 50, 100, 250, 500],\r\n second: [1, 2, 3, 5, 10, 15, 20, 30],\r\n minute: [1, 2, 3, 5, 10, 15, 20, 30],\r\n hour: [1, 2, 3, 4, 6, 8, 12],\r\n day: [1, 2, 3, 7, 14],\r\n month: [1, 2, 3, 6]\r\n};\r\nvar MINOR_DELIMITERS = [2, 4, 5, 8, 10];\r\nvar VISIBILITY_DELIMITER = 3;\r\nvar MINUTE = 6e4;\r\n\r\nfunction dummyGenerator(options) {\r\n return function(data, screenDelta, tickInterval, forceTickInterval) {\r\n var count = mathFloor(screenDelta / options.axisDivisionFactor);\r\n count = count < 1 ? 1 : count;\r\n var interval = screenDelta / count;\r\n return {\r\n ticks: interval > 0 ? Array.apply(null, new Array(count + 1)).map((_, i) => interval * i) : [],\r\n tickInterval: interval\r\n }\r\n }\r\n}\r\n\r\nfunction discreteGenerator(options) {\r\n return function(data, screenDelta, tickInterval, forceTickInterval) {\r\n var categories = getCategoriesInfo(data.categories, data.min, data.max).categories;\r\n return {\r\n ticks: categories,\r\n tickInterval: mathCeil(categories.length * options.axisDivisionFactor / screenDelta)\r\n }\r\n }\r\n}\r\nvar getValue = value => value;\r\nvar getLogValue = (base, allowNegatives, linearThreshold) => value => getLog(value, base, allowNegatives, linearThreshold);\r\nvar raiseTo = (base, allowNegatives, linearThreshold) => value => raiseToExt(value, base, allowNegatives, linearThreshold);\r\nvar mathRaiseTo = base => value => mathRaise(value, base);\r\nvar logAbsValue = base => value => 0 === value ? 0 : mathLog(mathAbs(value), base);\r\nvar correctValueByInterval = (post, round, getValue) => (value, interval) => adjust(post(round(adjust(getValue(value) / interval)) * interval));\r\n\r\nfunction correctMinValueByEndOnTick(floorFunc, ceilFunc, resolveEndOnTick, endOnTick) {\r\n if (isDefined(endOnTick)) {\r\n return endOnTick ? floorFunc : ceilFunc\r\n }\r\n return function(value, interval, businessViewInfo, forceEndOnTick) {\r\n var floorTickValue = floorFunc(value, interval);\r\n if (value - floorTickValue === 0 || !isDefined(businessViewInfo) || resolveEndOnTick(value, floorTickValue, interval, businessViewInfo) || forceEndOnTick) {\r\n return floorTickValue\r\n }\r\n return ceilFunc(value, interval)\r\n }\r\n}\r\n\r\nfunction resolveEndOnTick(curValue, tickValue, interval, businessViewInfo) {\r\n var prevTickDataDiff = interval - mathAbs(tickValue - curValue);\r\n var intervalCount = math.max(mathCeil(businessViewInfo.businessDelta / interval), 2);\r\n var businessRatio = businessViewInfo.screenDelta / (intervalCount * interval);\r\n var potentialTickScreenDiff = math.round(businessRatio * prevTickDataDiff);\r\n var delimiterFactor = getLog(businessRatio * interval / businessViewInfo.axisDivisionFactor, 2) + 1;\r\n var delimiterMultiplier = (businessViewInfo.isSpacedMargin ? 2 : 1) * delimiterFactor;\r\n var screenDelimiter = math.round(VISIBILITY_DELIMITER * delimiterMultiplier);\r\n return businessViewInfo.businessDelta > businessViewInfo.interval && potentialTickScreenDiff >= screenDelimiter\r\n}\r\n\r\nfunction resolveEndOnTickLog(base) {\r\n return function(curValue, tickValue, interval, businessViewInfo) {\r\n return resolveEndOnTick(getLog(curValue, base), getLog(tickValue, base), interval, businessViewInfo)\r\n }\r\n}\r\n\r\nfunction resolveEndOnTickDate(curValue, tickValue, interval, businessViewInfo) {\r\n return resolveEndOnTick(curValue.valueOf(), tickValue.valueOf(), dateToMilliseconds(interval), businessViewInfo)\r\n}\r\n\r\nfunction getBusinessDelta(data, breaks) {\r\n var spacing = 0;\r\n if (breaks) {\r\n spacing = breaks.reduce((prev, item) => prev + (item.to - item.from), 0)\r\n }\r\n return mathAbs(data.max - data.min - spacing)\r\n}\r\n\r\nfunction getBusinessDeltaLog(base, allowNegatives, linearThreshold) {\r\n var getLog = getLogValue(base, allowNegatives, linearThreshold);\r\n return function(data, breaks) {\r\n var spacing = 0;\r\n if (breaks) {\r\n spacing = breaks.reduce((prev, item) => prev + mathAbs(getLog(item.to / item.from)), 0)\r\n }\r\n return mathCeil(mathAbs(getLog(data.max) - getLog(data.min)) - spacing)\r\n }\r\n}\r\n\r\nfunction getIntervalByFactor(businessDelta, screenDelta, axisDivisionFactor, addTickCount) {\r\n var count = screenDelta / axisDivisionFactor - (addTickCount || 0);\r\n count = count < 1 ? 1 : count;\r\n return businessDelta / count\r\n}\r\n\r\nfunction getMultiplierFactor(interval, factorDelta) {\r\n return mathPow(10, mathFloor(getLog(interval, 10)) + (factorDelta || 0))\r\n}\r\n\r\nfunction calculateTickInterval(businessDelta, screenDelta, tickInterval, forceTickInterval, axisDivisionFactor, multipliers, allowDecimals, addTickCount, _, minTickInterval) {\r\n var interval = getIntervalByFactor(businessDelta, screenDelta, axisDivisionFactor, addTickCount);\r\n var result = 1;\r\n var onlyIntegers = false === allowDecimals;\r\n if (!forceTickInterval || !tickInterval) {\r\n if (interval >= 1 || !onlyIntegers && interval > 0) {\r\n result = adjustInterval(interval, multipliers, onlyIntegers)\r\n }\r\n if (!tickInterval || !forceTickInterval && tickInterval < result) {\r\n tickInterval = result\r\n }\r\n }\r\n if (!forceTickInterval && minTickInterval) {\r\n minTickInterval = adjustInterval(minTickInterval, multipliers, onlyIntegers);\r\n if (minTickInterval > tickInterval) {\r\n tickInterval = minTickInterval\r\n }\r\n }\r\n return tickInterval\r\n}\r\n\r\nfunction adjustInterval(interval, multipliers, onlyIntegers) {\r\n var factor = getMultiplierFactor(interval, -1);\r\n var result = 1;\r\n multipliers = multipliers || NUMBER_MULTIPLIERS;\r\n if (interval > 0) {\r\n interval /= factor;\r\n result = multipliers.concat(10 * multipliers[0]).map(m => 10 * m).reduce((r, m) => {\r\n if (.1 === factor && onlyIntegers && 25 === m) {\r\n return r\r\n }\r\n return r < interval ? m : r\r\n }, 0);\r\n result = adjust(result * factor, factor)\r\n }\r\n return result\r\n}\r\n\r\nfunction calculateMinorTickInterval(businessDelta, screenDelta, tickInterval, axisDivisionFactor) {\r\n var interval = getIntervalByFactor(businessDelta, screenDelta, axisDivisionFactor);\r\n return tickInterval || MINOR_DELIMITERS.reduce((r, d) => {\r\n var cur = businessDelta / d;\r\n return cur >= interval ? cur : r\r\n }, 0)\r\n}\r\n\r\nfunction getCalculateTickIntervalLog(skipCalculationLimits) {\r\n return function(businessDelta, screenDelta, tickInterval, forceTickInterval, axisDivisionFactor, multipliers, allowDecimals, _, __, minTickInterval) {\r\n var interval = getIntervalByFactor(businessDelta, screenDelta, axisDivisionFactor);\r\n var result = 0;\r\n var adjustInterval = getAdjustIntervalLog(skipCalculationLimits);\r\n if (!forceTickInterval || !tickInterval) {\r\n if (interval > 0) {\r\n result = adjustInterval(interval, multipliers)\r\n }\r\n if (!tickInterval || !forceTickInterval && tickInterval < result) {\r\n tickInterval = result\r\n }\r\n }\r\n if (!forceTickInterval && minTickInterval) {\r\n minTickInterval = adjustInterval(minTickInterval, multipliers);\r\n if (minTickInterval > tickInterval) {\r\n tickInterval = minTickInterval\r\n }\r\n }\r\n return tickInterval\r\n }\r\n}\r\n\r\nfunction getAdjustIntervalLog(skipCalculationLimits) {\r\n return function(interval, multipliers) {\r\n var factor = getMultiplierFactor(interval);\r\n multipliers = multipliers || LOGARITHMIC_MULTIPLIERS;\r\n if (!skipCalculationLimits && factor < 1) {\r\n factor = 1\r\n }\r\n return multipliers.concat(10 * multipliers[0]).reduce((r, m) => r < interval ? m * factor : r, 0)\r\n }\r\n}\r\n\r\nfunction getDataTimeMultipliers(gapSize) {\r\n if (gapSize && gapSize > 2) {\r\n return DATETIME_MULTIPLIERS_WITH_BIG_WEEKEND\r\n } else {\r\n return DATETIME_MULTIPLIERS\r\n }\r\n}\r\n\r\nfunction numbersReducer(interval, key) {\r\n return function(r, m) {\r\n if (!r && interval <= convertDateUnitToMilliseconds(key, m)) {\r\n r = {};\r\n r[key + \"s\"] = m\r\n }\r\n return r\r\n }\r\n}\r\n\r\nfunction yearsReducer(interval, factor) {\r\n return function(r, m) {\r\n var years = factor * m;\r\n if (!r && interval <= convertDateUnitToMilliseconds(\"year\", years) && 2.5 !== years) {\r\n r = {\r\n years: years\r\n }\r\n }\r\n return r\r\n }\r\n}\r\n\r\nfunction calculateTickIntervalDateTime(businessDelta, screenDelta, tickInterval, forceTickInterval, axisDivisionFactor, multipliers, allowDecimals, addTickCount, gapSize, minTickInterval) {\r\n if (!forceTickInterval || !tickInterval) {\r\n var result = adjustIntervalDateTime(getIntervalByFactor(businessDelta, screenDelta, axisDivisionFactor), multipliers, null, gapSize);\r\n if (!tickInterval || !forceTickInterval && dateToMilliseconds(tickInterval) <= dateToMilliseconds(result)) {\r\n tickInterval = result\r\n }\r\n }\r\n if (!forceTickInterval && minTickInterval) {\r\n minTickInterval = adjustIntervalDateTime(minTickInterval, multipliers, null, gapSize);\r\n if (dateToMilliseconds(minTickInterval) > dateToMilliseconds(tickInterval)) {\r\n tickInterval = minTickInterval\r\n }\r\n }\r\n return tickInterval\r\n}\r\n\r\nfunction adjustIntervalDateTime(interval, multipliers, _, gapSize) {\r\n var result;\r\n multipliers = multipliers || getDataTimeMultipliers(gapSize);\r\n for (var key in multipliers) {\r\n result = multipliers[key].reduce(numbersReducer(interval, key), result);\r\n if (result) {\r\n break\r\n }\r\n }\r\n if (!result) {\r\n for (var factor = 1;; factor *= 10) {\r\n result = NUMBER_MULTIPLIERS.reduce(yearsReducer(interval, factor), result);\r\n if (result) {\r\n break\r\n }\r\n }\r\n }\r\n return result\r\n}\r\n\r\nfunction calculateMinorTickIntervalDateTime(businessDelta, screenDelta, tickInterval, axisDivisionFactor) {\r\n return calculateTickIntervalDateTime(businessDelta, screenDelta, tickInterval, true, axisDivisionFactor, DATETIME_MINOR_MULTIPLIERS)\r\n}\r\n\r\nfunction getTickIntervalByCustomTicks(getValue, postProcess) {\r\n return ticks => ticks ? postProcess(mathAbs(adjust(getValue(ticks[1]) - getValue(ticks[0])))) || void 0 : void 0\r\n}\r\n\r\nfunction addInterval(value, interval, isNegative) {\r\n return dateUtils.addInterval(value, interval, isNegative)\r\n}\r\n\r\nfunction addIntervalLog(log, raise) {\r\n return (value, interval, isNegative) => raise(addInterval(log(value), interval, isNegative))\r\n}\r\n\r\nfunction addIntervalDate(value, interval, isNegative) {\r\n return addInterval(value, interval, isNegative)\r\n}\r\n\r\nfunction addIntervalWithBreaks(addInterval, breaks, correctValue) {\r\n breaks = breaks.filter(b => !b.gapSize);\r\n return function(value, interval, isNegative) {\r\n var breakSize;\r\n value = addInterval(value, interval, isNegative);\r\n if (!breaks.every(item => {\r\n if (value >= addInterval(item.from, interval) && addInterval(value, interval) < item.to) {\r\n breakSize = item.to - item.from - 2 * (addInterval(item.from, interval) - item.from)\r\n }\r\n return !breakSize\r\n })) {\r\n value = correctValue(addInterval(value, breakSize), interval)\r\n }\r\n return value\r\n }\r\n}\r\n\r\nfunction calculateTicks(addInterval, correctMinValue, adjustInterval, resolveEndOnTick) {\r\n return function(data, tickInterval, endOnTick, gaps, breaks, businessDelta, screenDelta, axisDivisionFactor, generateExtraTick) {\r\n var correctTickValue = correctTickValueOnGapSize(addInterval, gaps);\r\n var min = data.min;\r\n var max = data.max;\r\n var businessViewInfo = {\r\n screenDelta: screenDelta,\r\n businessDelta: businessDelta,\r\n axisDivisionFactor: axisDivisionFactor,\r\n isSpacedMargin: data.isSpacedMargin,\r\n interval: tickInterval\r\n };\r\n var cur = correctMinValue(min, tickInterval, businessViewInfo);\r\n var ticks = [];\r\n if (null !== breaks && void 0 !== breaks && breaks.length) {\r\n addInterval = addIntervalWithBreaks(addInterval, breaks, correctMinValue)\r\n }\r\n if (cur > max) {\r\n cur = correctMinValue(min, adjustInterval(businessDelta / 2), businessViewInfo);\r\n if (cur > max) {\r\n endOnTick = true;\r\n cur = correctMinValue(min, tickInterval, businessViewInfo, endOnTick)\r\n }\r\n }\r\n cur = correctTickValue(cur);\r\n var prev;\r\n while (cur < max && cur !== prev || generateExtraTick && cur <= max) {\r\n ticks.push(cur);\r\n prev = cur;\r\n cur = correctTickValue(addInterval(cur, tickInterval))\r\n }\r\n if (endOnTick || cur - max === 0 || !isDefined(endOnTick) && resolveEndOnTick(max, cur, tickInterval, businessViewInfo)) {\r\n ticks.push(cur)\r\n }\r\n return ticks\r\n }\r\n}\r\n\r\nfunction calculateMinorTicks(updateTickInterval, addInterval, correctMinValue, correctTickValue, ceil) {\r\n return function(min, max, majorTicks, minorTickInterval, tickInterval, breaks, maxCount) {\r\n var factor = tickInterval / minorTickInterval;\r\n var lastMajor = majorTicks[majorTicks.length - 1];\r\n var firstMajor = majorTicks[0];\r\n var tickBalance = maxCount - 1;\r\n if (null !== breaks && void 0 !== breaks && breaks.length) {\r\n addInterval = addIntervalWithBreaks(addInterval, breaks, correctMinValue)\r\n }\r\n minorTickInterval = updateTickInterval(minorTickInterval, firstMajor, firstMajor, factor);\r\n if (0 === minorTickInterval) {\r\n return []\r\n }\r\n var cur = correctTickValue(correctMinValue(min, tickInterval, min), minorTickInterval);\r\n minorTickInterval = updateTickInterval(minorTickInterval, firstMajor, cur, factor);\r\n var ticks = [];\r\n while (cur < firstMajor && (!tickBalance || tickBalance > 0)) {\r\n cur >= min && ticks.push(cur);\r\n tickBalance--;\r\n cur = addInterval(cur, minorTickInterval)\r\n }\r\n var middleTicks = majorTicks.reduce((r, tick) => {\r\n tickBalance = maxCount - 1;\r\n if (null === r.prevTick) {\r\n r.prevTick = tick;\r\n return r\r\n }\r\n minorTickInterval = updateTickInterval(minorTickInterval, tick, r.prevTick, factor);\r\n var cur = correctTickValue(r.prevTick, minorTickInterval);\r\n while (cur < tick && (!tickBalance || tickBalance > 0)) {\r\n cur !== r.prevTick && r.minors.push(cur);\r\n tickBalance--;\r\n cur = addInterval(cur, minorTickInterval)\r\n }\r\n r.prevTick = tick;\r\n return r\r\n }, {\r\n prevTick: null,\r\n minors: []\r\n });\r\n ticks = ticks.concat(middleTicks.minors);\r\n var maxValue = ceil(max, tickInterval, min);\r\n minorTickInterval = updateTickInterval(minorTickInterval, maxValue, maxValue, factor);\r\n cur = correctTickValue(lastMajor, minorTickInterval);\r\n var prev;\r\n while (cur < max && cur !== prev) {\r\n ticks.push(cur);\r\n prev = cur;\r\n cur = addInterval(cur, minorTickInterval)\r\n }\r\n if (lastMajor - max !== 0 && cur - max === 0) {\r\n ticks.push(cur)\r\n }\r\n return ticks\r\n }\r\n}\r\n\r\nfunction filterTicks(ticks, breaks) {\r\n if (breaks.length) {\r\n var result = breaks.reduce((result, b) => {\r\n var tmpTicks = [];\r\n var i;\r\n for (i = result[1]; i < ticks.length; i++) {\r\n var tickValue = ticks[i];\r\n if (tickValue < b.from) {\r\n tmpTicks.push(tickValue)\r\n }\r\n if (tickValue >= b.to) {\r\n break\r\n }\r\n }\r\n return [result[0].concat(tmpTicks), i]\r\n }, [\r\n [], 0\r\n ]);\r\n return result[0].concat(ticks.slice(result[1]))\r\n }\r\n return ticks\r\n}\r\n\r\nfunction correctTickValueOnGapSize(addInterval, breaks) {\r\n return function(value) {\r\n var gapSize;\r\n if (!breaks.every(item => {\r\n if (value >= item.from && value < item.to) {\r\n gapSize = item.gapSize\r\n }\r\n return !gapSize\r\n })) {\r\n value = addInterval(value, gapSize)\r\n }\r\n return value\r\n }\r\n}\r\n\r\nfunction generator(options, getBusinessDelta, calculateTickInterval, calculateMinorTickInterval, getMajorTickIntervalByCustomTicks, getMinorTickIntervalByCustomTicks, convertTickInterval, calculateTicks, calculateMinorTicks, processScaleBreaks) {\r\n function correctUserTickInterval(tickInterval, businessDelta, limit) {\r\n if (tickInterval && businessDelta / convertTickInterval(tickInterval) >= limit + 1) {\r\n options.incidentOccurred(\"W2003\");\r\n tickInterval = void 0\r\n }\r\n return tickInterval\r\n }\r\n return function(data, screenDelta, tickInterval, forceTickInterval, customTicks, minorTickInterval, minorTickCount, breaks) {\r\n customTicks = customTicks || {};\r\n var businessDelta = getBusinessDelta(data, breaks);\r\n var result = function(customTicks) {\r\n return {\r\n tickInterval: getMajorTickIntervalByCustomTicks(customTicks.majors),\r\n ticks: customTicks.majors || [],\r\n minorTickInterval: getMinorTickIntervalByCustomTicks(customTicks.minors),\r\n minorTicks: customTicks.minors || []\r\n }\r\n }(customTicks);\r\n if (!isNaN(businessDelta)) {\r\n if (0 === businessDelta && !customTicks.majors) {\r\n result.ticks = [data.min]\r\n } else {\r\n result = function(ticks, data, businessDelta, screenDelta, tickInterval, forceTickInterval, customTicks, breaks) {\r\n if (customTicks.majors) {\r\n ticks.breaks = breaks;\r\n return ticks\r\n }\r\n var gaps = breaks.filter(b => b.gapSize);\r\n var majorTicks;\r\n tickInterval = options.skipCalculationLimits ? tickInterval : correctUserTickInterval(tickInterval, businessDelta, screenDelta);\r\n tickInterval = calculateTickInterval(businessDelta, screenDelta, tickInterval, forceTickInterval, options.axisDivisionFactor, options.numberMultipliers, options.allowDecimals, breaks.length, gaps[0] && gaps[0].gapSize.days, options.minTickInterval);\r\n if (!options.skipTickGeneration) {\r\n majorTicks = calculateTicks(data, tickInterval, options.endOnTick, gaps, breaks, businessDelta, screenDelta, options.axisDivisionFactor, options.generateExtraTick);\r\n breaks = processScaleBreaks(breaks, majorTicks, tickInterval);\r\n majorTicks = filterTicks(majorTicks, breaks);\r\n ticks.breaks = breaks;\r\n ticks.ticks = ticks.ticks.concat(majorTicks)\r\n }\r\n ticks.tickInterval = tickInterval;\r\n return ticks\r\n }(result, data, businessDelta, screenDelta, tickInterval, forceTickInterval, customTicks, breaks || []);\r\n if (!options.skipTickGeneration && businessDelta > 0) {\r\n result = function(ticks, data, businessDelta, screenDelta, minorTickInterval, minorTickCount, customTicks) {\r\n if (!options.calculateMinors) {\r\n return ticks\r\n }\r\n if (customTicks.minors) {\r\n return ticks\r\n }\r\n var minorBusinessDelta = convertTickInterval(ticks.tickInterval);\r\n var minorScreenDelta = screenDelta * minorBusinessDelta / businessDelta;\r\n var breaks = ticks.breaks;\r\n if (!minorTickInterval && minorTickCount) {\r\n minorTickInterval = getMinorTickIntervalByCustomTicks([minorBusinessDelta / (minorTickCount + 1), minorBusinessDelta / (minorTickCount + 1) * 2])\r\n } else {\r\n minorTickCount = void 0\r\n }\r\n minorTickInterval = correctUserTickInterval(minorTickInterval, minorBusinessDelta, minorScreenDelta);\r\n minorTickInterval = calculateMinorTickInterval(minorBusinessDelta, minorScreenDelta, minorTickInterval, options.minorAxisDivisionFactor);\r\n ticks.minorTicks = filterTicks(ticks.minorTicks.concat(calculateMinorTicks(data.min, data.max, ticks.ticks, minorTickInterval, ticks.tickInterval, breaks, minorTickCount)), breaks);\r\n ticks.minorTickInterval = minorTickInterval;\r\n return ticks\r\n }(result, data, businessDelta, screenDelta, minorTickInterval, minorTickCount, customTicks)\r\n }\r\n }\r\n }\r\n return result\r\n }\r\n}\r\n\r\nfunction getBaseTick(breakValue, _ref, interval, getValue) {\r\n var [tick, insideTick] = _ref;\r\n if (!isDefined(tick) || mathAbs(getValue(breakValue) - getValue(tick)) / interval > .25) {\r\n if (isDefined(insideTick)) {\r\n tick = insideTick\r\n } else if (!isDefined(tick)) {\r\n tick = breakValue\r\n }\r\n }\r\n return tick\r\n}\r\n\r\nfunction getScaleBreaksProcessor(convertTickInterval, getValue, addCorrection) {\r\n return function(breaks, ticks, tickInterval) {\r\n var interval = convertTickInterval(tickInterval);\r\n var correction = .5 * interval;\r\n return breaks.reduce((result, b) => {\r\n var breakTicks = ticks.filter(tick => tick <= b.from);\r\n var from = addCorrection(getBaseTick(b.from, [].concat(breakTicks[breakTicks.length - 1], ticks[breakTicks.length]), interval, getValue), correction);\r\n breakTicks = ticks.filter(tick => tick >= b.to);\r\n var to = addCorrection(getBaseTick(b.to, [].concat(breakTicks[0], ticks[ticks.length - breakTicks.length - 1]), interval, getValue), -correction);\r\n if (getValue(to) - getValue(from) < 0) {\r\n to = addCorrection(breakTicks[0], -correction)\r\n }\r\n if (getValue(to) - getValue(from) < interval && !b.gapSize) {\r\n return result\r\n }\r\n if (b.gapSize) {\r\n return result.concat([b])\r\n }\r\n return result.concat([{\r\n from: from,\r\n to: to,\r\n cumulativeWidth: b.cumulativeWidth\r\n }])\r\n }, [])\r\n }\r\n}\r\n\r\nfunction numericGenerator(options) {\r\n var floor = correctValueByInterval(getValue, mathFloor, getValue);\r\n var ceil = correctValueByInterval(getValue, mathCeil, getValue);\r\n var calculateTickIntervalByCustomTicks = getTickIntervalByCustomTicks(getValue, getValue);\r\n return generator(options, getBusinessDelta, calculateTickInterval, calculateMinorTickInterval, calculateTickIntervalByCustomTicks, calculateTickIntervalByCustomTicks, getValue, calculateTicks(addInterval, correctMinValueByEndOnTick(floor, ceil, resolveEndOnTick, options.endOnTick), adjustInterval, resolveEndOnTick), calculateMinorTicks(getValue, addInterval, floor, addInterval, getValue), getScaleBreaksProcessor(getValue, getValue, (value, correction) => value + correction))\r\n}\r\nvar correctValueByIntervalLog = (post, getRound, getValue) => (value, interval) => sign(value) * adjust(post(getRound(value)(adjust(getValue(value) / interval)) * interval));\r\n\r\nfunction logarithmicGenerator(options) {\r\n var base = options.logBase;\r\n var raise = raiseTo(base, options.allowNegatives, options.linearThreshold);\r\n var log = getLogValue(base, options.allowNegatives, options.linearThreshold);\r\n var absLog = logAbsValue(base);\r\n var absRaise = mathRaiseTo(base);\r\n var floor = correctValueByIntervalLog(absRaise, value => value < 0 ? mathCeil : mathFloor, absLog);\r\n var ceil = correctValueByIntervalLog(absRaise, value => value < 0 ? mathFloor : mathCeil, absLog);\r\n var ceilNumber = correctValueByInterval(getValue, mathCeil, getValue);\r\n return generator(options, getBusinessDeltaLog(base, options.allowNegatives, options.linearThreshold), getCalculateTickIntervalLog(options.skipCalculationLimits), calculateMinorTickInterval, getTickIntervalByCustomTicks(log, getValue), getTickIntervalByCustomTicks(getValue, getValue), getValue, calculateTicks(addIntervalLog(log, raise), correctMinValueByEndOnTick(floor, ceil, resolveEndOnTickLog(base), options.endOnTick), getAdjustIntervalLog(options.skipCalculationLimits), resolveEndOnTickLog(base)), calculateMinorTicks((_, tick, prevTick, factor) => Math.max(Math.abs(tick), Math.abs(prevTick)) / factor, addInterval, floor, ceilNumber, ceil), getScaleBreaksProcessor(getValue, log, (value, correction) => raise(log(value) + correction)))\r\n}\r\n\r\nfunction dateGenerator(options) {\r\n function floor(value, interval) {\r\n var floorNumber = correctValueByInterval(getValue, mathFloor, getValue);\r\n var intervalObject = isString(interval) ? dateUtils.getDateIntervalByString(interval.toLowerCase()) : interval;\r\n var divider = dateToMilliseconds(interval);\r\n if (intervalObject.days % 7 === 0 || interval.quarters) {\r\n intervalObject = adjustIntervalDateTime(divider)\r\n }\r\n var correctDateWithUnitBeginning = v => dateUtils.correctDateWithUnitBeginning(v, intervalObject, null, options.firstDayOfWeek);\r\n var floorAtStartDate = v => new Date(mathFloor((v.getTime() - v.getTimezoneOffset() * MINUTE) / divider) * divider + v.getTimezoneOffset() * MINUTE);\r\n value = correctDateWithUnitBeginning(value);\r\n if (\"years\" in intervalObject) {\r\n value.setFullYear(floorNumber(value.getFullYear(), intervalObject.years))\r\n } else if (\"quarters\" in intervalObject) {\r\n value = correctDateWithUnitBeginning(floorAtStartDate(value))\r\n } else if (\"months\" in intervalObject) {\r\n value.setMonth(floorNumber(value.getMonth(), intervalObject.months))\r\n } else if (\"weeks\" in intervalObject || \"days\" in intervalObject) {\r\n value = correctDateWithUnitBeginning(floorAtStartDate(value))\r\n } else if (\"hours\" in intervalObject) {\r\n value.setHours(floorNumber(value.getHours(), intervalObject.hours))\r\n } else if (\"minutes\" in intervalObject) {\r\n value.setMinutes(floorNumber(value.getMinutes(), intervalObject.minutes))\r\n } else if (\"seconds\" in intervalObject) {\r\n value.setSeconds(floorNumber(value.getSeconds(), intervalObject.seconds))\r\n } else if (\"milliseconds\" in intervalObject) {\r\n value = floorAtStartDate(value)\r\n }\r\n return value\r\n }\r\n var calculateTickIntervalByCustomTicks = getTickIntervalByCustomTicks(getValue, dateUtils.convertMillisecondsToDateUnits);\r\n return generator(options, getBusinessDelta, calculateTickIntervalDateTime, calculateMinorTickIntervalDateTime, calculateTickIntervalByCustomTicks, calculateTickIntervalByCustomTicks, dateToMilliseconds, calculateTicks(addIntervalDate, correctMinValueByEndOnTick(floor, (function(value, interval) {\r\n var newValue = floor(value, interval);\r\n while (value - newValue > 0) {\r\n newValue = addIntervalDate(newValue, interval)\r\n }\r\n return newValue\r\n }), resolveEndOnTickDate, options.endOnTick), adjustIntervalDateTime, resolveEndOnTickDate), calculateMinorTicks(getValue, addIntervalDate, floor, addIntervalDate, getValue), getScaleBreaksProcessor(dateToMilliseconds, getValue, (value, correction) => new Date(value.getTime() + correction)))\r\n}\r\nexport var tickGenerator = function(options) {\r\n var result;\r\n if (options.rangeIsEmpty) {\r\n result = dummyGenerator(options)\r\n } else if (\"discrete\" === options.axisType) {\r\n result = discreteGenerator(options)\r\n } else if (\"logarithmic\" === options.axisType) {\r\n result = logarithmicGenerator(options)\r\n } else if (\"datetime\" === options.dataType) {\r\n result = dateGenerator(options)\r\n } else {\r\n result = numericGenerator(options)\r\n }\r\n return result\r\n};\r\n","/**\r\n * DevExtreme (esm/viz/translators/category_translator.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n adjust\r\n} from \"../../core/utils/math\";\r\nvar round = Math.round;\r\n\r\nfunction getValue(value) {\r\n return value\r\n}\r\nexport default {\r\n translate: function(category, directionOffset) {\r\n var canvasOptions = this._canvasOptions;\r\n var categoryIndex = this._categoriesToPoints[null === category || void 0 === category ? void 0 : category.valueOf()];\r\n var specialValue = this.translateSpecialCase(category);\r\n var startPointIndex = canvasOptions.startPointIndex || 0;\r\n var stickInterval = this._options.stick ? 0 : .5;\r\n if (isDefined(specialValue)) {\r\n return round(specialValue)\r\n }\r\n if (!categoryIndex && 0 !== categoryIndex) {\r\n return null\r\n }\r\n directionOffset = directionOffset || 0;\r\n var stickDelta = categoryIndex + stickInterval - startPointIndex + .5 * directionOffset;\r\n return round(this._calculateProjection(canvasOptions.interval * stickDelta))\r\n },\r\n getInterval: function() {\r\n return this._canvasOptions.interval\r\n },\r\n getEventScale: function(zoomEvent) {\r\n var scale = zoomEvent.deltaScale || 1;\r\n return 1 - (1 - scale) / (.75 + this.visibleCategories.length / this._categories.length)\r\n },\r\n zoom: function(translate, scale) {\r\n var categories = this._categories;\r\n var canvasOptions = this._canvasOptions;\r\n var stick = this._options.stick;\r\n var invert = canvasOptions.invert;\r\n var interval = canvasOptions.interval * scale;\r\n var translateCategories = translate / interval;\r\n var visibleCount = (this.visibleCategories || []).length;\r\n var startCategoryIndex = parseInt((canvasOptions.startPointIndex || 0) + translateCategories + .5);\r\n var categoriesLength = parseInt(adjust(canvasOptions.canvasLength / interval) + (stick ? 1 : 0)) || 1;\r\n var endCategoryIndex;\r\n if (invert) {\r\n startCategoryIndex = parseInt((canvasOptions.startPointIndex || 0) + visibleCount - translateCategories + .5) - categoriesLength\r\n }\r\n if (startCategoryIndex < 0) {\r\n startCategoryIndex = 0\r\n }\r\n endCategoryIndex = startCategoryIndex + categoriesLength;\r\n if (endCategoryIndex > categories.length) {\r\n endCategoryIndex = categories.length;\r\n startCategoryIndex = endCategoryIndex - categoriesLength;\r\n if (startCategoryIndex < 0) {\r\n startCategoryIndex = 0\r\n }\r\n }\r\n var newVisibleCategories = categories.slice(parseInt(startCategoryIndex), parseInt(endCategoryIndex));\r\n var newInterval = this._getDiscreteInterval(newVisibleCategories.length, canvasOptions);\r\n scale = newInterval / canvasOptions.interval;\r\n translate = this.translate(!invert ? newVisibleCategories[0] : newVisibleCategories[newVisibleCategories.length - 1]) * scale - (canvasOptions.startPoint + (stick ? 0 : newInterval / 2));\r\n return {\r\n min: newVisibleCategories[0],\r\n max: newVisibleCategories[newVisibleCategories.length - 1],\r\n translate: translate,\r\n scale: scale\r\n }\r\n },\r\n getMinScale: function(zoom) {\r\n var canvasOptions = this._canvasOptions;\r\n var categoriesLength = (this.visibleCategories || this._categories).length;\r\n categoriesLength += (parseInt(.1 * categoriesLength) || 1) * (zoom ? -2 : 2);\r\n return canvasOptions.canvasLength / (Math.max(categoriesLength, 1) * canvasOptions.interval)\r\n },\r\n getScale: function(min, max) {\r\n var canvasOptions = this._canvasOptions;\r\n var visibleArea = this.getCanvasVisibleArea();\r\n var stickOffset = !this._options.stick && 1;\r\n var minPoint = isDefined(min) ? this.translate(min, -stickOffset) : null;\r\n var maxPoint = isDefined(max) ? this.translate(max, +stickOffset) : null;\r\n if (null === minPoint) {\r\n minPoint = canvasOptions.invert ? visibleArea.max : visibleArea.min\r\n }\r\n if (null === maxPoint) {\r\n maxPoint = canvasOptions.invert ? visibleArea.min : visibleArea.max\r\n }\r\n return this.canvasLength / Math.abs(maxPoint - minPoint)\r\n },\r\n isValid: function(value) {\r\n return isDefined(value) ? this._categoriesToPoints[value.valueOf()] >= 0 : false\r\n },\r\n getCorrectValue: getValue,\r\n to: function(value, direction) {\r\n var canvasOptions = this._canvasOptions;\r\n var categoryIndex = this._categoriesToPoints[null === value || void 0 === value ? void 0 : value.valueOf()];\r\n var startPointIndex = canvasOptions.startPointIndex || 0;\r\n var stickDelta = categoryIndex + (this._options.stick ? 0 : .5) - startPointIndex + (this._businessRange.invert ? -1 : 1) * direction * .5;\r\n return round(this._calculateProjection(canvasOptions.interval * stickDelta))\r\n },\r\n from: function(position) {\r\n var direction = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;\r\n var canvasOptions = this._canvasOptions;\r\n var startPoint = canvasOptions.startPoint;\r\n var categories = this.visibleCategories || this._categories;\r\n var categoriesLength = categories.length;\r\n var stickInterval = this._options.stick ? .5 : 0;\r\n var result = round((position - startPoint) / canvasOptions.interval + stickInterval - .5 - .5 * direction);\r\n if (result >= categoriesLength) {\r\n result = categoriesLength - 1\r\n }\r\n if (result < 0) {\r\n result = 0\r\n }\r\n if (canvasOptions.invert) {\r\n result = categoriesLength - result - 1\r\n }\r\n return categories[result]\r\n },\r\n _add: function() {\r\n return NaN\r\n },\r\n toValue: getValue,\r\n isValueProlonged: true,\r\n getRangeByMinZoomValue(minZoom, visualRange) {\r\n var categories = this._categories;\r\n var minVisibleIndex = categories.indexOf(visualRange.minVisible);\r\n var maxVisibleIndex = categories.indexOf(visualRange.maxVisible);\r\n var startIndex = minVisibleIndex + minZoom - 1;\r\n var endIndex = maxVisibleIndex - minZoom + 1;\r\n if (categories[startIndex]) {\r\n return [visualRange.minVisible, categories[startIndex]]\r\n } else {\r\n return [categories[endIndex], visualRange.maxVisible]\r\n }\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/viz/translators/interval_translator.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n isNumeric as isNumber,\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport dateUtils from \"../../core/utils/date\";\r\nvar floor = Math.floor;\r\nimport {\r\n adjust\r\n} from \"../../core/utils/math\";\r\nexport default {\r\n _intervalize: function(value, interval) {\r\n if (!isDefined(value)) {\r\n return\r\n }\r\n if (\"datetime\" === this._businessRange.dataType) {\r\n if (isNumber(value)) {\r\n value = new Date(value)\r\n } else {\r\n value = new Date(value.getTime())\r\n }\r\n value = dateUtils.correctDateWithUnitBeginning(value, interval, null, this._options.firstDayOfWeek)\r\n } else {\r\n value = adjust(floor(adjust(value / interval)) * interval, interval)\r\n }\r\n return value\r\n },\r\n translate: function(bp, direction, interval) {\r\n var specialValue = this.translateSpecialCase(bp);\r\n if (isDefined(specialValue)) {\r\n return Math.round(specialValue)\r\n }\r\n interval = interval || this._options.interval;\r\n if (!this.isValid(bp, interval)) {\r\n return null\r\n }\r\n return this.to(bp, direction, interval)\r\n },\r\n getInterval: function() {\r\n return Math.round(this._canvasOptions.ratioOfCanvasRange * (this._businessRange.interval || Math.abs(this._canvasOptions.rangeMax - this._canvasOptions.rangeMin)))\r\n },\r\n zoom: function() {},\r\n getMinScale: function() {},\r\n getScale: function() {},\r\n _parse: function(value) {\r\n return \"datetime\" === this._businessRange.dataType ? new Date(value) : Number(value)\r\n },\r\n fromValue: function(value) {\r\n return this._parse(value)\r\n },\r\n toValue: function(value) {\r\n return this._parse(value)\r\n },\r\n isValid: function(value, interval) {\r\n var co = this._canvasOptions;\r\n var rangeMin = co.rangeMin;\r\n var rangeMax = co.rangeMax;\r\n interval = interval || this._options.interval;\r\n if (null === value || isNaN(value)) {\r\n return false\r\n }\r\n value = \"datetime\" === this._businessRange.dataType && isNumber(value) ? new Date(value) : value;\r\n if (interval !== this._options.interval) {\r\n rangeMin = this._intervalize(rangeMin, interval);\r\n rangeMax = this._intervalize(rangeMax, interval)\r\n }\r\n if (value.valueOf() < rangeMin || value.valueOf() >= dateUtils.addInterval(rangeMax, interval)) {\r\n return false\r\n }\r\n return true\r\n },\r\n to: function(bp, direction, interval) {\r\n interval = interval || this._options.interval;\r\n var v1 = this._intervalize(bp, interval);\r\n var v2 = dateUtils.addInterval(v1, interval);\r\n var res = this._to(v1);\r\n var p2 = this._to(v2);\r\n if (!direction) {\r\n res = floor((res + p2) / 2)\r\n } else if (direction > 0) {\r\n res = p2\r\n }\r\n return res\r\n },\r\n _to: function(value) {\r\n var co = this._canvasOptions;\r\n var rMin = co.rangeMinVisible;\r\n var rMax = co.rangeMaxVisible;\r\n var offset = value - rMin;\r\n if (value < rMin) {\r\n offset = 0\r\n } else if (value > rMax) {\r\n offset = dateUtils.addInterval(rMax, this._options.interval) - rMin\r\n }\r\n return this._conversionValue(this._calculateProjection(offset * this._canvasOptions.ratioOfCanvasRange))\r\n },\r\n from: function(position, direction) {\r\n var origInterval = this._options.interval;\r\n var interval = origInterval;\r\n var co = this._canvasOptions;\r\n var rMin = co.rangeMinVisible;\r\n var rMax = co.rangeMaxVisible;\r\n var value;\r\n if (\"datetime\" === this._businessRange.dataType) {\r\n interval = dateUtils.dateToMilliseconds(origInterval)\r\n }\r\n value = this._calculateUnProjection((position - this._canvasOptions.startPoint) / this._canvasOptions.ratioOfCanvasRange);\r\n value = this._intervalize(dateUtils.addInterval(value, interval / 2, direction > 0), origInterval);\r\n if (value < rMin) {\r\n value = rMin\r\n } else if (value > rMax) {\r\n value = rMax\r\n }\r\n return value\r\n },\r\n _add: function() {\r\n return NaN\r\n },\r\n isValueProlonged: true\r\n};\r\n","/**\r\n * DevExtreme (esm/viz/translators/datetime_translator.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport dateUtils from \"../../core/utils/date\";\r\n\r\nfunction parse(value) {\r\n return null !== value ? new Date(value) : value\r\n}\r\nexport default {\r\n fromValue: parse,\r\n toValue: parse,\r\n _add: dateUtils.addDateInterval,\r\n convert: dateUtils.dateToMilliseconds\r\n};\r\n","/**\r\n * DevExtreme (esm/viz/translators/logarithmic_translator.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n raiseToExt as raiseTo,\r\n getLogExt as getLog\r\n} from \"../core/utils\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nexport default {\r\n fromValue: function(value) {\r\n return null !== value ? getLog(value, this._canvasOptions.base, this._businessRange.allowNegatives, this._businessRange.linearThreshold) : value\r\n },\r\n toValue: function(value) {\r\n return null !== value ? raiseTo(value, this._canvasOptions.base, this._businessRange.allowNegatives, this._businessRange.linearThreshold) : value\r\n },\r\n getMinBarSize: function(minBarSize) {\r\n var visibleArea = this.getCanvasVisibleArea();\r\n var minValue = this.from(visibleArea.min + minBarSize);\r\n var canvasOptions = this._canvasOptions;\r\n return Math.pow(canvasOptions.base, canvasOptions.rangeMinVisible + this.fromValue(this.from(visibleArea.min)) - this.fromValue(!isDefined(minValue) ? this.from(visibleArea.max) : minValue))\r\n },\r\n checkMinBarSize: function(initialValue, minShownValue, stackValue) {\r\n var canvasOptions = this._canvasOptions;\r\n var prevValue = stackValue - initialValue;\r\n var baseMethod = this.constructor.prototype.checkMinBarSize;\r\n var minBarSize;\r\n var updateValue;\r\n if (isDefined(minShownValue) && prevValue > 0) {\r\n minBarSize = baseMethod(this.fromValue(stackValue / prevValue), this.fromValue(minShownValue) - canvasOptions.rangeMinVisible);\r\n updateValue = Math.pow(canvasOptions.base, this.fromValue(prevValue) + minBarSize) - prevValue\r\n } else {\r\n updateValue = baseMethod(initialValue, minShownValue)\r\n }\r\n return updateValue\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/viz/translators/translator2d.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n Range\r\n} from \"./range\";\r\nimport categoryTranslator from \"./category_translator\";\r\nimport intervalTranslator from \"./interval_translator\";\r\nimport datetimeTranslator from \"./datetime_translator\";\r\nimport logarithmicTranslator from \"./logarithmic_translator\";\r\nimport {\r\n getLogExt as getLog,\r\n getPower,\r\n raiseToExt,\r\n getCategoriesInfo\r\n} from \"../core/utils\";\r\nimport {\r\n isDefined,\r\n isDate\r\n} from \"../../core/utils/type\";\r\nimport {\r\n adjust\r\n} from \"../../core/utils/math\";\r\nimport dateUtils from \"../../core/utils/date\";\r\nvar _abs = Math.abs;\r\nvar CANVAS_PROP = [\"width\", \"height\", \"left\", \"top\", \"bottom\", \"right\"];\r\nvar dummyTranslator = {\r\n to(value) {\r\n var coord = this._canvasOptions.startPoint + (this._options.conversionValue ? value : Math.round(value));\r\n return coord > this._canvasOptions.endPoint ? this._canvasOptions.endPoint : coord\r\n },\r\n from(value) {\r\n return value - this._canvasOptions.startPoint\r\n }\r\n};\r\nvar validateCanvas = function(canvas) {\r\n each(CANVAS_PROP, (function(_, prop) {\r\n canvas[prop] = parseInt(canvas[prop]) || 0\r\n }));\r\n return canvas\r\n};\r\nvar makeCategoriesToPoints = function(categories) {\r\n var categoriesToPoints = {};\r\n categories.forEach((function(item, i) {\r\n categoriesToPoints[item.valueOf()] = i\r\n }));\r\n return categoriesToPoints\r\n};\r\nvar validateBusinessRange = function(businessRange) {\r\n if (!(businessRange instanceof Range)) {\r\n businessRange = new Range(businessRange)\r\n }\r\n\r\n function validate(valueSelector, baseValueSelector) {\r\n if (!isDefined(businessRange[valueSelector]) && isDefined(businessRange[baseValueSelector])) {\r\n businessRange[valueSelector] = businessRange[baseValueSelector]\r\n }\r\n }\r\n validate(\"minVisible\", \"min\");\r\n validate(\"maxVisible\", \"max\");\r\n return businessRange\r\n};\r\n\r\nfunction prepareBreaks(breaks, range) {\r\n var transform = \"logarithmic\" === range.axisType ? function(value) {\r\n return getLog(value, range.base)\r\n } : function(value) {\r\n return value\r\n };\r\n var array = [];\r\n var br;\r\n var transformFrom;\r\n var transformTo;\r\n var i;\r\n var length = breaks.length;\r\n var sum = 0;\r\n for (i = 0; i < length; i++) {\r\n br = breaks[i];\r\n transformFrom = transform(br.from);\r\n transformTo = transform(br.to);\r\n sum += transformTo - transformFrom;\r\n array.push({\r\n trFrom: transformFrom,\r\n trTo: transformTo,\r\n from: br.from,\r\n to: br.to,\r\n length: sum,\r\n cumulativeWidth: br.cumulativeWidth\r\n })\r\n }\r\n return array\r\n}\r\n\r\nfunction getCanvasBounds(range) {\r\n var min = range.min;\r\n var max = range.max;\r\n var minVisible = range.minVisible;\r\n var maxVisible = range.maxVisible;\r\n var isLogarithmic = \"logarithmic\" === range.axisType;\r\n if (isLogarithmic) {\r\n maxVisible = getLog(maxVisible, range.base, range.allowNegatives, range.linearThreshold);\r\n minVisible = getLog(minVisible, range.base, range.allowNegatives, range.linearThreshold);\r\n min = getLog(min, range.base, range.allowNegatives, range.linearThreshold);\r\n max = getLog(max, range.base, range.allowNegatives, range.linearThreshold)\r\n }\r\n return {\r\n base: range.base,\r\n rangeMin: min,\r\n rangeMax: max,\r\n rangeMinVisible: minVisible,\r\n rangeMaxVisible: maxVisible\r\n }\r\n}\r\n\r\nfunction getCheckingMethodsAboutBreaks(inverted) {\r\n return {\r\n isStartSide: !inverted ? function(pos, breaks, start, end) {\r\n return pos < breaks[0][start]\r\n } : function(pos, breaks, start, end) {\r\n return pos <= breaks[breaks.length - 1][end]\r\n },\r\n isEndSide: !inverted ? function(pos, breaks, start, end) {\r\n return pos >= breaks[breaks.length - 1][end]\r\n } : function(pos, breaks, start, end) {\r\n return pos > breaks[0][start]\r\n },\r\n isInBreak: !inverted ? function(pos, br, start, end) {\r\n return pos >= br[start] && pos < br[end]\r\n } : function(pos, br, start, end) {\r\n return pos > br[end] && pos <= br[start]\r\n },\r\n isBetweenBreaks: !inverted ? function(pos, br, prevBreak, start, end) {\r\n return pos < br[start] && pos >= prevBreak[end]\r\n } : function(pos, br, prevBreak, start, end) {\r\n return pos >= br[end] && pos < prevBreak[start]\r\n },\r\n getLength: !inverted ? function(br) {\r\n return br.length\r\n } : function(br, lastBreak) {\r\n return lastBreak.length - br.length\r\n },\r\n getBreaksSize: !inverted ? function(br) {\r\n return br.cumulativeWidth\r\n } : function(br, lastBreak) {\r\n return lastBreak.cumulativeWidth - br.cumulativeWidth\r\n }\r\n }\r\n}\r\nvar _Translator2d = function(businessRange, canvas, options) {\r\n this.update(businessRange, canvas, options)\r\n};\r\n_Translator2d.prototype = {\r\n constructor: _Translator2d,\r\n reinit: function() {\r\n var that = this;\r\n var options = that._options;\r\n var range = that._businessRange;\r\n var categories = range.categories || [];\r\n var script = {};\r\n var canvasOptions = that._prepareCanvasOptions();\r\n var visibleCategories = getCategoriesInfo(categories, range.minVisible, range.maxVisible).categories;\r\n var categoriesLength = visibleCategories.length;\r\n if (range.isEmpty()) {\r\n script = dummyTranslator\r\n } else {\r\n switch (range.axisType) {\r\n case \"logarithmic\":\r\n script = logarithmicTranslator;\r\n break;\r\n case \"semidiscrete\":\r\n script = intervalTranslator;\r\n canvasOptions.ratioOfCanvasRange = canvasOptions.canvasLength / (dateUtils.addInterval(canvasOptions.rangeMaxVisible, options.interval) - canvasOptions.rangeMinVisible);\r\n break;\r\n case \"discrete\":\r\n script = categoryTranslator;\r\n that._categories = categories;\r\n canvasOptions.interval = that._getDiscreteInterval(options.addSpiderCategory ? categoriesLength + 1 : categoriesLength, canvasOptions);\r\n that._categoriesToPoints = makeCategoriesToPoints(categories);\r\n if (categoriesLength) {\r\n canvasOptions.startPointIndex = that._categoriesToPoints[visibleCategories[0].valueOf()];\r\n that.visibleCategories = visibleCategories\r\n }\r\n break;\r\n default:\r\n if (\"datetime\" === range.dataType) {\r\n script = datetimeTranslator\r\n }\r\n }\r\n }(that._oldMethods || []).forEach((function(methodName) {\r\n delete that[methodName]\r\n }));\r\n that._oldMethods = Object.keys(script);\r\n extend(that, script);\r\n that._conversionValue = options.conversionValue ? function(value) {\r\n return value\r\n } : function(value) {\r\n return Math.round(value)\r\n };\r\n that.sc = {};\r\n that._checkingMethodsAboutBreaks = [getCheckingMethodsAboutBreaks(false), getCheckingMethodsAboutBreaks(that.isInverted())];\r\n that._translateBreaks();\r\n that._calculateSpecialValues()\r\n },\r\n _translateBreaks: function() {\r\n var breaks = this._breaks;\r\n var size = this._options.breaksSize;\r\n var i;\r\n var b;\r\n var end;\r\n var length;\r\n if (void 0 === breaks) {\r\n return\r\n }\r\n for (i = 0, length = breaks.length; i < length; i++) {\r\n b = breaks[i];\r\n end = this.translate(b.to);\r\n b.end = end;\r\n b.start = !b.gapSize ? !this.isInverted() ? end - size : end + size : end\r\n }\r\n },\r\n _checkValueAboutBreaks: function(breaks, pos, start, end, methods) {\r\n var i;\r\n var length;\r\n var prop = {\r\n length: 0,\r\n breaksSize: void 0,\r\n inBreak: false\r\n };\r\n var br;\r\n var prevBreak;\r\n var lastBreak = breaks[breaks.length - 1];\r\n if (methods.isStartSide(pos, breaks, start, end)) {\r\n return prop\r\n } else if (methods.isEndSide(pos, breaks, start, end)) {\r\n return {\r\n length: lastBreak.length,\r\n breaksSize: lastBreak.cumulativeWidth,\r\n inBreak: false\r\n }\r\n }\r\n for (i = 0, length = breaks.length; i < length; i++) {\r\n br = breaks[i];\r\n prevBreak = breaks[i - 1];\r\n if (methods.isInBreak(pos, br, start, end)) {\r\n prop.inBreak = true;\r\n prop.break = br;\r\n break\r\n }\r\n if (prevBreak && methods.isBetweenBreaks(pos, br, prevBreak, start, end)) {\r\n prop = {\r\n length: methods.getLength(prevBreak, lastBreak),\r\n breaksSize: methods.getBreaksSize(prevBreak, lastBreak),\r\n inBreak: false\r\n };\r\n break\r\n }\r\n }\r\n return prop\r\n },\r\n isInverted: function() {\r\n return !(this._options.isHorizontal ^ this._businessRange.invert)\r\n },\r\n _getDiscreteInterval: function(categoriesLength, canvasOptions) {\r\n var correctedCategoriesCount = categoriesLength - (this._options.stick ? 1 : 0);\r\n return correctedCategoriesCount > 0 ? canvasOptions.canvasLength / correctedCategoriesCount : canvasOptions.canvasLength\r\n },\r\n _prepareCanvasOptions() {\r\n var businessRange = this._businessRange;\r\n var canvasOptions = this._canvasOptions = getCanvasBounds(businessRange);\r\n var canvas = this._canvas;\r\n var breaks = this._breaks;\r\n var length;\r\n canvasOptions.startPadding = canvas.startPadding || 0;\r\n canvasOptions.endPadding = canvas.endPadding || 0;\r\n if (this._options.isHorizontal) {\r\n canvasOptions.startPoint = canvas.left + canvasOptions.startPadding;\r\n length = canvas.width;\r\n canvasOptions.endPoint = canvas.width - canvas.right - canvasOptions.endPadding;\r\n canvasOptions.invert = businessRange.invert\r\n } else {\r\n canvasOptions.startPoint = canvas.top + canvasOptions.startPadding;\r\n length = canvas.height;\r\n canvasOptions.endPoint = canvas.height - canvas.bottom - canvasOptions.endPadding;\r\n canvasOptions.invert = !businessRange.invert\r\n }\r\n this.canvasLength = canvasOptions.canvasLength = canvasOptions.endPoint - canvasOptions.startPoint;\r\n canvasOptions.rangeDoubleError = Math.pow(10, getPower(canvasOptions.rangeMax - canvasOptions.rangeMin) - getPower(length) - 2);\r\n canvasOptions.ratioOfCanvasRange = canvasOptions.canvasLength / (canvasOptions.rangeMaxVisible - canvasOptions.rangeMinVisible);\r\n if (void 0 !== breaks) {\r\n canvasOptions.ratioOfCanvasRange = (canvasOptions.canvasLength - breaks[breaks.length - 1].cumulativeWidth) / (canvasOptions.rangeMaxVisible - canvasOptions.rangeMinVisible - breaks[breaks.length - 1].length)\r\n }\r\n return canvasOptions\r\n },\r\n updateCanvas: function(canvas) {\r\n this._canvas = validateCanvas(canvas);\r\n this.reinit()\r\n },\r\n updateBusinessRange: function(businessRange) {\r\n var breaks = businessRange.breaks || [];\r\n this._userBreaks = businessRange.userBreaks || [];\r\n this._businessRange = validateBusinessRange(businessRange);\r\n this._breaks = breaks.length ? prepareBreaks(breaks, this._businessRange) : void 0;\r\n this.reinit()\r\n },\r\n update: function(businessRange, canvas, options) {\r\n this._options = extend(this._options || {}, options);\r\n this._canvas = validateCanvas(canvas);\r\n this.updateBusinessRange(businessRange)\r\n },\r\n getBusinessRange: function() {\r\n return this._businessRange\r\n },\r\n getEventScale: function(zoomEvent) {\r\n return zoomEvent.deltaScale || 1\r\n },\r\n getCanvasVisibleArea: function() {\r\n return {\r\n min: this._canvasOptions.startPoint,\r\n max: this._canvasOptions.endPoint\r\n }\r\n },\r\n _calculateSpecialValues: function() {\r\n var canvasOptions = this._canvasOptions;\r\n var startPoint = canvasOptions.startPoint - canvasOptions.startPadding;\r\n var endPoint = canvasOptions.endPoint + canvasOptions.endPadding;\r\n var range = this._businessRange;\r\n var minVisible = range.minVisible;\r\n var maxVisible = range.maxVisible;\r\n var canvas_position_center_middle = startPoint + canvasOptions.canvasLength / 2;\r\n var canvas_position_default;\r\n if (minVisible < 0 && maxVisible > 0 && minVisible !== maxVisible) {\r\n canvas_position_default = this.translate(0, 1)\r\n }\r\n if (!isDefined(canvas_position_default)) {\r\n var invert = range.invert ^ (minVisible < 0 && maxVisible <= 0);\r\n if (this._options.isHorizontal) {\r\n canvas_position_default = invert ? endPoint : startPoint\r\n } else {\r\n canvas_position_default = invert ? startPoint : endPoint\r\n }\r\n }\r\n this.sc = {\r\n canvas_position_default: canvas_position_default,\r\n canvas_position_left: startPoint,\r\n canvas_position_top: startPoint,\r\n canvas_position_center: canvas_position_center_middle,\r\n canvas_position_middle: canvas_position_center_middle,\r\n canvas_position_right: endPoint,\r\n canvas_position_bottom: endPoint,\r\n canvas_position_start: canvasOptions.invert ? endPoint : startPoint,\r\n canvas_position_end: canvasOptions.invert ? startPoint : endPoint\r\n }\r\n },\r\n translateSpecialCase(value) {\r\n return this.sc[value]\r\n },\r\n _calculateProjection: function(distance) {\r\n var canvasOptions = this._canvasOptions;\r\n return canvasOptions.invert ? canvasOptions.endPoint - distance : canvasOptions.startPoint + distance\r\n },\r\n _calculateUnProjection: function(distance) {\r\n var canvasOptions = this._canvasOptions;\r\n \"datetime\" === this._businessRange.dataType && (distance = Math.round(distance));\r\n return canvasOptions.invert ? canvasOptions.rangeMaxVisible.valueOf() - distance : canvasOptions.rangeMinVisible.valueOf() + distance\r\n },\r\n getMinBarSize: function(minBarSize) {\r\n var visibleArea = this.getCanvasVisibleArea();\r\n var minValue = this.from(visibleArea.min + minBarSize);\r\n return _abs(this.from(visibleArea.min) - (!isDefined(minValue) ? this.from(visibleArea.max) : minValue))\r\n },\r\n checkMinBarSize: function(value, minShownValue, stackValue) {\r\n return _abs(value) < minShownValue ? value >= 0 ? minShownValue : -minShownValue : value\r\n },\r\n translate(bp, direction) {\r\n var specialValue = this.translateSpecialCase(bp);\r\n if (isDefined(specialValue)) {\r\n return Math.round(specialValue)\r\n }\r\n if (isNaN(bp)) {\r\n return null\r\n }\r\n return this.to(bp, direction)\r\n },\r\n getInterval: function(interval) {\r\n var _interval;\r\n var canvasOptions = this._canvasOptions;\r\n interval = null !== (_interval = interval) && void 0 !== _interval ? _interval : this._businessRange.interval;\r\n if (interval) {\r\n return Math.round(canvasOptions.ratioOfCanvasRange * interval)\r\n }\r\n return Math.round(canvasOptions.endPoint - canvasOptions.startPoint)\r\n },\r\n zoom(translate, scale, wholeRange) {\r\n var canvasOptions = this._canvasOptions;\r\n if (canvasOptions.rangeMinVisible.valueOf() === canvasOptions.rangeMaxVisible.valueOf() && 0 !== translate) {\r\n return this.zoomZeroLengthRange(translate, scale)\r\n }\r\n var startPoint = canvasOptions.startPoint;\r\n var endPoint = canvasOptions.endPoint;\r\n var isInverted = this.isInverted();\r\n var newStart = (startPoint + translate) / scale;\r\n var newEnd = (endPoint + translate) / scale;\r\n wholeRange = wholeRange || {};\r\n var minPoint = this.to(isInverted ? wholeRange.endValue : wholeRange.startValue);\r\n var maxPoint = this.to(isInverted ? wholeRange.startValue : wholeRange.endValue);\r\n var min;\r\n var max;\r\n if (minPoint > newStart) {\r\n newEnd -= newStart - minPoint;\r\n newStart = minPoint;\r\n min = isInverted ? wholeRange.endValue : wholeRange.startValue\r\n }\r\n if (maxPoint < newEnd) {\r\n newStart -= newEnd - maxPoint;\r\n newEnd = maxPoint;\r\n max = isInverted ? wholeRange.startValue : wholeRange.endValue\r\n }\r\n if (maxPoint - minPoint < newEnd - newStart) {\r\n newStart = minPoint;\r\n newEnd = maxPoint\r\n }\r\n translate = (endPoint - startPoint) * newStart / (newEnd - newStart) - startPoint;\r\n scale = (startPoint + translate) / newStart || 1;\r\n min = isDefined(min) ? min : adjust(this.from(newStart, 1));\r\n max = isDefined(max) ? max : adjust(this.from(newEnd, -1));\r\n if (scale <= 1) {\r\n min = this._correctValueAboutBreaks(min, 1 === scale ? translate : -1);\r\n max = this._correctValueAboutBreaks(max, 1 === scale ? translate : 1)\r\n }\r\n if (min > max) {\r\n min = min > wholeRange.endValue ? wholeRange.endValue : min;\r\n max = max < wholeRange.startValue ? wholeRange.startValue : max\r\n } else {\r\n min = min < wholeRange.startValue ? wholeRange.startValue : min;\r\n max = max > wholeRange.endValue ? wholeRange.endValue : max\r\n }\r\n return {\r\n min: min,\r\n max: max,\r\n translate: adjust(translate),\r\n scale: adjust(scale)\r\n }\r\n },\r\n _correctValueAboutBreaks(value, direction) {\r\n var br = this._userBreaks.filter(br => value >= br.from && value <= br.to);\r\n if (br.length) {\r\n return direction > 0 ? br[0].to : br[0].from\r\n } else {\r\n return value\r\n }\r\n },\r\n zoomZeroLengthRange(translate, scale) {\r\n var canvasOptions = this._canvasOptions;\r\n var min = canvasOptions.rangeMin;\r\n var max = canvasOptions.rangeMax;\r\n var correction = (max.valueOf() !== min.valueOf() ? max.valueOf() - min.valueOf() : _abs(canvasOptions.rangeMinVisible.valueOf() - min.valueOf())) / canvasOptions.canvasLength;\r\n var isDateTime = isDate(max) || isDate(min);\r\n var isLogarithmic = \"logarithmic\" === this._businessRange.axisType;\r\n var newMin = canvasOptions.rangeMinVisible.valueOf() - correction;\r\n var newMax = canvasOptions.rangeMaxVisible.valueOf() + correction;\r\n newMin = isLogarithmic ? adjust(raiseToExt(newMin, canvasOptions.base)) : isDateTime ? new Date(newMin) : newMin;\r\n newMax = isLogarithmic ? adjust(raiseToExt(newMax, canvasOptions.base)) : isDateTime ? new Date(newMax) : newMax;\r\n return {\r\n min: newMin,\r\n max: newMax,\r\n translate: translate,\r\n scale: scale\r\n }\r\n },\r\n getMinScale: function(zoom) {\r\n var {\r\n dataType: dataType,\r\n interval: interval\r\n } = this._businessRange;\r\n if (\"datetime\" === dataType && 1 === interval) {\r\n return this.getDateTimeMinScale(zoom)\r\n }\r\n return zoom ? 1.1 : .9\r\n },\r\n getDateTimeMinScale(zoom) {\r\n var canvasOptions = this._canvasOptions;\r\n var length = canvasOptions.canvasLength / canvasOptions.ratioOfCanvasRange;\r\n length += (parseInt(.1 * length) || 1) * (zoom ? -2 : 2);\r\n return canvasOptions.canvasLength / (Math.max(length, 1) * canvasOptions.ratioOfCanvasRange)\r\n },\r\n getScale: function(val1, val2) {\r\n var canvasOptions = this._canvasOptions;\r\n if (canvasOptions.rangeMax === canvasOptions.rangeMin) {\r\n return 1\r\n }\r\n val1 = isDefined(val1) ? this.fromValue(val1) : canvasOptions.rangeMin;\r\n val2 = isDefined(val2) ? this.fromValue(val2) : canvasOptions.rangeMax;\r\n return (canvasOptions.rangeMax - canvasOptions.rangeMin) / Math.abs(val1 - val2)\r\n },\r\n isValid: function(value) {\r\n var co = this._canvasOptions;\r\n value = this.fromValue(value);\r\n return null !== value && !isNaN(value) && value.valueOf() + co.rangeDoubleError >= co.rangeMin && value.valueOf() - co.rangeDoubleError <= co.rangeMax\r\n },\r\n getCorrectValue: function(value, direction) {\r\n var breaks = this._breaks;\r\n var prop;\r\n value = this.fromValue(value);\r\n if (this._breaks) {\r\n prop = this._checkValueAboutBreaks(breaks, value, \"trFrom\", \"trTo\", this._checkingMethodsAboutBreaks[0]);\r\n if (true === prop.inBreak) {\r\n return this.toValue(direction > 0 ? prop.break.trTo : prop.break.trFrom)\r\n }\r\n }\r\n return this.toValue(value)\r\n },\r\n to: function(bp, direction) {\r\n var range = this.getBusinessRange();\r\n if (isDefined(range.maxVisible) && isDefined(range.minVisible) && range.maxVisible.valueOf() === range.minVisible.valueOf()) {\r\n if (!isDefined(bp) || range.maxVisible.valueOf() !== bp.valueOf()) {\r\n return null\r\n }\r\n return this.translateSpecialCase(0 === bp && this._options.shiftZeroValue ? \"canvas_position_default\" : \"canvas_position_middle\")\r\n }\r\n bp = this.fromValue(bp);\r\n var canvasOptions = this._canvasOptions;\r\n var breaks = this._breaks;\r\n var prop = {\r\n length: 0\r\n };\r\n var commonBreakSize = 0;\r\n if (void 0 !== breaks) {\r\n prop = this._checkValueAboutBreaks(breaks, bp, \"trFrom\", \"trTo\", this._checkingMethodsAboutBreaks[0]);\r\n commonBreakSize = isDefined(prop.breaksSize) ? prop.breaksSize : 0\r\n }\r\n if (true === prop.inBreak) {\r\n if (direction > 0) {\r\n return prop.break.start\r\n } else if (direction < 0) {\r\n return prop.break.end\r\n } else {\r\n return null\r\n }\r\n }\r\n return this._conversionValue(this._calculateProjection((bp - canvasOptions.rangeMinVisible - prop.length) * canvasOptions.ratioOfCanvasRange + commonBreakSize))\r\n },\r\n from: function(pos, direction) {\r\n var breaks = this._breaks;\r\n var prop = {\r\n length: 0\r\n };\r\n var canvasOptions = this._canvasOptions;\r\n var startPoint = canvasOptions.startPoint;\r\n var commonBreakSize = 0;\r\n if (void 0 !== breaks) {\r\n prop = this._checkValueAboutBreaks(breaks, pos, \"start\", \"end\", this._checkingMethodsAboutBreaks[1]);\r\n commonBreakSize = isDefined(prop.breaksSize) ? prop.breaksSize : 0\r\n }\r\n if (true === prop.inBreak) {\r\n if (direction > 0) {\r\n return this.toValue(prop.break.trTo)\r\n } else if (direction < 0) {\r\n return this.toValue(prop.break.trFrom)\r\n } else {\r\n return null\r\n }\r\n }\r\n return this.toValue(this._calculateUnProjection((pos - startPoint - commonBreakSize) / canvasOptions.ratioOfCanvasRange + prop.length))\r\n },\r\n isValueProlonged: false,\r\n getRange: function() {\r\n return [this.toValue(this._canvasOptions.rangeMin), this.toValue(this._canvasOptions.rangeMax)]\r\n },\r\n getScreenRange: function() {\r\n return [this._canvasOptions.startPoint, this._canvasOptions.endPoint]\r\n },\r\n add: function(value, diff, dir) {\r\n return this._add(value, diff, (this._businessRange.invert ? -1 : 1) * dir)\r\n },\r\n _add: function(value, diff, coeff) {\r\n return this.toValue(this.fromValue(value) + diff * coeff)\r\n },\r\n fromValue: function(value) {\r\n return null !== value ? Number(value) : null\r\n },\r\n toValue: function(value) {\r\n return null !== value ? Number(value) : null\r\n },\r\n ratioOfCanvasRange() {\r\n return this._canvasOptions.ratioOfCanvasRange\r\n },\r\n convert: value => value,\r\n getRangeByMinZoomValue(minZoom, visualRange) {\r\n if (visualRange.minVisible + minZoom <= this._businessRange.max) {\r\n return [visualRange.minVisible, visualRange.minVisible + minZoom]\r\n } else {\r\n return [visualRange.maxVisible - minZoom, visualRange.maxVisible]\r\n }\r\n }\r\n};\r\nexport {\r\n _Translator2d as Translator2D\r\n};\r\n","/**\r\n * DevExtreme (esm/viz/axes/tick.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\n\r\nfunction getPathStyle(options) {\r\n return {\r\n stroke: options.color,\r\n \"stroke-width\": options.width,\r\n \"stroke-opacity\": options.opacity,\r\n opacity: 1\r\n }\r\n}\r\n\r\nfunction createTick(axis, renderer, tickOptions, gridOptions, skippedCategory, skipLabels, offset) {\r\n var tickOffset = offset || axis._tickOffset;\r\n var lineGroup = axis._axisLineGroup;\r\n var elementsGroup = axis._axisElementsGroup;\r\n var tickStyle = getPathStyle(tickOptions);\r\n var gridStyle = getPathStyle(gridOptions);\r\n var emptyStrRegExp = /^\\s+$/;\r\n var axisOptions = axis.getOptions();\r\n var labelOptions = axisOptions.label;\r\n var labelStyle = axis._textOptions;\r\n\r\n function getLabelFontStyle(tick) {\r\n var fontStyle = axis._textFontStyles;\r\n var customizeColor = labelOptions.customizeColor;\r\n if (customizeColor && customizeColor.call) {\r\n fontStyle = extend({}, axis._textFontStyles, {\r\n fill: customizeColor.call(tick, tick)\r\n })\r\n }\r\n return fontStyle\r\n }\r\n\r\n function createLabelHint(tick, range) {\r\n var labelHint = axis.formatHint(tick.value, labelOptions, range);\r\n if (isDefined(labelHint) && \"\" !== labelHint) {\r\n tick.getContentContainer().setTitle(labelHint)\r\n }\r\n }\r\n return function(value) {\r\n var tick = {\r\n value: value,\r\n updateValue(newValue) {\r\n this.value = value = newValue\r\n },\r\n initCoords: function() {\r\n this.coords = axis._getTranslatedValue(value, tickOffset);\r\n this.labelCoords = axis._getTranslatedValue(value)\r\n },\r\n saveCoords() {\r\n this._lastStoredCoordinates = {\r\n coords: this._storedCoords,\r\n labelCoords: this._storedLabelsCoords\r\n };\r\n this._storedCoords = this.coords;\r\n this._storedLabelsCoords = this.templateContainer ? this._getTemplateCoords() : this.labelCoords\r\n },\r\n resetCoordinates() {\r\n if (this._lastStoredCoordinates) {\r\n this._storedCoords = this._lastStoredCoordinates.coords;\r\n this._storedLabelsCoords = this._lastStoredCoordinates.labelCoords\r\n }\r\n },\r\n drawMark(options) {\r\n if (!tickOptions.visible || skippedCategory === value) {\r\n return\r\n }\r\n if (axis.areCoordsOutsideAxis(this.coords)) {\r\n return\r\n }\r\n if (this.mark) {\r\n this.mark.append(lineGroup);\r\n axis.sharp(this.mark, axis.getSharpDirectionByCoords(this.coords));\r\n this.updateTickPosition(options)\r\n } else {\r\n this.mark = axis._createPathElement([], tickStyle, axis.getSharpDirectionByCoords(this.coords)).append(lineGroup);\r\n this.updateTickPosition(options)\r\n }\r\n },\r\n setSkippedCategory(category) {\r\n skippedCategory = category\r\n },\r\n _updateLine(lineElement, settings, storedSettings, animate, isGridLine) {\r\n if (!lineElement) {\r\n return\r\n }\r\n if (null === settings.points || null === settings.r) {\r\n lineElement.remove();\r\n return\r\n }\r\n if (animate && storedSettings && null !== storedSettings.points) {\r\n settings.opacity = 1;\r\n lineElement.attr(storedSettings);\r\n lineElement.animate(settings)\r\n } else {\r\n settings.opacity = animate ? 0 : 1;\r\n lineElement.attr(settings);\r\n animate && lineElement.animate({\r\n opacity: 1\r\n }, {\r\n delay: .5,\r\n partitionDuration: .5\r\n })\r\n }\r\n this.coords.angle && axis._rotateTick(lineElement, this.coords, isGridLine)\r\n },\r\n updateTickPosition: function(options, animate) {\r\n this._updateLine(this.mark, {\r\n points: axis._getTickMarkPoints(tick.coords, tickOptions.length, options)\r\n }, this._storedCoords && {\r\n points: axis._getTickMarkPoints(tick._storedCoords, tickOptions.length, options)\r\n }, animate, false)\r\n },\r\n drawLabel: function(range, template) {\r\n if (this.templateContainer && axis.isRendered()) {\r\n this.updateLabelPosition();\r\n return\r\n }\r\n var labelIsVisible = labelOptions.visible && !skipLabels && !axis.getTranslator().getBusinessRange().isEmpty() && !axis.areCoordsOutsideAxis(this.labelCoords);\r\n if (!labelIsVisible) {\r\n if (this.label) {\r\n this.removeLabel()\r\n }\r\n return\r\n }\r\n var templateOption = labelOptions.template;\r\n var text = axis.formatLabel(value, labelOptions, range);\r\n if (this.label) {\r\n this.label.attr({\r\n text: text,\r\n rotate: 0\r\n }).append(elementsGroup);\r\n createLabelHint(this, range);\r\n this.updateLabelPosition();\r\n return\r\n }\r\n if (templateOption) {\r\n this.templateContainer = renderer.g().append(elementsGroup);\r\n this._templateDef && this._templateDef.reject();\r\n this._templateDef = new Deferred;\r\n template.render({\r\n model: {\r\n valueText: text,\r\n value: this.value,\r\n labelFontStyle: getLabelFontStyle(this),\r\n labelStyle: labelStyle\r\n },\r\n container: this.templateContainer.element,\r\n onRendered: () => {\r\n this.updateLabelPosition();\r\n this._templateDef && this._templateDef.resolve()\r\n }\r\n })\r\n } else if (isDefined(text) && \"\" !== text && !emptyStrRegExp.test(text)) {\r\n this.label = renderer.text(text).css(getLabelFontStyle(this)).attr(labelStyle).append(elementsGroup);\r\n this.updateLabelPosition();\r\n createLabelHint(this, range)\r\n }\r\n var containerForData = this.getContentContainer();\r\n containerForData && containerForData.data(\"chart-data-argument\", this.value);\r\n this.templateContainer && createLabelHint(this, range)\r\n },\r\n getTemplateDeferred() {\r\n return this._templateDef\r\n },\r\n getContentContainer() {\r\n return this.templateContainer || this.label\r\n },\r\n fadeOutElements() {\r\n var startSettings = {\r\n opacity: 1\r\n };\r\n var endSettings = {\r\n opacity: 0\r\n };\r\n var animationSettings = {\r\n partitionDuration: .5\r\n };\r\n if (this.getContentContainer()) {\r\n this._fadeOutLabel()\r\n }\r\n if (this.grid) {\r\n this.grid.append(axis._axisGridGroup).attr(startSettings).animate(endSettings, animationSettings)\r\n }\r\n if (this.mark) {\r\n this.mark.append(axis._axisLineGroup).attr(startSettings).animate(endSettings, animationSettings)\r\n }\r\n },\r\n _fadeInLabel() {\r\n var group = axis._renderer.g().attr({\r\n opacity: 0\r\n }).append(axis._axisElementsGroup).animate({\r\n opacity: 1\r\n }, {\r\n delay: .5,\r\n partitionDuration: .5\r\n });\r\n this.getContentContainer().append(group)\r\n },\r\n _fadeOutLabel() {\r\n var group = axis._renderer.g().attr({\r\n opacity: 1\r\n }).animate({\r\n opacity: 0\r\n }, {\r\n partitionDuration: .5\r\n }).append(axis._axisElementsGroup).toBackground();\r\n this.getContentContainer().append(group)\r\n },\r\n _getTemplateCoords() {\r\n return axis._getLabelAdjustedCoord(this, (axis._constantLabelOffset || 0) + (tick.labelOffset || 0))\r\n },\r\n updateLabelPosition: function(animate) {\r\n var templateContainer = this.templateContainer;\r\n if (!this.getContentContainer()) {\r\n return\r\n }\r\n if (animate && this._storedLabelsCoords) {\r\n if (templateContainer) {\r\n templateContainer.attr(this._storedLabelsCoords);\r\n var lCoords = this._getTemplateCoords();\r\n templateContainer.animate(lCoords)\r\n } else {\r\n this.label.attr({\r\n x: this._storedLabelsCoords.x,\r\n y: this._storedLabelsCoords.y\r\n });\r\n this.label.animate({\r\n x: this.labelCoords.x,\r\n y: this.labelCoords.y\r\n })\r\n }\r\n } else {\r\n if (templateContainer) {\r\n var _lCoords = this._getTemplateCoords();\r\n templateContainer.attr(_lCoords)\r\n } else {\r\n this.label.attr({\r\n x: this.labelCoords.x,\r\n y: this.labelCoords.y\r\n })\r\n }\r\n if (animate) {\r\n this._fadeInLabel()\r\n }\r\n }\r\n },\r\n updateMultilineTextAlignment() {\r\n if (labelOptions.template || !this.label) {\r\n return\r\n }\r\n this.label.attr({\r\n textsAlignment: this.labelAlignment || axis.getOptions().label.alignment\r\n })\r\n },\r\n drawGrid: function(drawLine) {\r\n if (gridOptions.visible && skippedCategory !== this.value) {\r\n if (this.grid) {\r\n this.grid.append(axis._axisGridGroup);\r\n axis.sharp(this.grid, axis.getSharpDirectionByCoords(this.coords));\r\n this.updateGridPosition()\r\n } else {\r\n this.grid = drawLine(this, gridStyle);\r\n this.grid && this.grid.append(axis._axisGridGroup)\r\n }\r\n }\r\n },\r\n updateGridPosition: function(animate) {\r\n this._updateLine(this.grid, axis._getGridPoints(tick.coords), this._storedCoords && axis._getGridPoints(this._storedCoords), animate, true)\r\n },\r\n removeLabel() {\r\n var contentContainer = this.getContentContainer();\r\n contentContainer && contentContainer.remove();\r\n this._templateDef && this._templateDef.reject();\r\n this._templateDef = this.templateContainer = this.label = null\r\n }\r\n };\r\n return tick\r\n }\r\n}\r\nexport {\r\n createTick as tick\r\n};\r\n","/**\r\n * DevExtreme (esm/viz/axes/datetime_breaks.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport dateUtils from \"../../core/utils/date\";\r\nvar days = [0, 1, 2, 3, 4, 5, 6];\r\n\r\nfunction getWeekendDays(workdays) {\r\n return days.filter((function(day) {\r\n return !workdays.some((function(workDay) {\r\n return workDay === day\r\n }))\r\n }))\r\n}\r\n\r\nfunction getNextDayIndex(dayIndex) {\r\n return (dayIndex + 1) % 7\r\n}\r\n\r\nfunction dayBetweenWeekend(weekend, day) {\r\n var start = weekend.start;\r\n var end = weekend.end;\r\n while (start !== end) {\r\n if (start === day) {\r\n return true\r\n }\r\n start = getNextDayIndex(start)\r\n }\r\n return false\r\n}\r\n\r\nfunction getDaysDistance(day, end) {\r\n var length = 0;\r\n while (day !== end) {\r\n day = getNextDayIndex(day);\r\n length++\r\n }\r\n return length\r\n}\r\n\r\nfunction separateBreak(scaleBreak, day) {\r\n var result = [];\r\n var dayEnd = new Date(day);\r\n dayEnd.setDate(day.getDate() + 1);\r\n if (day > scaleBreak.from) {\r\n result.push({\r\n from: scaleBreak.from,\r\n to: day\r\n })\r\n }\r\n if (dayEnd < scaleBreak.to) {\r\n result.push({\r\n from: dayEnd,\r\n to: scaleBreak.to\r\n })\r\n }\r\n return result\r\n}\r\n\r\nfunction getWeekEndDayIndices(workDays) {\r\n var indices = getWeekendDays(workDays);\r\n if (indices.length < 7) {\r\n while (getNextDayIndex(indices[indices.length - 1]) === indices[0]) {\r\n indices.unshift(indices.pop())\r\n }\r\n }\r\n return indices\r\n}\r\n\r\nfunction generateDateBreaksForWeekend(min, max, weekendDayIndices) {\r\n var day = min.getDate();\r\n var breaks = [];\r\n var weekends = weekendDayIndices.reduce((function(obj, day) {\r\n var currentWeekEnd = obj[1];\r\n if (void 0 === currentWeekEnd.start) {\r\n currentWeekEnd = {\r\n start: day,\r\n end: getNextDayIndex(day)\r\n };\r\n obj[0].push(currentWeekEnd);\r\n return [obj[0], currentWeekEnd]\r\n } else if (currentWeekEnd.end === day) {\r\n currentWeekEnd.end = getNextDayIndex(day);\r\n return obj\r\n }\r\n currentWeekEnd = {\r\n start: day,\r\n end: getNextDayIndex(day)\r\n };\r\n obj[0].push(currentWeekEnd);\r\n return [obj[0], currentWeekEnd]\r\n }), [\r\n [], {}\r\n ]);\r\n weekends[0].forEach((function(weekend) {\r\n var currentDate = new Date(min);\r\n currentDate = dateUtils.trimTime(currentDate);\r\n while (currentDate < max) {\r\n day = currentDate.getDay();\r\n var date = currentDate.getDate();\r\n if (dayBetweenWeekend(weekend, day)) {\r\n var from = new Date(currentDate);\r\n currentDate.setDate(date + getDaysDistance(day, weekend.end));\r\n var to = new Date(currentDate);\r\n breaks.push({\r\n from: from,\r\n to: to\r\n })\r\n }\r\n currentDate.setDate(currentDate.getDate() + 1)\r\n }\r\n }));\r\n return breaks\r\n}\r\n\r\nfunction excludeWorkDaysFromWeekEndBreaks(breaks, exactWorkDays) {\r\n var result = breaks.slice();\r\n var i;\r\n var processWorkDay = function(workday) {\r\n workday = dateUtils.trimTime(new Date(workday));\r\n if (result[i].from <= workday && result[i].to > workday) {\r\n var separatedBreak = separateBreak(result[i], workday);\r\n if (2 === separatedBreak.length) {\r\n result.splice(i, 1, separatedBreak[0], separatedBreak[1])\r\n } else if (1 === separatedBreak.length) {\r\n result.splice(i, 1, separatedBreak[0])\r\n } else {\r\n result.splice(i, 1)\r\n }\r\n }\r\n };\r\n for (i = 0; i < result.length; i++) {\r\n exactWorkDays.forEach(processWorkDay)\r\n }\r\n return result\r\n}\r\n\r\nfunction generateBreaksForHolidays(min, max, holidays, weekendDayIndices) {\r\n var day;\r\n var dayInWeekend = function(dayIndex) {\r\n return dayIndex === day\r\n };\r\n var adjustedMin = dateUtils.trimTime(min);\r\n var adjustedMax = dateUtils.trimTime(max);\r\n adjustedMax.setDate(max.getDate() + 1);\r\n return holidays.reduce((function(breaks, holiday) {\r\n var holidayStart;\r\n var holidayEnd;\r\n holiday = new Date(holiday);\r\n day = holiday.getDay();\r\n if (!weekendDayIndices.some(dayInWeekend) && holiday >= adjustedMin && holiday <= adjustedMax) {\r\n holidayStart = dateUtils.trimTime(holiday);\r\n holidayEnd = new Date(holidayStart);\r\n holidayEnd.setDate(holidayStart.getDate() + 1);\r\n breaks.push({\r\n from: holidayStart,\r\n to: holidayEnd\r\n })\r\n }\r\n return breaks\r\n }), [])\r\n}\r\n\r\nfunction calculateGaps(breaks) {\r\n return breaks.map((function(b) {\r\n return {\r\n from: b.from,\r\n to: b.to,\r\n gapSize: dateUtils.convertMillisecondsToDateUnits(b.to - b.from)\r\n }\r\n }))\r\n}\r\nexport function generateDateBreaks(min, max, workWeek, singleWorkdays, holidays) {\r\n var weekendDayIndices = getWeekEndDayIndices(workWeek);\r\n var breaks = generateDateBreaksForWeekend(min, max, weekendDayIndices);\r\n breaks.push.apply(breaks, generateBreaksForHolidays(min, max, holidays || [], weekendDayIndices));\r\n return calculateGaps(excludeWorkDaysFromWeekEndBreaks(breaks, singleWorkdays || []))\r\n}\r\n","/**\r\n * DevExtreme (esm/viz/axes/xy_axes.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n Range\r\n} from \"../translators/range\";\r\nimport formatHelper from \"../../format_helper\";\r\nimport dateUtils from \"../../core/utils/date\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n generateDateBreaks\r\n} from \"./datetime_breaks\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n getLog,\r\n patchFontOptions,\r\n getCosAndSin\r\n} from \"../core/utils\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport constants from \"./axes_constants\";\r\nvar getNextDateUnit = dateUtils.getNextDateUnit;\r\nvar correctDateWithUnitBeginning = dateUtils.correctDateWithUnitBeginning;\r\nvar _math = Math;\r\nvar _max = _math.max;\r\nvar TOP = constants.top;\r\nvar BOTTOM = constants.bottom;\r\nvar LEFT = constants.left;\r\nvar RIGHT = constants.right;\r\nvar CENTER = constants.center;\r\nvar SCALE_BREAK_OFFSET = 3;\r\nvar RANGE_RATIO = .3;\r\nvar WAVED_LINE_CENTER = 2;\r\nvar WAVED_LINE_TOP = 0;\r\nvar WAVED_LINE_BOTTOM = 4;\r\nvar WAVED_LINE_LENGTH = 24;\r\nvar TICKS_CORRECTIONS = {\r\n left: -1,\r\n top: -1,\r\n right: 0,\r\n bottom: 0,\r\n center: -.5\r\n};\r\n\r\nfunction prepareDatesDifferences(datesDifferences, tickInterval) {\r\n var dateUnitInterval;\r\n var i;\r\n if (\"week\" === tickInterval) {\r\n tickInterval = \"day\"\r\n }\r\n if (\"quarter\" === tickInterval) {\r\n tickInterval = \"month\"\r\n }\r\n if (datesDifferences[tickInterval]) {\r\n for (i = 0; i < dateUtils.dateUnitIntervals.length; i++) {\r\n dateUnitInterval = dateUtils.dateUnitIntervals[i];\r\n if (datesDifferences[dateUnitInterval]) {\r\n datesDifferences[dateUnitInterval] = false;\r\n datesDifferences.count--\r\n }\r\n if (dateUnitInterval === tickInterval) {\r\n break\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction sortingBreaks(breaks) {\r\n return breaks.sort((function(a, b) {\r\n return a.from - b.from\r\n }))\r\n}\r\n\r\nfunction getMarkerDates(min, max, markerInterval) {\r\n var origMin = min;\r\n var dates;\r\n min = correctDateWithUnitBeginning(min, markerInterval);\r\n max = correctDateWithUnitBeginning(max, markerInterval);\r\n dates = dateUtils.getSequenceByInterval(min, max, markerInterval);\r\n if (dates.length && origMin > dates[0]) {\r\n dates = dates.slice(1)\r\n }\r\n return dates\r\n}\r\n\r\nfunction getStripHorizontalAlignmentPosition(alignment) {\r\n var position = \"start\";\r\n if (\"center\" === alignment) {\r\n position = \"center\"\r\n }\r\n if (\"right\" === alignment) {\r\n position = \"end\"\r\n }\r\n return position\r\n}\r\n\r\nfunction getStripVerticalAlignmentPosition(alignment) {\r\n var position = \"start\";\r\n if (\"center\" === alignment) {\r\n position = \"center\"\r\n }\r\n if (\"bottom\" === alignment) {\r\n position = \"end\"\r\n }\r\n return position\r\n}\r\n\r\nfunction getMarkerInterval(tickInterval) {\r\n var markerInterval = getNextDateUnit(tickInterval);\r\n if (\"quarter\" === markerInterval) {\r\n markerInterval = getNextDateUnit(markerInterval)\r\n }\r\n return markerInterval\r\n}\r\n\r\nfunction getMarkerFormat(curDate, prevDate, tickInterval, markerInterval) {\r\n var format = markerInterval;\r\n var datesDifferences = prevDate && dateUtils.getDatesDifferences(prevDate, curDate);\r\n if (prevDate && \"year\" !== tickInterval) {\r\n prepareDatesDifferences(datesDifferences, tickInterval);\r\n format = formatHelper.getDateFormatByDifferences(datesDifferences)\r\n }\r\n return format\r\n}\r\n\r\nfunction getMaxSide(act, boxes) {\r\n return boxes.reduce((function(prevValue, box) {\r\n return _max(prevValue, act(box))\r\n }), 0)\r\n}\r\n\r\nfunction getDistanceByAngle(bBox, rotationAngle) {\r\n rotationAngle = _math.abs(rotationAngle);\r\n rotationAngle = rotationAngle % 180 >= 90 ? 90 - rotationAngle % 90 : rotationAngle % 90;\r\n var a = rotationAngle * (_math.PI / 180);\r\n if (a >= _math.atan(bBox.height / bBox.width)) {\r\n return bBox.height / _math.abs(_math.sin(a))\r\n } else {\r\n return bBox.width\r\n }\r\n}\r\n\r\nfunction getMaxConstantLinePadding(constantLines) {\r\n return constantLines.reduce((function(padding, options) {\r\n return _max(padding, options.paddingTopBottom)\r\n }), 0)\r\n}\r\n\r\nfunction getConstantLineLabelMarginForVerticalAlignment(constantLines, alignment, labelHeight) {\r\n return constantLines.some((function(options) {\r\n return options.label.verticalAlignment === alignment\r\n })) && labelHeight || 0\r\n}\r\n\r\nfunction getLeftMargin(bBox) {\r\n return _math.abs(bBox.x) || 0\r\n}\r\n\r\nfunction getRightMargin(bBox) {\r\n return _math.abs(bBox.width - _math.abs(bBox.x)) || 0\r\n}\r\n\r\nfunction generateRangesOnPoints(points, edgePoints, getRange) {\r\n var i;\r\n var length;\r\n var maxRange = null;\r\n var ranges = [];\r\n var curValue;\r\n var prevValue;\r\n var curRange;\r\n for (i = 1, length = points.length; i < length; i++) {\r\n curValue = points[i];\r\n prevValue = points[i - 1];\r\n curRange = getRange(curValue, prevValue);\r\n if (edgePoints.indexOf(curValue) >= 0) {\r\n if (!maxRange || curRange > maxRange.length) {\r\n maxRange = {\r\n start: curValue,\r\n end: prevValue,\r\n length: curRange\r\n }\r\n }\r\n } else {\r\n if (maxRange && curRange < maxRange.length) {\r\n ranges.push(maxRange)\r\n } else {\r\n ranges.push({\r\n start: curValue,\r\n end: prevValue,\r\n length: curRange\r\n })\r\n }\r\n maxRange = null\r\n }\r\n }\r\n if (maxRange) {\r\n ranges.push(maxRange)\r\n }\r\n return ranges\r\n}\r\n\r\nfunction generateAutoBreaks(_ref, series, _ref2) {\r\n var {\r\n logarithmBase: logarithmBase,\r\n type: type,\r\n maxAutoBreakCount: maxAutoBreakCount\r\n } = _ref;\r\n var {\r\n minVisible: minVisible,\r\n maxVisible: maxVisible\r\n } = _ref2;\r\n var breaks = [];\r\n var getRange = \"logarithmic\" === type ? (min, max) => getLog(max / min, logarithmBase) : (min, max) => max - min;\r\n var visibleRange = getRange(minVisible, maxVisible);\r\n var points = series.reduce((result, s) => {\r\n var points = s.getPointsInViewPort();\r\n result[0] = result[0].concat(points[0]);\r\n result[1] = result[1].concat(points[1]);\r\n return result\r\n }, [\r\n [],\r\n []\r\n ]);\r\n var sortedAllPoints = points[0].concat(points[1]).sort((a, b) => b - a);\r\n var edgePoints = points[1].filter(p => points[0].indexOf(p) < 0);\r\n var minDiff = RANGE_RATIO * visibleRange;\r\n var ranges = generateRangesOnPoints(sortedAllPoints, edgePoints, getRange).sort((a, b) => b.length - a.length);\r\n var epsilon = _math.min.apply(null, ranges.map(r => r.length)) / 1e3;\r\n var _maxAutoBreakCount = isDefined(maxAutoBreakCount) ? _math.min(maxAutoBreakCount, ranges.length) : ranges.length;\r\n for (var i = 0; i < _maxAutoBreakCount; i++) {\r\n if (ranges[i].length >= minDiff) {\r\n if (visibleRange <= ranges[i].length) {\r\n break\r\n }\r\n visibleRange -= ranges[i].length;\r\n if (visibleRange > epsilon || visibleRange < -epsilon) {\r\n breaks.push({\r\n from: ranges[i].start,\r\n to: ranges[i].end\r\n });\r\n minDiff = RANGE_RATIO * visibleRange\r\n }\r\n } else {\r\n break\r\n }\r\n }\r\n sortingBreaks(breaks);\r\n return breaks\r\n}\r\nexport default {\r\n linear: {\r\n _getStep: function(boxes, rotationAngle) {\r\n var spacing = this._options.label.minSpacing;\r\n var func = this._isHorizontal ? function(box) {\r\n return box.width + spacing\r\n } : function(box) {\r\n return box.height\r\n };\r\n var maxLabelLength = getMaxSide(func, boxes);\r\n if (rotationAngle) {\r\n maxLabelLength = getDistanceByAngle({\r\n width: maxLabelLength,\r\n height: this._getMaxLabelHeight(boxes, 0)\r\n }, rotationAngle)\r\n }\r\n return constants.getTicksCountInRange(this._majorTicks, this._isHorizontal ? \"x\" : \"y\", maxLabelLength)\r\n },\r\n _getMaxLabelHeight: function(boxes, spacing) {\r\n return getMaxSide((function(box) {\r\n return box.height\r\n }), boxes) + spacing\r\n },\r\n _validateOverlappingMode: function(mode, displayMode) {\r\n if (this._isHorizontal && (\"rotate\" === displayMode || \"stagger\" === displayMode) || !this._isHorizontal) {\r\n return constants.validateOverlappingMode(mode)\r\n }\r\n return mode\r\n },\r\n _validateDisplayMode: function(mode) {\r\n return this._isHorizontal ? mode : \"standard\"\r\n },\r\n getMarkerTrackers: function() {\r\n return this._markerTrackers\r\n },\r\n _getSharpParam: function(opposite) {\r\n return this._isHorizontal ^ opposite ? \"h\" : \"v\"\r\n },\r\n _createAxisElement: function() {\r\n return this._renderer.path([], \"line\")\r\n },\r\n _updateAxisElementPosition: function() {\r\n var axisCoord = this._axisPosition;\r\n var canvas = this._getCanvasStartEnd();\r\n this._axisElement.attr({\r\n points: this._isHorizontal ? [canvas.start, axisCoord, canvas.end, axisCoord] : [axisCoord, canvas.start, axisCoord, canvas.end]\r\n })\r\n },\r\n _getTranslatedCoord: function(value, offset) {\r\n return this._translator.translate(value, offset)\r\n },\r\n _initAxisPositions() {\r\n if (this.customPositionIsAvailable()) {\r\n this._customBoundaryPosition = this.getCustomBoundaryPosition()\r\n }\r\n if (!this.customPositionIsAvailable() || this.customPositionIsBoundary()) {\r\n this._axisPosition = this.getPredefinedPosition(this.getResolvedBoundaryPosition())\r\n } else {\r\n this._axisPosition = this.getCustomPosition()\r\n }\r\n },\r\n _getTickMarkPoints(coords, length, tickOptions) {\r\n var isHorizontal = this._isHorizontal;\r\n var tickOrientation = this._options.tickOrientation;\r\n var labelPosition = this._options.label.position;\r\n var tickStartCoord;\r\n if (isDefined(tickOrientation)) {\r\n tickStartCoord = TICKS_CORRECTIONS[tickOrientation] * length\r\n } else {\r\n var shift = tickOptions.shift || 0;\r\n if (!isHorizontal && labelPosition === LEFT || isHorizontal && labelPosition !== BOTTOM) {\r\n shift = -shift\r\n }\r\n tickStartCoord = shift + this.getTickStartPositionShift(length)\r\n }\r\n return [coords.x + (isHorizontal ? 0 : tickStartCoord), coords.y + (isHorizontal ? tickStartCoord : 0), coords.x + (isHorizontal ? 0 : tickStartCoord + length), coords.y + (isHorizontal ? tickStartCoord + length : 0)]\r\n },\r\n getTickStartPositionShift(length) {\r\n var width = this._options.width;\r\n var position = this.getResolvedBoundaryPosition();\r\n return length % 2 === 1 ? width % 2 === 0 && (position === LEFT || position === TOP) || width % 2 === 1 && (position === RIGHT || position === BOTTOM) && !this.hasNonBoundaryPosition() ? Math.floor(-length / 2) : -Math.floor(length / 2) : -length / 2 + (width % 2 === 0 ? 0 : position === BOTTOM || position === RIGHT ? -1 : 1)\r\n },\r\n _getTitleCoords: function() {\r\n var horizontal = this._isHorizontal;\r\n var x = this._axisPosition;\r\n var y = this._axisPosition;\r\n var align = this._options.title.alignment;\r\n var canvas = this._getCanvasStartEnd();\r\n var fromStartToEnd = horizontal || this._options.position === LEFT;\r\n var canvasStart = fromStartToEnd ? canvas.start : canvas.end;\r\n var canvasEnd = fromStartToEnd ? canvas.end : canvas.start;\r\n var coord = align === LEFT ? canvasStart : align === RIGHT ? canvasEnd : canvas.start + (canvas.end - canvas.start) / 2;\r\n if (horizontal) {\r\n x = coord\r\n } else {\r\n y = coord\r\n }\r\n return {\r\n x: x,\r\n y: y\r\n }\r\n },\r\n _drawTitleText: function(group, coords) {\r\n var options = this._options;\r\n var titleOptions = options.title;\r\n var attrs = {\r\n opacity: titleOptions.opacity,\r\n align: titleOptions.alignment,\r\n class: titleOptions.cssClass\r\n };\r\n if (!titleOptions.text || !group) {\r\n return\r\n }\r\n coords = coords || this._getTitleCoords();\r\n if (!this._isHorizontal) {\r\n attrs.rotate = options.position === LEFT ? 270 : 90\r\n }\r\n var text = this._renderer.text(titleOptions.text, coords.x, coords.y).css(patchFontOptions(titleOptions.font)).attr(attrs).append(group);\r\n this._checkTitleOverflow(text);\r\n return text\r\n },\r\n _updateTitleCoords: function() {\r\n this._title && this._title.element.attr(this._getTitleCoords())\r\n },\r\n _drawTitle: function() {\r\n var title = this._drawTitleText(this._axisTitleGroup);\r\n if (title) {\r\n this._title = {\r\n element: title\r\n }\r\n }\r\n },\r\n _measureTitle: function() {\r\n if (this._title) {\r\n if (this._title.bBox && !this._title.originalSize) {\r\n this._title.originalSize = this._title.bBox\r\n }\r\n this._title.bBox = this._title.element.getBBox()\r\n }\r\n },\r\n _drawDateMarker: function(date, options, range) {\r\n var markerOptions = this._options.marker;\r\n var invert = this._translator.getBusinessRange().invert;\r\n var textIndent = markerOptions.width + markerOptions.textLeftIndent;\r\n var pathElement;\r\n if (null === options.x) {\r\n return\r\n }\r\n if (!options.withoutStick) {\r\n pathElement = this._renderer.path([options.x, options.y, options.x, options.y + markerOptions.separatorHeight], \"line\").attr({\r\n \"stroke-width\": markerOptions.width,\r\n stroke: markerOptions.color,\r\n \"stroke-opacity\": markerOptions.opacity,\r\n sharp: \"h\"\r\n }).append(this._axisElementsGroup)\r\n }\r\n var text = String(this.formatLabel(date, options.labelOptions, range));\r\n return {\r\n date: date,\r\n x: options.x,\r\n y: options.y,\r\n cropped: options.withoutStick,\r\n label: this._renderer.text(text, options.x, options.y).css(patchFontOptions(markerOptions.label.font)).append(this._axisElementsGroup),\r\n line: pathElement,\r\n getContentContainer() {\r\n return this.label\r\n },\r\n getEnd: function() {\r\n return this.x + (invert ? -1 : 1) * (textIndent + this.labelBBox.width)\r\n },\r\n setTitle: function() {\r\n this.title = text\r\n },\r\n hideLabel: function() {\r\n this.label.dispose();\r\n this.label = null;\r\n this.title = text\r\n },\r\n hide: function() {\r\n if (pathElement) {\r\n pathElement.dispose();\r\n pathElement = null\r\n }\r\n this.label.dispose();\r\n this.label = null;\r\n this.hidden = true\r\n }\r\n }\r\n },\r\n _drawDateMarkers: function() {\r\n var that = this;\r\n var options = that._options;\r\n var translator = that._translator;\r\n var viewport = that._getViewportRange();\r\n var minBound = viewport.minVisible;\r\n var dateMarkers = [];\r\n var dateMarker;\r\n\r\n function draw(markerDate, format, withoutStick) {\r\n return that._drawDateMarker(markerDate, {\r\n x: translator.translate(markerDate),\r\n y: markersAreaTop,\r\n labelOptions: that._getLabelFormatOptions(format),\r\n withoutStick: withoutStick\r\n }, viewport)\r\n }\r\n if (viewport.isEmpty() || !options.marker.visible || \"datetime\" !== options.argumentType || \"discrete\" === options.type || that._majorTicks.length <= 1) {\r\n return []\r\n }\r\n var markersAreaTop = that._axisPosition + options.marker.topIndent;\r\n var tickInterval = dateUtils.getDateUnitInterval(this._tickInterval);\r\n var markerInterval = getMarkerInterval(tickInterval);\r\n var markerDates = getMarkerDates(minBound, viewport.maxVisible, markerInterval);\r\n if (markerDates.length > 1 || 1 === markerDates.length && minBound < markerDates[0]) {\r\n dateMarkers = markerDates.reduce((function(markers, curDate, i, dates) {\r\n var marker = draw(curDate, getMarkerFormat(curDate, dates[i - 1] || minBound < curDate && minBound, tickInterval, markerInterval));\r\n marker && markers.push(marker);\r\n return markers\r\n }), []);\r\n if (minBound < markerDates[0]) {\r\n dateMarker = draw(minBound, getMarkerFormat(minBound, markerDates[0], tickInterval, markerInterval), true);\r\n dateMarker && dateMarkers.unshift(dateMarker)\r\n }\r\n }\r\n return dateMarkers\r\n },\r\n _adjustDateMarkers: function(offset) {\r\n offset = offset || 0;\r\n var that = this;\r\n var markerOptions = this._options.marker;\r\n var textIndent = markerOptions.width + markerOptions.textLeftIndent;\r\n var invert = this._translator.getBusinessRange().invert;\r\n var canvas = that._getCanvasStartEnd();\r\n var dateMarkers = this._dateMarkers;\r\n if (!dateMarkers.length) {\r\n return offset\r\n }\r\n if (dateMarkers[0].cropped) {\r\n if (!this._checkMarkersPosition(invert, dateMarkers[1], dateMarkers[0])) {\r\n dateMarkers[0].hideLabel()\r\n }\r\n }\r\n var prevDateMarker;\r\n dateMarkers.forEach((function(marker, i, markers) {\r\n if (marker.cropped) {\r\n return\r\n }\r\n if (invert ? marker.getEnd() < canvas.end : marker.getEnd() > canvas.end) {\r\n marker.hideLabel()\r\n } else if (that._checkMarkersPosition(invert, marker, prevDateMarker)) {\r\n prevDateMarker = marker\r\n } else {\r\n marker.hide()\r\n }\r\n }));\r\n this._dateMarkers.forEach((function(marker) {\r\n if (marker.label) {\r\n var labelBBox = marker.labelBBox;\r\n var dy = marker.y + markerOptions.textTopIndent - labelBBox.y;\r\n marker.label.attr({\r\n translateX: invert ? marker.x - textIndent - labelBBox.x - labelBBox.width : marker.x + textIndent - labelBBox.x,\r\n translateY: dy + offset\r\n })\r\n }\r\n if (marker.line) {\r\n marker.line.attr({\r\n translateY: offset\r\n })\r\n }\r\n }));\r\n that._initializeMarkersTrackers(offset);\r\n return offset + markerOptions.topIndent + markerOptions.separatorHeight\r\n },\r\n _checkMarkersPosition: function(invert, dateMarker, prevDateMarker) {\r\n if (void 0 === prevDateMarker) {\r\n return true\r\n }\r\n return invert ? dateMarker.x < prevDateMarker.getEnd() : dateMarker.x > prevDateMarker.getEnd()\r\n },\r\n _initializeMarkersTrackers: function(offset) {\r\n var separatorHeight = this._options.marker.separatorHeight;\r\n var renderer = this._renderer;\r\n var businessRange = this._translator.getBusinessRange();\r\n var canvas = this._getCanvasStartEnd();\r\n var group = this._axisElementsGroup;\r\n this._markerTrackers = this._dateMarkers.filter((function(marker) {\r\n return !marker.hidden\r\n })).map((function(marker, i, markers) {\r\n var nextMarker = markers[i + 1] || {\r\n x: canvas.end,\r\n date: businessRange.max\r\n };\r\n var x = marker.x;\r\n var y = marker.y + offset;\r\n var markerTracker = renderer.path([x, y, x, y + separatorHeight, nextMarker.x, y + separatorHeight, nextMarker.x, y, x, y], \"area\").attr({\r\n \"stroke-width\": 1,\r\n stroke: \"grey\",\r\n fill: \"grey\",\r\n opacity: 1e-4\r\n }).append(group);\r\n markerTracker.data(\"range\", {\r\n startValue: marker.date,\r\n endValue: nextMarker.date\r\n });\r\n if (marker.title) {\r\n markerTracker.setTitle(marker.title)\r\n }\r\n return markerTracker\r\n }))\r\n },\r\n _getLabelFormatOptions: function(formatString) {\r\n var markerLabelOptions = this._markerLabelOptions;\r\n if (!markerLabelOptions) {\r\n this._markerLabelOptions = markerLabelOptions = extend(true, {}, this._options.marker.label)\r\n }\r\n if (!isDefined(this._options.marker.label.format)) {\r\n markerLabelOptions.format = formatString\r\n }\r\n return markerLabelOptions\r\n },\r\n _adjustConstantLineLabels: function(constantLines) {\r\n var that = this;\r\n var axisPosition = that._options.position;\r\n var canvas = that.getCanvas();\r\n var canvasLeft = canvas.left;\r\n var canvasRight = canvas.width - canvas.right;\r\n var canvasTop = canvas.top;\r\n var canvasBottom = canvas.height - canvas.bottom;\r\n var verticalCenter = canvasTop + (canvasBottom - canvasTop) / 2;\r\n var horizontalCenter = canvasLeft + (canvasRight - canvasLeft) / 2;\r\n var maxLabel = 0;\r\n constantLines.forEach((function(item) {\r\n var isHorizontal = that._isHorizontal;\r\n var linesOptions = item.options;\r\n var paddingTopBottom = linesOptions.paddingTopBottom;\r\n var paddingLeftRight = linesOptions.paddingLeftRight;\r\n var labelOptions = linesOptions.label;\r\n var labelVerticalAlignment = labelOptions.verticalAlignment;\r\n var labelHorizontalAlignment = labelOptions.horizontalAlignment;\r\n var labelIsInside = \"inside\" === labelOptions.position;\r\n var label = item.label;\r\n var box = item.labelBBox;\r\n var translateX;\r\n var translateY;\r\n if (null === label || box.isEmpty) {\r\n return\r\n }\r\n if (isHorizontal) {\r\n if (labelIsInside) {\r\n if (labelHorizontalAlignment === LEFT) {\r\n translateX = item.coord - paddingLeftRight - box.x - box.width\r\n } else {\r\n translateX = item.coord + paddingLeftRight - box.x\r\n }\r\n switch (labelVerticalAlignment) {\r\n case CENTER:\r\n translateY = verticalCenter - box.y - box.height / 2;\r\n break;\r\n case BOTTOM:\r\n translateY = canvasBottom - paddingTopBottom - box.y - box.height;\r\n break;\r\n default:\r\n translateY = canvasTop + paddingTopBottom - box.y\r\n }\r\n } else {\r\n if (axisPosition === labelVerticalAlignment) {\r\n maxLabel = _max(maxLabel, box.height + paddingTopBottom)\r\n }\r\n translateX = item.coord - box.x - box.width / 2;\r\n if (labelVerticalAlignment === BOTTOM) {\r\n translateY = canvasBottom + paddingTopBottom - box.y\r\n } else {\r\n translateY = canvasTop - paddingTopBottom - box.y - box.height\r\n }\r\n }\r\n } else if (labelIsInside) {\r\n if (labelVerticalAlignment === BOTTOM) {\r\n translateY = item.coord + paddingTopBottom - box.y\r\n } else {\r\n translateY = item.coord - paddingTopBottom - box.y - box.height\r\n }\r\n switch (labelHorizontalAlignment) {\r\n case CENTER:\r\n translateX = horizontalCenter - box.x - box.width / 2;\r\n break;\r\n case RIGHT:\r\n translateX = canvasRight - paddingLeftRight - box.x - box.width;\r\n break;\r\n default:\r\n translateX = canvasLeft + paddingLeftRight - box.x\r\n }\r\n } else {\r\n if (axisPosition === labelHorizontalAlignment) {\r\n maxLabel = _max(maxLabel, box.width + paddingLeftRight)\r\n }\r\n translateY = item.coord - box.y - box.height / 2;\r\n if (labelHorizontalAlignment === RIGHT) {\r\n translateX = canvasRight + paddingLeftRight - box.x\r\n } else {\r\n translateX = canvasLeft - paddingLeftRight - box.x - box.width\r\n }\r\n }\r\n label.attr({\r\n translateX: translateX,\r\n translateY: translateY\r\n })\r\n }));\r\n return maxLabel\r\n },\r\n _drawConstantLinesForEstimating: function(constantLines) {\r\n var that = this;\r\n var renderer = this._renderer;\r\n var group = renderer.g();\r\n constantLines.forEach((function(options) {\r\n that._drawConstantLineLabelText(options.label.text, 0, 0, options.label, group).attr({\r\n align: \"center\"\r\n })\r\n }));\r\n return group.append(renderer.root)\r\n },\r\n _estimateLabelHeight: function(bBox, labelOptions) {\r\n var height = bBox.height;\r\n var drawingType = labelOptions.drawingType;\r\n if (\"stagger\" === this._validateDisplayMode(drawingType) || \"stagger\" === this._validateOverlappingMode(labelOptions.overlappingBehavior, drawingType)) {\r\n height = 2 * height + labelOptions.staggeringSpacing\r\n }\r\n if (\"rotate\" === this._validateDisplayMode(drawingType) || \"rotate\" === this._validateOverlappingMode(labelOptions.overlappingBehavior, drawingType)) {\r\n var sinCos = getCosAndSin(labelOptions.rotationAngle);\r\n height = height * sinCos.cos + bBox.width * sinCos.sin\r\n }\r\n return height && (height + labelOptions.indentFromAxis || 0) || 0\r\n },\r\n estimateMargins: function(canvas) {\r\n this.updateCanvas(canvas);\r\n var range = this._getViewportRange();\r\n var ticksData = this._createTicksAndLabelFormat(range);\r\n var ticks = ticksData.ticks;\r\n var tickInterval = ticksData.tickInterval;\r\n var options = this._options;\r\n var constantLineOptions = this._outsideConstantLines.filter(l => l.labelOptions.visible).map(l => l.options);\r\n var rootElement = this._renderer.root;\r\n var labelIsVisible = options.label.visible && !range.isEmpty() && ticks.length;\r\n var labelValue = labelIsVisible && this.formatLabel(ticks[ticks.length - 1], options.label, void 0, void 0, tickInterval, ticks);\r\n var labelElement = labelIsVisible && this._renderer.text(labelValue, 0, 0).css(this._textFontStyles).attr(this._textOptions).append(rootElement);\r\n var titleElement = this._drawTitleText(rootElement, {\r\n x: 0,\r\n y: 0\r\n });\r\n var constantLinesLabelsElement = this._drawConstantLinesForEstimating(constantLineOptions);\r\n var labelBox = !options.label.template && labelElement && labelElement.getBBox() || {\r\n x: 0,\r\n y: 0,\r\n width: 0,\r\n height: 0\r\n };\r\n var titleBox = titleElement && titleElement.getBBox() || {\r\n x: 0,\r\n y: 0,\r\n width: 0,\r\n height: 0\r\n };\r\n var constantLinesBox = constantLinesLabelsElement.getBBox();\r\n var titleHeight = titleBox.height ? titleBox.height + options.title.margin : 0;\r\n var labelHeight = this._estimateLabelHeight(labelBox, options.label);\r\n var constantLinesHeight = constantLinesBox.height ? constantLinesBox.height + getMaxConstantLinePadding(constantLineOptions) : 0;\r\n var height = labelHeight + titleHeight;\r\n var margins = {\r\n left: _max(getLeftMargin(labelBox), getLeftMargin(constantLinesBox)),\r\n right: _max(getRightMargin(labelBox), getRightMargin(constantLinesBox)),\r\n top: (\"top\" === options.position ? height : 0) + getConstantLineLabelMarginForVerticalAlignment(constantLineOptions, \"top\", constantLinesHeight),\r\n bottom: (\"top\" !== options.position ? height : 0) + getConstantLineLabelMarginForVerticalAlignment(constantLineOptions, \"bottom\", constantLinesHeight)\r\n };\r\n labelElement && labelElement.remove();\r\n titleElement && titleElement.remove();\r\n constantLinesLabelsElement && constantLinesLabelsElement.remove();\r\n return margins\r\n },\r\n _checkAlignmentConstantLineLabels: function(labelOptions) {\r\n var position = labelOptions.position;\r\n var verticalAlignment = (labelOptions.verticalAlignment || \"\").toLowerCase();\r\n var horizontalAlignment = (labelOptions.horizontalAlignment || \"\").toLowerCase();\r\n if (this._isHorizontal) {\r\n if (\"outside\" === position) {\r\n verticalAlignment = verticalAlignment === BOTTOM ? BOTTOM : TOP;\r\n horizontalAlignment = CENTER\r\n } else {\r\n verticalAlignment = verticalAlignment === CENTER ? CENTER : verticalAlignment === BOTTOM ? BOTTOM : TOP;\r\n horizontalAlignment = horizontalAlignment === LEFT ? LEFT : RIGHT\r\n }\r\n } else if (\"outside\" === position) {\r\n verticalAlignment = CENTER;\r\n horizontalAlignment = horizontalAlignment === LEFT ? LEFT : RIGHT\r\n } else {\r\n verticalAlignment = verticalAlignment === BOTTOM ? BOTTOM : TOP;\r\n horizontalAlignment = horizontalAlignment === RIGHT ? RIGHT : horizontalAlignment === CENTER ? CENTER : LEFT\r\n }\r\n labelOptions.verticalAlignment = verticalAlignment;\r\n labelOptions.horizontalAlignment = horizontalAlignment\r\n },\r\n _getConstantLineLabelsCoords: function(value, lineLabelOptions) {\r\n var x = value;\r\n var y = value;\r\n if (this._isHorizontal) {\r\n y = this._orthogonalPositions[\"top\" === lineLabelOptions.verticalAlignment ? \"start\" : \"end\"]\r\n } else {\r\n x = this._orthogonalPositions[\"right\" === lineLabelOptions.horizontalAlignment ? \"end\" : \"start\"]\r\n }\r\n return {\r\n x: x,\r\n y: y\r\n }\r\n },\r\n _getAdjustedStripLabelCoords: function(strip) {\r\n var stripOptions = strip.options;\r\n var paddingTopBottom = stripOptions.paddingTopBottom;\r\n var paddingLeftRight = stripOptions.paddingLeftRight;\r\n var horizontalAlignment = stripOptions.label.horizontalAlignment;\r\n var verticalAlignment = stripOptions.label.verticalAlignment;\r\n var box = strip.labelBBox;\r\n var labelHeight = box.height;\r\n var labelWidth = box.width;\r\n var labelCoords = strip.labelCoords;\r\n var y = labelCoords.y - box.y;\r\n var x = labelCoords.x - box.x;\r\n if (verticalAlignment === TOP) {\r\n y += paddingTopBottom\r\n } else if (verticalAlignment === CENTER) {\r\n y -= labelHeight / 2\r\n } else if (verticalAlignment === BOTTOM) {\r\n y -= paddingTopBottom + labelHeight\r\n }\r\n if (horizontalAlignment === LEFT) {\r\n x += paddingLeftRight\r\n } else if (horizontalAlignment === CENTER) {\r\n x -= labelWidth / 2\r\n } else if (horizontalAlignment === RIGHT) {\r\n x -= paddingLeftRight + labelWidth\r\n }\r\n return {\r\n translateX: x,\r\n translateY: y\r\n }\r\n },\r\n _adjustTitle: function(offset) {\r\n offset = offset || 0;\r\n if (!this._title) {\r\n return\r\n }\r\n var options = this._options;\r\n var position = options.position;\r\n var margin = options.title.margin;\r\n var title = this._title;\r\n var boxTitle = title.bBox;\r\n var x = boxTitle.x;\r\n var y = boxTitle.y;\r\n var width = boxTitle.width;\r\n var height = boxTitle.height;\r\n var axisPosition = this._axisPosition;\r\n var loCoord = axisPosition - margin - offset;\r\n var hiCoord = axisPosition + margin + offset;\r\n var params = {};\r\n if (this._isHorizontal) {\r\n if (position === TOP) {\r\n params.translateY = loCoord - (y + height)\r\n } else {\r\n params.translateY = hiCoord - y\r\n }\r\n } else if (position === LEFT) {\r\n params.translateX = loCoord - (x + width)\r\n } else {\r\n params.translateX = hiCoord - x\r\n }\r\n title.element.attr(params)\r\n },\r\n _checkTitleOverflow: function(titleElement) {\r\n if (!this._title && !titleElement) {\r\n return\r\n }\r\n var canvasLength = this._getScreenDelta();\r\n var title = titleElement ? {\r\n bBox: titleElement.getBBox(),\r\n element: titleElement\r\n } : this._title;\r\n var titleOptions = this._options.title;\r\n var boxTitle = title.bBox;\r\n if ((this._isHorizontal ? boxTitle.width : boxTitle.height) > canvasLength) {\r\n title.element.setMaxSize(canvasLength, void 0, {\r\n wordWrap: titleOptions.wordWrap || \"none\",\r\n textOverflow: titleOptions.textOverflow || \"ellipsis\"\r\n });\r\n this._wrapped = titleOptions.wordWrap && \"none\" !== titleOptions.wordWrap\r\n } else {\r\n var moreThanOriginalSize = title.originalSize && canvasLength > (this._isHorizontal ? title.originalSize.width : title.originalSize.height);\r\n !this._wrapped && moreThanOriginalSize && title.element.restoreText()\r\n }\r\n },\r\n coordsIn: function(x, y) {\r\n var canvas = this.getCanvas();\r\n var isHorizontal = this._options.isHorizontal;\r\n var position = this._options.position;\r\n var coord = isHorizontal ? y : x;\r\n if (isHorizontal && (x < canvas.left || x > canvas.width - canvas.right) || !isHorizontal && (y < canvas.top || y > canvas.height - canvas.bottom)) {\r\n return false\r\n }\r\n if (isHorizontal && position === constants.top || !isHorizontal && position === constants.left) {\r\n return coord < canvas[position]\r\n }\r\n return coord > canvas[isHorizontal ? \"height\" : \"width\"] - canvas[position]\r\n },\r\n _boundaryTicksVisibility: {\r\n min: true,\r\n max: true\r\n },\r\n adjust() {\r\n var seriesData = this._seriesData;\r\n var viewport = this._series.filter(s => s.isVisible()).reduce((range, s) => {\r\n var seriesRange = s.getViewport();\r\n range.min = isDefined(seriesRange.min) ? range.min < seriesRange.min ? range.min : seriesRange.min : range.min;\r\n range.max = isDefined(seriesRange.max) ? range.max > seriesRange.max ? range.max : seriesRange.max : range.max;\r\n if (s.showZero) {\r\n range = new Range(range);\r\n range.correctValueZeroLevel()\r\n }\r\n return range\r\n }, {});\r\n if (isDefined(viewport.min) && isDefined(viewport.max)) {\r\n seriesData.minVisible = viewport.min;\r\n seriesData.maxVisible = viewport.max\r\n }\r\n seriesData.userBreaks = this._getScaleBreaks(this._options, {\r\n minVisible: seriesData.minVisible,\r\n maxVisible: seriesData.maxVisible\r\n }, this._series, this.isArgumentAxis);\r\n this._translator.updateBusinessRange(this._getViewportRange())\r\n },\r\n hasWrap() {\r\n return this._wrapped\r\n },\r\n getAxisPosition() {\r\n return this._axisPosition\r\n },\r\n _getStick: function() {\r\n return !this._options.valueMarginsEnabled\r\n },\r\n _getStripLabelCoords: function(from, to, stripLabelOptions) {\r\n var orthogonalPositions = this._orthogonalPositions;\r\n var isHorizontal = this._isHorizontal;\r\n var horizontalAlignment = stripLabelOptions.horizontalAlignment;\r\n var verticalAlignment = stripLabelOptions.verticalAlignment;\r\n var x;\r\n var y;\r\n if (isHorizontal) {\r\n if (horizontalAlignment === CENTER) {\r\n x = from + (to - from) / 2\r\n } else if (horizontalAlignment === LEFT) {\r\n x = from\r\n } else if (horizontalAlignment === RIGHT) {\r\n x = to\r\n }\r\n y = orthogonalPositions[getStripVerticalAlignmentPosition(verticalAlignment)]\r\n } else {\r\n x = orthogonalPositions[getStripHorizontalAlignmentPosition(horizontalAlignment)];\r\n if (verticalAlignment === TOP) {\r\n y = from\r\n } else if (verticalAlignment === CENTER) {\r\n y = to + (from - to) / 2\r\n } else if (verticalAlignment === BOTTOM) {\r\n y = to\r\n }\r\n }\r\n return {\r\n x: x,\r\n y: y\r\n }\r\n },\r\n _getTranslatedValue: function(value, offset) {\r\n var pos1 = this._translator.translate(value, offset, \"semidiscrete\" === this._options.type && this._options.tickInterval);\r\n var pos2 = this._axisPosition;\r\n var isHorizontal = this._isHorizontal;\r\n return {\r\n x: isHorizontal ? pos1 : pos2,\r\n y: isHorizontal ? pos2 : pos1\r\n }\r\n },\r\n areCoordsOutsideAxis: function(coords) {\r\n var coord = this._isHorizontal ? coords.x : coords.y;\r\n var visibleArea = this.getVisibleArea();\r\n if (coord < visibleArea[0] || coord > visibleArea[1]) {\r\n return true\r\n }\r\n return false\r\n },\r\n _getSkippedCategory: function(ticks) {\r\n var skippedCategory;\r\n if (this._options.type === constants.discrete && this._tickOffset && 0 !== ticks.length) {\r\n skippedCategory = ticks[ticks.length - 1]\r\n }\r\n return skippedCategory\r\n },\r\n _filterBreaks: function(breaks, viewport, breakStyle) {\r\n var minVisible = viewport.minVisible;\r\n var maxVisible = viewport.maxVisible;\r\n var breakSize = breakStyle ? breakStyle.width : 0;\r\n return breaks.reduce((function(result, currentBreak) {\r\n var from = currentBreak.from;\r\n var to = currentBreak.to;\r\n var lastResult = result[result.length - 1];\r\n var newBreak;\r\n if (!isDefined(from) || !isDefined(to)) {\r\n return result\r\n }\r\n if (from > to) {\r\n to = [from, from = to][0]\r\n }\r\n if (result.length && from < lastResult.to) {\r\n if (to > lastResult.to) {\r\n lastResult.to = to > maxVisible ? maxVisible : to;\r\n if (lastResult.gapSize) {\r\n lastResult.gapSize = void 0;\r\n lastResult.cumulativeWidth += breakSize\r\n }\r\n }\r\n } else if (from >= minVisible && from < maxVisible || to <= maxVisible && to > minVisible) {\r\n from = from >= minVisible ? from : minVisible;\r\n to = to <= maxVisible ? to : maxVisible;\r\n if (to - from < maxVisible - minVisible) {\r\n var _lastResult$cumulativ;\r\n newBreak = {\r\n from: from,\r\n to: to,\r\n cumulativeWidth: (null !== (_lastResult$cumulativ = null === lastResult || void 0 === lastResult ? void 0 : lastResult.cumulativeWidth) && void 0 !== _lastResult$cumulativ ? _lastResult$cumulativ : 0) + breakSize\r\n };\r\n if (currentBreak.gapSize) {\r\n var _lastResult$cumulativ2;\r\n newBreak.gapSize = dateUtils.convertMillisecondsToDateUnits(to - from);\r\n newBreak.cumulativeWidth = null !== (_lastResult$cumulativ2 = null === lastResult || void 0 === lastResult ? void 0 : lastResult.cumulativeWidth) && void 0 !== _lastResult$cumulativ2 ? _lastResult$cumulativ2 : 0\r\n }\r\n result.push(newBreak)\r\n }\r\n }\r\n return result\r\n }), [])\r\n },\r\n _getScaleBreaks: function(axisOptions, viewport, series, isArgumentAxis) {\r\n var that = this;\r\n var breaks = (axisOptions.breaks || []).map((function(b) {\r\n return {\r\n from: that.parser(b.startValue),\r\n to: that.parser(b.endValue)\r\n }\r\n }));\r\n if (\"discrete\" !== axisOptions.type && \"datetime\" === axisOptions.dataType && axisOptions.workdaysOnly) {\r\n breaks = breaks.concat(generateDateBreaks(viewport.minVisible, viewport.maxVisible, axisOptions.workWeek, axisOptions.singleWorkdays, axisOptions.holidays))\r\n }\r\n if (!isArgumentAxis && \"discrete\" !== axisOptions.type && \"datetime\" !== axisOptions.dataType && axisOptions.autoBreaksEnabled && 0 !== axisOptions.maxAutoBreakCount) {\r\n breaks = breaks.concat(generateAutoBreaks(axisOptions, series, viewport))\r\n }\r\n return sortingBreaks(breaks)\r\n },\r\n _drawBreak: function(translatedEnd, positionFrom, positionTo, width, options, group) {\r\n var breakStart = translatedEnd - (!this._translator.isInverted() ? width + 1 : 0);\r\n var attr = {\r\n \"stroke-width\": 1,\r\n stroke: options.borderColor,\r\n sharp: !options.isWaved ? options.isHorizontal ? \"h\" : \"v\" : void 0\r\n };\r\n var spaceAttr = {\r\n stroke: options.color,\r\n \"stroke-width\": width\r\n };\r\n var getPoints = this._isHorizontal ? rotateLine : function(p) {\r\n return p\r\n };\r\n var drawer = getLineDrawer(this._renderer, group, getPoints, positionFrom, breakStart, positionTo, options.isWaved);\r\n drawer(width / 2, spaceAttr);\r\n drawer(0, attr);\r\n drawer(width, attr)\r\n },\r\n _createBreakClipRect: function(from, to) {\r\n var canvas = this._canvas;\r\n var clipWidth = to - from;\r\n var clipRect;\r\n if (this._isHorizontal) {\r\n clipRect = this._renderer.clipRect(canvas.left, from, canvas.width, clipWidth)\r\n } else {\r\n clipRect = this._renderer.clipRect(from, canvas.top, clipWidth, canvas.height)\r\n }\r\n this._breaksElements = this._breaksElements || [];\r\n this._breaksElements.push(clipRect);\r\n return clipRect.id\r\n },\r\n _createBreaksGroup: function(clipFrom, clipTo) {\r\n var group = this._renderer.g().attr({\r\n class: this._axisCssPrefix + \"breaks\",\r\n \"clip-path\": this._createBreakClipRect(clipFrom, clipTo)\r\n }).append(this._scaleBreaksGroup);\r\n this._breaksElements = this._breaksElements || [];\r\n this._breaksElements.push(group);\r\n return group\r\n },\r\n _disposeBreaksGroup: function() {\r\n (this._breaksElements || []).forEach((function(clipRect) {\r\n clipRect.dispose()\r\n }));\r\n this._breaksElements = null\r\n },\r\n drawScaleBreaks: function(customCanvas) {\r\n var that = this;\r\n var options = that._options;\r\n var breakStyle = options.breakStyle;\r\n var position = options.position;\r\n var positionFrom;\r\n var positionTo;\r\n var breaks = that._translator.getBusinessRange().breaks || [];\r\n var additionGroup;\r\n var additionBreakFrom;\r\n var additionBreakTo;\r\n that._disposeBreaksGroup();\r\n if (!(breaks && breaks.length)) {\r\n return\r\n }\r\n var breakOptions = {\r\n color: that._options.containerColor,\r\n borderColor: breakStyle.color,\r\n isHorizontal: that._isHorizontal,\r\n isWaved: \"straight\" !== breakStyle.line.toLowerCase()\r\n };\r\n if (customCanvas) {\r\n positionFrom = customCanvas.start;\r\n positionTo = customCanvas.end\r\n } else {\r\n positionFrom = that._orthogonalPositions.start - (options.visible && !that._axisShift && (position === LEFT || position === TOP) ? SCALE_BREAK_OFFSET : 0);\r\n positionTo = that._orthogonalPositions.end + (options.visible && (position === RIGHT || position === BOTTOM) ? SCALE_BREAK_OFFSET : 0)\r\n }\r\n var mainGroup = that._createBreaksGroup(positionFrom, positionTo);\r\n if (that._axisShift && options.visible) {\r\n additionBreakFrom = that._axisPosition - that._axisShift - SCALE_BREAK_OFFSET;\r\n additionBreakTo = additionBreakFrom + 2 * SCALE_BREAK_OFFSET;\r\n additionGroup = that._createBreaksGroup(additionBreakFrom, additionBreakTo)\r\n }\r\n breaks.forEach((function(br) {\r\n if (!br.gapSize) {\r\n var breakCoord = that._getTranslatedCoord(br.to);\r\n that._drawBreak(breakCoord, positionFrom, positionTo, breakStyle.width, breakOptions, mainGroup);\r\n if (that._axisShift && options.visible) {\r\n that._drawBreak(breakCoord, additionBreakFrom, additionBreakTo, breakStyle.width, breakOptions, additionGroup)\r\n }\r\n }\r\n }))\r\n },\r\n _getSpiderCategoryOption: noop,\r\n shift: function(margins) {\r\n var options = this._options;\r\n var isHorizontal = options.isHorizontal;\r\n var axesSpacing = this.getMultipleAxesSpacing();\r\n var constantLinesGroups = this._axisConstantLineGroups;\r\n\r\n function shiftGroup(side, group) {\r\n var attr = {\r\n translateX: 0,\r\n translateY: 0\r\n };\r\n var shift = margins[side] ? margins[side] + axesSpacing : 0;\r\n attr[isHorizontal ? \"translateY\" : \"translateX\"] = (side === LEFT || side === TOP ? -1 : 1) * shift;\r\n (group[side] || group).attr(attr);\r\n return shift\r\n }\r\n this._axisShift = shiftGroup(options.position, this._axisGroup);\r\n shiftGroup(options.position, this._axisElementsGroup);\r\n (isHorizontal ? [TOP, BOTTOM] : [LEFT, RIGHT]).forEach(side => {\r\n shiftGroup(side, constantLinesGroups.above);\r\n shiftGroup(side, constantLinesGroups.under)\r\n })\r\n },\r\n getCustomPosition(position) {\r\n var orthogonalAxis = this.getOrthogonalAxis();\r\n var resolvedPosition = null !== position && void 0 !== position ? position : this.getResolvedPositionOption();\r\n var offset = this.getOptions().offset;\r\n var orthogonalTranslator = orthogonalAxis.getTranslator();\r\n var orthogonalAxisType = orthogonalAxis.getOptions().type;\r\n var validPosition = orthogonalAxis.validateUnit(resolvedPosition);\r\n var currentPosition;\r\n if (\"discrete\" === orthogonalAxisType && (!orthogonalTranslator._categories || orthogonalTranslator._categories.indexOf(validPosition) < 0)) {\r\n validPosition = void 0\r\n }\r\n if (this.positionIsBoundary(resolvedPosition)) {\r\n currentPosition = this.getPredefinedPosition(resolvedPosition)\r\n } else if (!isDefined(validPosition)) {\r\n currentPosition = this.getPredefinedPosition(this.getOptions().position)\r\n } else {\r\n currentPosition = orthogonalTranslator.to(validPosition, -1)\r\n }\r\n if (isFinite(currentPosition) && isFinite(offset)) {\r\n currentPosition += offset\r\n }\r\n return currentPosition\r\n },\r\n getCustomBoundaryPosition(position) {\r\n var {\r\n customPosition: customPosition,\r\n offset: offset\r\n } = this.getOptions();\r\n var resolvedPosition = null !== position && void 0 !== position ? position : this.getResolvedPositionOption();\r\n var orthogonalAxis = this.getOrthogonalAxis();\r\n var orthogonalTranslator = orthogonalAxis.getTranslator();\r\n var visibleArea = orthogonalTranslator.getCanvasVisibleArea();\r\n if (!isDefined(orthogonalAxis._orthogonalPositions) || 0 === orthogonalTranslator.canvasLength) {\r\n return\r\n }\r\n var currentPosition = this.getCustomPosition(resolvedPosition);\r\n if (!isDefined(currentPosition)) {\r\n return this.getResolvedBoundaryPosition()\r\n } else if (isDefined(customPosition)) {\r\n if (currentPosition <= visibleArea.min) {\r\n return this._isHorizontal ? TOP : LEFT\r\n } else if (currentPosition >= visibleArea.max) {\r\n return this._isHorizontal ? BOTTOM : RIGHT\r\n }\r\n } else if (isDefined(offset)) {\r\n if (currentPosition <= this._orthogonalPositions.start) {\r\n return this._isHorizontal ? TOP : LEFT\r\n } else if (currentPosition >= this._orthogonalPositions.end) {\r\n return this._isHorizontal ? BOTTOM : RIGHT\r\n }\r\n }\r\n return currentPosition\r\n },\r\n getResolvedPositionOption() {\r\n var _options$customPositi;\r\n var options = this.getOptions();\r\n return null !== (_options$customPositi = options.customPosition) && void 0 !== _options$customPositi ? _options$customPositi : options.position\r\n },\r\n customPositionIsAvailable() {\r\n var options = this.getOptions();\r\n return isDefined(this.getOrthogonalAxis()) && (isDefined(options.customPosition) || isFinite(options.offset))\r\n },\r\n hasNonBoundaryPosition() {\r\n return this.customPositionIsAvailable() && !this.customPositionIsBoundary()\r\n },\r\n getResolvedBoundaryPosition() {\r\n return this.customPositionIsBoundary() ? this._customBoundaryPosition : this.getOptions().position\r\n },\r\n customPositionEqualsToPredefined() {\r\n return this.customPositionIsBoundary() && this._customBoundaryPosition === this.getOptions().position\r\n },\r\n customPositionIsBoundary() {\r\n return this.positionIsBoundary(this._customBoundaryPosition)\r\n },\r\n positionIsBoundary: position => [TOP, LEFT, BOTTOM, RIGHT].indexOf(position) >= 0,\r\n getPredefinedPosition(position) {\r\n var _this$_orthogonalPosi;\r\n return null === (_this$_orthogonalPosi = this._orthogonalPositions) || void 0 === _this$_orthogonalPosi ? void 0 : _this$_orthogonalPosi[position === TOP || position === LEFT ? \"start\" : \"end\"]\r\n },\r\n resolveOverlappingForCustomPositioning(oppositeAxes) {\r\n var that = this;\r\n if (!that.hasNonBoundaryPosition() && !that.customPositionIsBoundary() && !oppositeAxes.some(a => a.hasNonBoundaryPosition())) {\r\n return\r\n }\r\n var overlappingObj = {\r\n axes: [],\r\n ticks: []\r\n };\r\n oppositeAxes.filter(orthogonalAxis => orthogonalAxis.pane === that.pane).forEach(orthogonalAxis => {\r\n for (var i = 0; i < that._majorTicks.length; i++) {\r\n var tick = that._majorTicks[i];\r\n var label = tick.label;\r\n if (label) {\r\n if (overlappingObj.axes.indexOf(orthogonalAxis) < 0 && that._detectElementsOverlapping(label, orthogonalAxis._axisElement)) {\r\n overlappingObj.axes.push(orthogonalAxis);\r\n that._shiftThroughOrthogonalAxisOverlappedTick(label, orthogonalAxis)\r\n }\r\n for (var j = 0; j < orthogonalAxis._majorTicks.length; j++) {\r\n var oppositeTick = orthogonalAxis._majorTicks[j];\r\n var oppositeLabel = oppositeTick.label;\r\n if (oppositeLabel && that._detectElementsOverlapping(label, oppositeLabel)) {\r\n overlappingObj.ticks.push(tick);\r\n that._shiftThroughAxisOverlappedTick(tick);\r\n i = that._majorTicks.length;\r\n break\r\n }\r\n }\r\n }\r\n if (tick.mark && overlappingObj.ticks.indexOf(tick) < 0) {\r\n if (that._isHorizontal && tick.mark.attr(\"translateY\")) {\r\n tick.mark.attr({\r\n translateY: 0\r\n })\r\n } else if (!that._isHorizontal && tick.mark.attr(\"translateX\")) {\r\n tick.mark.attr({\r\n translateX: 0\r\n })\r\n }\r\n }\r\n }\r\n })\r\n },\r\n _shiftThroughOrthogonalAxisOverlappedTick(label, orthogonalAxis) {\r\n var labelBBox = label.getBBox();\r\n var orthogonalAxisPosition = orthogonalAxis.getAxisPosition();\r\n var orthogonalAxisLabelOptions = orthogonalAxis.getOptions().label;\r\n var orthogonalAxisLabelPosition = orthogonalAxisLabelOptions.position;\r\n var orthogonalAxisLabelIndent = orthogonalAxisLabelOptions.indentFromAxis / 2;\r\n var translateCoordName = this._isHorizontal ? \"translateX\" : \"translateY\";\r\n var defaultOrthogonalAxisLabelPosition = this._isHorizontal ? LEFT : TOP;\r\n var translate = label.attr(translateCoordName);\r\n var labelCoord = (this._isHorizontal ? labelBBox.x : labelBBox.y) + translate;\r\n var labelSize = this._isHorizontal ? labelBBox.width : labelBBox.height;\r\n var outsidePart = orthogonalAxisPosition - labelCoord;\r\n var insidePart = labelCoord + labelSize - orthogonalAxisPosition;\r\n var attr = {};\r\n attr[translateCoordName] = translate;\r\n if (outsidePart > 0 && insidePart > 0) {\r\n if (insidePart - outsidePart > 1) {\r\n attr[translateCoordName] += outsidePart + orthogonalAxisLabelIndent\r\n } else if (outsidePart - insidePart > 1) {\r\n attr[translateCoordName] -= insidePart + orthogonalAxisLabelIndent\r\n } else {\r\n attr[translateCoordName] += orthogonalAxisLabelPosition === defaultOrthogonalAxisLabelPosition ? outsidePart + orthogonalAxisLabelIndent : -(insidePart + orthogonalAxisLabelIndent)\r\n }\r\n label.attr(attr)\r\n }\r\n },\r\n _shiftThroughAxisOverlappedTick(tick) {\r\n var _tick$mark;\r\n var label = tick.label;\r\n if (!label) {\r\n return\r\n }\r\n var labelBBox = label.getBBox();\r\n var tickMarkBBox = null === (_tick$mark = tick.mark) || void 0 === _tick$mark ? void 0 : _tick$mark.getBBox();\r\n var axisPosition = this.getAxisPosition();\r\n var labelOptions = this.getOptions().label;\r\n var labelIndent = labelOptions.indentFromAxis;\r\n var labelPosition = labelOptions.position;\r\n var defaultLabelPosition = this._isHorizontal ? TOP : LEFT;\r\n var translateCoordName = this._isHorizontal ? \"translateY\" : \"translateX\";\r\n var translate = label.attr(translateCoordName);\r\n var labelCoord = (this._isHorizontal ? labelBBox.y : labelBBox.x) + translate;\r\n var labelSize = this._isHorizontal ? labelBBox.height : labelBBox.width;\r\n var attr = {};\r\n attr[translateCoordName] = translate + (labelPosition === defaultLabelPosition ? axisPosition - labelCoord + labelIndent : -(labelCoord - axisPosition + labelSize + labelIndent));\r\n label.attr(attr);\r\n if (tick.mark) {\r\n var markerSize = this._isHorizontal ? tickMarkBBox.height : tickMarkBBox.width;\r\n var dir = labelPosition === defaultLabelPosition ? 1 : -1;\r\n attr[translateCoordName] = dir * (markerSize - 1);\r\n tick.mark.attr(attr)\r\n }\r\n },\r\n _detectElementsOverlapping(element1, element2) {\r\n if (!element1 || !element2) {\r\n return false\r\n }\r\n var bBox1 = element1.getBBox();\r\n var x1 = bBox1.x + element1.attr(\"translateX\");\r\n var y1 = bBox1.y + element1.attr(\"translateY\");\r\n var bBox2 = element2.getBBox();\r\n var x2 = bBox2.x + element2.attr(\"translateX\");\r\n var y2 = bBox2.y + element2.attr(\"translateY\");\r\n return (x2 >= x1 && x2 <= x1 + bBox1.width || x1 >= x2 && x1 <= x2 + bBox2.width) && (y2 >= y1 && y2 <= y1 + bBox1.height || y1 >= y2 && y1 <= y2 + bBox2.height)\r\n }\r\n }\r\n};\r\n\r\nfunction getLineDrawer(renderer, root, rotatePoints, positionFrom, breakStart, positionTo, isWaved) {\r\n var elementType = isWaved ? \"bezier\" : \"line\";\r\n var group = renderer.g().append(root);\r\n return function(offset, attr) {\r\n renderer.path(rotatePoints(getPoints(positionFrom, breakStart, positionTo, offset, isWaved)), elementType).attr(attr).append(group)\r\n }\r\n}\r\n\r\nfunction getPoints(positionFrom, breakStart, positionTo, offset, isWaved) {\r\n if (!isWaved) {\r\n return [positionFrom, breakStart + offset, positionTo, breakStart + offset]\r\n }\r\n breakStart += offset;\r\n var currentPosition;\r\n var topPoint = breakStart + WAVED_LINE_TOP;\r\n var centerPoint = breakStart + WAVED_LINE_CENTER;\r\n var bottomPoint = breakStart + WAVED_LINE_BOTTOM;\r\n var points = [\r\n [positionFrom, centerPoint]\r\n ];\r\n for (currentPosition = positionFrom; currentPosition < positionTo + WAVED_LINE_LENGTH; currentPosition += WAVED_LINE_LENGTH) {\r\n points.push([currentPosition + 6, topPoint, currentPosition + 6, topPoint, currentPosition + 12, centerPoint, currentPosition + 18, bottomPoint, currentPosition + 18, bottomPoint, currentPosition + 24, centerPoint])\r\n }\r\n return [].concat.apply([], points)\r\n}\r\n\r\nfunction rotateLine(lineCoords) {\r\n var points = [];\r\n var i;\r\n for (i = 0; i < lineCoords.length; i += 2) {\r\n points.push(lineCoords[i + 1]);\r\n points.push(lineCoords[i])\r\n }\r\n return points\r\n}\r\n","/**\r\n * DevExtreme (esm/viz/axes/axes_utils.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nvar _max = Math.max;\r\nexport var calculateCanvasMargins = function(bBoxes, canvas) {\r\n var cLeft = canvas.left;\r\n var cTop = canvas.top;\r\n var cRight = canvas.width - canvas.right;\r\n var cBottom = canvas.height - canvas.bottom;\r\n return bBoxes.reduce((function(margins, bBox) {\r\n if (!bBox || bBox.isEmpty) {\r\n return margins\r\n }\r\n return {\r\n left: _max(margins.left, cLeft - bBox.x),\r\n top: _max(margins.top, cTop - bBox.y),\r\n right: _max(margins.right, bBox.x + bBox.width - cRight),\r\n bottom: _max(margins.bottom, bBox.y + bBox.height - cBottom)\r\n }\r\n }), {\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n bottom: 0\r\n })\r\n};\r\nexport var measureLabels = function(items) {\r\n items.forEach((function(item) {\r\n var label = item.getContentContainer();\r\n item.labelBBox = label ? label.getBBox() : {\r\n x: 0,\r\n y: 0,\r\n width: 0,\r\n height: 0\r\n }\r\n }))\r\n};\r\n","/**\r\n * DevExtreme (esm/viz/axes/polar_axes.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n map as _map,\r\n convertPolarToXY,\r\n convertXYToPolar,\r\n normalizeAngle,\r\n getVizRangeObject,\r\n getCosAndSin,\r\n getDistance\r\n} from \"../core/utils\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport constants from \"./axes_constants\";\r\nimport xyAxes from \"./xy_axes\";\r\nimport {\r\n tick\r\n} from \"./tick\";\r\nimport {\r\n calculateCanvasMargins,\r\n measureLabels\r\n} from \"./axes_utils\";\r\nimport {\r\n noop as _noop\r\n} from \"../../core/utils/common\";\r\nvar {\r\n PI: PI,\r\n abs: abs,\r\n atan: atan,\r\n round: round\r\n} = Math;\r\nvar _min = Math.min;\r\nvar _max = Math.max;\r\nvar xyAxesLinear = xyAxes.linear;\r\nvar HALF_PI_ANGLE = 90;\r\n\r\nfunction getPolarQuarter(angle) {\r\n var quarter;\r\n angle = normalizeAngle(angle);\r\n if (angle >= 315 && angle <= 360 || angle < 45 && angle >= 0) {\r\n quarter = 1\r\n } else if (angle >= 45 && angle < 135) {\r\n quarter = 2\r\n } else if (angle >= 135 && angle < 225) {\r\n quarter = 3\r\n } else if (angle >= 225 && angle < 315) {\r\n quarter = 4\r\n }\r\n return quarter\r\n}\r\nvar circularAxes = {\r\n _calculateValueMargins(ticks) {\r\n var {\r\n minVisible: minVisible,\r\n maxVisible: maxVisible\r\n } = this._getViewportRange();\r\n if (ticks && ticks.length > 1) {\r\n minVisible = minVisible < ticks[0].value ? minVisible : ticks[0].value;\r\n maxVisible = minVisible > ticks[ticks.length - 1].value ? maxVisible : ticks[ticks.length - 1].value\r\n }\r\n return {\r\n minValue: minVisible,\r\n maxValue: maxVisible\r\n }\r\n },\r\n applyMargins() {\r\n var margins = this._calculateValueMargins(this._majorTicks);\r\n var br = this._translator.getBusinessRange();\r\n br.addRange({\r\n minVisible: margins.minValue,\r\n maxVisible: margins.maxValue,\r\n interval: this._calculateRangeInterval(br.interval)\r\n });\r\n this._translator.updateBusinessRange(br)\r\n },\r\n _getTranslatorOptions: function() {\r\n return {\r\n isHorizontal: true,\r\n conversionValue: true,\r\n addSpiderCategory: this._getSpiderCategoryOption(),\r\n stick: this._getStick()\r\n }\r\n },\r\n getCenter: function() {\r\n return this._center\r\n },\r\n getRadius: function() {\r\n return this._radius\r\n },\r\n getAngles: function() {\r\n var options = this._options;\r\n return [options.startAngle, options.endAngle]\r\n },\r\n _updateRadius(canvas) {\r\n var rad = _min(canvas.width - canvas.left - canvas.right, canvas.height - canvas.top - canvas.bottom) / 2;\r\n this._radius = rad < 0 ? 0 : rad\r\n },\r\n _updateCenter: function(canvas) {\r\n this._center = {\r\n x: canvas.left + (canvas.width - canvas.right - canvas.left) / 2,\r\n y: canvas.top + (canvas.height - canvas.top - canvas.bottom) / 2\r\n }\r\n },\r\n _processCanvas: function(canvas) {\r\n this._updateRadius(canvas);\r\n this._updateCenter(canvas);\r\n return {\r\n left: 0,\r\n right: 0,\r\n width: this._getScreenDelta()\r\n }\r\n },\r\n _createAxisElement: function() {\r\n return this._renderer.circle()\r\n },\r\n _updateAxisElementPosition: function() {\r\n var center = this.getCenter();\r\n this._axisElement.attr({\r\n cx: center.x,\r\n cy: center.y,\r\n r: this.getRadius()\r\n })\r\n },\r\n _boundaryTicksVisibility: {\r\n min: true\r\n },\r\n _getSpiderCategoryOption: function() {\r\n return this._options.firstPointOnStartAngle\r\n },\r\n _validateOptions(options) {\r\n var originValue = options.originValue;\r\n var wholeRange = options.wholeRange = {};\r\n var period = options.period;\r\n if (isDefined(originValue)) {\r\n originValue = this.validateUnit(originValue)\r\n }\r\n if (period > 0 && options.argumentType === constants.numeric) {\r\n originValue = originValue || 0;\r\n wholeRange.endValue = originValue + period;\r\n this._viewport = getVizRangeObject([originValue, wholeRange.endValue])\r\n }\r\n if (isDefined(originValue)) {\r\n wholeRange.startValue = originValue\r\n }\r\n },\r\n getMargins() {\r\n var tickOptions = this._options.tick;\r\n var tickOuterLength = _max(tickOptions.visible ? tickOptions.length / 2 + tickOptions.shift : 0, 0);\r\n var radius = this.getRadius();\r\n var {\r\n x: x,\r\n y: y\r\n } = this._center;\r\n var labelBoxes = this._majorTicks.map(t => t.label && t.label.getBBox()).filter(b => b);\r\n var canvas = extend({}, this._canvas, {\r\n left: x - radius,\r\n top: y - radius,\r\n right: this._canvas.width - (x + radius),\r\n bottom: this._canvas.height - (y + radius)\r\n });\r\n var margins = calculateCanvasMargins(labelBoxes, canvas);\r\n Object.keys(margins).forEach(k => margins[k] = margins[k] < tickOuterLength ? tickOuterLength : margins[k]);\r\n return margins\r\n },\r\n _updateLabelsPosition() {\r\n measureLabels(this._majorTicks);\r\n this._adjustLabelsCoord(0, 0, true);\r\n this._checkBoundedLabelsOverlapping(this._majorTicks, this._majorTicks.map(t => t.labelBBox))\r\n },\r\n _setVisualRange: _noop,\r\n applyVisualRangeSetter: _noop,\r\n _getStick: function() {\r\n return this._options.firstPointOnStartAngle || this._options.type !== constants.discrete\r\n },\r\n _getTranslatedCoord: function(value, offset) {\r\n return this._translator.translate(value, offset) - HALF_PI_ANGLE\r\n },\r\n _getCanvasStartEnd: function() {\r\n return {\r\n start: 0 - HALF_PI_ANGLE,\r\n end: 360 - HALF_PI_ANGLE\r\n }\r\n },\r\n _getStripGraphicAttributes: function(fromAngle, toAngle) {\r\n var center = this.getCenter();\r\n var angle = this.getAngles()[0];\r\n var r = this.getRadius();\r\n return {\r\n x: center.x,\r\n y: center.y,\r\n innerRadius: 0,\r\n outerRadius: r,\r\n startAngle: -toAngle - angle,\r\n endAngle: -fromAngle - angle\r\n }\r\n },\r\n _createStrip: function(coords) {\r\n return this._renderer.arc(coords.x, coords.y, coords.innerRadius, coords.outerRadius, coords.startAngle, coords.endAngle)\r\n },\r\n _getStripLabelCoords: function(from, to) {\r\n var coords = this._getStripGraphicAttributes(from, to);\r\n var angle = coords.startAngle + (coords.endAngle - coords.startAngle) / 2;\r\n var cosSin = getCosAndSin(angle);\r\n var halfRad = this.getRadius() / 2;\r\n var center = this.getCenter();\r\n var x = round(center.x + halfRad * cosSin.cos);\r\n var y = round(center.y - halfRad * cosSin.sin);\r\n return {\r\n x: x,\r\n y: y,\r\n align: constants.center\r\n }\r\n },\r\n _getConstantLineGraphicAttributes: function(value) {\r\n var center = this.getCenter();\r\n var r = this.getRadius();\r\n return {\r\n points: [center.x, center.y, center.x + r, center.y]\r\n }\r\n },\r\n _createConstantLine: function(value, attr) {\r\n return this._createPathElement(this._getConstantLineGraphicAttributes(value).points, attr)\r\n },\r\n _rotateConstantLine(line, value) {\r\n var {\r\n x: x,\r\n y: y\r\n } = this.getCenter();\r\n line.rotate(value + this.getAngles()[0], x, y)\r\n },\r\n _getConstantLineLabelsCoords: function(value) {\r\n var cosSin = getCosAndSin(-value - this.getAngles()[0]);\r\n var halfRad = this.getRadius() / 2;\r\n var center = this.getCenter();\r\n var x = round(center.x + halfRad * cosSin.cos);\r\n var y = round(center.y - halfRad * cosSin.sin);\r\n return {\r\n x: x,\r\n y: y\r\n }\r\n },\r\n _checkAlignmentConstantLineLabels: _noop,\r\n _adjustDivisionFactor: function(val) {\r\n return 180 * val / (this.getRadius() * PI)\r\n },\r\n _getScreenDelta: function() {\r\n var angles = this.getAngles();\r\n return abs(angles[0] - angles[1])\r\n },\r\n _getTickMarkPoints: function(coords, length, _ref) {\r\n var {\r\n shift: shift = 0\r\n } = _ref;\r\n var center = this.getCenter();\r\n var radiusWithTicks = this.getRadius() + length * {\r\n inside: -1,\r\n center: -.5,\r\n outside: 0\r\n } [this._options.tickOrientation || \"center\"];\r\n return [center.x + radiusWithTicks + shift, center.y, center.x + radiusWithTicks + length + shift, center.y]\r\n },\r\n _getLabelAdjustedCoord: function(tick, _offset, _maxWidth, checkCanvas) {\r\n var labelCoords = tick.labelCoords;\r\n var labelY = labelCoords.y;\r\n var labelAngle = labelCoords.angle;\r\n var cosSin = getCosAndSin(labelAngle);\r\n var cos = cosSin.cos;\r\n var sin = cosSin.sin;\r\n var box = tick.labelBBox;\r\n var halfWidth = box.width / 2;\r\n var halfHeight = box.height / 2;\r\n var indentFromAxis = this._options.label.indentFromAxis || 0;\r\n var x = labelCoords.x + indentFromAxis * cos;\r\n var y = labelY + (labelY - box.y - halfHeight) + indentFromAxis * sin;\r\n var shiftX = 0;\r\n var shiftY = 0;\r\n switch (getPolarQuarter(labelAngle)) {\r\n case 1:\r\n shiftX = halfWidth;\r\n shiftY = halfHeight * sin;\r\n break;\r\n case 2:\r\n shiftX = halfWidth * cos;\r\n shiftY = halfHeight;\r\n break;\r\n case 3:\r\n shiftX = -halfWidth;\r\n shiftY = halfHeight * sin;\r\n break;\r\n case 4:\r\n shiftX = halfWidth * cos;\r\n shiftY = -halfHeight\r\n }\r\n if (checkCanvas) {\r\n var canvas = this._canvas;\r\n var boxShiftX = x - labelCoords.x + shiftX;\r\n var boxShiftY = y - labelCoords.y + shiftY;\r\n if (box.x + boxShiftX < canvas.originalLeft) {\r\n shiftX -= box.x + boxShiftX - canvas.originalLeft\r\n }\r\n if (box.x + box.width + boxShiftX > canvas.width - canvas.originalRight) {\r\n shiftX -= box.x + box.width + boxShiftX - (canvas.width - canvas.originalRight)\r\n }\r\n if (box.y + boxShiftY < canvas.originalTop) {\r\n shiftY -= box.y + boxShiftY - canvas.originalTop\r\n }\r\n if (box.y + box.height + boxShiftY > canvas.height - canvas.originalBottom) {\r\n shiftY -= box.y + box.height + boxShiftY - (canvas.height - canvas.originalBottom)\r\n }\r\n }\r\n return {\r\n x: x + shiftX,\r\n y: y + shiftY\r\n }\r\n },\r\n _getGridLineDrawer: function() {\r\n var that = this;\r\n return function(tick, gridStyle) {\r\n var center = that.getCenter();\r\n return that._createPathElement(that._getGridPoints().points, gridStyle).rotate(tick.coords.angle, center.x, center.y)\r\n }\r\n },\r\n _getGridPoints: function() {\r\n var r = this.getRadius();\r\n var center = this.getCenter();\r\n return {\r\n points: [center.x, center.y, center.x + r, center.y]\r\n }\r\n },\r\n _getTranslatedValue: function(value, offset) {\r\n var startAngle = this.getAngles()[0];\r\n var angle = this._translator.translate(value, -offset);\r\n var coords = convertPolarToXY(this.getCenter(), startAngle, angle, this.getRadius());\r\n return {\r\n x: coords.x,\r\n y: coords.y,\r\n angle: this.getTranslatedAngle(angle)\r\n }\r\n },\r\n _getAdjustedStripLabelCoords: function(strip) {\r\n var box = strip.labelBBox;\r\n return {\r\n translateY: strip.label.attr(\"y\") - box.y - box.height / 2\r\n }\r\n },\r\n coordsIn: function(x, y) {\r\n return convertXYToPolar(this.getCenter(), x, y).r > this.getRadius()\r\n },\r\n _rotateTick: function(element, coords) {\r\n var center = this.getCenter();\r\n element.rotate(coords.angle, center.x, center.y)\r\n },\r\n _validateOverlappingMode: function(mode) {\r\n return constants.validateOverlappingMode(mode)\r\n },\r\n _validateDisplayMode: function() {\r\n return \"standard\"\r\n },\r\n _getStep: function(boxes) {\r\n var radius = this.getRadius() + (this._options.label.indentFromAxis || 0);\r\n var maxLabelBox = boxes.reduce((function(prevValue, box) {\r\n var curValue = prevValue;\r\n if (prevValue.width < box.width) {\r\n curValue.width = box.width\r\n }\r\n if (prevValue.height < box.height) {\r\n curValue.height = box.height\r\n }\r\n return curValue\r\n }), {\r\n width: 0,\r\n height: 0\r\n });\r\n var angle1 = abs(2 * atan(maxLabelBox.height / (2 * radius - maxLabelBox.width)) * 180 / PI);\r\n var angle2 = abs(2 * atan(maxLabelBox.width / (2 * radius - maxLabelBox.height)) * 180 / PI);\r\n return constants.getTicksCountInRange(this._majorTicks, \"angle\", _max(angle1, angle2))\r\n },\r\n _checkBoundedLabelsOverlapping: function(majorTicks, boxes, mode) {\r\n var labelOpt = this._options.label;\r\n mode = mode || this._validateOverlappingMode(labelOpt.overlappingBehavior);\r\n if (\"hide\" !== mode) {\r\n return\r\n }\r\n var lastVisibleLabelIndex = majorTicks.reduce((lastVisibleLabelIndex, tick, index) => tick.label ? index : lastVisibleLabelIndex, null);\r\n if (!lastVisibleLabelIndex) {\r\n return\r\n }\r\n if (constants.areLabelsOverlap(boxes[0], boxes[lastVisibleLabelIndex], labelOpt.minSpacing, constants.center)) {\r\n \"first\" === labelOpt.hideFirstOrLast ? majorTicks[0].removeLabel() : majorTicks[lastVisibleLabelIndex].removeLabel()\r\n }\r\n },\r\n shift: function(margins) {\r\n this._axisGroup.attr({\r\n translateX: margins.right,\r\n translateY: margins.bottom\r\n });\r\n this._axisElementsGroup.attr({\r\n translateX: margins.right,\r\n translateY: margins.bottom\r\n })\r\n },\r\n getTranslatedAngle(angle) {\r\n var startAngle = this.getAngles()[0];\r\n return angle + startAngle - HALF_PI_ANGLE\r\n }\r\n};\r\nexport var circular = circularAxes;\r\nexport var circularSpider = extend({}, circularAxes, {\r\n _createAxisElement: function() {\r\n return this._renderer.path([], \"area\")\r\n },\r\n _updateAxisElementPosition: function() {\r\n this._axisElement.attr({\r\n points: _map(this.getSpiderTicks(), (function(tick) {\r\n return {\r\n x: tick.coords.x,\r\n y: tick.coords.y\r\n }\r\n }))\r\n })\r\n },\r\n _getStick: function() {\r\n return true\r\n },\r\n _getSpiderCategoryOption: function() {\r\n return true\r\n },\r\n getSpiderTicks: function() {\r\n var ticks = this.getFullTicks();\r\n this._spiderTicks = ticks.map(tick(this, this.renderer, {}, {}, this._getSkippedCategory(ticks), true));\r\n this._spiderTicks.forEach((function(tick) {\r\n tick.initCoords()\r\n }));\r\n return this._spiderTicks\r\n },\r\n _getStripGraphicAttributes: function(fromAngle, toAngle) {\r\n var center = this.getCenter();\r\n var spiderTicks = this.getSpiderTicks();\r\n var firstTick;\r\n var lastTick;\r\n var nextTick;\r\n var tick;\r\n var points = [];\r\n var i = 0;\r\n var len = spiderTicks.length;\r\n while (i < len) {\r\n tick = spiderTicks[i].coords;\r\n if (tick.angle >= fromAngle && tick.angle <= toAngle) {\r\n if (!firstTick) {\r\n firstTick = (spiderTicks[i - 1] || spiderTicks[spiderTicks.length - 1]).coords;\r\n points.push((tick.x + firstTick.x) / 2, (tick.y + firstTick.y) / 2)\r\n }\r\n points.push(tick.x, tick.y);\r\n nextTick = (spiderTicks[i + 1] || spiderTicks[0]).coords;\r\n lastTick = {\r\n x: (tick.x + nextTick.x) / 2,\r\n y: (tick.y + nextTick.y) / 2\r\n }\r\n }\r\n i++\r\n }\r\n points.push(lastTick.x, lastTick.y);\r\n points.push(center.x, center.y);\r\n return {\r\n points: points\r\n }\r\n },\r\n _createStrip: function(_ref2) {\r\n var {\r\n points: points\r\n } = _ref2;\r\n return this._renderer.path(points, \"area\")\r\n },\r\n _getTranslatedCoord: function(value, offset) {\r\n return this._translator.translate(value, offset) - HALF_PI_ANGLE\r\n },\r\n _setTickOffset: function() {\r\n this._tickOffset = false\r\n }\r\n});\r\nexport var linear = {\r\n _resetMargins() {\r\n this._reinitTranslator(this._getViewportRange())\r\n },\r\n _getStick: xyAxesLinear._getStick,\r\n _getSpiderCategoryOption: _noop,\r\n _getTranslatorOptions: function() {\r\n return {\r\n isHorizontal: true,\r\n stick: this._getStick()\r\n }\r\n },\r\n getRadius: circularAxes.getRadius,\r\n getCenter: circularAxes.getCenter,\r\n getAngles: circularAxes.getAngles,\r\n _updateRadius: circularAxes._updateRadius,\r\n _updateCenter: circularAxes._updateCenter,\r\n _processCanvas(canvas) {\r\n this._updateRadius(canvas);\r\n this._updateCenter(canvas);\r\n return {\r\n left: 0,\r\n right: 0,\r\n startPadding: canvas.startPadding,\r\n endPadding: canvas.endPadding,\r\n width: this.getRadius()\r\n }\r\n },\r\n _createAxisElement: xyAxesLinear._createAxisElement,\r\n _updateAxisElementPosition: function() {\r\n var centerCoord = this.getCenter();\r\n this._axisElement.attr({\r\n points: [centerCoord.x, centerCoord.y, centerCoord.x + this.getRadius(), centerCoord.y]\r\n }).rotate(this.getAngles()[0] - HALF_PI_ANGLE, centerCoord.x, centerCoord.y)\r\n },\r\n _getScreenDelta: function() {\r\n return this.getRadius()\r\n },\r\n _getTickMarkPoints: function(coords, length) {\r\n return [coords.x - length / 2, coords.y, coords.x + length / 2, coords.y]\r\n },\r\n _getLabelAdjustedCoord: function(tick) {\r\n var labelCoords = tick.labelCoords;\r\n var labelY = labelCoords.y;\r\n var cosSin = getCosAndSin(labelCoords.angle);\r\n var indentFromAxis = this._options.label.indentFromAxis || 0;\r\n var box = tick.labelBBox;\r\n var x = labelCoords.x - abs(indentFromAxis * cosSin.sin) + abs(box.width / 2 * cosSin.cos) - box.width / 2;\r\n var y = labelY + (labelY - box.y) - abs(box.height / 2 * cosSin.sin) + abs(indentFromAxis * cosSin.cos);\r\n return {\r\n x: x,\r\n y: y\r\n }\r\n },\r\n _getGridLineDrawer: function() {\r\n var that = this;\r\n return function(tick, gridStyle) {\r\n var grid = that._getGridPoints(tick.coords);\r\n return that._renderer.circle(grid.cx, grid.cy, grid.r).attr(gridStyle).sharp()\r\n }\r\n },\r\n _getGridPoints: function(coords) {\r\n var pos = this.getCenter();\r\n var radius = getDistance(pos.x, pos.y, coords.x, coords.y);\r\n if (radius > this.getRadius()) {\r\n return {\r\n cx: null,\r\n cy: null,\r\n r: null\r\n }\r\n }\r\n return {\r\n cx: pos.x,\r\n cy: pos.y,\r\n r: radius\r\n }\r\n },\r\n _getTranslatedValue: function(value, offset) {\r\n var startAngle = this.getAngles()[0];\r\n var xy = convertPolarToXY(this.getCenter(), startAngle, 0, this._translator.translate(value, offset));\r\n return {\r\n x: xy.x,\r\n y: xy.y,\r\n angle: startAngle - HALF_PI_ANGLE\r\n }\r\n },\r\n _getTranslatedCoord: function(value, offset) {\r\n return this._translator.translate(value, offset)\r\n },\r\n _getCanvasStartEnd() {\r\n var invert = this.getTranslator().getBusinessRange().invert;\r\n var coords = [0, this.getRadius()];\r\n invert && coords.reverse();\r\n return {\r\n start: coords[0],\r\n end: coords[1]\r\n }\r\n },\r\n _getStripGraphicAttributes: function(fromPoint, toPoint) {\r\n var center = this.getCenter();\r\n return {\r\n x: center.x,\r\n y: center.y,\r\n innerRadius: fromPoint,\r\n outerRadius: toPoint\r\n }\r\n },\r\n _createStrip: function(attrs) {\r\n return this._renderer.arc(attrs.x, attrs.y, attrs.innerRadius, attrs.outerRadius, 0, 360)\r\n },\r\n _getAdjustedStripLabelCoords: circularAxes._getAdjustedStripLabelCoords,\r\n _getStripLabelCoords: function(from, to) {\r\n var labelPos = from + (to - from) / 2;\r\n var center = this.getCenter();\r\n var y = round(center.y - labelPos);\r\n return {\r\n x: center.x,\r\n y: y,\r\n align: constants.center\r\n }\r\n },\r\n _getConstantLineGraphicAttributes: function(value) {\r\n var center = this.getCenter();\r\n return {\r\n cx: center.x,\r\n cy: center.y,\r\n r: value\r\n }\r\n },\r\n _createConstantLine: function(value, attr) {\r\n var attrs = this._getConstantLineGraphicAttributes(value);\r\n return this._renderer.circle(attrs.cx, attrs.cy, attrs.r).attr(attr).sharp()\r\n },\r\n _getConstantLineLabelsCoords: function(value) {\r\n var center = this.getCenter();\r\n var y = round(center.y - value);\r\n return {\r\n x: center.x,\r\n y: y\r\n }\r\n },\r\n _checkAlignmentConstantLineLabels: _noop,\r\n _rotateTick: function(element, coords, isGridLine) {\r\n !isGridLine && element.rotate(coords.angle + HALF_PI_ANGLE, coords.x, coords.y)\r\n },\r\n _validateOverlappingMode: circularAxes._validateOverlappingMode,\r\n _validateDisplayMode: circularAxes._validateDisplayMode,\r\n _getStep: function(boxes) {\r\n var quarter = getPolarQuarter(this.getAngles()[0]);\r\n var spacing = this._options.label.minSpacing;\r\n var func = 2 === quarter || 4 === quarter ? function(box) {\r\n return box.width + spacing\r\n } : function(box) {\r\n return box.height\r\n };\r\n var maxLabelLength = boxes.reduce((prevValue, box) => _max(prevValue, func(box)), 0);\r\n return constants.getTicksCountInRange(this._majorTicks, 2 === quarter || 4 === quarter ? \"x\" : \"y\", maxLabelLength)\r\n }\r\n};\r\nexport var linearSpider = extend({}, linear, {\r\n _createPathElement: function(points, attr) {\r\n return this._renderer.path(points, \"area\").attr(attr).sharp()\r\n },\r\n setSpiderTicks: function(ticks) {\r\n this._spiderTicks = ticks\r\n },\r\n _getGridLineDrawer: function() {\r\n var that = this;\r\n return function(tick, gridStyle) {\r\n return that._createPathElement(that._getGridPoints(tick.coords).points, gridStyle)\r\n }\r\n },\r\n _getGridPoints: function(coords) {\r\n var pos = this.getCenter();\r\n var radius = getDistance(pos.x, pos.y, coords.x, coords.y);\r\n return this._getGridPointsByRadius(radius)\r\n },\r\n _getGridPointsByRadius: function(radius) {\r\n var pos = this.getCenter();\r\n if (radius > this.getRadius()) {\r\n return {\r\n points: null\r\n }\r\n }\r\n return {\r\n points: _map(this._spiderTicks, (function(tick) {\r\n var cosSin = getCosAndSin(tick.coords.angle);\r\n return {\r\n x: round(pos.x + radius * cosSin.cos),\r\n y: round(pos.y + radius * cosSin.sin)\r\n }\r\n }))\r\n }\r\n },\r\n _getStripGraphicAttributes: function(fromPoint, toPoint) {\r\n var innerPoints = this._getGridPointsByRadius(toPoint).points;\r\n var outerPoints = this._getGridPointsByRadius(fromPoint).points;\r\n return {\r\n points: [outerPoints, innerPoints.reverse()]\r\n }\r\n },\r\n _createStrip: circularSpider._createStrip,\r\n _getConstantLineGraphicAttributes: function(value) {\r\n return this._getGridPointsByRadius(value)\r\n },\r\n _createConstantLine: function(value, attr) {\r\n return this._createPathElement(this._getConstantLineGraphicAttributes(value).points, attr)\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/viz/axes/constant_line.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nexport default function createConstantLine(axis, options) {\r\n var labelOptions = options.label || {};\r\n var labelPosition = labelOptions.position || \"inside\";\r\n var parsedValue;\r\n var valueIsParsed = false;\r\n var lastStoredCoordinates;\r\n axis._checkAlignmentConstantLineLabels(labelOptions);\r\n var storedCoord;\r\n return {\r\n options: options,\r\n labelOptions: labelOptions,\r\n labelPosition: labelPosition,\r\n label: null,\r\n line: null,\r\n getParsedValue() {\r\n if (!valueIsParsed) {\r\n parsedValue = axis.validateUnit(options.value, \"E2105\", \"constantLine\");\r\n valueIsParsed = true;\r\n return parsedValue\r\n }\r\n return parsedValue\r\n },\r\n draw() {\r\n if (!isDefined(options.value) || axis._translator.getBusinessRange().isEmpty()) {\r\n return this\r\n }\r\n var canvas = axis._getCanvasStartEnd();\r\n var parsedValue = this.getParsedValue();\r\n this.coord = axis._getConstantLinePos(parsedValue, canvas.start, canvas.end);\r\n var rootGroup = options.displayBehindSeries ? axis._axisConstantLineGroups.under : axis._axisConstantLineGroups.above;\r\n var group = rootGroup[labelPosition];\r\n if (!group) {\r\n var side = axis._isHorizontal ? labelOptions.verticalAlignment : labelOptions.horizontalAlignment;\r\n group = rootGroup[side]\r\n }\r\n if (!isDefined(this.coord)) {\r\n return this\r\n }\r\n var path = axis._createConstantLine(this.coord, {\r\n stroke: options.color,\r\n \"stroke-width\": options.width,\r\n dashStyle: options.dashStyle\r\n });\r\n this.line = path.append(rootGroup.inside);\r\n this.label = labelOptions.visible ? axis._drawConstantLineLabels(parsedValue, labelOptions, this.coord, group) : null;\r\n this.updatePosition();\r\n return this\r\n },\r\n getContentContainer() {\r\n return this.label\r\n },\r\n removeLabel() {\r\n this.label && this.label.remove()\r\n },\r\n updatePosition(animate) {\r\n var canvas = axis._getCanvasStartEnd();\r\n var coord = axis._getConstantLinePos(this.getParsedValue(), canvas.start, canvas.end);\r\n if (!isDefined(coord)) {\r\n return\r\n }\r\n this.coord = coord;\r\n if (animate && storedCoord) {\r\n this.label && this.label.attr(axis._getConstantLineLabelsCoords(storedCoord, this.labelOptions));\r\n this.line && this.line.attr(axis._getConstantLineGraphicAttributes(storedCoord));\r\n this.label && this.label.animate(axis._getConstantLineLabelsCoords(this.coord, this.labelOptions));\r\n this.line && this.line.animate(axis._getConstantLineGraphicAttributes(this.coord))\r\n } else {\r\n this.label && this.label.attr(axis._getConstantLineLabelsCoords(this.coord, this.labelOptions));\r\n this.line && this.line.attr(axis._getConstantLineGraphicAttributes(this.coord));\r\n axis._rotateConstantLine(this.line, this.coord)\r\n }\r\n },\r\n saveCoords() {\r\n lastStoredCoordinates = storedCoord;\r\n storedCoord = this.coord\r\n },\r\n resetCoordinates() {\r\n storedCoord = lastStoredCoordinates\r\n }\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/viz/axes/strip.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n patchFontOptions\r\n} from \"../core/utils\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nexport default function createStrip(axis, options) {\r\n var storedCoord;\r\n var lastStoredCoordinates;\r\n var labelOptions = options.label || {};\r\n return {\r\n options: options,\r\n label: null,\r\n rect: null,\r\n _getCoord() {\r\n var canvas = axis._getCanvasStartEnd();\r\n var range = axis._translator.getBusinessRange();\r\n return axis._getStripPos(options.startValue, options.endValue, canvas.start, canvas.end, range)\r\n },\r\n _drawLabel: coords => axis._renderer.text(labelOptions.text, coords.x, coords.y).css(patchFontOptions(extend({}, axis.getOptions().label.font, labelOptions.font))).attr({\r\n align: \"center\",\r\n class: labelOptions.cssClass\r\n }).append(axis._axisStripLabelGroup),\r\n draw() {\r\n if (axis._translator.getBusinessRange().isEmpty()) {\r\n return\r\n }\r\n if ((isDefined(options.startValue) || isDefined(options.endValue)) && isDefined(options.color)) {\r\n var stripPos = this._getCoord();\r\n this.labelCoords = labelOptions.text ? axis._getStripLabelCoords(stripPos.from, stripPos.to, labelOptions) : null;\r\n if (stripPos.outOfCanvas || !isDefined(stripPos.to) || !isDefined(stripPos.from)) {\r\n return\r\n }\r\n this.rect = axis._createStrip(axis._getStripGraphicAttributes(stripPos.from, stripPos.to)).attr({\r\n fill: options.color\r\n }).append(axis._axisStripGroup);\r\n this.label = labelOptions.text ? this._drawLabel(this.labelCoords) : null\r\n }\r\n },\r\n getContentContainer() {\r\n return this.label\r\n },\r\n removeLabel() {},\r\n updatePosition(animate) {\r\n var stripPos = this._getCoord();\r\n if (animate && storedCoord) {\r\n this.label && this.label.attr(axis._getStripLabelCoords(storedCoord.from, storedCoord.to, options.label));\r\n this.rect && this.rect.attr(axis._getStripGraphicAttributes(storedCoord.from, storedCoord.to));\r\n this.label && this.label.animate(axis._getStripLabelCoords(stripPos.from, stripPos.to, options.label));\r\n this.rect && this.rect.animate(axis._getStripGraphicAttributes(stripPos.from, stripPos.to))\r\n } else {\r\n this.label && this.label.attr(axis._getStripLabelCoords(stripPos.from, stripPos.to, options.label));\r\n this.rect && this.rect.attr(axis._getStripGraphicAttributes(stripPos.from, stripPos.to))\r\n }\r\n },\r\n saveCoords() {\r\n lastStoredCoordinates = storedCoord;\r\n storedCoord = this._getCoord()\r\n },\r\n resetCoordinates() {\r\n storedCoord = lastStoredCoordinates\r\n }\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/viz/axes/base_axis.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n smartFormatter as _format,\r\n formatRange\r\n} from \"./smart_formatter\";\r\nimport {\r\n patchFontOptions,\r\n getVizRangeObject,\r\n getLogExt as getLog,\r\n raiseToExt as raiseTo,\r\n valueOf,\r\n rotateBBox,\r\n getCategoriesInfo,\r\n adjustVisualRange,\r\n getAddFunction,\r\n convertVisualRangeObject\r\n} from \"../core/utils\";\r\nimport {\r\n isDefined,\r\n isFunction,\r\n isPlainObject,\r\n type\r\n} from \"../../core/utils/type\";\r\nimport constants from \"./axes_constants\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n inArray\r\n} from \"../../core/utils/array\";\r\nimport formatHelper from \"../../format_helper\";\r\nimport {\r\n getParser\r\n} from \"../components/parse_utils\";\r\nimport {\r\n tickGenerator\r\n} from \"./tick_generator\";\r\nimport {\r\n Translator2D\r\n} from \"../translators/translator2d\";\r\nimport {\r\n Range\r\n} from \"../translators/range\";\r\nimport {\r\n tick\r\n} from \"./tick\";\r\nimport {\r\n adjust\r\n} from \"../../core/utils/math\";\r\nimport dateUtils from \"../../core/utils/date\";\r\nimport {\r\n noop as _noop\r\n} from \"../../core/utils/common\";\r\nimport xyMethods from \"./xy_axes\";\r\nimport * as polarMethods from \"./polar_axes\";\r\nimport createConstantLine from \"./constant_line\";\r\nimport createStrip from \"./strip\";\r\nimport {\r\n Deferred,\r\n when\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n calculateCanvasMargins,\r\n measureLabels\r\n} from \"./axes_utils\";\r\nvar convertTicksToValues = constants.convertTicksToValues;\r\nvar _math = Math;\r\nvar _abs = _math.abs;\r\nvar _max = _math.max;\r\nvar _min = _math.min;\r\nvar _isArray = Array.isArray;\r\nvar DEFAULT_AXIS_LABEL_SPACING = 5;\r\nvar MAX_GRID_BORDER_ADHENSION = 4;\r\nvar TOP = constants.top;\r\nvar BOTTOM = constants.bottom;\r\nvar LEFT = constants.left;\r\nvar RIGHT = constants.right;\r\nvar CENTER = constants.center;\r\nvar KEEP = \"keep\";\r\nvar SHIFT = \"shift\";\r\nvar RESET = \"reset\";\r\nvar ROTATE = \"rotate\";\r\nvar DEFAULT_AXIS_DIVISION_FACTOR = 50;\r\nvar DEFAULT_MINOR_AXIS_DIVISION_FACTOR = 15;\r\nvar SCROLL_THRESHOLD = 5;\r\nvar MIN_BAR_MARGIN = 5;\r\nvar MAX_MARGIN_VALUE = .8;\r\nvar dateIntervals = {\r\n day: 864e5,\r\n week: 6048e5\r\n};\r\n\r\nfunction getTickGenerator(options, incidentOccurred, skipTickGeneration, rangeIsEmpty, adjustDivisionFactor, _ref) {\r\n var _options$workWeek;\r\n var {\r\n allowNegatives: allowNegatives,\r\n linearThreshold: linearThreshold\r\n } = _ref;\r\n return tickGenerator({\r\n axisType: options.type,\r\n dataType: options.dataType,\r\n logBase: options.logarithmBase,\r\n allowNegatives: allowNegatives,\r\n linearThreshold: linearThreshold,\r\n axisDivisionFactor: adjustDivisionFactor(options.axisDivisionFactor || DEFAULT_AXIS_DIVISION_FACTOR),\r\n minorAxisDivisionFactor: adjustDivisionFactor(options.minorAxisDivisionFactor || DEFAULT_MINOR_AXIS_DIVISION_FACTOR),\r\n numberMultipliers: options.numberMultipliers,\r\n calculateMinors: options.minorTick.visible || options.minorGrid.visible || options.calculateMinors,\r\n allowDecimals: options.allowDecimals,\r\n endOnTick: options.endOnTick,\r\n incidentOccurred: incidentOccurred,\r\n firstDayOfWeek: null === (_options$workWeek = options.workWeek) || void 0 === _options$workWeek ? void 0 : _options$workWeek[0],\r\n skipTickGeneration: skipTickGeneration,\r\n skipCalculationLimits: options.skipCalculationLimits,\r\n generateExtraTick: options.generateExtraTick,\r\n minTickInterval: options.minTickInterval,\r\n rangeIsEmpty: rangeIsEmpty\r\n })\r\n}\r\n\r\nfunction createMajorTick(axis, renderer, skippedCategory) {\r\n var options = axis.getOptions();\r\n return tick(axis, renderer, options.tick, options.grid, skippedCategory, false)\r\n}\r\n\r\nfunction createMinorTick(axis, renderer) {\r\n var options = axis.getOptions();\r\n return tick(axis, renderer, options.minorTick, options.minorGrid)\r\n}\r\n\r\nfunction createBoundaryTick(axis, renderer, isFirst) {\r\n var options = axis.getOptions();\r\n return tick(axis, renderer, extend({}, options.tick, {\r\n visible: options.showCustomBoundaryTicks\r\n }), options.grid, void 0, false, isFirst ? -1 : 1)\r\n}\r\n\r\nfunction callAction(elements, action, actionArgument1, actionArgument2) {\r\n (elements || []).forEach(e => e[action](actionArgument1, actionArgument2))\r\n}\r\n\r\nfunction initTickCoords(ticks) {\r\n callAction(ticks, \"initCoords\")\r\n}\r\n\r\nfunction drawTickMarks(ticks, options) {\r\n callAction(ticks, \"drawMark\", options)\r\n}\r\n\r\nfunction drawGrids(ticks, drawLine) {\r\n callAction(ticks, \"drawGrid\", drawLine)\r\n}\r\n\r\nfunction updateTicksPosition(ticks, options, animate) {\r\n callAction(ticks, \"updateTickPosition\", options, animate)\r\n}\r\n\r\nfunction updateGridsPosition(ticks, animate) {\r\n callAction(ticks, \"updateGridPosition\", animate)\r\n}\r\n\r\nfunction cleanUpInvalidTicks(ticks) {\r\n var i = ticks.length - 1;\r\n for (i; i >= 0; i--) {\r\n if (!removeInvalidTick(ticks, i)) {\r\n break\r\n }\r\n }\r\n for (i = 0; i < ticks.length; i++) {\r\n if (removeInvalidTick(ticks, i)) {\r\n i--\r\n } else {\r\n break\r\n }\r\n }\r\n}\r\n\r\nfunction removeInvalidTick(ticks, i) {\r\n if (null === ticks[i].coords.x || null === ticks[i].coords.y) {\r\n ticks.splice(i, 1);\r\n return true\r\n }\r\n return false\r\n}\r\n\r\nfunction validateAxisOptions(options) {\r\n var _labelOptions$minSpac;\r\n var labelOptions = options.label;\r\n var position = options.position;\r\n var defaultPosition = options.isHorizontal ? BOTTOM : LEFT;\r\n var secondaryPosition = options.isHorizontal ? TOP : RIGHT;\r\n var labelPosition = labelOptions.position;\r\n if (position !== defaultPosition && position !== secondaryPosition) {\r\n position = defaultPosition\r\n }\r\n if (!labelPosition || \"outside\" === labelPosition) {\r\n labelPosition = position\r\n } else if (\"inside\" === labelPosition) {\r\n labelPosition = {\r\n [TOP]: BOTTOM,\r\n [BOTTOM]: TOP,\r\n [LEFT]: RIGHT,\r\n [RIGHT]: LEFT\r\n } [position]\r\n }\r\n if (labelPosition !== defaultPosition && labelPosition !== secondaryPosition) {\r\n labelPosition = position\r\n }\r\n if (labelOptions.alignment !== CENTER && !labelOptions.userAlignment) {\r\n labelOptions.alignment = {\r\n [TOP]: CENTER,\r\n [BOTTOM]: CENTER,\r\n [LEFT]: RIGHT,\r\n [RIGHT]: LEFT\r\n } [labelPosition]\r\n }\r\n options.position = position;\r\n labelOptions.position = labelPosition;\r\n options.hoverMode = options.hoverMode ? options.hoverMode.toLowerCase() : \"none\";\r\n labelOptions.minSpacing = null !== (_labelOptions$minSpac = labelOptions.minSpacing) && void 0 !== _labelOptions$minSpac ? _labelOptions$minSpac : DEFAULT_AXIS_LABEL_SPACING;\r\n options.type && (options.type = options.type.toLowerCase());\r\n options.argumentType && (options.argumentType = options.argumentType.toLowerCase());\r\n options.valueType && (options.valueType = options.valueType.toLowerCase())\r\n}\r\n\r\nfunction getOptimalAngle(boxes, labelOpt) {\r\n var angle = 180 * _math.asin((boxes[0].height + labelOpt.minSpacing) / (boxes[1].x - boxes[0].x)) / _math.PI;\r\n return angle < 45 ? -45 : -90\r\n}\r\n\r\nfunction updateLabels(ticks, step, func) {\r\n ticks.forEach((function(tick, index) {\r\n if (tick.getContentContainer()) {\r\n if (index % step !== 0) {\r\n tick.removeLabel()\r\n } else if (func) {\r\n func(tick, index)\r\n }\r\n }\r\n }))\r\n}\r\n\r\nfunction getZoomBoundValue(optionValue, dataValue) {\r\n if (void 0 === optionValue) {\r\n return dataValue\r\n } else if (null === optionValue) {\r\n return\r\n } else {\r\n return optionValue\r\n }\r\n}\r\n\r\nfunction configureGenerator(options, axisDivisionFactor, viewPort, screenDelta, minTickInterval) {\r\n var tickGeneratorOptions = extend({}, options, {\r\n endOnTick: true,\r\n axisDivisionFactor: axisDivisionFactor,\r\n skipCalculationLimits: true,\r\n generateExtraTick: true,\r\n minTickInterval: minTickInterval\r\n });\r\n return function(tickInterval, skipTickGeneration, min, max, breaks) {\r\n return getTickGenerator(tickGeneratorOptions, _noop, skipTickGeneration, viewPort.isEmpty(), v => v, viewPort)({\r\n min: min,\r\n max: max,\r\n categories: viewPort.categories,\r\n isSpacedMargin: viewPort.isSpacedMargin\r\n }, screenDelta, tickInterval, isDefined(tickInterval), void 0, void 0, void 0, breaks)\r\n }\r\n}\r\n\r\nfunction getConstantLineSharpDirection(coord, axisCanvas) {\r\n return Math.max(axisCanvas.start, axisCanvas.end) !== coord ? 1 : -1\r\n}\r\nexport var Axis = function(renderSettings) {\r\n this._renderer = renderSettings.renderer;\r\n this._incidentOccurred = renderSettings.incidentOccurred;\r\n this._eventTrigger = renderSettings.eventTrigger;\r\n this._stripsGroup = renderSettings.stripsGroup;\r\n this._stripLabelAxesGroup = renderSettings.stripLabelAxesGroup;\r\n this._labelsAxesGroup = renderSettings.labelsAxesGroup;\r\n this._constantLinesGroup = renderSettings.constantLinesGroup;\r\n this._scaleBreaksGroup = renderSettings.scaleBreaksGroup;\r\n this._axesContainerGroup = renderSettings.axesContainerGroup;\r\n this._gridContainerGroup = renderSettings.gridGroup;\r\n this._axisCssPrefix = renderSettings.widgetClass + \"-\" + (renderSettings.axisClass ? renderSettings.axisClass + \"-\" : \"\");\r\n this._setType(renderSettings.axisType, renderSettings.drawingType);\r\n this._createAxisGroups();\r\n this._translator = this._createTranslator();\r\n this.isArgumentAxis = renderSettings.isArgumentAxis;\r\n this._viewport = {};\r\n this._prevDataInfo = {};\r\n this._firstDrawing = true;\r\n this._initRange = {};\r\n this._getTemplate = renderSettings.getTemplate\r\n};\r\nAxis.prototype = {\r\n constructor: Axis,\r\n _drawAxis() {\r\n var options = this._options;\r\n if (!options.visible) {\r\n return\r\n }\r\n this._axisElement = this._createAxisElement();\r\n this._updateAxisElementPosition();\r\n this._axisElement.attr({\r\n \"stroke-width\": options.width,\r\n stroke: options.color,\r\n \"stroke-opacity\": options.opacity\r\n }).sharp(this._getSharpParam(true), this.getAxisSharpDirection()).append(this._axisLineGroup)\r\n },\r\n _createPathElement(points, attr, sharpDirection) {\r\n return this.sharp(this._renderer.path(points, \"line\").attr(attr), sharpDirection)\r\n },\r\n sharp(svgElement) {\r\n var sharpDirection = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1;\r\n return svgElement.sharp(this._getSharpParam(), sharpDirection)\r\n },\r\n customPositionIsAvailable: () => false,\r\n getOrthogonalAxis: _noop,\r\n getCustomPosition: _noop,\r\n getCustomBoundaryPosition: _noop,\r\n resolveOverlappingForCustomPositioning: _noop,\r\n hasNonBoundaryPosition: () => false,\r\n customPositionIsBoundaryOrthogonalAxis: () => false,\r\n getResolvedBoundaryPosition() {\r\n return this.getOptions().position\r\n },\r\n getAxisSharpDirection() {\r\n var position = this.getResolvedBoundaryPosition();\r\n return this.hasNonBoundaryPosition() || position !== BOTTOM && position !== RIGHT ? 1 : -1\r\n },\r\n getSharpDirectionByCoords(coords) {\r\n var canvas = this._getCanvasStartEnd();\r\n var maxCoord = Math.max(canvas.start, canvas.end);\r\n return this.getRadius ? 0 : maxCoord !== coords[this._isHorizontal ? \"x\" : \"y\"] ? 1 : -1\r\n },\r\n _getGridLineDrawer: function() {\r\n var that = this;\r\n return function(tick, gridStyle) {\r\n var grid = that._getGridPoints(tick.coords);\r\n if (grid.points) {\r\n return that._createPathElement(grid.points, gridStyle, that.getSharpDirectionByCoords(tick.coords))\r\n }\r\n return null\r\n }\r\n },\r\n _getGridPoints: function(coords) {\r\n var isHorizontal = this._isHorizontal;\r\n var tickPositionField = isHorizontal ? \"x\" : \"y\";\r\n var orthogonalPositions = this._orthogonalPositions;\r\n var positionFrom = orthogonalPositions.start;\r\n var positionTo = orthogonalPositions.end;\r\n var borderOptions = this.borderOptions;\r\n var canvasStart = isHorizontal ? LEFT : TOP;\r\n var canvasEnd = isHorizontal ? RIGHT : BOTTOM;\r\n var axisCanvas = this.getCanvas();\r\n var canvas = {\r\n left: axisCanvas.left,\r\n right: axisCanvas.width - axisCanvas.right,\r\n top: axisCanvas.top,\r\n bottom: axisCanvas.height - axisCanvas.bottom\r\n };\r\n var firstBorderLinePosition = borderOptions.visible && borderOptions[canvasStart] ? canvas[canvasStart] : void 0;\r\n var lastBorderLinePosition = borderOptions.visible && borderOptions[canvasEnd] ? canvas[canvasEnd] : void 0;\r\n var minDelta = MAX_GRID_BORDER_ADHENSION + firstBorderLinePosition;\r\n var maxDelta = lastBorderLinePosition - MAX_GRID_BORDER_ADHENSION;\r\n if (this.areCoordsOutsideAxis(coords) || void 0 === coords[tickPositionField] || coords[tickPositionField] < minDelta || coords[tickPositionField] > maxDelta) {\r\n return {\r\n points: null\r\n }\r\n }\r\n return {\r\n points: isHorizontal ? null !== coords[tickPositionField] ? [coords[tickPositionField], positionFrom, coords[tickPositionField], positionTo] : null : null !== coords[tickPositionField] ? [positionFrom, coords[tickPositionField], positionTo, coords[tickPositionField]] : null\r\n }\r\n },\r\n _getConstantLinePos: function(parsedValue, canvasStart, canvasEnd) {\r\n var value = this._getTranslatedCoord(parsedValue);\r\n if (!isDefined(value) || value < _min(canvasStart, canvasEnd) || value > _max(canvasStart, canvasEnd)) {\r\n return\r\n }\r\n return value\r\n },\r\n _getConstantLineGraphicAttributes: function(value) {\r\n var positionFrom = this._orthogonalPositions.start;\r\n var positionTo = this._orthogonalPositions.end;\r\n return {\r\n points: this._isHorizontal ? [value, positionFrom, value, positionTo] : [positionFrom, value, positionTo, value]\r\n }\r\n },\r\n _createConstantLine: function(value, attr) {\r\n return this._createPathElement(this._getConstantLineGraphicAttributes(value).points, attr, getConstantLineSharpDirection(value, this._getCanvasStartEnd()))\r\n },\r\n _drawConstantLineLabelText: function(text, x, y, _ref2, group) {\r\n var {\r\n font: font,\r\n cssClass: cssClass\r\n } = _ref2;\r\n return this._renderer.text(text, x, y).css(patchFontOptions(extend({}, this._options.label.font, font))).attr({\r\n align: \"center\",\r\n class: cssClass\r\n }).append(group)\r\n },\r\n _drawConstantLineLabels: function(parsedValue, lineLabelOptions, value, group) {\r\n var _text;\r\n var text = lineLabelOptions.text;\r\n var options = this._options;\r\n var labelOptions = options.label;\r\n this._checkAlignmentConstantLineLabels(lineLabelOptions);\r\n text = null !== (_text = text) && void 0 !== _text ? _text : this.formatLabel(parsedValue, labelOptions);\r\n var coords = this._getConstantLineLabelsCoords(value, lineLabelOptions);\r\n return this._drawConstantLineLabelText(text, coords.x, coords.y, lineLabelOptions, group)\r\n },\r\n _getStripPos: function(startValue, endValue, canvasStart, canvasEnd, range) {\r\n var isContinuous = !!(range.minVisible || range.maxVisible);\r\n var categories = (range.categories || []).reduce((function(result, cat) {\r\n result.push(cat.valueOf());\r\n return result\r\n }), []);\r\n var start;\r\n var end;\r\n var swap;\r\n var startCategoryIndex;\r\n var endCategoryIndex;\r\n if (!isContinuous) {\r\n if (isDefined(startValue) && isDefined(endValue)) {\r\n var parsedStartValue = this.parser(startValue);\r\n var parsedEndValue = this.parser(endValue);\r\n startCategoryIndex = inArray(isDefined(parsedStartValue) ? parsedStartValue.valueOf() : void 0, categories);\r\n endCategoryIndex = inArray(isDefined(parsedEndValue) ? parsedEndValue.valueOf() : void 0, categories);\r\n if (-1 === startCategoryIndex || -1 === endCategoryIndex) {\r\n return {\r\n from: 0,\r\n to: 0,\r\n outOfCanvas: true\r\n }\r\n }\r\n if (startCategoryIndex > endCategoryIndex) {\r\n swap = endValue;\r\n endValue = startValue;\r\n startValue = swap\r\n }\r\n }\r\n }\r\n if (isDefined(startValue)) {\r\n startValue = this.validateUnit(startValue, \"E2105\", \"strip\");\r\n start = this._getTranslatedCoord(startValue, -1)\r\n } else {\r\n start = canvasStart\r\n }\r\n if (isDefined(endValue)) {\r\n endValue = this.validateUnit(endValue, \"E2105\", \"strip\");\r\n end = this._getTranslatedCoord(endValue, 1)\r\n } else {\r\n end = canvasEnd\r\n }\r\n var stripPosition = start < end ? {\r\n from: start,\r\n to: end\r\n } : {\r\n from: end,\r\n to: start\r\n };\r\n var visibleArea = this.getVisibleArea();\r\n if (stripPosition.from <= visibleArea[0] && stripPosition.to <= visibleArea[0] || stripPosition.from >= visibleArea[1] && stripPosition.to >= visibleArea[1]) {\r\n stripPosition.outOfCanvas = true\r\n }\r\n return stripPosition\r\n },\r\n _getStripGraphicAttributes: function(fromPoint, toPoint) {\r\n var x;\r\n var y;\r\n var width;\r\n var height;\r\n var orthogonalPositions = this._orthogonalPositions;\r\n var positionFrom = orthogonalPositions.start;\r\n var positionTo = orthogonalPositions.end;\r\n if (this._isHorizontal) {\r\n x = fromPoint;\r\n y = _min(positionFrom, positionTo);\r\n width = toPoint - fromPoint;\r\n height = _abs(positionFrom - positionTo)\r\n } else {\r\n x = _min(positionFrom, positionTo);\r\n y = fromPoint;\r\n width = _abs(positionFrom - positionTo);\r\n height = _abs(fromPoint - toPoint)\r\n }\r\n return {\r\n x: x,\r\n y: y,\r\n width: width,\r\n height: height\r\n }\r\n },\r\n _createStrip: function(attrs) {\r\n return this._renderer.rect(attrs.x, attrs.y, attrs.width, attrs.height)\r\n },\r\n _adjustStripLabels: function() {\r\n var that = this;\r\n this._strips.forEach((function(strip) {\r\n if (strip.label) {\r\n strip.label.attr(that._getAdjustedStripLabelCoords(strip))\r\n }\r\n }))\r\n },\r\n _adjustLabelsCoord(offset, maxWidth, checkCanvas) {\r\n var getContainerAttrs = tick => this._getLabelAdjustedCoord(tick, offset + (tick.labelOffset || 0), maxWidth, checkCanvas);\r\n this._majorTicks.forEach((function(tick) {\r\n if (tick.label) {\r\n tick.updateMultilineTextAlignment();\r\n tick.label.attr(getContainerAttrs(tick))\r\n } else {\r\n tick.templateContainer && tick.templateContainer.attr(getContainerAttrs(tick))\r\n }\r\n }))\r\n },\r\n _adjustLabels: function(offset) {\r\n var options = this.getOptions();\r\n var positionsAreConsistent = options.position === options.label.position;\r\n var maxSize = this._majorTicks.reduce((function(size, tick) {\r\n if (!tick.getContentContainer()) {\r\n return size\r\n }\r\n var bBox = tick.labelRotationAngle ? rotateBBox(tick.labelBBox, [tick.labelCoords.x, tick.labelCoords.y], -tick.labelRotationAngle) : tick.labelBBox;\r\n return {\r\n width: _max(size.width || 0, bBox.width),\r\n height: _max(size.height || 0, bBox.height),\r\n offset: _max(size.offset || 0, tick.labelOffset || 0)\r\n }\r\n }), {});\r\n var additionalOffset = positionsAreConsistent ? this._isHorizontal ? maxSize.height : maxSize.width : 0;\r\n this._adjustLabelsCoord(offset, maxSize.width);\r\n return offset + additionalOffset + (additionalOffset && this._options.label.indentFromAxis) + (positionsAreConsistent ? maxSize.offset : 0)\r\n },\r\n _getLabelAdjustedCoord: function(tick, offset, maxWidth) {\r\n offset = offset || 0;\r\n var options = this._options;\r\n var templateBox = tick.templateContainer && tick.templateContainer.getBBox();\r\n var box = templateBox || rotateBBox(tick.labelBBox, [tick.labelCoords.x, tick.labelCoords.y], -tick.labelRotationAngle || 0);\r\n var textAlign = tick.labelAlignment || options.label.alignment;\r\n var isDiscrete = \"discrete\" === this._options.type;\r\n var isFlatLabel = tick.labelRotationAngle % 90 === 0;\r\n var indentFromAxis = options.label.indentFromAxis;\r\n var labelPosition = options.label.position;\r\n var axisPosition = this._axisPosition;\r\n var labelCoords = tick.labelCoords;\r\n var labelX = labelCoords.x;\r\n var translateX;\r\n var translateY;\r\n if (this._isHorizontal) {\r\n if (labelPosition === BOTTOM) {\r\n translateY = axisPosition + indentFromAxis - box.y + offset\r\n } else {\r\n translateY = axisPosition - indentFromAxis - (box.y + box.height) - offset\r\n }\r\n if (textAlign === RIGHT) {\r\n translateX = isDiscrete && isFlatLabel ? tick.coords.x - (box.x + box.width) : labelX - box.x - box.width\r\n } else if (textAlign === LEFT) {\r\n translateX = isDiscrete && isFlatLabel ? labelX - box.x - (tick.coords.x - labelX) : labelX - box.x\r\n } else {\r\n translateX = labelX - box.x - box.width / 2\r\n }\r\n } else {\r\n translateY = labelCoords.y - box.y - box.height / 2;\r\n if (labelPosition === LEFT) {\r\n if (textAlign === LEFT) {\r\n translateX = axisPosition - indentFromAxis - maxWidth - box.x\r\n } else if (textAlign === CENTER) {\r\n translateX = axisPosition - indentFromAxis - maxWidth / 2 - box.x - box.width / 2\r\n } else {\r\n translateX = axisPosition - indentFromAxis - box.x - box.width\r\n }\r\n translateX -= offset\r\n } else {\r\n if (textAlign === RIGHT) {\r\n translateX = axisPosition + indentFromAxis + maxWidth - box.x - box.width\r\n } else if (textAlign === CENTER) {\r\n translateX = axisPosition + indentFromAxis + maxWidth / 2 - box.x - box.width / 2\r\n } else {\r\n translateX = axisPosition + indentFromAxis - box.x\r\n }\r\n translateX += offset\r\n }\r\n }\r\n return {\r\n translateX: translateX,\r\n translateY: translateY\r\n }\r\n },\r\n _createAxisConstantLineGroups: function() {\r\n var renderer = this._renderer;\r\n var classSelector = this._axisCssPrefix;\r\n var constantLinesClass = classSelector + \"constant-lines\";\r\n var insideGroup = renderer.g().attr({\r\n class: constantLinesClass\r\n });\r\n var outsideGroup1 = renderer.g().attr({\r\n class: constantLinesClass\r\n });\r\n var outsideGroup2 = renderer.g().attr({\r\n class: constantLinesClass\r\n });\r\n return {\r\n inside: insideGroup,\r\n outside1: outsideGroup1,\r\n left: outsideGroup1,\r\n top: outsideGroup1,\r\n outside2: outsideGroup2,\r\n right: outsideGroup2,\r\n bottom: outsideGroup2,\r\n remove: function() {\r\n this.inside.remove();\r\n this.outside1.remove();\r\n this.outside2.remove()\r\n },\r\n clear: function() {\r\n this.inside.clear();\r\n this.outside1.clear();\r\n this.outside2.clear()\r\n }\r\n }\r\n },\r\n _createAxisGroups: function() {\r\n var renderer = this._renderer;\r\n var classSelector = this._axisCssPrefix;\r\n this._axisGroup = renderer.g().attr({\r\n class: classSelector + \"axis\"\r\n }).enableLinks();\r\n this._axisStripGroup = renderer.g().attr({\r\n class: classSelector + \"strips\"\r\n });\r\n this._axisGridGroup = renderer.g().attr({\r\n class: classSelector + \"grid\"\r\n });\r\n this._axisElementsGroup = renderer.g().attr({\r\n class: classSelector + \"elements\"\r\n });\r\n this._axisLineGroup = renderer.g().attr({\r\n class: classSelector + \"line\"\r\n }).linkOn(this._axisGroup, \"axisLine\").linkAppend();\r\n this._axisTitleGroup = renderer.g().attr({\r\n class: classSelector + \"title\"\r\n }).append(this._axisGroup);\r\n this._axisConstantLineGroups = {\r\n above: this._createAxisConstantLineGroups(),\r\n under: this._createAxisConstantLineGroups()\r\n };\r\n this._axisStripLabelGroup = renderer.g().attr({\r\n class: classSelector + \"axis-labels\"\r\n })\r\n },\r\n _clearAxisGroups: function() {\r\n this._axisGroup.remove();\r\n this._axisStripGroup.remove();\r\n this._axisStripLabelGroup.remove();\r\n this._axisConstantLineGroups.above.remove();\r\n this._axisConstantLineGroups.under.remove();\r\n this._axisGridGroup.remove();\r\n this._axisTitleGroup.clear();\r\n if (!this._options.label.template || !this.isRendered()) {\r\n this._axisElementsGroup.remove();\r\n this._axisElementsGroup.clear()\r\n }\r\n this._axisLineGroup && this._axisLineGroup.clear();\r\n this._axisStripGroup && this._axisStripGroup.clear();\r\n this._axisGridGroup && this._axisGridGroup.clear();\r\n this._axisConstantLineGroups.above.clear();\r\n this._axisConstantLineGroups.under.clear();\r\n this._axisStripLabelGroup && this._axisStripLabelGroup.clear()\r\n },\r\n _getLabelFormatObject: function(value, labelOptions, range, point, tickInterval, ticks) {\r\n range = range || this._getViewportRange();\r\n var formatObject = {\r\n value: value,\r\n valueText: _format(value, {\r\n labelOptions: labelOptions,\r\n ticks: ticks || convertTicksToValues(this._majorTicks),\r\n tickInterval: null !== tickInterval && void 0 !== tickInterval ? tickInterval : this._tickInterval,\r\n dataType: this._options.dataType,\r\n logarithmBase: this._options.logarithmBase,\r\n type: this._options.type,\r\n showTransition: !this._options.marker.visible,\r\n point: point\r\n }) || \"\",\r\n min: range.minVisible,\r\n max: range.maxVisible\r\n };\r\n if (point) {\r\n formatObject.point = point\r\n }\r\n return formatObject\r\n },\r\n formatLabel: function(value, labelOptions, range, point, tickInterval, ticks) {\r\n var formatObject = this._getLabelFormatObject(value, labelOptions, range, point, tickInterval, ticks);\r\n return isFunction(labelOptions.customizeText) ? labelOptions.customizeText.call(formatObject, formatObject) : formatObject.valueText\r\n },\r\n formatHint: function(value, labelOptions, range) {\r\n var formatObject = this._getLabelFormatObject(value, labelOptions, range);\r\n return isFunction(labelOptions.customizeHint) ? labelOptions.customizeHint.call(formatObject, formatObject) : void 0\r\n },\r\n formatRange(startValue, endValue, interval) {\r\n return formatRange(startValue, endValue, interval, this.getOptions())\r\n },\r\n _setTickOffset: function() {\r\n var options = this._options;\r\n var discreteAxisDivisionMode = options.discreteAxisDivisionMode;\r\n this._tickOffset = +(\"crossLabels\" !== discreteAxisDivisionMode || !discreteAxisDivisionMode)\r\n },\r\n resetApplyingAnimation: function(isFirstDrawing) {\r\n this._resetApplyingAnimation = true;\r\n if (isFirstDrawing) {\r\n this._firstDrawing = true\r\n }\r\n },\r\n isFirstDrawing() {\r\n return this._firstDrawing\r\n },\r\n getMargins: function() {\r\n var that = this;\r\n var {\r\n position: position,\r\n offset: offset,\r\n customPosition: customPosition,\r\n placeholderSize: placeholderSize,\r\n grid: grid,\r\n tick: tick,\r\n crosshairMargin: crosshairMargin\r\n } = that._options;\r\n var isDefinedCustomPositionOption = isDefined(customPosition);\r\n var boundaryPosition = that.getResolvedBoundaryPosition();\r\n var canvas = that.getCanvas();\r\n var cLeft = canvas.left;\r\n var cTop = canvas.top;\r\n var cRight = canvas.width - canvas.right;\r\n var cBottom = canvas.height - canvas.bottom;\r\n var edgeMarginCorrection = _max(grid.visible && grid.width || 0, tick.visible && tick.width || 0);\r\n var constantLineAboveSeries = that._axisConstantLineGroups.above;\r\n var constantLineUnderSeries = that._axisConstantLineGroups.under;\r\n var boxes = [that._axisElementsGroup, constantLineAboveSeries.outside1, constantLineAboveSeries.outside2, constantLineUnderSeries.outside1, constantLineUnderSeries.outside2, that._axisLineGroup].map(group => group && group.getBBox()).concat(function(group) {\r\n var box = group && group.getBBox();\r\n if (!box || box.isEmpty) {\r\n return box\r\n }\r\n if (that._isHorizontal) {\r\n box.x = cLeft;\r\n box.width = cRight - cLeft\r\n } else {\r\n box.y = cTop;\r\n box.height = cBottom - cTop\r\n }\r\n return box\r\n }(that._axisTitleGroup));\r\n var margins = calculateCanvasMargins(boxes, canvas);\r\n margins[position] += crosshairMargin;\r\n if (that.hasNonBoundaryPosition() && isDefinedCustomPositionOption) {\r\n margins[boundaryPosition] = 0\r\n }\r\n if (placeholderSize) {\r\n margins[position] = placeholderSize\r\n }\r\n if (edgeMarginCorrection) {\r\n if (that._isHorizontal && canvas.right < edgeMarginCorrection && margins.right < edgeMarginCorrection) {\r\n margins.right = edgeMarginCorrection\r\n }\r\n if (!that._isHorizontal && canvas.bottom < edgeMarginCorrection && margins.bottom < edgeMarginCorrection) {\r\n margins.bottom = edgeMarginCorrection\r\n }\r\n }\r\n if (!isDefinedCustomPositionOption && isDefined(offset)) {\r\n var moveByOffset = that.customPositionIsBoundary() && (offset > 0 && (boundaryPosition === LEFT || boundaryPosition === TOP) || offset < 0 && (boundaryPosition === RIGHT || boundaryPosition === BOTTOM));\r\n margins[boundaryPosition] -= moveByOffset ? offset : 0\r\n }\r\n return margins\r\n },\r\n validateUnit: function(unit, idError, parameters) {\r\n unit = this.parser(unit);\r\n if (void 0 === unit && idError) {\r\n this._incidentOccurred(idError, [parameters])\r\n }\r\n return unit\r\n },\r\n _setType: function(axisType, drawingType) {\r\n var axisTypeMethods;\r\n switch (axisType) {\r\n case \"xyAxes\":\r\n axisTypeMethods = xyMethods;\r\n break;\r\n case \"polarAxes\":\r\n axisTypeMethods = polarMethods\r\n }\r\n extend(this, axisTypeMethods[drawingType])\r\n },\r\n _getSharpParam: function() {\r\n return true\r\n },\r\n _disposeBreaksGroup: _noop,\r\n dispose: function() {\r\n [this._axisElementsGroup, this._axisStripGroup, this._axisGroup].forEach((function(g) {\r\n g.dispose()\r\n }));\r\n this._strips = this._title = null;\r\n this._axisStripGroup = this._axisConstantLineGroups = this._axisStripLabelGroup = this._axisBreaksGroup = null;\r\n this._axisLineGroup = this._axisElementsGroup = this._axisGridGroup = null;\r\n this._axisGroup = this._axisTitleGroup = null;\r\n this._axesContainerGroup = this._stripsGroup = this._constantLinesGroup = this._labelsAxesGroup = null;\r\n this._renderer = this._options = this._textOptions = this._textFontStyles = null;\r\n this._translator = null;\r\n this._majorTicks = this._minorTicks = null;\r\n this._disposeBreaksGroup();\r\n this._templatesRendered && this._templatesRendered.reject()\r\n },\r\n getOptions: function() {\r\n return this._options\r\n },\r\n setPane: function(pane) {\r\n this.pane = pane;\r\n this._options.pane = pane\r\n },\r\n setTypes: function(type, axisType, typeSelector) {\r\n this._options.type = type || this._options.type;\r\n this._options[typeSelector] = axisType || this._options[typeSelector];\r\n this._updateTranslator()\r\n },\r\n resetTypes: function(typeSelector) {\r\n this._options.type = this._initTypes.type;\r\n this._options[typeSelector] = this._initTypes[typeSelector]\r\n },\r\n getTranslator: function() {\r\n return this._translator\r\n },\r\n updateOptions: function(options) {\r\n var that = this;\r\n var labelOpt = options.label;\r\n validateAxisOptions(options);\r\n that._options = options;\r\n options.tick = options.tick || {};\r\n options.minorTick = options.minorTick || {};\r\n options.grid = options.grid || {};\r\n options.minorGrid = options.minorGrid || {};\r\n options.title = options.title || {};\r\n options.marker = options.marker || {};\r\n that._initTypes = {\r\n type: options.type,\r\n argumentType: options.argumentType,\r\n valueType: options.valueType\r\n };\r\n that._setTickOffset();\r\n that._isHorizontal = options.isHorizontal;\r\n that.pane = options.pane;\r\n that.name = options.name;\r\n that.priority = options.priority;\r\n that._hasLabelFormat = \"\" !== labelOpt.format && isDefined(labelOpt.format);\r\n that._textOptions = {\r\n opacity: labelOpt.opacity,\r\n align: \"center\",\r\n class: labelOpt.cssClass\r\n };\r\n that._textFontStyles = patchFontOptions(labelOpt.font);\r\n if (options.type === constants.logarithmic) {\r\n if (options.logarithmBaseError) {\r\n that._incidentOccurred(\"E2104\");\r\n delete options.logarithmBaseError\r\n }\r\n }\r\n that._updateTranslator();\r\n that._createConstantLines();\r\n that._strips = (options.strips || []).map(o => createStrip(that, o));\r\n that._majorTicks = that._minorTicks = null;\r\n that._firstDrawing = true\r\n },\r\n calculateInterval: function(value, prevValue) {\r\n var options = this._options;\r\n if (!options || options.type !== constants.logarithmic) {\r\n return _abs(value - prevValue)\r\n }\r\n var {\r\n allowNegatives: allowNegatives,\r\n linearThreshold: linearThreshold\r\n } = new Range(this.getTranslator().getBusinessRange());\r\n return _abs(getLog(value, options.logarithmBase, allowNegatives, linearThreshold) - getLog(prevValue, options.logarithmBase, allowNegatives, linearThreshold))\r\n },\r\n getCanvasRange() {\r\n var translator = this._translator;\r\n return {\r\n startValue: translator.from(translator.translate(\"canvas_position_start\")),\r\n endValue: translator.from(translator.translate(\"canvas_position_end\"))\r\n }\r\n },\r\n _processCanvas: function(canvas) {\r\n return canvas\r\n },\r\n updateCanvas: function(canvas, canvasRedesign) {\r\n if (!canvasRedesign) {\r\n var positions = this._orthogonalPositions = {\r\n start: !this._isHorizontal ? canvas.left : canvas.top,\r\n end: !this._isHorizontal ? canvas.width - canvas.right : canvas.height - canvas.bottom\r\n };\r\n positions.center = positions.start + (positions.end - positions.start) / 2\r\n } else {\r\n this._orthogonalPositions = null\r\n }\r\n this._canvas = canvas;\r\n this._translator.updateCanvas(this._processCanvas(canvas));\r\n this._initAxisPositions()\r\n },\r\n getCanvas: function() {\r\n return this._canvas\r\n },\r\n getAxisShift() {\r\n return this._axisShift || 0\r\n },\r\n hideTitle: function() {\r\n if (this._options.title.text) {\r\n this._incidentOccurred(\"W2105\", [this._isHorizontal ? \"horizontal\" : \"vertical\"]);\r\n this._axisTitleGroup.clear()\r\n }\r\n },\r\n getTitle: function() {\r\n return this._title\r\n },\r\n hideOuterElements: function() {\r\n var options = this._options;\r\n if ((options.label.visible || this._outsideConstantLines.length) && !this._translator.getBusinessRange().isEmpty()) {\r\n this._incidentOccurred(\"W2106\", [this._isHorizontal ? \"horizontal\" : \"vertical\"]);\r\n this._axisElementsGroup.clear();\r\n callAction(this._outsideConstantLines, \"removeLabel\")\r\n }\r\n },\r\n _resolveLogarithmicOptionsForRange(range) {\r\n var options = this._options;\r\n if (options.type === constants.logarithmic) {\r\n range.addRange({\r\n allowNegatives: void 0 !== options.allowNegatives ? options.allowNegatives : range.min <= 0\r\n });\r\n if (!isNaN(options.linearThreshold)) {\r\n range.linearThreshold = options.linearThreshold\r\n }\r\n }\r\n },\r\n adjustViewport(businessRange) {\r\n var options = this._options;\r\n var isDiscrete = options.type === constants.discrete;\r\n var categories = this._seriesData && this._seriesData.categories || [];\r\n var wholeRange = this.adjustRange(getVizRangeObject(options.wholeRange));\r\n var visualRange = this.getViewport() || {};\r\n var result = new Range(businessRange);\r\n this._addConstantLinesToRange(result, \"minVisible\", \"maxVisible\");\r\n var minDefined = isDefined(visualRange.startValue);\r\n var maxDefined = isDefined(visualRange.endValue);\r\n if (!isDiscrete) {\r\n minDefined = minDefined && (!isDefined(wholeRange.endValue) || visualRange.startValue < wholeRange.endValue);\r\n maxDefined = maxDefined && (!isDefined(wholeRange.startValue) || visualRange.endValue > wholeRange.startValue)\r\n }\r\n var minVisible = minDefined ? visualRange.startValue : result.minVisible;\r\n var maxVisible = maxDefined ? visualRange.endValue : result.maxVisible;\r\n if (!isDiscrete) {\r\n var _wholeRange$startValu, _wholeRange$endValue;\r\n result.min = null !== (_wholeRange$startValu = wholeRange.startValue) && void 0 !== _wholeRange$startValu ? _wholeRange$startValu : result.min;\r\n result.max = null !== (_wholeRange$endValue = wholeRange.endValue) && void 0 !== _wholeRange$endValue ? _wholeRange$endValue : result.max\r\n } else {\r\n var categoriesInfo = getCategoriesInfo(categories, wholeRange.startValue, wholeRange.endValue);\r\n categories = categoriesInfo.categories;\r\n result.categories = categories\r\n }\r\n var adjustedVisualRange = adjustVisualRange({\r\n axisType: options.type,\r\n dataType: options.dataType,\r\n base: options.logarithmBase\r\n }, {\r\n startValue: minDefined ? visualRange.startValue : void 0,\r\n endValue: maxDefined ? visualRange.endValue : void 0,\r\n length: visualRange.length\r\n }, {\r\n categories: categories,\r\n min: wholeRange.startValue,\r\n max: wholeRange.endValue\r\n }, {\r\n categories: categories,\r\n min: minVisible,\r\n max: maxVisible\r\n });\r\n result.minVisible = adjustedVisualRange.startValue;\r\n result.maxVisible = adjustedVisualRange.endValue;\r\n !isDefined(result.min) && (result.min = result.minVisible);\r\n !isDefined(result.max) && (result.max = result.maxVisible);\r\n result.addRange({});\r\n this._resolveLogarithmicOptionsForRange(result);\r\n return result\r\n },\r\n adjustRange(range) {\r\n range = range || {};\r\n var isDiscrete = this._options.type === constants.discrete;\r\n var isLogarithmic = this._options.type === constants.logarithmic;\r\n var disabledNegatives = false === this._options.allowNegatives;\r\n if (isLogarithmic) {\r\n range.startValue = disabledNegatives && range.startValue <= 0 ? null : range.startValue;\r\n range.endValue = disabledNegatives && range.endValue <= 0 ? null : range.endValue\r\n }\r\n if (!isDiscrete && isDefined(range.startValue) && isDefined(range.endValue) && range.startValue > range.endValue) {\r\n var tmp = range.endValue;\r\n range.endValue = range.startValue;\r\n range.startValue = tmp\r\n }\r\n return range\r\n },\r\n _getVisualRangeUpdateMode(viewport, newRange, oppositeValue) {\r\n var value = this._options.visualRangeUpdateMode;\r\n var translator = this._translator;\r\n var range = this._seriesData;\r\n var prevDataInfo = this._prevDataInfo;\r\n if (prevDataInfo.isEmpty && !prevDataInfo.containsConstantLine) {\r\n return KEEP\r\n }\r\n if (!this.isArgumentAxis) {\r\n var _viewport = this.getViewport();\r\n if (!isDefined(_viewport.startValue) && !isDefined(_viewport.endValue) && !isDefined(_viewport.length)) {\r\n return RESET\r\n }\r\n }\r\n if (this.isArgumentAxis) {\r\n if (-1 === [SHIFT, KEEP, RESET].indexOf(value)) {\r\n if (range.axisType === constants.discrete) {\r\n var categories = range.categories;\r\n var newCategories = newRange.categories;\r\n var visualRange = this.visualRange();\r\n if (categories && newCategories && categories.length && -1 !== newCategories.map(c => c.valueOf()).join(\",\").indexOf(categories.map(c => c.valueOf()).join(\",\")) && (visualRange.startValue.valueOf() !== categories[0].valueOf() || visualRange.endValue.valueOf() !== categories[categories.length - 1].valueOf())) {\r\n value = KEEP\r\n } else {\r\n value = RESET\r\n }\r\n } else {\r\n var minPoint = translator.translate(range.min);\r\n var minVisiblePoint = translator.translate(viewport.startValue);\r\n var maxPoint = translator.translate(range.max);\r\n var maxVisiblePoint = translator.translate(viewport.endValue);\r\n if (minPoint === minVisiblePoint && maxPoint === maxVisiblePoint) {\r\n value = RESET\r\n } else if (minPoint !== minVisiblePoint && maxPoint === maxVisiblePoint) {\r\n value = SHIFT\r\n } else {\r\n value = KEEP\r\n }\r\n }\r\n if (value === KEEP && prevDataInfo.isEmpty && prevDataInfo.containsConstantLine) {\r\n value = RESET\r\n }\r\n }\r\n } else if (-1 === [KEEP, RESET].indexOf(value)) {\r\n if (oppositeValue === KEEP) {\r\n value = KEEP\r\n } else {\r\n value = RESET\r\n }\r\n }\r\n return value\r\n },\r\n _handleBusinessRangeChanged(oppositeVisualRangeUpdateMode, axisReinitialized, newRange) {\r\n var visualRange = this.visualRange();\r\n if (axisReinitialized || this._translator.getBusinessRange().isEmpty()) {\r\n return\r\n }\r\n var visualRangeUpdateMode = this._lastVisualRangeUpdateMode = this._getVisualRangeUpdateMode(visualRange, newRange, oppositeVisualRangeUpdateMode);\r\n if (visualRangeUpdateMode === KEEP) {\r\n this._setVisualRange([visualRange.startValue, visualRange.endValue])\r\n } else if (visualRangeUpdateMode === RESET) {\r\n this._setVisualRange([null, null])\r\n } else if (visualRangeUpdateMode === SHIFT) {\r\n this._setVisualRange({\r\n length: this.getVisualRangeLength()\r\n })\r\n }\r\n },\r\n getVisualRangeLength(range) {\r\n var currentBusinessRange = range || this._translator.getBusinessRange();\r\n var {\r\n type: type\r\n } = this._options;\r\n var length;\r\n if (type === constants.logarithmic) {\r\n length = adjust(this.calculateInterval(currentBusinessRange.maxVisible, currentBusinessRange.minVisible))\r\n } else if (type === constants.discrete) {\r\n var categoriesInfo = getCategoriesInfo(currentBusinessRange.categories, currentBusinessRange.minVisible, currentBusinessRange.maxVisible);\r\n length = categoriesInfo.categories.length\r\n } else {\r\n length = currentBusinessRange.maxVisible - currentBusinessRange.minVisible\r\n }\r\n return length\r\n },\r\n getVisualRangeCenter(range, useMerge) {\r\n var translator = this.getTranslator();\r\n var businessRange = translator.getBusinessRange();\r\n var currentBusinessRange = useMerge ? extend(true, {}, businessRange, range || {}) : range || businessRange;\r\n var {\r\n type: type,\r\n logarithmBase: logarithmBase\r\n } = this._options;\r\n var center;\r\n if (!isDefined(currentBusinessRange.minVisible) || !isDefined(currentBusinessRange.maxVisible)) {\r\n return\r\n }\r\n if (type === constants.logarithmic) {\r\n var {\r\n allowNegatives: allowNegatives,\r\n linearThreshold: linearThreshold,\r\n minVisible: minVisible,\r\n maxVisible: maxVisible\r\n } = currentBusinessRange;\r\n center = raiseTo(adjust(getLog(maxVisible, logarithmBase, allowNegatives, linearThreshold) + getLog(minVisible, logarithmBase, allowNegatives, linearThreshold)) / 2, logarithmBase, allowNegatives, linearThreshold)\r\n } else if (type === constants.discrete) {\r\n var categoriesInfo = getCategoriesInfo(currentBusinessRange.categories, currentBusinessRange.minVisible, currentBusinessRange.maxVisible);\r\n var index = Math.ceil(categoriesInfo.categories.length / 2) - 1;\r\n center = businessRange.categories.indexOf(categoriesInfo.categories[index])\r\n } else {\r\n center = translator.toValue((currentBusinessRange.maxVisible.valueOf() + currentBusinessRange.minVisible.valueOf()) / 2)\r\n }\r\n return center\r\n },\r\n setBusinessRange(range, axisReinitialized, oppositeVisualRangeUpdateMode, argCategories) {\r\n var _that$_seriesData$min, _that$_seriesData$max;\r\n var options = this._options;\r\n var isDiscrete = options.type === constants.discrete;\r\n this._handleBusinessRangeChanged(oppositeVisualRangeUpdateMode, axisReinitialized, range);\r\n this._seriesData = new Range(range);\r\n var dataIsEmpty = this._seriesData.isEmpty();\r\n var rangeWithConstantLines = new Range(this._seriesData);\r\n this._addConstantLinesToRange(rangeWithConstantLines, \"minVisible\", \"maxVisible\");\r\n this._prevDataInfo = {\r\n isEmpty: dataIsEmpty,\r\n containsConstantLine: rangeWithConstantLines.containsConstantLine\r\n };\r\n this._seriesData.addRange({\r\n categories: options.categories,\r\n dataType: options.dataType,\r\n axisType: options.type,\r\n base: options.logarithmBase,\r\n invert: options.inverted\r\n });\r\n this._resolveLogarithmicOptionsForRange(this._seriesData);\r\n if (!isDiscrete) {\r\n if (!isDefined(this._seriesData.min) && !isDefined(this._seriesData.max)) {\r\n var visualRange = this.getViewport();\r\n visualRange && this._seriesData.addRange({\r\n min: visualRange.startValue,\r\n max: visualRange.endValue\r\n })\r\n }\r\n var synchronizedValue = options.synchronizedValue;\r\n if (isDefined(synchronizedValue)) {\r\n this._seriesData.addRange({\r\n min: synchronizedValue,\r\n max: synchronizedValue\r\n })\r\n }\r\n }\r\n this._seriesData.minVisible = null !== (_that$_seriesData$min = this._seriesData.minVisible) && void 0 !== _that$_seriesData$min ? _that$_seriesData$min : this._seriesData.min;\r\n this._seriesData.maxVisible = null !== (_that$_seriesData$max = this._seriesData.maxVisible) && void 0 !== _that$_seriesData$max ? _that$_seriesData$max : this._seriesData.max;\r\n if (!this.isArgumentAxis && options.showZero) {\r\n this._seriesData.correctValueZeroLevel()\r\n }\r\n this._seriesData.sortCategories(this.getCategoriesSorter(argCategories));\r\n this._seriesData.userBreaks = this._seriesData.isEmpty() ? [] : this._getScaleBreaks(options, this._seriesData, this._series, this.isArgumentAxis);\r\n this._translator.updateBusinessRange(this._getViewportRange())\r\n },\r\n _addConstantLinesToRange(dataRange, minValueField, maxValueField) {\r\n this._outsideConstantLines.concat(this._insideConstantLines || []).forEach(cl => {\r\n if (cl.options.extendAxis) {\r\n var value = cl.getParsedValue();\r\n dataRange.addRange({\r\n containsConstantLine: true,\r\n [minValueField]: value,\r\n [maxValueField]: value\r\n })\r\n }\r\n })\r\n },\r\n setGroupSeries: function(series) {\r\n this._series = series\r\n },\r\n getLabelsPosition: function() {\r\n var options = this._options;\r\n var position = options.position;\r\n var labelShift = options.label.indentFromAxis + (this._axisShift || 0) + this._constantLabelOffset;\r\n var axisPosition = this._axisPosition;\r\n return position === TOP || position === LEFT ? axisPosition - labelShift : axisPosition + labelShift\r\n },\r\n getFormattedValue: function(value, options, point) {\r\n var labelOptions = this._options.label;\r\n return isDefined(value) ? this.formatLabel(value, extend(true, {}, labelOptions, options), void 0, point) : null\r\n },\r\n _getBoundaryTicks: function(majors, viewPort) {\r\n var length = majors.length;\r\n var options = this._options;\r\n var customBounds = options.customBoundTicks;\r\n var min = viewPort.minVisible;\r\n var max = viewPort.maxVisible;\r\n var addMinMax = options.showCustomBoundaryTicks ? this._boundaryTicksVisibility : {};\r\n var boundaryTicks = [];\r\n if (options.type === constants.discrete) {\r\n if (this._tickOffset && 0 !== majors.length) {\r\n boundaryTicks = [majors[0], majors[majors.length - 1]]\r\n }\r\n } else if (customBounds) {\r\n if (addMinMax.min && isDefined(customBounds[0])) {\r\n boundaryTicks.push(customBounds[0])\r\n }\r\n if (addMinMax.max && isDefined(customBounds[1])) {\r\n boundaryTicks.push(customBounds[1])\r\n }\r\n } else {\r\n if (addMinMax.min && (0 === length || majors[0] > min)) {\r\n boundaryTicks.push(min)\r\n }\r\n if (addMinMax.max && (0 === length || majors[length - 1] < max)) {\r\n boundaryTicks.push(max)\r\n }\r\n }\r\n return boundaryTicks\r\n },\r\n setPercentLabelFormat: function() {\r\n if (!this._hasLabelFormat) {\r\n this._options.label.format = \"percent\"\r\n }\r\n },\r\n resetAutoLabelFormat: function() {\r\n if (!this._hasLabelFormat) {\r\n delete this._options.label.format\r\n }\r\n },\r\n getMultipleAxesSpacing: function() {\r\n return this._options.multipleAxesSpacing || 0\r\n },\r\n getTicksValues: function() {\r\n return {\r\n majorTicksValues: convertTicksToValues(this._majorTicks),\r\n minorTicksValues: convertTicksToValues(this._minorTicks)\r\n }\r\n },\r\n estimateTickInterval: function(canvas) {\r\n this.updateCanvas(canvas);\r\n return this._tickInterval !== this._getTicks(this._getViewportRange(), _noop, true).tickInterval\r\n },\r\n setTicks: function(ticks) {\r\n var majors = ticks.majorTicks || [];\r\n this._majorTicks = majors.map(createMajorTick(this, this._renderer, this._getSkippedCategory(majors)));\r\n this._minorTicks = (ticks.minorTicks || []).map(createMinorTick(this, this._renderer));\r\n this._isSynchronized = true\r\n },\r\n _adjustDivisionFactor: function(val) {\r\n return val\r\n },\r\n _getTicks: function(viewPort, incidentOccurred, skipTickGeneration) {\r\n var options = this._options;\r\n var customTicks = options.customTicks;\r\n var customMinorTicks = options.customMinorTicks;\r\n return getTickGenerator(options, incidentOccurred || this._incidentOccurred, skipTickGeneration, this._translator.getBusinessRange().isEmpty(), this._adjustDivisionFactor.bind(this), viewPort)({\r\n min: viewPort.minVisible,\r\n max: viewPort.maxVisible,\r\n categories: viewPort.categories,\r\n isSpacedMargin: viewPort.isSpacedMargin\r\n }, this._getScreenDelta(), options.tickInterval, \"ignore\" === options.label.overlappingBehavior || options.forceUserTickInterval, {\r\n majors: customTicks,\r\n minors: customMinorTicks\r\n }, options.minorTickInterval, options.minorTickCount, this._initialBreaks)\r\n },\r\n _createTicksAndLabelFormat: function(range, incidentOccurred) {\r\n var options = this._options;\r\n var ticks = this._getTicks(range, incidentOccurred, false);\r\n if (!range.isEmpty() && options.type === constants.discrete && \"datetime\" === options.dataType && !this._hasLabelFormat && ticks.ticks.length) {\r\n options.label.format = formatHelper.getDateFormatByTicks(ticks.ticks)\r\n }\r\n return ticks\r\n },\r\n getAggregationInfo(useAllAggregatedPoints, range) {\r\n var _visualRange$startVal, _visualRange$endValue, _that$_seriesData;\r\n var options = this._options;\r\n var marginOptions = this._marginOptions;\r\n var businessRange = new Range(this.getTranslator().getBusinessRange()).addRange(range);\r\n var visualRange = this.getViewport();\r\n var minVisible = null !== (_visualRange$startVal = null === visualRange || void 0 === visualRange ? void 0 : visualRange.startValue) && void 0 !== _visualRange$startVal ? _visualRange$startVal : businessRange.minVisible;\r\n var maxVisible = null !== (_visualRange$endValue = null === visualRange || void 0 === visualRange ? void 0 : visualRange.endValue) && void 0 !== _visualRange$endValue ? _visualRange$endValue : businessRange.maxVisible;\r\n var ticks = [];\r\n if (options.type === constants.discrete && options.aggregateByCategory) {\r\n return {\r\n aggregateByCategory: true\r\n }\r\n }\r\n var aggregationInterval = options.aggregationInterval;\r\n var aggregationGroupWidth = options.aggregationGroupWidth;\r\n if (!aggregationGroupWidth && marginOptions) {\r\n if (marginOptions.checkInterval) {\r\n aggregationGroupWidth = options.axisDivisionFactor\r\n }\r\n if (marginOptions.sizePointNormalState) {\r\n aggregationGroupWidth = Math.min(marginOptions.sizePointNormalState, options.axisDivisionFactor)\r\n }\r\n }\r\n var minInterval = !options.aggregationGroupWidth && !aggregationInterval && range.interval;\r\n var generateTicks = configureGenerator(options, aggregationGroupWidth, businessRange, this._getScreenDelta(), minInterval);\r\n var tickInterval = generateTicks(aggregationInterval, true, minVisible, maxVisible, null === (_that$_seriesData = this._seriesData) || void 0 === _that$_seriesData ? void 0 : _that$_seriesData.breaks).tickInterval;\r\n if (options.type !== constants.discrete) {\r\n var min = useAllAggregatedPoints ? businessRange.min : minVisible;\r\n var max = useAllAggregatedPoints ? businessRange.max : maxVisible;\r\n if (isDefined(min) && isDefined(max)) {\r\n var add = getAddFunction({\r\n base: options.logarithmBase,\r\n axisType: options.type,\r\n dataType: options.dataType\r\n }, false);\r\n var start = min;\r\n var end = max;\r\n if (!useAllAggregatedPoints) {\r\n var maxMinDistance = Math.max(this.calculateInterval(max, min), \"datetime\" === options.dataType ? dateUtils.dateToMilliseconds(tickInterval) : tickInterval);\r\n start = add(min, maxMinDistance, -1);\r\n end = add(max, maxMinDistance)\r\n }\r\n start = start < businessRange.min ? businessRange.min : start;\r\n end = end > businessRange.max ? businessRange.max : end;\r\n var breaks = this._getScaleBreaks(options, {\r\n minVisible: start,\r\n maxVisible: end\r\n }, this._series, this.isArgumentAxis);\r\n var filteredBreaks = this._filterBreaks(breaks, {\r\n minVisible: start,\r\n maxVisible: end\r\n }, options.breakStyle);\r\n ticks = generateTicks(tickInterval, false, start, end, filteredBreaks).ticks\r\n }\r\n }\r\n this._aggregationInterval = tickInterval;\r\n return {\r\n interval: tickInterval,\r\n ticks: ticks\r\n }\r\n },\r\n getTickInterval() {\r\n return this._tickInterval\r\n },\r\n getAggregationInterval() {\r\n return this._aggregationInterval\r\n },\r\n createTicks: function(canvas) {\r\n var that = this;\r\n var renderer = that._renderer;\r\n var options = that._options;\r\n if (!canvas) {\r\n return\r\n }\r\n that._isSynchronized = false;\r\n that.updateCanvas(canvas);\r\n var range = that._getViewportRange();\r\n that._initialBreaks = range.breaks = this._seriesData.breaks = that._filterBreaks(this._seriesData.userBreaks, range, options.breakStyle);\r\n that._estimatedTickInterval = that._getTicks(that.adjustViewport(this._seriesData), _noop, true).tickInterval;\r\n var margins = this._calculateValueMargins();\r\n range.addRange({\r\n minVisible: margins.minValue,\r\n maxVisible: margins.maxValue,\r\n isSpacedMargin: margins.isSpacedMargin\r\n });\r\n var ticks = that._createTicksAndLabelFormat(range);\r\n var boundaryTicks = that._getBoundaryTicks(ticks.ticks, that._getViewportRange());\r\n if (options.showCustomBoundaryTicks && boundaryTicks.length) {\r\n that._boundaryTicks = [boundaryTicks[0]].map(createBoundaryTick(that, renderer, true));\r\n if (boundaryTicks.length > 1) {\r\n that._boundaryTicks = that._boundaryTicks.concat([boundaryTicks[1]].map(createBoundaryTick(that, renderer, false)))\r\n }\r\n } else {\r\n that._boundaryTicks = []\r\n }\r\n var minors = (ticks.minorTicks || []).filter((function(minor) {\r\n return !boundaryTicks.some((function(boundary) {\r\n return valueOf(boundary) === valueOf(minor)\r\n }))\r\n }));\r\n that._tickInterval = ticks.tickInterval;\r\n that._minorTickInterval = ticks.minorTickInterval;\r\n var oldMajorTicks = that._majorTicks || [];\r\n var majorTicksByValues = oldMajorTicks.reduce((r, t) => {\r\n r[t.value.valueOf()] = t;\r\n return r\r\n }, {});\r\n var sameType = type(ticks.ticks[0]) === type(oldMajorTicks[0] && oldMajorTicks[0].value);\r\n var skippedCategory = that._getSkippedCategory(ticks.ticks);\r\n var majorTicks = ticks.ticks.map(v => {\r\n var tick = majorTicksByValues[v.valueOf()];\r\n if (tick && sameType) {\r\n delete majorTicksByValues[v.valueOf()];\r\n tick.setSkippedCategory(skippedCategory);\r\n return tick\r\n } else {\r\n return createMajorTick(that, renderer, skippedCategory)(v)\r\n }\r\n });\r\n that._majorTicks = majorTicks;\r\n var oldMinorTicks = that._minorTicks || [];\r\n that._minorTicks = minors.map((v, i) => {\r\n var minorTick = oldMinorTicks[i];\r\n if (minorTick) {\r\n minorTick.updateValue(v);\r\n return minorTick\r\n }\r\n return createMinorTick(that, renderer)(v)\r\n });\r\n that._ticksToRemove = Object.keys(majorTicksByValues).map(k => majorTicksByValues[k]).concat(oldMinorTicks.slice(that._minorTicks.length, oldMinorTicks.length));\r\n that._ticksToRemove.forEach(t => {\r\n var _t$label;\r\n return null === (_t$label = t.label) || void 0 === _t$label ? void 0 : _t$label.removeTitle()\r\n });\r\n if (ticks.breaks) {\r\n that._seriesData.breaks = ticks.breaks\r\n }\r\n that._reinitTranslator(that._getViewportRange())\r\n },\r\n _reinitTranslator: function(range) {\r\n var translator = this._translator;\r\n if (this._isSynchronized) {\r\n return\r\n }\r\n translator.updateBusinessRange(range)\r\n },\r\n _getViewportRange() {\r\n return this.adjustViewport(this._seriesData)\r\n },\r\n setMarginOptions: function(options) {\r\n this._marginOptions = options\r\n },\r\n getMarginOptions() {\r\n var _this$_marginOptions;\r\n return null !== (_this$_marginOptions = this._marginOptions) && void 0 !== _this$_marginOptions ? _this$_marginOptions : {}\r\n },\r\n _calculateRangeInterval: function(interval) {\r\n var isDateTime = \"datetime\" === this._options.dataType;\r\n var minArgs = [];\r\n var addToArgs = function(value) {\r\n isDefined(value) && minArgs.push(isDateTime ? dateUtils.dateToMilliseconds(value) : value)\r\n };\r\n addToArgs(this._tickInterval);\r\n addToArgs(this._estimatedTickInterval);\r\n isDefined(interval) && minArgs.push(interval);\r\n addToArgs(this._aggregationInterval);\r\n return this._calculateWorkWeekInterval(_min.apply(this, minArgs))\r\n },\r\n _calculateWorkWeekInterval(businessInterval) {\r\n var options = this._options;\r\n if (\"datetime\" === options.dataType && options.workdaysOnly && businessInterval) {\r\n var workWeek = options.workWeek.length * dateIntervals.day;\r\n var weekend = dateIntervals.week - workWeek;\r\n if (workWeek !== businessInterval && weekend < businessInterval) {\r\n var weekendsCount = Math.ceil(businessInterval / dateIntervals.week);\r\n businessInterval -= weekend * weekendsCount\r\n } else if (weekend >= businessInterval && businessInterval > dateIntervals.day) {\r\n businessInterval = dateIntervals.day\r\n }\r\n }\r\n return businessInterval\r\n },\r\n _getConvertIntervalCoefficient(intervalInPx, screenDelta) {\r\n var ratioOfCanvasRange = this._translator.ratioOfCanvasRange();\r\n return ratioOfCanvasRange / (ratioOfCanvasRange * screenDelta / (intervalInPx + screenDelta))\r\n },\r\n _calculateValueMargins(ticks) {\r\n this._resetMargins();\r\n var margins = this.getMarginOptions();\r\n var marginSize = (margins.size || 0) / 2;\r\n var options = this._options;\r\n var dataRange = this._getViewportRange();\r\n var viewPort = this.getViewport();\r\n var screenDelta = this._getScreenDelta();\r\n var isDiscrete = -1 !== (options.type || \"\").indexOf(constants.discrete);\r\n var valueMarginsEnabled = options.valueMarginsEnabled && !isDiscrete && !this.customPositionIsBoundaryOrthogonalAxis();\r\n var translator = this._translator;\r\n var minValueMargin = options.minValueMargin;\r\n var maxValueMargin = options.maxValueMargin;\r\n var minPadding = 0;\r\n var maxPadding = 0;\r\n var interval = 0;\r\n var rangeInterval;\r\n if (dataRange.stubData || !screenDelta) {\r\n return {\r\n startPadding: 0,\r\n endPadding: 0\r\n }\r\n }\r\n if (this.isArgumentAxis && margins.checkInterval) {\r\n rangeInterval = this._calculateRangeInterval(dataRange.interval);\r\n var pxInterval = translator.getInterval(rangeInterval);\r\n if (isFinite(pxInterval)) {\r\n interval = Math.ceil(pxInterval / (2 * this._getConvertIntervalCoefficient(pxInterval, screenDelta)))\r\n } else {\r\n rangeInterval = 0\r\n }\r\n }\r\n var minPercentPadding;\r\n var maxPercentPadding;\r\n var maxPaddingValue = screenDelta * MAX_MARGIN_VALUE / 2;\r\n if (valueMarginsEnabled) {\r\n if (isDefined(minValueMargin)) {\r\n minPercentPadding = isFinite(minValueMargin) ? minValueMargin : 0\r\n } else if (!this.isArgumentAxis && margins.checkInterval && valueOf(dataRange.minVisible) > 0 && valueOf(dataRange.minVisible) === valueOf(dataRange.min)) {\r\n minPadding = MIN_BAR_MARGIN\r\n } else {\r\n minPadding = Math.max(marginSize, interval);\r\n minPadding = Math.min(maxPaddingValue, minPadding)\r\n }\r\n if (isDefined(maxValueMargin)) {\r\n maxPercentPadding = isFinite(maxValueMargin) ? maxValueMargin : 0\r\n } else if (!this.isArgumentAxis && margins.checkInterval && valueOf(dataRange.maxVisible) < 0 && valueOf(dataRange.maxVisible) === valueOf(dataRange.max)) {\r\n maxPadding = MIN_BAR_MARGIN\r\n } else {\r\n maxPadding = Math.max(marginSize, interval);\r\n maxPadding = Math.min(maxPaddingValue, maxPadding)\r\n }\r\n }\r\n var percentStick = margins.percentStick && !this.isArgumentAxis;\r\n if (percentStick) {\r\n if (1 === _abs(dataRange.max)) {\r\n maxPadding = 0\r\n }\r\n if (1 === _abs(dataRange.min)) {\r\n minPadding = 0\r\n }\r\n }\r\n var canvasStartEnd = this._getCanvasStartEnd();\r\n var commonMargin = 1 + (minPercentPadding || 0) + (maxPercentPadding || 0);\r\n var screenDeltaWithMargins = (screenDelta - minPadding - maxPadding) / commonMargin || screenDelta;\r\n if (void 0 !== minPercentPadding || void 0 !== maxPercentPadding) {\r\n if (void 0 !== minPercentPadding) {\r\n minPadding = screenDeltaWithMargins * minPercentPadding\r\n }\r\n if (void 0 !== maxPercentPadding) {\r\n maxPadding = screenDeltaWithMargins * maxPercentPadding\r\n }\r\n }\r\n var minValue;\r\n var maxValue;\r\n if (options.type !== constants.discrete && ticks && ticks.length > 1 && !options.skipViewportExtending && !viewPort.action && false !== options.endOnTick) {\r\n var length = ticks.length;\r\n var firstTickPosition = translator.translate(ticks[0].value);\r\n var lastTickPosition = translator.translate(ticks[length - 1].value);\r\n var invertMultiplier = firstTickPosition > lastTickPosition ? -1 : 1;\r\n var minTickPadding = _max(invertMultiplier * (canvasStartEnd.start - firstTickPosition), 0);\r\n var maxTickPadding = _max(invertMultiplier * (lastTickPosition - canvasStartEnd.end), 0);\r\n if (minTickPadding > minPadding || maxTickPadding > maxPadding) {\r\n var commonPadding = maxTickPadding + minTickPadding;\r\n var coeff = this._getConvertIntervalCoefficient(commonPadding, screenDelta);\r\n if (minTickPadding >= minPadding) {\r\n minValue = ticks[0].value\r\n }\r\n if (maxTickPadding >= maxPadding) {\r\n maxValue = ticks[length - 1].value\r\n }\r\n minPadding = _max(minTickPadding, minPadding) / coeff;\r\n maxPadding = _max(maxTickPadding, maxPadding) / coeff\r\n }\r\n }\r\n minPercentPadding = void 0 === minPercentPadding ? minPadding / screenDeltaWithMargins : minPercentPadding;\r\n maxPercentPadding = void 0 === maxPercentPadding ? maxPadding / screenDeltaWithMargins : maxPercentPadding;\r\n if (!isDiscrete) {\r\n if (this._translator.isInverted()) {\r\n var _minValue, _maxValue;\r\n minValue = null !== (_minValue = minValue) && void 0 !== _minValue ? _minValue : translator.from(canvasStartEnd.start + screenDelta * minPercentPadding, -1);\r\n maxValue = null !== (_maxValue = maxValue) && void 0 !== _maxValue ? _maxValue : translator.from(canvasStartEnd.end - screenDelta * maxPercentPadding, 1)\r\n } else {\r\n var _minValue2, _maxValue2;\r\n minValue = null !== (_minValue2 = minValue) && void 0 !== _minValue2 ? _minValue2 : translator.from(canvasStartEnd.start - screenDelta * minPercentPadding, -1);\r\n maxValue = null !== (_maxValue2 = maxValue) && void 0 !== _maxValue2 ? _maxValue2 : translator.from(canvasStartEnd.end + screenDelta * maxPercentPadding, 1)\r\n }\r\n }\r\n var {\r\n correctedMin: correctedMin,\r\n correctedMax: correctedMax,\r\n start: start,\r\n end: end\r\n } = this.getCorrectedValuesToZero(minValue, maxValue);\r\n minPadding = null !== start && void 0 !== start ? start : minPadding;\r\n maxPadding = null !== end && void 0 !== end ? end : maxPadding;\r\n return {\r\n startPadding: translator.isInverted() ? maxPadding : minPadding,\r\n endPadding: translator.isInverted() ? minPadding : maxPadding,\r\n minValue: null !== correctedMin && void 0 !== correctedMin ? correctedMin : minValue,\r\n maxValue: null !== correctedMax && void 0 !== correctedMax ? correctedMax : maxValue,\r\n interval: rangeInterval,\r\n isSpacedMargin: minPadding === maxPadding && 0 !== minPadding\r\n }\r\n },\r\n getCorrectedValuesToZero(minValue, maxValue) {\r\n var that = this;\r\n var translator = that._translator;\r\n var canvasStartEnd = that._getCanvasStartEnd();\r\n var dataRange = that._getViewportRange();\r\n var screenDelta = that._getScreenDelta();\r\n var options = that._options;\r\n var start;\r\n var end;\r\n var correctedMin;\r\n var correctedMax;\r\n var correctZeroLevel = (minPoint, maxPoint) => {\r\n var minExpectedPadding = _abs(canvasStartEnd.start - minPoint);\r\n var maxExpectedPadding = _abs(canvasStartEnd.end - maxPoint);\r\n var coeff = that._getConvertIntervalCoefficient(minExpectedPadding + maxExpectedPadding, screenDelta);\r\n start = minExpectedPadding / coeff;\r\n end = maxExpectedPadding / coeff\r\n };\r\n if (!that.isArgumentAxis && \"datetime\" !== options.dataType) {\r\n if (minValue * dataRange.min <= 0 && minValue * dataRange.minVisible <= 0) {\r\n correctZeroLevel(translator.translate(0), translator.translate(maxValue));\r\n correctedMin = 0\r\n }\r\n if (maxValue * dataRange.max <= 0 && maxValue * dataRange.maxVisible <= 0) {\r\n correctZeroLevel(translator.translate(minValue), translator.translate(0));\r\n correctedMax = 0\r\n }\r\n }\r\n return {\r\n start: isFinite(start) ? start : null,\r\n end: isFinite(end) ? end : null,\r\n correctedMin: correctedMin,\r\n correctedMax: correctedMax\r\n }\r\n },\r\n applyMargins() {\r\n if (this._isSynchronized) {\r\n return\r\n }\r\n var margins = this._calculateValueMargins(this._majorTicks);\r\n var canvas = extend({}, this._canvas, {\r\n startPadding: margins.startPadding,\r\n endPadding: margins.endPadding\r\n });\r\n this._translator.updateCanvas(this._processCanvas(canvas));\r\n if (isFinite(margins.interval)) {\r\n var br = this._translator.getBusinessRange();\r\n br.addRange({\r\n interval: margins.interval\r\n });\r\n this._translator.updateBusinessRange(br)\r\n }\r\n },\r\n _resetMargins: function() {\r\n this._reinitTranslator(this._getViewportRange());\r\n if (this._canvas) {\r\n this._translator.updateCanvas(this._processCanvas(this._canvas))\r\n }\r\n },\r\n _createConstantLines() {\r\n var constantLines = (this._options.constantLines || []).map(o => createConstantLine(this, o));\r\n this._outsideConstantLines = constantLines.filter(l => \"outside\" === l.labelPosition);\r\n this._insideConstantLines = constantLines.filter(l => \"inside\" === l.labelPosition)\r\n },\r\n draw: function(canvas, borderOptions) {\r\n var that = this;\r\n var options = this._options;\r\n that.borderOptions = borderOptions || {\r\n visible: false\r\n };\r\n that._resetMargins();\r\n that.createTicks(canvas);\r\n that.applyMargins();\r\n that._clearAxisGroups();\r\n initTickCoords(that._majorTicks);\r\n initTickCoords(that._minorTicks);\r\n initTickCoords(that._boundaryTicks);\r\n that._axisGroup.append(that._axesContainerGroup);\r\n that._drawAxis();\r\n that._drawTitle();\r\n drawTickMarks(that._majorTicks, options.tick);\r\n drawTickMarks(that._minorTicks, options.minorTick);\r\n drawTickMarks(that._boundaryTicks, options.tick);\r\n var drawGridLine = that._getGridLineDrawer();\r\n drawGrids(that._majorTicks, drawGridLine);\r\n drawGrids(that._minorTicks, drawGridLine);\r\n callAction(that._majorTicks, \"drawLabel\", that._getViewportRange(), that._getTemplate(options.label.template));\r\n that._templatesRendered && that._templatesRendered.reject();\r\n that._templatesRendered = new Deferred;\r\n that._majorTicks.forEach((function(tick) {\r\n tick.labelRotationAngle = 0;\r\n tick.labelAlignment = void 0;\r\n tick.labelOffset = 0\r\n }));\r\n callAction(that._outsideConstantLines.concat(that._insideConstantLines), \"draw\");\r\n callAction(that._strips, \"draw\");\r\n that._dateMarkers = that._drawDateMarkers() || [];\r\n that._stripLabelAxesGroup && that._axisStripLabelGroup.append(that._stripLabelAxesGroup);\r\n that._gridContainerGroup && that._axisGridGroup.append(that._gridContainerGroup);\r\n that._stripsGroup && that._axisStripGroup.append(that._stripsGroup);\r\n that._labelsAxesGroup && that._axisElementsGroup.append(that._labelsAxesGroup);\r\n if (that._constantLinesGroup) {\r\n that._axisConstantLineGroups.above.inside.append(that._constantLinesGroup.above);\r\n that._axisConstantLineGroups.above.outside1.append(that._constantLinesGroup.above);\r\n that._axisConstantLineGroups.above.outside2.append(that._constantLinesGroup.above);\r\n that._axisConstantLineGroups.under.inside.append(that._constantLinesGroup.under);\r\n that._axisConstantLineGroups.under.outside1.append(that._constantLinesGroup.under);\r\n that._axisConstantLineGroups.under.outside2.append(that._constantLinesGroup.under)\r\n }\r\n that._measureTitle();\r\n measureLabels(that._majorTicks);\r\n !options.label.template && that._applyWordWrap();\r\n measureLabels(that._outsideConstantLines);\r\n measureLabels(that._insideConstantLines);\r\n measureLabels(that._strips);\r\n measureLabels(that._dateMarkers);\r\n that._adjustConstantLineLabels(that._insideConstantLines);\r\n that._adjustStripLabels();\r\n var offset = that._constantLabelOffset = that._adjustConstantLineLabels(that._outsideConstantLines);\r\n if (!that._translator.getBusinessRange().isEmpty()) {\r\n that._setLabelsPlacement();\r\n offset = that._adjustLabels(offset)\r\n }\r\n when.apply(this, that._majorTicks.map(tick => tick.getTemplateDeferred())).done(() => {\r\n that._templatesRendered.resolve()\r\n });\r\n offset = that._adjustDateMarkers(offset);\r\n that._adjustTitle(offset)\r\n },\r\n getTemplatesDef() {\r\n return this._templatesRendered\r\n },\r\n setRenderedState(state) {\r\n this._drawn = state\r\n },\r\n isRendered() {\r\n return this._drawn\r\n },\r\n _applyWordWrap() {\r\n var convertedTickInterval;\r\n var textWidth;\r\n var textHeight;\r\n var options = this._options;\r\n var tickInterval = this._tickInterval;\r\n if (isDefined(tickInterval)) {\r\n convertedTickInterval = this.getTranslator().getInterval(\"datetime\" === options.dataType ? dateUtils.dateToMilliseconds(tickInterval) : tickInterval)\r\n }\r\n var displayMode = this._validateDisplayMode(options.label.displayMode);\r\n var overlappingMode = this._validateOverlappingMode(options.label.overlappingBehavior, displayMode);\r\n var wordWrapMode = options.label.wordWrap || \"none\";\r\n var overflowMode = options.label.textOverflow || \"none\";\r\n if ((\"none\" !== wordWrapMode || \"none\" !== overflowMode) && displayMode !== ROTATE && overlappingMode !== ROTATE && \"auto\" !== overlappingMode) {\r\n var usefulSpace = isDefined(options.placeholderSize) ? options.placeholderSize - options.label.indentFromAxis : void 0;\r\n if (this._isHorizontal) {\r\n textWidth = convertedTickInterval;\r\n textHeight = usefulSpace\r\n } else {\r\n textWidth = usefulSpace;\r\n textHeight = convertedTickInterval\r\n }\r\n var correctByWidth = false;\r\n var correctByHeight = false;\r\n if (textWidth) {\r\n if (this._majorTicks.some(tick => tick.labelBBox.width > textWidth)) {\r\n correctByWidth = true\r\n }\r\n }\r\n if (textHeight) {\r\n if (this._majorTicks.some(tick => tick.labelBBox.height > textHeight)) {\r\n correctByHeight = true\r\n }\r\n }\r\n if (correctByWidth || correctByHeight) {\r\n this._majorTicks.forEach(tick => {\r\n tick.label && tick.label.setMaxSize(textWidth, textHeight, options.label)\r\n });\r\n measureLabels(this._majorTicks)\r\n }\r\n }\r\n },\r\n _measureTitle: _noop,\r\n animate() {\r\n callAction(this._majorTicks, \"animateLabels\")\r\n },\r\n updateSize(canvas, animate) {\r\n var updateTitle = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : true;\r\n this.updateCanvas(canvas);\r\n if (updateTitle) {\r\n this._checkTitleOverflow();\r\n this._measureTitle();\r\n this._updateTitleCoords()\r\n }\r\n this._reinitTranslator(this._getViewportRange());\r\n this.applyMargins();\r\n var animationEnabled = !this._firstDrawing && animate;\r\n var options = this._options;\r\n initTickCoords(this._majorTicks);\r\n initTickCoords(this._minorTicks);\r\n initTickCoords(this._boundaryTicks);\r\n if (this._resetApplyingAnimation && !this._firstDrawing) {\r\n this._resetStartCoordinates()\r\n }\r\n cleanUpInvalidTicks(this._majorTicks);\r\n cleanUpInvalidTicks(this._minorTicks);\r\n cleanUpInvalidTicks(this._boundaryTicks);\r\n if (this._axisElement) {\r\n this._updateAxisElementPosition()\r\n }\r\n updateTicksPosition(this._majorTicks, options.tick, animationEnabled);\r\n updateTicksPosition(this._minorTicks, options.minorTick, animationEnabled);\r\n updateTicksPosition(this._boundaryTicks, options.tick);\r\n callAction(this._majorTicks, \"updateLabelPosition\", animationEnabled);\r\n this._outsideConstantLines.concat(this._insideConstantLines || []).forEach(l => l.updatePosition(animationEnabled));\r\n callAction(this._strips, \"updatePosition\", animationEnabled);\r\n updateGridsPosition(this._majorTicks, animationEnabled);\r\n updateGridsPosition(this._minorTicks, animationEnabled);\r\n if (animationEnabled) {\r\n callAction(this._ticksToRemove || [], \"fadeOutElements\")\r\n }\r\n this.prepareAnimation();\r\n this._ticksToRemove = null;\r\n if (!this._translator.getBusinessRange().isEmpty()) {\r\n this._firstDrawing = false\r\n }\r\n this._resetApplyingAnimation = false;\r\n this._updateLabelsPosition()\r\n },\r\n _updateLabelsPosition: _noop,\r\n prepareAnimation() {\r\n var action = \"saveCoords\";\r\n callAction(this._majorTicks, action);\r\n callAction(this._minorTicks, action);\r\n callAction(this._insideConstantLines, action);\r\n callAction(this._outsideConstantLines, action);\r\n callAction(this._strips, action)\r\n },\r\n _resetStartCoordinates() {\r\n var action = \"resetCoordinates\";\r\n callAction(this._majorTicks, action);\r\n callAction(this._minorTicks, action);\r\n callAction(this._insideConstantLines, action);\r\n callAction(this._outsideConstantLines, action);\r\n callAction(this._strips, action)\r\n },\r\n applyClipRects: function(elementsClipID, canvasClipID) {\r\n this._axisGroup.attr({\r\n \"clip-path\": canvasClipID\r\n });\r\n this._axisStripGroup.attr({\r\n \"clip-path\": elementsClipID\r\n });\r\n this._axisElementsGroup.attr({\r\n \"clip-path\": canvasClipID\r\n })\r\n },\r\n _validateVisualRange(optionValue) {\r\n var range = getVizRangeObject(optionValue);\r\n if (void 0 !== range.startValue) {\r\n range.startValue = this.validateUnit(range.startValue)\r\n }\r\n if (void 0 !== range.endValue) {\r\n range.endValue = this.validateUnit(range.endValue)\r\n }\r\n return convertVisualRangeObject(range, !_isArray(optionValue))\r\n },\r\n _validateOptions(options) {\r\n options.wholeRange = this._validateVisualRange(options.wholeRange);\r\n options.visualRange = options._customVisualRange = this._validateVisualRange(options._customVisualRange);\r\n this._setVisualRange(options._customVisualRange)\r\n },\r\n validate() {\r\n var options = this._options;\r\n var dataType = this.isArgumentAxis ? options.argumentType : options.valueType;\r\n var parser = dataType ? getParser(dataType) : function(unit) {\r\n return unit\r\n };\r\n this.parser = parser;\r\n options.dataType = dataType;\r\n this._validateOptions(options)\r\n },\r\n resetVisualRange(isSilent) {\r\n this._seriesData.minVisible = this._seriesData.min;\r\n this._seriesData.maxVisible = this._seriesData.max;\r\n this.handleZooming([null, null], {\r\n start: !!isSilent,\r\n end: !!isSilent\r\n })\r\n },\r\n _setVisualRange(visualRange, allowPartialUpdate) {\r\n var range = this.adjustRange(getVizRangeObject(visualRange));\r\n if (allowPartialUpdate) {\r\n isDefined(range.startValue) && (this._viewport.startValue = range.startValue);\r\n isDefined(range.endValue) && (this._viewport.endValue = range.endValue)\r\n } else {\r\n this._viewport = range\r\n }\r\n },\r\n _applyZooming(visualRange, allowPartialUpdate) {\r\n this._resetVisualRangeOption();\r\n this._setVisualRange(visualRange, allowPartialUpdate);\r\n var viewPort = this.getViewport();\r\n this._seriesData.userBreaks = this._getScaleBreaks(this._options, {\r\n minVisible: viewPort.startValue,\r\n maxVisible: viewPort.endValue\r\n }, this._series, this.isArgumentAxis);\r\n this._translator.updateBusinessRange(this._getViewportRange())\r\n },\r\n getZoomStartEventArg(event, actionType) {\r\n return {\r\n axis: this,\r\n range: this.visualRange(),\r\n cancel: false,\r\n event: event,\r\n actionType: actionType\r\n }\r\n },\r\n _getZoomEndEventArg(previousRange, event, actionType, zoomFactor, shift) {\r\n var newRange = this.visualRange();\r\n return {\r\n axis: this,\r\n previousRange: previousRange,\r\n range: newRange,\r\n cancel: false,\r\n event: event,\r\n actionType: actionType,\r\n zoomFactor: zoomFactor,\r\n shift: shift,\r\n rangeStart: newRange.startValue,\r\n rangeEnd: newRange.endValue\r\n }\r\n },\r\n getZoomBounds() {\r\n var wholeRange = getVizRangeObject(this._options.wholeRange);\r\n var range = this.getTranslator().getBusinessRange();\r\n var secondPriorityRange = {\r\n startValue: getZoomBoundValue(this._initRange.startValue, range.min),\r\n endValue: getZoomBoundValue(this._initRange.endValue, range.max)\r\n };\r\n return {\r\n startValue: getZoomBoundValue(wholeRange.startValue, secondPriorityRange.startValue),\r\n endValue: getZoomBoundValue(wholeRange.endValue, secondPriorityRange.endValue)\r\n }\r\n },\r\n setInitRange() {\r\n this._initRange = {};\r\n if (0 === Object.keys(this._options.wholeRange || {}).length) {\r\n this._initRange = this.getZoomBounds()\r\n }\r\n },\r\n _resetVisualRangeOption() {\r\n this._options._customVisualRange = {}\r\n },\r\n getTemplatesGroups() {\r\n var ticks = this._majorTicks;\r\n if (ticks) {\r\n return this._majorTicks.map(tick => tick.templateContainer).filter(item => isDefined(item))\r\n } else {\r\n return []\r\n }\r\n },\r\n setCustomVisualRange(range) {\r\n this._options._customVisualRange = range\r\n },\r\n visualRange() {\r\n var args = arguments;\r\n var visualRange;\r\n if (0 === args.length) {\r\n var adjustedRange = this._getAdjustedBusinessRange();\r\n var startValue = adjustedRange.minVisible;\r\n var endValue = adjustedRange.maxVisible;\r\n if (this._options.type === constants.discrete) {\r\n var _startValue, _endValue;\r\n startValue = null !== (_startValue = startValue) && void 0 !== _startValue ? _startValue : adjustedRange.categories[0];\r\n endValue = null !== (_endValue = endValue) && void 0 !== _endValue ? _endValue : adjustedRange.categories[adjustedRange.categories.length - 1];\r\n return {\r\n startValue: startValue,\r\n endValue: endValue,\r\n categories: getCategoriesInfo(adjustedRange.categories, startValue, endValue).categories\r\n }\r\n }\r\n return {\r\n startValue: startValue,\r\n endValue: endValue\r\n }\r\n } else if (_isArray(args[0])) {\r\n visualRange = args[0]\r\n } else if (isPlainObject(args[0])) {\r\n visualRange = extend({}, args[0])\r\n } else {\r\n visualRange = [args[0], args[1]]\r\n }\r\n var zoomResults = this.handleZooming(visualRange, args[1]);\r\n if (!zoomResults.isPrevented) {\r\n this._visualRange(this, zoomResults)\r\n }\r\n },\r\n handleZooming(visualRange, preventEvents, domEvent, action) {\r\n preventEvents = preventEvents || {};\r\n if (isDefined(visualRange)) {\r\n visualRange = this._validateVisualRange(visualRange);\r\n visualRange.action = action\r\n }\r\n var zoomStartEvent = this.getZoomStartEventArg(domEvent, action);\r\n var previousRange = zoomStartEvent.range;\r\n !preventEvents.start && this._eventTrigger(\"zoomStart\", zoomStartEvent);\r\n var zoomResults = {\r\n isPrevented: zoomStartEvent.cancel,\r\n skipEventRising: preventEvents.skipEventRising,\r\n range: visualRange || zoomStartEvent.range\r\n };\r\n if (!zoomStartEvent.cancel) {\r\n isDefined(visualRange) && this._applyZooming(visualRange, preventEvents.allowPartialUpdate);\r\n if (!isDefined(this._storedZoomEndParams)) {\r\n this._storedZoomEndParams = {\r\n startRange: previousRange,\r\n type: this.getOptions().type\r\n }\r\n }\r\n this._storedZoomEndParams.event = domEvent;\r\n this._storedZoomEndParams.action = action;\r\n this._storedZoomEndParams.prevent = !!preventEvents.end\r\n }\r\n return zoomResults\r\n },\r\n handleZoomEnd() {\r\n if (isDefined(this._storedZoomEndParams) && !this._storedZoomEndParams.prevent) {\r\n var previousRange = this._storedZoomEndParams.startRange;\r\n var domEvent = this._storedZoomEndParams.event;\r\n var action = this._storedZoomEndParams.action;\r\n var previousBusinessRange = {\r\n minVisible: previousRange.startValue,\r\n maxVisible: previousRange.endValue,\r\n categories: previousRange.categories\r\n };\r\n var typeIsNotChanged = this.getOptions().type === this._storedZoomEndParams.type;\r\n var shift = typeIsNotChanged ? adjust(this.getVisualRangeCenter() - this.getVisualRangeCenter(previousBusinessRange, false)) : NaN;\r\n var zoomFactor = typeIsNotChanged ? +(Math.round(this.getVisualRangeLength(previousBusinessRange) / (this.getVisualRangeLength() || 1) + \"e+2\") + \"e-2\") : NaN;\r\n var zoomEndEvent = this._getZoomEndEventArg(previousRange, domEvent, action, zoomFactor, shift);\r\n zoomEndEvent.cancel = this.checkZoomingLowerLimitOvercome(1 === zoomFactor ? \"pan\" : \"zoom\", zoomFactor).stopInteraction;\r\n this._eventTrigger(\"zoomEnd\", zoomEndEvent);\r\n if (zoomEndEvent.cancel) {\r\n this._restorePreviousVisualRange(previousRange)\r\n }\r\n this._storedZoomEndParams = null\r\n }\r\n },\r\n _restorePreviousVisualRange(previousRange) {\r\n this._storedZoomEndParams = null;\r\n this._applyZooming(previousRange);\r\n this._visualRange(this, previousRange)\r\n },\r\n checkZoomingLowerLimitOvercome(actionType, zoomFactor, range) {\r\n var options = this._options;\r\n var translator = this._translator;\r\n var minZoom = options.minVisualRangeLength;\r\n var correctedRange = range;\r\n var visualRange;\r\n var isOvercoming = \"zoom\" === actionType && zoomFactor >= 1;\r\n var businessRange = translator.getBusinessRange();\r\n if (range) {\r\n visualRange = this.adjustRange(getVizRangeObject(range));\r\n visualRange = {\r\n minVisible: visualRange.startValue,\r\n maxVisible: visualRange.endValue,\r\n categories: businessRange.categories\r\n }\r\n }\r\n var beforeVisualRangeLength = this.getVisualRangeLength(businessRange);\r\n var afterVisualRangeLength = this.getVisualRangeLength(visualRange);\r\n if (isDefined(minZoom) || \"discrete\" === options.type) {\r\n minZoom = translator.convert(minZoom);\r\n if (visualRange && minZoom < beforeVisualRangeLength && minZoom >= afterVisualRangeLength) {\r\n correctedRange = getVizRangeObject(translator.getRangeByMinZoomValue(minZoom, visualRange));\r\n isOvercoming = false\r\n } else {\r\n isOvercoming &= minZoom > afterVisualRangeLength\r\n }\r\n } else {\r\n var canvasLength = this._translator.canvasLength;\r\n var fullRange = {\r\n minVisible: businessRange.min,\r\n maxVisible: businessRange.max,\r\n categories: businessRange.categories\r\n };\r\n isOvercoming &= this.getVisualRangeLength(fullRange) / canvasLength >= afterVisualRangeLength\r\n }\r\n return {\r\n stopInteraction: !!isOvercoming,\r\n correctedRange: correctedRange\r\n }\r\n },\r\n isExtremePosition(isMax) {\r\n var extremeDataValue;\r\n var seriesData;\r\n if (\"discrete\" === this._options.type) {\r\n seriesData = this._translator.getBusinessRange();\r\n extremeDataValue = isMax ? seriesData.categories[seriesData.categories.length - 1] : seriesData.categories[0]\r\n } else {\r\n seriesData = this.getZoomBounds();\r\n extremeDataValue = isMax ? seriesData.endValue : seriesData.startValue\r\n }\r\n var translator = this.getTranslator();\r\n var extremePoint = translator.translate(extremeDataValue);\r\n var visualRange = this.visualRange();\r\n var visualRangePoint = isMax ? translator.translate(visualRange.endValue) : translator.translate(visualRange.startValue);\r\n return _abs(visualRangePoint - extremePoint) < SCROLL_THRESHOLD\r\n },\r\n getViewport() {\r\n return this._viewport\r\n },\r\n getFullTicks: function() {\r\n var majors = this._majorTicks || [];\r\n if (this._options.type === constants.discrete) {\r\n return convertTicksToValues(majors)\r\n } else {\r\n return convertTicksToValues(majors.concat(this._minorTicks, this._boundaryTicks)).sort((function(a, b) {\r\n return valueOf(a) - valueOf(b)\r\n }))\r\n }\r\n },\r\n measureLabels: function(canvas, withIndents) {\r\n var that = this;\r\n var options = that._options;\r\n var widthAxis = options.visible ? options.width : 0;\r\n var ticks;\r\n var indent = withIndents ? options.label.indentFromAxis + .5 * options.tick.length : 0;\r\n var tickInterval;\r\n var viewportRange = that._getViewportRange();\r\n if (viewportRange.isEmpty() || !options.label.visible || !that._axisElementsGroup) {\r\n return {\r\n height: widthAxis,\r\n width: widthAxis,\r\n x: 0,\r\n y: 0\r\n }\r\n }\r\n if (that._majorTicks) {\r\n ticks = convertTicksToValues(that._majorTicks)\r\n } else {\r\n that.updateCanvas(canvas);\r\n ticks = that._createTicksAndLabelFormat(viewportRange, _noop);\r\n tickInterval = ticks.tickInterval;\r\n ticks = ticks.ticks\r\n }\r\n var maxText = ticks.reduce((function(prevLabel, tick, index) {\r\n var label = that.formatLabel(tick, options.label, viewportRange, void 0, tickInterval, ticks);\r\n if (prevLabel.length < label.length) {\r\n return label\r\n } else {\r\n return prevLabel\r\n }\r\n }), that.formatLabel(ticks[0], options.label, viewportRange, void 0, tickInterval, ticks));\r\n var text = that._renderer.text(maxText, 0, 0).css(that._textFontStyles).attr(that._textOptions).append(that._renderer.root);\r\n var box = text.getBBox();\r\n text.remove();\r\n return {\r\n x: box.x,\r\n y: box.y,\r\n width: box.width + indent,\r\n height: box.height + indent\r\n }\r\n },\r\n _setLabelsPlacement: function() {\r\n if (!this._options.label.visible) {\r\n return\r\n }\r\n var labelOpt = this._options.label;\r\n var displayMode = this._validateDisplayMode(labelOpt.displayMode);\r\n var overlappingMode = this._validateOverlappingMode(labelOpt.overlappingBehavior, displayMode);\r\n var ignoreOverlapping = \"none\" === overlappingMode || \"ignore\" === overlappingMode;\r\n var behavior = {\r\n rotationAngle: labelOpt.rotationAngle,\r\n staggeringSpacing: labelOpt.staggeringSpacing\r\n };\r\n var notRecastStep;\r\n var boxes = this._majorTicks.map((function(tick) {\r\n return tick.labelBBox\r\n }));\r\n var step = this._getStep(boxes);\r\n switch (displayMode) {\r\n case ROTATE:\r\n if (ignoreOverlapping) {\r\n notRecastStep = true;\r\n step = 1\r\n }\r\n this._applyLabelMode(displayMode, step, boxes, labelOpt, notRecastStep);\r\n break;\r\n case \"stagger\":\r\n if (ignoreOverlapping) {\r\n step = 2\r\n }\r\n this._applyLabelMode(displayMode, _max(step, 2), boxes, labelOpt);\r\n break;\r\n default:\r\n this._applyLabelOverlapping(boxes, overlappingMode, step, behavior)\r\n }\r\n },\r\n _applyLabelOverlapping: function(boxes, mode, step, behavior) {\r\n var labelOpt = this._options.label;\r\n var majorTicks = this._majorTicks;\r\n if (\"none\" === mode || \"ignore\" === mode) {\r\n return\r\n }\r\n if (step > 1 && boxes.some((function(box, index, array) {\r\n if (0 === index) {\r\n return false\r\n }\r\n return constants.areLabelsOverlap(box, array[index - 1], labelOpt.minSpacing, labelOpt.alignment)\r\n }))) {\r\n this._applyLabelMode(mode, step, boxes, behavior)\r\n }\r\n this._checkBoundedLabelsOverlapping(majorTicks, boxes, mode);\r\n this._checkShiftedLabels(majorTicks, boxes, labelOpt.minSpacing, labelOpt.alignment)\r\n },\r\n _applyLabelMode: function(mode, step, boxes, behavior, notRecastStep) {\r\n var majorTicks = this._majorTicks;\r\n var labelOpt = this._options.label;\r\n var angle = behavior.rotationAngle;\r\n var labelHeight;\r\n var alignment;\r\n var func;\r\n switch (mode) {\r\n case ROTATE:\r\n if (!labelOpt.userAlignment) {\r\n alignment = angle < 0 ? RIGHT : LEFT;\r\n if (angle % 90 === 0) {\r\n alignment = CENTER\r\n }\r\n }\r\n step = notRecastStep ? step : this._getStep(boxes, angle);\r\n func = function(tick) {\r\n var contentContainer = tick.getContentContainer();\r\n if (!contentContainer) {\r\n return\r\n }\r\n contentContainer.rotate(angle);\r\n tick.labelRotationAngle = angle;\r\n alignment && (tick.labelAlignment = alignment)\r\n };\r\n updateLabels(majorTicks, step, func);\r\n break;\r\n case \"stagger\":\r\n labelHeight = this._getMaxLabelHeight(boxes, behavior.staggeringSpacing);\r\n func = function(tick, index) {\r\n if (index / (step - 1) % 2 !== 0) {\r\n tick.labelOffset = labelHeight\r\n }\r\n };\r\n updateLabels(majorTicks, step - 1, func);\r\n break;\r\n case \"auto\":\r\n case \"_auto\":\r\n if (2 === step) {\r\n this._applyLabelMode(\"stagger\", step, boxes, behavior)\r\n } else {\r\n this._applyLabelMode(ROTATE, step, boxes, {\r\n rotationAngle: getOptimalAngle(boxes, labelOpt)\r\n })\r\n }\r\n break;\r\n default:\r\n updateLabels(majorTicks, step)\r\n }\r\n },\r\n getMarkerTrackers: _noop,\r\n _drawDateMarkers: _noop,\r\n _adjustDateMarkers: _noop,\r\n coordsIn: _noop,\r\n areCoordsOutsideAxis: _noop,\r\n _getSkippedCategory: _noop,\r\n _initAxisPositions: _noop,\r\n _drawTitle: _noop,\r\n _updateTitleCoords: _noop,\r\n _adjustConstantLineLabels: _noop,\r\n _createTranslator: function() {\r\n return new Translator2D({}, {}, {})\r\n },\r\n _updateTranslator: function() {\r\n var translator = this._translator;\r\n translator.update(translator.getBusinessRange(), this._canvas || {}, this._getTranslatorOptions())\r\n },\r\n _getTranslatorOptions: function() {\r\n var _options$workWeek2, _options$breakStyle$w, _options$breakStyle;\r\n var options = this._options;\r\n return {\r\n isHorizontal: this._isHorizontal,\r\n shiftZeroValue: !this.isArgumentAxis,\r\n interval: options.semiDiscreteInterval,\r\n firstDayOfWeek: null === (_options$workWeek2 = options.workWeek) || void 0 === _options$workWeek2 ? void 0 : _options$workWeek2[0],\r\n stick: this._getStick(),\r\n breaksSize: null !== (_options$breakStyle$w = null === (_options$breakStyle = options.breakStyle) || void 0 === _options$breakStyle ? void 0 : _options$breakStyle.width) && void 0 !== _options$breakStyle$w ? _options$breakStyle$w : 0\r\n }\r\n },\r\n getVisibleArea() {\r\n var canvas = this._getCanvasStartEnd();\r\n return [canvas.start, canvas.end].sort((a, b) => a - b)\r\n },\r\n _getCanvasStartEnd: function() {\r\n var isHorizontal = this._isHorizontal;\r\n var canvas = this._canvas || {};\r\n var invert = this._translator.getBusinessRange().invert;\r\n var coords = isHorizontal ? [canvas.left, canvas.width - canvas.right] : [canvas.height - canvas.bottom, canvas.top];\r\n invert && coords.reverse();\r\n return {\r\n start: coords[0],\r\n end: coords[1]\r\n }\r\n },\r\n _getScreenDelta: function() {\r\n var canvas = this._getCanvasStartEnd();\r\n var breaks = this._seriesData ? this._seriesData.breaks || [] : [];\r\n var breaksLength = breaks.length;\r\n var screenDelta = _abs(canvas.start - canvas.end);\r\n return screenDelta - (breaksLength ? breaks[breaksLength - 1].cumulativeWidth : 0)\r\n },\r\n _getScaleBreaks: function() {\r\n return []\r\n },\r\n _filterBreaks: function() {\r\n return []\r\n },\r\n _adjustTitle: _noop,\r\n _checkTitleOverflow: _noop,\r\n getSpiderTicks: _noop,\r\n setSpiderTicks: _noop,\r\n _checkBoundedLabelsOverlapping: _noop,\r\n _checkShiftedLabels: _noop,\r\n drawScaleBreaks: _noop,\r\n _visualRange: _noop,\r\n _rotateConstantLine: _noop,\r\n applyVisualRangeSetter(visualRangeSetter) {\r\n this._visualRange = visualRangeSetter\r\n },\r\n getCategoriesSorter(argCategories) {\r\n var sort;\r\n if (this.isArgumentAxis) {\r\n sort = argCategories\r\n } else {\r\n var categoriesSortingMethod = this._options.categoriesSortingMethod;\r\n sort = null !== categoriesSortingMethod && void 0 !== categoriesSortingMethod ? categoriesSortingMethod : this._options.categories\r\n }\r\n return sort\r\n },\r\n _getAdjustedBusinessRange() {\r\n return this.adjustViewport(this._translator.getBusinessRange())\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/viz/range_selector/common.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n smartFormatter as _format\r\n} from \"../axes/smart_formatter\";\r\nimport {\r\n isFunction\r\n} from \"../../core/utils/type\";\r\nexport var HEIGHT_COMPACT_MODE = 24;\r\nvar POINTER_SIZE = 4;\r\nvar EMPTY_SLIDER_MARKER_TEXT = \". . .\";\r\nexport var 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\nexport var consts = {\r\n emptySliderMarkerText: EMPTY_SLIDER_MARKER_TEXT,\r\n pointerSize: POINTER_SIZE\r\n};\r\nexport var formatValue = function(value, formatOptions, tickIntervalsInfo, valueType, type, logarithmBase) {\r\n var formatObject = {\r\n value: value,\r\n valueText: _format(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(isFunction(formatOptions.customizeText) ? formatOptions.customizeText.call(formatObject, formatObject) : formatObject.valueText)\r\n};\r\n","/**\r\n * DevExtreme (esm/viz/range_selector/slider_marker.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n patchFontOptions\r\n} from \"../core/utils\";\r\nimport {\r\n consts\r\n} from \"./common\";\r\nvar POINTER_SIZE = consts.pointerSize;\r\nvar SLIDER_MARKER_UPDATE_DELAY = 75;\r\n\r\nfunction SliderMarker(renderer, root, isLeftPointer) {\r\n this._isLeftPointer = isLeftPointer;\r\n this._isOverlapped = false;\r\n this._group = renderer.g().attr({\r\n class: \"slider-marker\"\r\n }).append(root);\r\n this._area = renderer.path(null, \"area\").append(this._group);\r\n this._label = renderer.text().attr({\r\n align: \"left\"\r\n }).append(this._group);\r\n this._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(this._group);\r\n this._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 rectSize = this._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 = this._position;\r\n var isLeft = this._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 if (pointerLeftPoint < rectLeftBorder) {\r\n pointerLeftPoint = rectLeftBorder\r\n }\r\n isLeft && correctCloudBorders()\r\n };\r\n var borderPosition = position;\r\n if (isLeft) {\r\n if (position > this._range[1] - rectWidth) {\r\n rectRightBorder = -position + this._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 if (position - this._range[0] < rectWidth) {\r\n rectLeftBorder = -(position - this._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 this._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 this._range = screenRange;\r\n this._paddingLeftRight = options.paddingLeftRight;\r\n this._paddingTopBottom = options.paddingTopBottom;\r\n this._textHeight = null;\r\n this._colors = [options.invalidRangeColor, options.color];\r\n this._area.attr({\r\n fill: options.color\r\n });\r\n this._border.attr({\r\n fill: options.borderColor\r\n });\r\n this._label.css(patchFontOptions(options.font));\r\n this._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 if (this._isOverlapped !== isOverlapped) {\r\n if (isOverlapped) {\r\n this._border.append(this._group)\r\n } else {\r\n this._isOverlapped && this._border.remove()\r\n }\r\n this._isOverlapped = isOverlapped\r\n }\r\n },\r\n getBorderPosition: function() {\r\n return this._borderPosition\r\n }\r\n};\r\nexport default SliderMarker;\r\n","/**\r\n * DevExtreme (esm/viz/range_selector/slider.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n utils,\r\n formatValue\r\n} from \"./common\";\r\nvar animationSettings = utils.animationSettings;\r\nimport SliderMarker from \"./slider_marker\";\r\nimport {\r\n touchEvents,\r\n pointerEvents\r\n} from \"../../core/utils/support\";\r\nvar SPLITTER_WIDTH = 8;\r\nvar TOUCH_SPLITTER_WIDTH = 20;\r\n\r\nfunction getSliderTrackerWidth(sliderHandleWidth) {\r\n return touchEvents || pointerEvents ? TOUCH_SPLITTER_WIDTH : SPLITTER_WIDTH < sliderHandleWidth ? sliderHandleWidth : SPLITTER_WIDTH\r\n}\r\n\r\nfunction Slider(params, index) {\r\n this._translator = params.translator;\r\n this._sliderGroup = params.renderer.g().attr({\r\n class: \"slider\"\r\n }).append(params.root);\r\n this._line = params.renderer.path(null, \"line\").append(this._sliderGroup);\r\n this._marker = new SliderMarker(params.renderer, this._sliderGroup, 1 === index);\r\n this._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 slider = this._sliderGroup;\r\n var tracker = this._tracker;\r\n var attrs = {\r\n translateX: this._position\r\n };\r\n this._marker.setPosition(this._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 this._formatOptions = {\r\n format: sliderMarkerOptions.format,\r\n customizeText: sliderMarkerOptions.customizeText\r\n };\r\n this._marker.applyOptions(sliderMarkerOptions, this._translator.getScreenRange());\r\n this._colors = [sliderMarkerOptions.invalidRangeColor, sliderHandleOptions.color];\r\n this._sliderGroup.attr({\r\n translateY: verticalRange[0]\r\n });\r\n this._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 this._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(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\nexport default Slider;\r\n","/**\r\n * DevExtreme (esm/viz/range_selector/sliders_controller.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n utils,\r\n consts\r\n} from \"./common\";\r\nimport Slider from \"./slider\";\r\nimport {\r\n normalizeEnum as _normalizeEnum,\r\n rangesAreEqual,\r\n adjustVisualRange\r\n} from \"../core/utils\";\r\nimport {\r\n isNumeric,\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n adjust\r\n} from \"../../core/utils/math\";\r\nvar animationSettings = utils.animationSettings;\r\nvar emptySliderMarkerText = 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 if (target < val) {\r\n end = middle\r\n } else {\r\n start = middle\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 = 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\nexport function SlidersController(params) {\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 this._params = params;\r\n this._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 this._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 this._shutter = params.renderer.path(null, \"area\").append(params.root);\r\n this._sliders = [new Slider(sliderParams, 0), new Slider(sliderParams, 1)];\r\n this._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 selectedRange = this.getSelectedRange();\r\n if (!rangesAreEqual(selectedRange, this._lastSelectedRange)) {\r\n this._params.updateSelectedRange(selectedRange, this._lastSelectedRange, e);\r\n this._lastSelectedRange = selectedRange\r\n }\r\n },\r\n update: function(verticalRange, behavior, isCompactMode, sliderHandleOptions, sliderMarkerOptions, shutterOptions, rangeBounds, fullTicks, selectedRangeColor) {\r\n var screenRange = this._params.translator.getScreenRange();\r\n this._verticalRange = verticalRange;\r\n this._minRange = rangeBounds.minRange;\r\n this._maxRange = rangeBounds.maxRange;\r\n this._animationEnabled = behavior.animationEnabled && this._params.renderer.animationEnabled();\r\n this._allowSlidersSwap = behavior.allowSlidersSwap;\r\n this._sliders[0].update(verticalRange, sliderHandleOptions, sliderMarkerOptions);\r\n this._sliders[1].update(verticalRange, sliderHandleOptions, sliderMarkerOptions);\r\n this._sliders[0]._position = this._sliders[1]._position = screenRange[0];\r\n this._values = !this._params.translator.isValueProlonged && behavior.snapToTicks ? fullTicks : null;\r\n this._areaTracker.attr({\r\n points: buildRectPoints(screenRange[0], verticalRange[0], screenRange[1], verticalRange[1])\r\n });\r\n this._isCompactMode = isCompactMode;\r\n this._shutterOffset = sliderHandleOptions.width / 2;\r\n this._updateSelectedView(shutterOptions, selectedRangeColor);\r\n this._isOnMoving = \"onmoving\" === _normalizeEnum(behavior.callValueChanged);\r\n this._updateSelectedRange();\r\n this._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 sliders = this._sliders;\r\n sliders[0].cancelAnimation();\r\n sliders[1].cancelAnimation();\r\n this._shutter.stopAnimation();\r\n if (this._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 = this._params.translator.getScreenRange()[0];\r\n sliders[1]._position = this._params.translator.getScreenRange()[1];\r\n this._applyTotalPosition(false);\r\n suppressSetSelectedRange(this)\r\n } else {\r\n restoreSetSelectedRange(this)\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 position1 = this._sliders[0].getPosition();\r\n var position2 = this._sliders[1].getPosition();\r\n this._selectedAreaTracker.attr({\r\n points: buildRectPoints(position1, this._verticalRange[0], position2, this._verticalRange[1])\r\n }).css({\r\n cursor: Math.abs(this._params.translator.getScreenRange()[1] - this._params.translator.getScreenRange()[0] - position2 + position1) < .001 ? \"default\" : \"pointer\"\r\n })\r\n },\r\n _applySelectedRangePosition: function(isAnimated) {\r\n var verticalRange = this._verticalRange;\r\n var pos1 = this._sliders[0].getPosition();\r\n var pos2 = this._sliders[1].getPosition();\r\n var screenRange;\r\n var points;\r\n if (this._isCompactMode) {\r\n points = [pos1 + Math.ceil(this._shutterOffset), (verticalRange[0] + verticalRange[1]) / 2, pos2 - Math.floor(this._shutterOffset), (verticalRange[0] + verticalRange[1]) / 2]\r\n } else {\r\n screenRange = this._params.axis.getVisibleArea();\r\n points = [buildRectPoints(screenRange[0], verticalRange[0], Math.max(pos1 - Math.floor(this._shutterOffset), screenRange[0]), verticalRange[1]), buildRectPoints(screenRange[1], verticalRange[0], Math.min(pos2 + Math.ceil(this._shutterOffset), screenRange[1]), verticalRange[1])]\r\n }\r\n if (isAnimated) {\r\n this._shutter.animate({\r\n points: points\r\n }, animationSettings)\r\n } else {\r\n this._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 translator = this._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 {\r\n startValue: startValue,\r\n endValue: endValue\r\n } = 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 = isNumeric(startValue) ? adjust(startValue) : startValue;\r\n endValue = isNumeric(endValue) ? adjust(endValue) : endValue;\r\n var values = compare(translator.to(startValue, -1), translator.to(endValue, 1)) ? [startValue, endValue] : [endValue, startValue];\r\n this._sliders[0].setDisplayValue(values[0]);\r\n this._sliders[1].setDisplayValue(values[1]);\r\n this._sliders[0]._position = translator.to(values[0], -1);\r\n this._sliders[1]._position = translator.to(values[1], 1);\r\n this._applyTotalPosition(true);\r\n this._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 translator = this._params.translator;\r\n var sliders = this._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), this._values);\r\n sliders[0].setDisplayValue(startValue);\r\n sliders[1].setDisplayValue(selectClosestValue(translator.from(translator.to(startValue, -1) + interval, 1), this._values));\r\n sliders[0]._position = startPosition;\r\n sliders[1]._position = endPosition;\r\n this._applyTotalPosition(isAnimated);\r\n if (this._isOnMoving) {\r\n this._processSelectionChanged(e)\r\n }\r\n },\r\n placeSliderAndBeginMoving: function(firstPosition, secondPosition, e) {\r\n var translator = this._params.translator;\r\n var sliders = this._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 (this._minRange) {\r\n thresholdPosition = translator.to(translator.add(selectClosestValue(values[index], this._values), this._minRange, -dir), -dir);\r\n if (compare(secondPosition, thresholdPosition)) {\r\n values[1 - index] = translator.add(values[index], this._minRange, -dir)\r\n }\r\n thresholdPosition = translator.to(translator.add(translator.getRange()[1 - index], this._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], this._minRange, dir);\r\n positions[1 - index] = firstPosition\r\n }\r\n }\r\n values[0] = selectClosestValue(values[0], this._values);\r\n values[1] = selectClosestValue(values[1], this._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 this._applyTotalPosition(true);\r\n if (this._isOnMoving) {\r\n this._processSelectionChanged(e)\r\n }\r\n var handler = this.beginSliderMoving(1 - index, secondPosition);\r\n sliders[1 - index]._sliderGroup.stopAnimation();\r\n this._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 slider = sliders[index];\r\n value = sliders[1 - index].getValue();\r\n pos = Math.max(Math.min(position + moveOffset, maxPosition), minPosition);\r\n isValid = translator.isValueProlonged ? !compareMin(pos, translator.to(value, dir)) : true;\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) : 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 translator = this._params.translator;\r\n var sliders = this._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), this._values));\r\n newValue = translator.from(position, -dir);\r\n if (translator.isValueProlonged) {\r\n newValue = translator.from(position, dir)\r\n } else if (this._minRange) {\r\n newValue = translator.add(newValue, this._minRange, -dir)\r\n }\r\n sliders[1 - index].setDisplayValue(selectClosestValue(newValue, this._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 (esm/viz/range_selector/tracker.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport pointerEvents from \"../../events/pointer\";\r\nimport {\r\n getWindow\r\n} from \"../../core/utils/window\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n pointerEvents as msPointerEnabled\r\n} from \"../../core/utils/support\";\r\nvar MIN_MANUAL_SELECTING_WIDTH = 10;\r\nvar 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 if (originalEvent && originalEvent.pageX) {\r\n result = originalEvent.pageX\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 if (originalEvent.changedTouches.length > 0) {\r\n result = originalEvent.changedTouches[0].pageX\r\n }\r\n }\r\n return result\r\n}\r\n\r\nfunction initializeAreaEvents(controller, area, state, getRootOffsetLeft) {\r\n var isTouchEvent;\r\n var isActive = false;\r\n var initialPosition;\r\n var movingHandler = null;\r\n var docEvents = {\r\n [pointerEvents.move](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 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 [pointerEvents.up](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 }\r\n };\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(pointerEvents.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 isTouchEvent;\r\n var isActive = false;\r\n var movingHandler = null;\r\n var docEvents = {\r\n [pointerEvents.move](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 },\r\n [pointerEvents.up]: cancel\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 area.on(pointerEvents.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 isTouchEvent;\r\n var isActive = false;\r\n var movingHandler = null;\r\n var docEvents = {\r\n [pointerEvents.move](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 },\r\n [pointerEvents.up]: cancel\r\n };\r\n each(sliders, (function(i, slider) {\r\n slider.on({\r\n [pointerEvents.down](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 },\r\n [pointerEvents.move]() {\r\n if (!movingHandler) {\r\n controller.foregroundSlider(i)\r\n }\r\n }\r\n })\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\nexport function Tracker(params) {\r\n var state = this._state = {};\r\n var targets = params.controller.getTrackerTargets();\r\n if (msPointerEnabled) {\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 each(this._docEvents, (function(_, events) {\r\n eventsEngine.on(domAdapter.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 each(this._docEvents, (function(_, events) {\r\n eventsEngine.off(domAdapter.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 (esm/viz/range_selector/range_view.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\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(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\nexport function 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 (esm/viz/components/consts.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nexport default {\r\n events: {\r\n mouseover: \"mouseover\",\r\n mouseout: \"mouseout\",\r\n mousemove: \"mousemove\",\r\n touchstart: \"touchstart\",\r\n touchmove: \"touchmove\",\r\n touchend: \"touchend\",\r\n mousedown: \"mousedown\",\r\n mouseup: \"mouseup\",\r\n click: \"click\",\r\n selectSeries: \"selectseries\",\r\n deselectSeries: \"deselectseries\",\r\n selectPoint: \"selectpoint\",\r\n deselectPoint: \"deselectpoint\",\r\n showPointTooltip: \"showpointtooltip\",\r\n hidePointTooltip: \"hidepointtooltip\"\r\n },\r\n states: {\r\n hover: \"hover\",\r\n normal: \"normal\",\r\n selection: \"selection\",\r\n normalMark: 0,\r\n hoverMark: 1,\r\n selectedMark: 2,\r\n applyHover: \"applyHover\",\r\n applySelected: \"applySelected\",\r\n resetItem: \"resetItem\"\r\n },\r\n radialLabelIndent: 30,\r\n pieLabelSpacing: 10,\r\n pieSeriesSpacing: 4\r\n};\r\n","/**\r\n * DevExtreme (esm/viz/series/points/label.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport formatHelper from \"../../../format_helper\";\r\nimport {\r\n degreesToRadians as _degreesToRadians,\r\n patchFontOptions as _patchFontOptions,\r\n getCosAndSin as _getCosAndSin,\r\n rotateBBox as _rotateBBox\r\n} from \"../../core/utils\";\r\nimport {\r\n each\r\n} from \"../../../core/utils/iterator\";\r\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nvar _format = formatHelper.format;\r\nvar _math = Math;\r\nvar _round = _math.round;\r\nvar _floor = _math.floor;\r\nvar _abs = _math.abs;\r\nvar CONNECTOR_LENGTH = 12;\r\nvar LABEL_BACKGROUND_PADDING_X = 8;\r\nvar LABEL_BACKGROUND_PADDING_Y = 4;\r\n\r\nfunction getClosestCoord(point, coords) {\r\n var closestDistance = 1 / 0;\r\n var closestCoord;\r\n each(coords, (function(_, coord) {\r\n var x = point[0] - coord[0];\r\n var y = point[1] - coord[1];\r\n var distance = x * x + y * y;\r\n if (distance < closestDistance) {\r\n closestDistance = distance;\r\n closestCoord = coord\r\n }\r\n }));\r\n return [_floor(closestCoord[0]), _floor(closestCoord[1])]\r\n}\r\n\r\nfunction getCrossCoord(rect, coord, indexOffset) {\r\n return (coord - rect[0 + indexOffset]) / (rect[2 + indexOffset] - rect[0 + indexOffset]) * (rect[3 - indexOffset] - rect[1 - indexOffset]) + rect[1 - indexOffset]\r\n}\r\nvar barPointStrategy = {\r\n isLabelInside: function(labelPoint, figure) {\r\n var xc = labelPoint.x + labelPoint.width / 2;\r\n var yc = labelPoint.y + labelPoint.height / 2;\r\n return figure.x <= xc && xc <= figure.x + figure.width && figure.y <= yc && yc <= figure.y + figure.height\r\n },\r\n prepareLabelPoints: function(bBox, rotatedBBox, isHorizontal, angle, figureCenter) {\r\n var x1 = rotatedBBox.x;\r\n var xc = x1 + rotatedBBox.width / 2;\r\n var x2 = x1 + rotatedBBox.width - 1;\r\n var y1 = rotatedBBox.y;\r\n var yc = y1 + rotatedBBox.height / 2;\r\n var y2 = y1 + rotatedBBox.height - 1;\r\n var labelPoints;\r\n var isRectangular = _abs(angle) % 90 === 0;\r\n if (figureCenter[0] > x1 && figureCenter[0] < x2) {\r\n if (isRectangular) {\r\n labelPoints = [\r\n [figureCenter[0], _abs(figureCenter[1] - y1) < _abs(figureCenter[1] - y2) ? y1 : y2]\r\n ]\r\n } else {\r\n labelPoints = [\r\n [figureCenter[0], getCrossCoord([x1, y1, x2, y2], figureCenter[0], 0)]\r\n ]\r\n }\r\n } else if (figureCenter[1] > y1 && figureCenter[1] < y2) {\r\n if (isRectangular) {\r\n labelPoints = [\r\n [_abs(figureCenter[0] - x1) < _abs(figureCenter[0] - x2) ? x1 : x2, figureCenter[1]]\r\n ]\r\n } else {\r\n labelPoints = [\r\n [getCrossCoord([x1, y1, x2, y2], figureCenter[1], 1), figureCenter[1]]\r\n ]\r\n }\r\n } else if (isRectangular) {\r\n labelPoints = [\r\n [x1, y1],\r\n [isHorizontal ? x1 : xc, isHorizontal ? yc : y1],\r\n [x2, y1],\r\n [x1, y2],\r\n [isHorizontal ? x2 : xc, isHorizontal ? yc : y2],\r\n [x2, y2]\r\n ]\r\n } else {\r\n labelPoints = [\r\n [xc, yc]\r\n ]\r\n }\r\n return labelPoints\r\n },\r\n isHorizontal: function(bBox, figure) {\r\n return bBox.x > figure.x + figure.width || bBox.x + bBox.width < figure.x\r\n },\r\n getFigureCenter: function(figure) {\r\n return [_floor(figure.x + figure.width / 2), _floor(figure.y + figure.height / 2)]\r\n },\r\n findFigurePoint: function(figure, labelPoint) {\r\n var figureCenter = barPointStrategy.getFigureCenter(figure);\r\n var point = getClosestCoord(labelPoint, [\r\n [figure.x, figureCenter[1]],\r\n [figureCenter[0], figure.y + figure.height],\r\n [figure.x + figure.width, figureCenter[1]],\r\n [figureCenter[0], figure.y]\r\n ]);\r\n return point\r\n },\r\n adjustPoints: function(points) {\r\n var lineIsVertical = _abs(points[1] - points[3]) <= 1;\r\n var lineIsHorizontal = _abs(points[0] - points[2]) <= 1;\r\n if (lineIsHorizontal) {\r\n points[0] = points[2]\r\n }\r\n if (lineIsVertical) {\r\n points[1] = points[3]\r\n }\r\n return points\r\n }\r\n};\r\nvar symbolPointStrategy = {\r\n isLabelInside: function() {\r\n return false\r\n },\r\n prepareLabelPoints: barPointStrategy.prepareLabelPoints,\r\n isHorizontal: function(bBox, figure) {\r\n return bBox.x > figure.x + figure.r || bBox.x + bBox.width < figure.x - figure.r\r\n },\r\n getFigureCenter: function(figure) {\r\n return [figure.x, figure.y]\r\n },\r\n findFigurePoint: function(figure, labelPoint) {\r\n var angle = Math.atan2(figure.y - labelPoint[1], labelPoint[0] - figure.x);\r\n return [_round(figure.x + figure.r * Math.cos(angle)), _round(figure.y - figure.r * Math.sin(angle))]\r\n },\r\n adjustPoints: barPointStrategy.adjustPoints\r\n};\r\nvar piePointStrategy = {\r\n isLabelInside: function(_0, _1, isOutside) {\r\n return !isOutside\r\n },\r\n prepareLabelPoints: function(bBox, rotatedBBox, isHorizontal, angle) {\r\n var xl = bBox.x;\r\n var xr = xl + bBox.width;\r\n var xc = xl + _round(bBox.width / 2);\r\n var yt = bBox.y;\r\n var yb = yt + bBox.height;\r\n var yc = yt + _round(bBox.height / 2);\r\n var points = [\r\n [\r\n [xl, yt],\r\n [xr, yt]\r\n ],\r\n [\r\n [xr, yt],\r\n [xr, yb]\r\n ],\r\n [\r\n [xr, yb],\r\n [xl, yb]\r\n ],\r\n [\r\n [xl, yb],\r\n [xl, yt]\r\n ]\r\n ];\r\n var cosSin = _getCosAndSin(angle);\r\n if (0 === angle) {\r\n points = isHorizontal ? [\r\n [xl, yc],\r\n [xr, yc]\r\n ] : [\r\n [xc, yt],\r\n [xc, yb]\r\n ]\r\n } else {\r\n points = points.map((function(pair) {\r\n return pair.map((function(point) {\r\n return [_round((point[0] - xc) * cosSin.cos + (point[1] - yc) * cosSin.sin + xc), _round(-(point[0] - xc) * cosSin.sin + (point[1] - yc) * cosSin.cos + yc)]\r\n }))\r\n })).reduce((function(r, pair) {\r\n var point1x = pair[0][0];\r\n var point1y = pair[0][1];\r\n var point2x = pair[1][0];\r\n var point2y = pair[1][1];\r\n if (isHorizontal) {\r\n if (point1y >= yc && yc >= point2y || point1y <= yc && yc <= point2y) {\r\n r.push([(yc - point1y) * (point2x - point1x) / (point2y - point1y) + point1x, yc])\r\n }\r\n } else if (point1x >= xc && xc >= point2x || point1x <= xc && xc <= point2x) {\r\n r.push([xc, (xc - point1x) * (point2y - point1y) / (point2x - point1x) + point1y])\r\n }\r\n return r\r\n }), [])\r\n }\r\n return points\r\n },\r\n isHorizontal: function(bBox, figure) {\r\n return bBox.x > figure.x || figure.x > bBox.x + bBox.width\r\n },\r\n getFigureCenter: symbolPointStrategy.getFigureCenter,\r\n findFigurePoint: function(figure, labelPoint, isHorizontal) {\r\n if (!isHorizontal) {\r\n return [figure.x, figure.y]\r\n }\r\n var labelX = labelPoint[0];\r\n var x = _round(figure.x + (figure.y - labelPoint[1]) / Math.tan(_degreesToRadians(figure.angle)));\r\n var points = [figure.x, figure.y, x, labelPoint[1]];\r\n if (!(figure.x <= x && x <= labelX) && !(labelX <= x && x <= figure.x)) {\r\n if (_abs(figure.x - labelX) < CONNECTOR_LENGTH) {\r\n points = [figure.x, figure.y]\r\n } else if (figure.x <= labelX) {\r\n points[2] = figure.x + CONNECTOR_LENGTH\r\n } else {\r\n points[2] = figure.x - CONNECTOR_LENGTH\r\n }\r\n }\r\n return points\r\n },\r\n adjustPoints: function(points) {\r\n return points\r\n }\r\n};\r\n\r\nfunction selectStrategy(figure) {\r\n return void 0 !== figure.angle && piePointStrategy || void 0 !== figure.r && symbolPointStrategy || barPointStrategy\r\n}\r\n\r\nfunction disposeItem(obj, field) {\r\n obj[field] && obj[field].dispose();\r\n obj[field] = null\r\n}\r\n\r\nfunction checkBackground(background) {\r\n return background && (background.fill && \"none\" !== background.fill || background[\"stroke-width\"] > 0 && background.stroke && \"none\" !== background.stroke)\r\n}\r\n\r\nfunction checkConnector(connector) {\r\n return connector && connector[\"stroke-width\"] > 0 && connector.stroke && \"none\" !== connector.stroke\r\n}\r\n\r\nfunction formatText(data, options) {\r\n var format = options.format;\r\n data.valueText = _format(data.value, format);\r\n data.argumentText = _format(data.argument, options.argumentFormat);\r\n if (void 0 !== data.percent) {\r\n data.percentText = _format(data.percent, {\r\n type: \"percent\",\r\n precision: format && format.percentPrecision\r\n })\r\n }\r\n if (void 0 !== data.total) {\r\n data.totalText = _format(data.total, format)\r\n }\r\n if (void 0 !== data.openValue) {\r\n data.openValueText = _format(data.openValue, format)\r\n }\r\n if (void 0 !== data.closeValue) {\r\n data.closeValueText = _format(data.closeValue, format)\r\n }\r\n if (void 0 !== data.lowValue) {\r\n data.lowValueText = _format(data.lowValue, format)\r\n }\r\n if (void 0 !== data.highValue) {\r\n data.highValueText = _format(data.highValue, format)\r\n }\r\n if (void 0 !== data.reductionValue) {\r\n data.reductionValueText = _format(data.reductionValue, format)\r\n }\r\n return options.customizeText ? options.customizeText.call(data, data) : data.valueText\r\n}\r\nexport function Label(renderSettings) {\r\n this._renderer = renderSettings.renderer;\r\n this._container = renderSettings.labelsGroup;\r\n this._point = renderSettings.point;\r\n this._strategy = renderSettings.strategy;\r\n this._rowCount = 1\r\n}\r\nLabel.prototype = {\r\n constructor: Label,\r\n setColor: function(color) {\r\n this._color = color\r\n },\r\n setOptions: function(options) {\r\n this._options = options\r\n },\r\n setData: function(data) {\r\n this._data = data\r\n },\r\n setDataField: function(fieldName, fieldValue) {\r\n this._data = this._data || {};\r\n this._data[fieldName] = fieldValue\r\n },\r\n getData: function() {\r\n return this._data\r\n },\r\n setFigureToDrawConnector: function(figure) {\r\n this._figure = figure\r\n },\r\n dispose: function() {\r\n disposeItem(this, \"_group\");\r\n this._data = this._options = this._textContent = this._visible = this._insideGroup = this._text = this._background = this._connector = this._figure = null\r\n },\r\n _setVisibility: function(value, state) {\r\n this._group && this._group.attr({\r\n visibility: value\r\n });\r\n this._visible = state\r\n },\r\n isVisible: function() {\r\n return this._visible\r\n },\r\n hide: function(holdInvisible) {\r\n this._holdVisibility = !!holdInvisible;\r\n this._hide()\r\n },\r\n _hide: function() {\r\n this._setVisibility(\"hidden\", false)\r\n },\r\n show: function(holdVisible) {\r\n var correctPosition = !this._drawn;\r\n if (this._point.hasValue()) {\r\n this._holdVisibility = !!holdVisible;\r\n this._show();\r\n correctPosition && this._point.correctLabelPosition(this)\r\n }\r\n },\r\n _show: function() {\r\n var renderer = this._renderer;\r\n var container = this._container;\r\n var options = this._options || {};\r\n var text = this._textContent = formatText(this._data, this._options) || null;\r\n if (text) {\r\n if (!this._group) {\r\n this._group = renderer.g().append(container);\r\n this._insideGroup = renderer.g().append(this._group);\r\n this._text = renderer.text(\"\", 0, 0).append(this._insideGroup)\r\n }\r\n this._text.css(options.attributes ? _patchFontOptions(options.attributes.font) : {});\r\n if (checkBackground(options.background)) {\r\n this._background = this._background || renderer.rect().append(this._insideGroup).toBackground();\r\n this._background.attr(options.background);\r\n this._color && this._background.attr({\r\n fill: this._color\r\n })\r\n } else {\r\n disposeItem(this, \"_background\")\r\n }\r\n if (checkConnector(options.connector)) {\r\n this._connector = this._connector || renderer.path([], \"line\").sharp().append(this._group).toBackground();\r\n this._connector.attr(options.connector);\r\n this._color && this._connector.attr({\r\n stroke: this._color\r\n })\r\n } else {\r\n disposeItem(this, \"_connector\")\r\n }\r\n this._text.attr({\r\n text: text,\r\n align: options.textAlignment,\r\n class: options.cssClass\r\n });\r\n this._updateBackground(this._text.getBBox());\r\n this._setVisibility(\"visible\", true);\r\n this._drawn = true\r\n } else {\r\n this._hide()\r\n }\r\n },\r\n _getLabelVisibility: function(isVisible) {\r\n return this._holdVisibility ? this.isVisible() : isVisible\r\n },\r\n draw: function(isVisible) {\r\n if (this._getLabelVisibility(isVisible)) {\r\n this._show();\r\n this._point && this._point.correctLabelPosition(this)\r\n } else {\r\n this._drawn = false;\r\n this._hide()\r\n }\r\n return this\r\n },\r\n _updateBackground: function(bBox) {\r\n if (this._background) {\r\n bBox.x -= LABEL_BACKGROUND_PADDING_X;\r\n bBox.y -= LABEL_BACKGROUND_PADDING_Y;\r\n bBox.width += 2 * LABEL_BACKGROUND_PADDING_X;\r\n bBox.height += 2 * LABEL_BACKGROUND_PADDING_Y;\r\n this._background.attr(bBox)\r\n }\r\n this._bBoxWithoutRotation = extend({}, bBox);\r\n var rotationAngle = this._options.rotationAngle || 0;\r\n this._insideGroup.rotate(rotationAngle, bBox.x + bBox.width / 2, bBox.y + bBox.height / 2);\r\n bBox = _rotateBBox(bBox, [bBox.x + bBox.width / 2, bBox.y + bBox.height / 2], -rotationAngle);\r\n this._bBox = bBox\r\n },\r\n getFigureCenter() {\r\n var figure = this._figure;\r\n var strategy = this._strategy || selectStrategy(figure);\r\n return strategy.getFigureCenter(figure)\r\n },\r\n _getConnectorPoints: function() {\r\n var figure = this._figure;\r\n var options = this._options;\r\n var strategy = this._strategy || selectStrategy(figure);\r\n var bBox = this._shiftBBox(this._bBoxWithoutRotation);\r\n var rotatedBBox = this.getBoundingRect();\r\n var labelPoint;\r\n var points = [];\r\n var isHorizontal;\r\n if (!strategy.isLabelInside(bBox, figure, \"inside\" !== options.position)) {\r\n isHorizontal = strategy.isHorizontal(bBox, figure);\r\n var figureCenter = this.getFigureCenter();\r\n points = strategy.prepareLabelPoints(bBox, rotatedBBox, isHorizontal, -options.rotationAngle || 0, figureCenter);\r\n labelPoint = getClosestCoord(figureCenter, points);\r\n points = strategy.findFigurePoint(figure, labelPoint, isHorizontal);\r\n points = points.concat(labelPoint)\r\n }\r\n return strategy.adjustPoints(points)\r\n },\r\n fit: function(maxWidth) {\r\n var padding = this._background ? 2 * LABEL_BACKGROUND_PADDING_X : 0;\r\n var rowCountChanged = false;\r\n if (this._text) {\r\n var result = this._text.setMaxSize(maxWidth - padding, void 0, this._options);\r\n var rowCount = result.rowCount;\r\n if (0 === rowCount) {\r\n rowCount = 1\r\n }\r\n if (rowCount !== this._rowCount) {\r\n rowCountChanged = true;\r\n this._rowCount = rowCount\r\n }\r\n result.textIsEmpty && disposeItem(this, \"_background\")\r\n }\r\n this._updateBackground(this._text.getBBox());\r\n return rowCountChanged\r\n },\r\n resetEllipsis: function() {\r\n this._text && this._text.restoreText();\r\n this._updateBackground(this._text.getBBox())\r\n },\r\n setTrackerData: function(point) {\r\n this._text.data({\r\n \"chart-data-point\": point\r\n });\r\n this._background && this._background.data({\r\n \"chart-data-point\": point\r\n })\r\n },\r\n hideInsideLabel: function(coords) {\r\n return this._point.hideInsideLabel(this, coords)\r\n },\r\n getPoint() {\r\n return this._point\r\n },\r\n shift: function(x, y) {\r\n if (this._textContent) {\r\n this._insideGroup.attr({\r\n translateX: this._x = _round(x - this._bBox.x),\r\n translateY: this._y = _round(y - this._bBox.y)\r\n });\r\n if (this._connector) {\r\n this._connector.attr({\r\n points: this._getConnectorPoints()\r\n })\r\n }\r\n }\r\n return this\r\n },\r\n getBoundingRect: function() {\r\n return this._shiftBBox(this._bBox)\r\n },\r\n _shiftBBox: function(bBox) {\r\n return this._textContent ? {\r\n x: bBox.x + this._x,\r\n y: bBox.y + this._y,\r\n width: bBox.width,\r\n height: bBox.height\r\n } : {}\r\n },\r\n getLayoutOptions: function() {\r\n var options = this._options;\r\n return {\r\n alignment: options.alignment,\r\n background: checkBackground(options.background),\r\n horizontalOffset: options.horizontalOffset,\r\n verticalOffset: options.verticalOffset,\r\n radialOffset: options.radialOffset,\r\n position: options.position,\r\n connectorOffset: (checkConnector(options.connector) ? CONNECTOR_LENGTH : 0) + (checkBackground(options.background) ? LABEL_BACKGROUND_PADDING_X : 0)\r\n }\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/viz/series/points/symbol_point.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../../core/utils/iterator\";\r\nimport {\r\n noop\r\n} from \"../../../core/utils/common\";\r\nimport {\r\n getWindow,\r\n hasProperty\r\n} from \"../../../core/utils/window\";\r\nvar window = getWindow();\r\nimport {\r\n Label\r\n} from \"./label\";\r\nvar _extend = extend;\r\nimport {\r\n isDefined as _isDefined\r\n} from \"../../../core/utils/type\";\r\nimport {\r\n normalizeEnum as _normalizeEnum\r\n} from \"../../core/utils\";\r\nvar _math = Math;\r\nvar _round = _math.round;\r\nvar _floor = _math.floor;\r\nvar _ceil = _math.ceil;\r\nvar DEFAULT_IMAGE_WIDTH = 20;\r\nvar DEFAULT_IMAGE_HEIGHT = 20;\r\nvar LABEL_OFFSET = 10;\r\nvar CANVAS_POSITION_DEFAULT = \"canvas_position_default\";\r\n\r\nfunction getSquareMarkerCoords(radius) {\r\n return [-radius, -radius, radius, -radius, radius, radius, -radius, radius, -radius, -radius]\r\n}\r\n\r\nfunction getPolygonMarkerCoords(radius) {\r\n var r = _ceil(radius);\r\n return [-r, 0, 0, -r, r, 0, 0, r, -r, 0]\r\n}\r\n\r\nfunction getCrossMarkerCoords(radius) {\r\n var r = _ceil(radius);\r\n var floorHalfRadius = _floor(r / 2);\r\n var ceilHalfRadius = _ceil(r / 2);\r\n return [-r, -floorHalfRadius, -floorHalfRadius, -r, 0, -ceilHalfRadius, floorHalfRadius, -r, r, -floorHalfRadius, ceilHalfRadius, 0, r, floorHalfRadius, floorHalfRadius, r, 0, ceilHalfRadius, -floorHalfRadius, r, -r, floorHalfRadius, -ceilHalfRadius, 0]\r\n}\r\n\r\nfunction getTriangleDownMarkerCoords(radius) {\r\n return [-radius, -radius, radius, -radius, 0, radius, -radius, -radius]\r\n}\r\n\r\nfunction getTriangleUpMarkerCoords(radius) {\r\n return [-radius, radius, radius, radius, 0, -radius, -radius, radius]\r\n}\r\nexport default {\r\n deleteLabel: function() {\r\n this._label.dispose();\r\n this._label = null\r\n },\r\n _hasGraphic: function() {\r\n return this.graphic\r\n },\r\n clearVisibility: function() {\r\n var graphic = this.graphic;\r\n if (graphic && graphic.attr(\"visibility\")) {\r\n graphic.attr({\r\n visibility: null\r\n })\r\n }\r\n },\r\n isVisible: function() {\r\n return this.inVisibleArea && this.series.isVisible()\r\n },\r\n setInvisibility: function() {\r\n var graphic = this.graphic;\r\n if (graphic && \"hidden\" !== graphic.attr(\"visibility\")) {\r\n graphic.attr({\r\n visibility: \"hidden\"\r\n })\r\n }\r\n this._errorBar && this._errorBar.attr({\r\n visibility: \"hidden\"\r\n });\r\n this._label.draw(false)\r\n },\r\n clearMarker: function() {\r\n var graphic = this.graphic;\r\n graphic && graphic.attr(this._emptySettings)\r\n },\r\n _createLabel: function() {\r\n this._label = new Label({\r\n renderer: this.series._renderer,\r\n labelsGroup: this.series._labelsGroup,\r\n point: this\r\n })\r\n },\r\n _updateLabelData: function() {\r\n this._label.setData(this._getLabelFormatObject())\r\n },\r\n _updateLabelOptions: function() {\r\n !this._label && this._createLabel();\r\n this._label.setOptions(this._options.label)\r\n },\r\n _checkImage: function(image) {\r\n return _isDefined(image) && (\"string\" === typeof image || _isDefined(image.url))\r\n },\r\n _fillStyle: function() {\r\n this._styles = this._options.styles\r\n },\r\n _checkSymbol: function(oldOptions, newOptions) {\r\n var oldSymbol = oldOptions.symbol;\r\n var newSymbol = newOptions.symbol;\r\n var symbolChanged = \"circle\" === oldSymbol && \"circle\" !== newSymbol || \"circle\" !== oldSymbol && \"circle\" === newSymbol;\r\n var imageChanged = this._checkImage(oldOptions.image) !== this._checkImage(newOptions.image);\r\n return !!(symbolChanged || imageChanged)\r\n },\r\n _populatePointShape: function(symbol, radius) {\r\n switch (symbol) {\r\n case \"square\":\r\n return getSquareMarkerCoords(radius);\r\n case \"polygon\":\r\n return getPolygonMarkerCoords(radius);\r\n case \"triangle\":\r\n case \"triangleDown\":\r\n return getTriangleDownMarkerCoords(radius);\r\n case \"triangleUp\":\r\n return getTriangleUpMarkerCoords(radius);\r\n case \"cross\":\r\n return getCrossMarkerCoords(radius)\r\n }\r\n },\r\n hasCoords: function() {\r\n return null !== this.x && null !== this.y\r\n },\r\n correctValue: function(correction) {\r\n var axis = this.series.getValueAxis();\r\n if (this.hasValue()) {\r\n this.value = this.properValue = axis.validateUnit(this.initialValue.valueOf() + correction.valueOf());\r\n this.minValue = axis.validateUnit(correction)\r\n }\r\n },\r\n resetCorrection: function() {\r\n this.value = this.properValue = this.initialValue;\r\n this.minValue = CANVAS_POSITION_DEFAULT\r\n },\r\n resetValue: function() {\r\n if (this.hasValue()) {\r\n this.value = this.properValue = this.initialValue = 0;\r\n this.minValue = 0;\r\n this._label.setDataField(\"value\", this.value)\r\n }\r\n },\r\n _getTranslates: function(animationEnabled) {\r\n var translateX = this.x;\r\n var translateY = this.y;\r\n if (animationEnabled) {\r\n if (this._options.rotated) {\r\n translateX = this.defaultX\r\n } else {\r\n translateY = this.defaultY\r\n }\r\n }\r\n return {\r\n x: translateX,\r\n y: translateY\r\n }\r\n },\r\n _createImageMarker: function(renderer, settings, options) {\r\n var width = options.width || DEFAULT_IMAGE_WIDTH;\r\n var height = options.height || DEFAULT_IMAGE_HEIGHT;\r\n return renderer.image(-_round(.5 * width), -_round(.5 * height), width, height, options.url ? options.url.toString() : options.toString(), \"center\").attr({\r\n translateX: settings.translateX,\r\n translateY: settings.translateY,\r\n visibility: settings.visibility\r\n })\r\n },\r\n _createSymbolMarker: function(renderer, pointSettings) {\r\n var marker;\r\n var symbol = this._options.symbol;\r\n if (\"circle\" === symbol) {\r\n delete pointSettings.points;\r\n marker = renderer.circle().attr(pointSettings)\r\n } else if (\"square\" === symbol || \"polygon\" === symbol || \"triangle\" === symbol || \"triangleDown\" === symbol || \"triangleUp\" === symbol || \"cross\" === symbol) {\r\n marker = renderer.path([], \"area\").attr(pointSettings).sharp()\r\n }\r\n return marker\r\n },\r\n _createMarker: function(renderer, group, image, settings) {\r\n var marker = this._checkImage(image) ? this._createImageMarker(renderer, settings, image) : this._createSymbolMarker(renderer, settings);\r\n if (marker) {\r\n marker.data({\r\n \"chart-data-point\": this\r\n }).append(group)\r\n }\r\n return marker\r\n },\r\n _getSymbolBBox: function(x, y, r) {\r\n return {\r\n x: x - r,\r\n y: y - r,\r\n width: 2 * r,\r\n height: 2 * r\r\n }\r\n },\r\n _getImageBBox: function(x, y) {\r\n var image = this._options.image;\r\n var width = image.width || DEFAULT_IMAGE_WIDTH;\r\n var height = image.height || DEFAULT_IMAGE_HEIGHT;\r\n return {\r\n x: x - _round(width / 2),\r\n y: y - _round(height / 2),\r\n width: width,\r\n height: height\r\n }\r\n },\r\n _getGraphicBBox: function() {\r\n var options = this._options;\r\n var x = this.x;\r\n var y = this.y;\r\n var bBox;\r\n if (options.visible) {\r\n bBox = this._checkImage(options.image) ? this._getImageBBox(x, y) : this._getSymbolBBox(x, y, options.styles.normal.r)\r\n } else {\r\n bBox = {\r\n x: x,\r\n y: y,\r\n width: 0,\r\n height: 0\r\n }\r\n }\r\n return bBox\r\n },\r\n hideInsideLabel: noop,\r\n _getShiftLabelCoords: function(label) {\r\n var coord = this._addLabelAlignmentAndOffset(label, this._getLabelCoords(label));\r\n return this._checkLabelPosition(label, coord)\r\n },\r\n _drawLabel: function() {\r\n var customVisibility = this._getCustomLabelVisibility();\r\n var label = this._label;\r\n var isVisible = this._showForZeroValues() && this.hasValue() && false !== customVisibility && (this.series.getLabelVisibility() || customVisibility);\r\n label.draw(!!isVisible)\r\n },\r\n correctLabelPosition: function(label) {\r\n var coord = this._getShiftLabelCoords(label);\r\n if (!this.hideInsideLabel(label, coord)) {\r\n label.setFigureToDrawConnector(this._getLabelConnector(label.pointPosition));\r\n label.shift(_round(coord.x), _round(coord.y))\r\n }\r\n },\r\n _showForZeroValues: function() {\r\n return true\r\n },\r\n _getLabelConnector: function(pointPosition) {\r\n var bBox = this._getGraphicBBox(pointPosition);\r\n var w2 = bBox.width / 2;\r\n var h2 = bBox.height / 2;\r\n return {\r\n x: bBox.x + w2,\r\n y: bBox.y + h2,\r\n r: this._options.visible ? Math.max(w2, h2) : 0\r\n }\r\n },\r\n _getPositionFromLocation: function() {\r\n return {\r\n x: this.x,\r\n y: this.y\r\n }\r\n },\r\n _isPointInVisibleArea: function(visibleArea, graphicBBox) {\r\n return visibleArea.minX <= graphicBBox.x + graphicBBox.width && visibleArea.maxX >= graphicBBox.x && visibleArea.minY <= graphicBBox.y + graphicBBox.height && visibleArea.maxY >= graphicBBox.y\r\n },\r\n _checkLabelPosition: function(label, coord) {\r\n var visibleArea = this._getVisibleArea();\r\n var labelBBox = label.getBoundingRect();\r\n var graphicBBox = this._getGraphicBBox(label.pointPosition);\r\n var fullGraphicBBox = this._getGraphicBBox();\r\n var isInside = \"inside\" === label.getLayoutOptions().position;\r\n var offset = LABEL_OFFSET;\r\n if (this._isPointInVisibleArea(visibleArea, fullGraphicBBox)) {\r\n if (!this._options.rotated) {\r\n if (visibleArea.minX > coord.x) {\r\n coord.x = visibleArea.minX\r\n }\r\n if (visibleArea.maxX < coord.x + labelBBox.width) {\r\n coord.x = visibleArea.maxX - labelBBox.width\r\n }\r\n if (visibleArea.minY > coord.y) {\r\n coord.y = isInside ? visibleArea.minY : graphicBBox.y + graphicBBox.height + offset\r\n }\r\n if (visibleArea.maxY < coord.y + labelBBox.height) {\r\n coord.y = isInside ? visibleArea.maxY - labelBBox.height : graphicBBox.y - labelBBox.height - offset\r\n }\r\n } else {\r\n if (visibleArea.minX > coord.x) {\r\n coord.x = isInside ? visibleArea.minX : graphicBBox.x + graphicBBox.width + offset\r\n }\r\n if (visibleArea.maxX < coord.x + labelBBox.width) {\r\n coord.x = isInside ? visibleArea.maxX - labelBBox.width : graphicBBox.x - offset - labelBBox.width\r\n }\r\n if (visibleArea.minY > coord.y) {\r\n coord.y = visibleArea.minY\r\n }\r\n if (visibleArea.maxY < coord.y + labelBBox.height) {\r\n coord.y = visibleArea.maxY - labelBBox.height\r\n }\r\n }\r\n }\r\n return coord\r\n },\r\n _addLabelAlignmentAndOffset: function(label, coord) {\r\n var labelBBox = label.getBoundingRect();\r\n var labelOptions = label.getLayoutOptions();\r\n if (!this._options.rotated) {\r\n if (\"left\" === labelOptions.alignment) {\r\n coord.x += labelBBox.width / 2\r\n } else if (\"right\" === labelOptions.alignment) {\r\n coord.x -= labelBBox.width / 2\r\n }\r\n }\r\n coord.x += labelOptions.horizontalOffset;\r\n coord.y += labelOptions.verticalOffset;\r\n return coord\r\n },\r\n _getLabelCoords: function(label) {\r\n return this._getLabelCoordOfPosition(label, this._getLabelPosition(label.pointPosition))\r\n },\r\n _getLabelCoordOfPosition: function(label, position) {\r\n var labelBBox = label.getBoundingRect();\r\n var graphicBBox = this._getGraphicBBox(label.pointPosition);\r\n var offset = LABEL_OFFSET;\r\n var centerY = graphicBBox.height / 2 - labelBBox.height / 2;\r\n var centerX = graphicBBox.width / 2 - labelBBox.width / 2;\r\n var x = graphicBBox.x;\r\n var y = graphicBBox.y;\r\n switch (position) {\r\n case \"left\":\r\n x -= labelBBox.width + offset;\r\n y += centerY;\r\n break;\r\n case \"right\":\r\n x += graphicBBox.width + offset;\r\n y += centerY;\r\n break;\r\n case \"top\":\r\n x += centerX;\r\n y -= labelBBox.height + offset;\r\n break;\r\n case \"bottom\":\r\n x += centerX;\r\n y += graphicBBox.height + offset;\r\n break;\r\n case \"inside\":\r\n x += centerX;\r\n y += centerY\r\n }\r\n return {\r\n x: x,\r\n y: y\r\n }\r\n },\r\n _drawMarker: function(renderer, group, animationEnabled) {\r\n var options = this._options;\r\n var translates = this._getTranslates(animationEnabled);\r\n var style = this._getStyle();\r\n this.graphic = this._createMarker(renderer, group, options.image, _extend({\r\n translateX: translates.x,\r\n translateY: translates.y,\r\n points: this._populatePointShape(options.symbol, style.r)\r\n }, style))\r\n },\r\n _getErrorBarSettings: function() {\r\n return {\r\n visibility: \"visible\"\r\n }\r\n },\r\n _getErrorBarBaseEdgeLength() {\r\n return 2 * this.getPointRadius()\r\n },\r\n _drawErrorBar: function(renderer, group) {\r\n if (!this._options.errorBars) {\r\n return\r\n }\r\n var options = this._options;\r\n var errorBarOptions = options.errorBars;\r\n var points = [];\r\n var settings;\r\n var pos = this._errorBarPos;\r\n var high = this._highErrorCoord;\r\n var low = this._lowErrorCoord;\r\n var displayMode = _normalizeEnum(errorBarOptions.displayMode);\r\n var isHighDisplayMode = \"high\" === displayMode;\r\n var isLowDisplayMode = \"low\" === displayMode;\r\n var highErrorOnly = (isHighDisplayMode || !_isDefined(low)) && _isDefined(high) && !isLowDisplayMode;\r\n var lowErrorOnly = (isLowDisplayMode || !_isDefined(high)) && _isDefined(low) && !isHighDisplayMode;\r\n var edgeLength = errorBarOptions.edgeLength;\r\n if (edgeLength <= 1 && edgeLength > 0) {\r\n edgeLength = this._getErrorBarBaseEdgeLength() * errorBarOptions.edgeLength\r\n }\r\n edgeLength = _floor(parseInt(edgeLength) / 2);\r\n highErrorOnly && (low = this._baseErrorBarPos);\r\n lowErrorOnly && (high = this._baseErrorBarPos);\r\n if (\"none\" !== displayMode && _isDefined(high) && _isDefined(low) && _isDefined(pos)) {\r\n !lowErrorOnly && points.push([pos - edgeLength, high, pos + edgeLength, high]);\r\n points.push([pos, high, pos, low]);\r\n !highErrorOnly && points.push([pos + edgeLength, low, pos - edgeLength, low]);\r\n options.rotated && each(points, (function(_, p) {\r\n p.reverse()\r\n }));\r\n settings = this._getErrorBarSettings(errorBarOptions);\r\n if (!this._errorBar) {\r\n this._errorBar = renderer.path(points, \"line\").attr(settings).append(group)\r\n } else {\r\n settings.points = points;\r\n this._errorBar.attr(settings)\r\n }\r\n } else {\r\n this._errorBar && this._errorBar.attr({\r\n visibility: \"hidden\"\r\n })\r\n }\r\n },\r\n getTooltipParams: function() {\r\n var graphic = this.graphic;\r\n return {\r\n x: this.x,\r\n y: this.y,\r\n offset: graphic ? graphic.getBBox().height / 2 : 0\r\n }\r\n },\r\n setPercentValue: function(absTotal, total, leftHoleTotal, rightHoleTotal) {\r\n var valuePercent = this.value / absTotal || 0;\r\n var minValuePercent = this.minValue / absTotal || 0;\r\n var percent = valuePercent - minValuePercent;\r\n this._label.setDataField(\"percent\", percent);\r\n this._label.setDataField(\"total\", total);\r\n if (this.series.isFullStackedSeries() && this.hasValue()) {\r\n if (this.leftHole) {\r\n this.leftHole /= absTotal - leftHoleTotal;\r\n this.minLeftHole /= absTotal - leftHoleTotal\r\n }\r\n if (this.rightHole) {\r\n this.rightHole /= absTotal - rightHoleTotal;\r\n this.minRightHole /= absTotal - rightHoleTotal\r\n }\r\n this.value = this.properValue = valuePercent;\r\n this.minValue = !minValuePercent ? this.minValue : minValuePercent\r\n }\r\n },\r\n _storeTrackerR: function() {\r\n var navigator = window.navigator;\r\n var r = this._options.styles.normal.r;\r\n var minTrackerSize = hasProperty(\"ontouchstart\") || navigator.msPointerEnabled && navigator.msMaxTouchPoints || navigator.pointerEnabled && navigator.maxTouchPoints ? 20 : 6;\r\n this._options.trackerR = r < minTrackerSize ? minTrackerSize : r;\r\n return this._options.trackerR\r\n },\r\n _translateErrorBars: function() {\r\n var options = this._options;\r\n var rotated = options.rotated;\r\n var errorBars = options.errorBars;\r\n var translator = this._getValTranslator();\r\n if (!errorBars) {\r\n return\r\n }\r\n _isDefined(this.lowError) && (this._lowErrorCoord = translator.translate(this.lowError));\r\n _isDefined(this.highError) && (this._highErrorCoord = translator.translate(this.highError));\r\n this._errorBarPos = _floor(rotated ? this.vy : this.vx);\r\n this._baseErrorBarPos = \"stdDeviation\" === errorBars.type ? this._lowErrorCoord + (this._highErrorCoord - this._lowErrorCoord) / 2 : rotated ? this.vx : this.vy\r\n },\r\n _translate: function() {\r\n var valTranslator = this._getValTranslator();\r\n var argTranslator = this._getArgTranslator();\r\n if (this._options.rotated) {\r\n this.vx = this.x = valTranslator.translate(this.value);\r\n this.vy = this.y = argTranslator.translate(this.argument);\r\n this.minX = valTranslator.translate(this.minValue);\r\n this.defaultX = valTranslator.translate(CANVAS_POSITION_DEFAULT)\r\n } else {\r\n this.vy = this.y = valTranslator.translate(this.value);\r\n this.vx = this.x = argTranslator.translate(this.argument);\r\n this.minY = valTranslator.translate(this.minValue);\r\n this.defaultY = valTranslator.translate(CANVAS_POSITION_DEFAULT)\r\n }\r\n this._translateErrorBars();\r\n this._calculateVisibility(this.x, this.y)\r\n },\r\n _updateData: function(data) {\r\n this.value = this.properValue = this.initialValue = this.originalValue = data.value;\r\n this.minValue = this.initialMinValue = this.originalMinValue = _isDefined(data.minValue) ? data.minValue : CANVAS_POSITION_DEFAULT\r\n },\r\n _getImageSettings: function(image) {\r\n return {\r\n href: image.url || image.toString(),\r\n width: image.width || DEFAULT_IMAGE_WIDTH,\r\n height: image.height || DEFAULT_IMAGE_HEIGHT\r\n }\r\n },\r\n getCrosshairData: function() {\r\n var r = this._options.rotated;\r\n var value = this.properValue;\r\n var argument = this.argument;\r\n return {\r\n x: this.vx,\r\n y: this.vy,\r\n xValue: r ? value : argument,\r\n yValue: r ? argument : value,\r\n axis: this.series.axis\r\n }\r\n },\r\n getPointRadius: function() {\r\n var style = this._getStyle();\r\n var options = this._options;\r\n var r = style.r;\r\n var extraSpace;\r\n var symbol = options.symbol;\r\n var isSquare = \"square\" === symbol;\r\n var isTriangle = \"triangle\" === symbol || \"triangleDown\" === symbol || \"triangleUp\" === symbol;\r\n if (options.visible && !options.image && r) {\r\n extraSpace = style[\"stroke-width\"] / 2;\r\n return (isSquare || isTriangle ? 1.4 * r : r) + extraSpace\r\n }\r\n return 0\r\n },\r\n _updateMarker: function(animationEnabled, style) {\r\n var options = this._options;\r\n var settings;\r\n var image = options.image;\r\n var visibility = !this.isVisible() ? {\r\n visibility: \"hidden\"\r\n } : {};\r\n if (this._checkImage(image)) {\r\n settings = _extend({}, {\r\n visibility: style.visibility\r\n }, visibility, this._getImageSettings(image))\r\n } else {\r\n settings = _extend({}, style, visibility, {\r\n points: this._populatePointShape(options.symbol, style.r)\r\n })\r\n }\r\n if (!animationEnabled) {\r\n settings.translateX = this.x;\r\n settings.translateY = this.y\r\n }\r\n this.graphic.attr(settings).sharp()\r\n },\r\n _getLabelFormatObject: function() {\r\n return {\r\n argument: this.initialArgument,\r\n value: this.initialValue,\r\n originalArgument: this.originalArgument,\r\n originalValue: this.originalValue,\r\n seriesName: this.series.name,\r\n lowErrorValue: this.lowError,\r\n highErrorValue: this.highError,\r\n point: this\r\n }\r\n },\r\n _getLabelPosition: function() {\r\n var rotated = this._options.rotated;\r\n if (this.initialValue > 0) {\r\n return rotated ? \"right\" : \"top\"\r\n } else {\r\n return rotated ? \"left\" : \"bottom\"\r\n }\r\n },\r\n _getFormatObject: function(tooltip) {\r\n var labelFormatObject = this._label.getData();\r\n return _extend({}, labelFormatObject, {\r\n argumentText: tooltip.formatValue(this.initialArgument, \"argument\"),\r\n valueText: tooltip.formatValue(this.initialValue)\r\n }, _isDefined(labelFormatObject.percent) ? {\r\n percentText: tooltip.formatValue(labelFormatObject.percent, \"percent\")\r\n } : {}, _isDefined(labelFormatObject.total) ? {\r\n totalText: tooltip.formatValue(labelFormatObject.total)\r\n } : {})\r\n },\r\n getMarkerVisibility: function() {\r\n return this._options.visible\r\n },\r\n coordsIn: function(x, y) {\r\n var trackerRadius = this._storeTrackerR();\r\n return x >= this.x - trackerRadius && x <= this.x + trackerRadius && y >= this.y - trackerRadius && y <= this.y + trackerRadius\r\n },\r\n getMinValue: function(noErrorBar) {\r\n var errorBarOptions = this._options.errorBars;\r\n if (errorBarOptions && !noErrorBar) {\r\n var displayMode = errorBarOptions.displayMode;\r\n var lowValue = \"high\" !== displayMode && _isDefined(this.lowError) ? this.lowError : this.value;\r\n var highValue = \"low\" !== displayMode && _isDefined(this.highError) ? this.highError : this.value;\r\n return lowValue < highValue ? lowValue : highValue\r\n } else {\r\n return this.value\r\n }\r\n },\r\n getMaxValue: function(noErrorBar) {\r\n var errorBarOptions = this._options.errorBars;\r\n if (errorBarOptions && !noErrorBar) {\r\n var displayMode = errorBarOptions.displayMode;\r\n var lowValue = \"high\" !== displayMode && _isDefined(this.lowError) ? this.lowError : this.value;\r\n var highValue = \"low\" !== displayMode && _isDefined(this.highError) ? this.highError : this.value;\r\n return lowValue > highValue ? lowValue : highValue\r\n } else {\r\n return this.value\r\n }\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/viz/series/points/bar_point.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nvar _extend = extend;\r\nvar _math = Math;\r\nvar _floor = _math.floor;\r\nvar _abs = _math.abs;\r\nimport symbolPoint from \"./symbol_point\";\r\nvar CANVAS_POSITION_DEFAULT = \"canvas_position_default\";\r\nvar DEFAULT_BAR_TRACKER_SIZE = 9;\r\nvar CORRECTING_BAR_TRACKER_VALUE = 4;\r\nvar RIGHT = \"right\";\r\nvar LEFT = \"left\";\r\nvar TOP = \"top\";\r\nvar BOTTOM = \"bottom\";\r\n\r\nfunction getLabelOrientation(point) {\r\n var initialValue = point.initialValue;\r\n var invert = point._getValTranslator().getBusinessRange().invert;\r\n var isDiscreteValue = \"discrete\" === point.series.valueAxisType;\r\n var isFullStacked = point.series.isFullStackedSeries();\r\n var notAxisInverted = !isDiscreteValue && (initialValue >= 0 && !invert || initialValue < 0 && invert) || isDiscreteValue && !invert || isFullStacked;\r\n return notAxisInverted ? TOP : BOTTOM\r\n}\r\nexport default _extend({}, symbolPoint, {\r\n correctCoordinates(correctOptions) {\r\n var correction = _floor(correctOptions.offset - correctOptions.width / 2);\r\n if (this._options.rotated) {\r\n this.height = correctOptions.width;\r\n this.yCorrection = correction;\r\n this.xCorrection = null\r\n } else {\r\n this.width = correctOptions.width;\r\n this.xCorrection = correction;\r\n this.yCorrection = null\r\n }\r\n },\r\n _getGraphicBBox: function(location) {\r\n var bBox = {\r\n x: this.x,\r\n y: this.y,\r\n width: this.width,\r\n height: this.height\r\n };\r\n if (location) {\r\n var isTop = \"top\" === location;\r\n if (!this._options.rotated) {\r\n bBox.y = isTop ? bBox.y : bBox.y + bBox.height;\r\n bBox.height = 0\r\n } else {\r\n bBox.x = isTop ? bBox.x + bBox.width : bBox.x;\r\n bBox.width = 0\r\n }\r\n }\r\n return bBox\r\n },\r\n _getLabelConnector: function(location) {\r\n return this._getGraphicBBox(location)\r\n },\r\n _getLabelPosition: function() {\r\n var position = getLabelOrientation(this);\r\n if (this._options.rotated) {\r\n position = position === TOP ? RIGHT : LEFT\r\n }\r\n return position\r\n },\r\n _getLabelCoords: function(label) {\r\n var coords;\r\n if (0 === this.initialValue && this.series.isFullStackedSeries()) {\r\n if (!this._options.rotated) {\r\n coords = this._getLabelCoordOfPosition(label, TOP)\r\n } else {\r\n coords = this._getLabelCoordOfPosition(label, RIGHT)\r\n }\r\n } else if (\"inside\" === label.getLayoutOptions().position) {\r\n coords = this._getLabelCoordOfPosition(label, \"inside\")\r\n } else {\r\n coords = symbolPoint._getLabelCoords.call(this, label)\r\n }\r\n return coords\r\n },\r\n _drawLabel: function() {\r\n this._label.pointPosition = \"inside\" !== this._label.getLayoutOptions().position && getLabelOrientation(this);\r\n symbolPoint._drawLabel.call(this)\r\n },\r\n hideInsideLabel: function(label, coord) {\r\n var graphicBBox = this._getGraphicBBox();\r\n var labelBBox = label.getBoundingRect();\r\n if (this._options.resolveLabelsOverlapping) {\r\n if ((coord.y <= graphicBBox.y && coord.y + labelBBox.height >= graphicBBox.y + graphicBBox.height || coord.x <= graphicBBox.x && coord.x + labelBBox.width >= graphicBBox.x + graphicBBox.width) && !(coord.y > graphicBBox.y + graphicBBox.height || coord.y + labelBBox.height < graphicBBox.y || coord.x > graphicBBox.x + graphicBBox.width || coord.x + labelBBox.width < graphicBBox.x)) {\r\n label.draw(false);\r\n return true\r\n }\r\n }\r\n return false\r\n },\r\n _showForZeroValues: function() {\r\n return this._options.label.showForZeroValues || this.initialValue\r\n },\r\n _drawMarker(renderer, group, animationEnabled) {\r\n var style = this._getStyle();\r\n var r = this._options.cornerRadius;\r\n var rotated = this._options.rotated;\r\n var {\r\n x: x,\r\n y: y,\r\n width: width,\r\n height: height\r\n } = this.getMarkerCoords();\r\n if (animationEnabled) {\r\n if (rotated) {\r\n width = 0;\r\n x = this.defaultX\r\n } else {\r\n height = 0;\r\n y = this.defaultY\r\n }\r\n }\r\n this.graphic = renderer.rect(x, y, width, height).attr({\r\n rx: r,\r\n ry: r\r\n }).smartAttr(style).data({\r\n \"chart-data-point\": this\r\n }).append(group)\r\n },\r\n _getSettingsForTracker: function() {\r\n var y = this.y;\r\n var height = this.height;\r\n var x = this.x;\r\n var width = this.width;\r\n if (this._options.rotated) {\r\n if (1 === width) {\r\n width = DEFAULT_BAR_TRACKER_SIZE;\r\n x -= CORRECTING_BAR_TRACKER_VALUE\r\n }\r\n } else if (1 === height) {\r\n height = DEFAULT_BAR_TRACKER_SIZE;\r\n y -= CORRECTING_BAR_TRACKER_VALUE\r\n }\r\n return {\r\n x: x,\r\n y: y,\r\n width: width,\r\n height: height\r\n }\r\n },\r\n getGraphicSettings: function() {\r\n var graphic = this.graphic;\r\n return {\r\n x: graphic.attr(\"x\"),\r\n y: graphic.attr(\"y\"),\r\n height: graphic.attr(\"height\"),\r\n width: graphic.attr(\"width\")\r\n }\r\n },\r\n _getEdgeTooltipParams() {\r\n var isPositive = this.value >= 0;\r\n var xCoord;\r\n var yCoord;\r\n var invertedBusinessRange = this._getValTranslator().getBusinessRange().invert;\r\n var {\r\n x: x,\r\n y: y,\r\n width: width,\r\n height: height\r\n } = this;\r\n if (this._options.rotated) {\r\n yCoord = y + height / 2;\r\n if (invertedBusinessRange) {\r\n xCoord = isPositive ? x : x + width\r\n } else {\r\n xCoord = isPositive ? x + width : x\r\n }\r\n } else {\r\n xCoord = x + width / 2;\r\n if (invertedBusinessRange) {\r\n yCoord = isPositive ? y + height : y\r\n } else {\r\n yCoord = isPositive ? y : y + height\r\n }\r\n }\r\n return {\r\n x: xCoord,\r\n y: yCoord,\r\n offset: 0\r\n }\r\n },\r\n getTooltipParams: function(location) {\r\n if (\"edge\" === location) {\r\n return this._getEdgeTooltipParams()\r\n }\r\n var center = this.getCenterCoord();\r\n center.offset = 0;\r\n return center\r\n },\r\n getCenterCoord() {\r\n var {\r\n width: width,\r\n height: height,\r\n x: x,\r\n y: y\r\n } = this;\r\n return {\r\n x: x + width / 2,\r\n y: y + height / 2\r\n }\r\n },\r\n _truncateCoord: function(coord, bounds) {\r\n if (null === coord) {\r\n return coord\r\n }\r\n if (coord < bounds[0]) {\r\n return bounds[0]\r\n }\r\n if (coord > bounds[1]) {\r\n return bounds[1]\r\n }\r\n return coord\r\n },\r\n _getErrorBarBaseEdgeLength() {\r\n return this._options.rotated ? this.height : this.width\r\n },\r\n _translateErrorBars: function(argVisibleArea) {\r\n symbolPoint._translateErrorBars.call(this);\r\n if (this._errorBarPos < argVisibleArea[0] || this._errorBarPos > argVisibleArea[1]) {\r\n this._errorBarPos = void 0\r\n }\r\n },\r\n _translate: function() {\r\n var rotated = this._options.rotated;\r\n var valAxis = rotated ? \"x\" : \"y\";\r\n var argAxis = rotated ? \"y\" : \"x\";\r\n var valIntervalName = rotated ? \"width\" : \"height\";\r\n var argIntervalName = rotated ? \"height\" : \"width\";\r\n var argTranslator = this._getArgTranslator();\r\n var valTranslator = this._getValTranslator();\r\n var argVisibleArea = this.series.getArgumentAxis().getVisibleArea();\r\n var valVisibleArea = this.series.getValueAxis().getVisibleArea();\r\n var arg = argTranslator.translate(this.argument);\r\n var val = valTranslator.translate(this.value, 1);\r\n var minVal = valTranslator.translate(this.minValue);\r\n this[argAxis] = arg = null === arg ? arg : arg + (this[argAxis + \"Correction\"] || 0);\r\n this[\"v\" + valAxis] = val;\r\n this[\"v\" + argAxis] = arg + this[argIntervalName] / 2;\r\n val = this._truncateCoord(val, valVisibleArea);\r\n minVal = this._truncateCoord(minVal, valVisibleArea);\r\n this[valIntervalName] = _abs(val - minVal);\r\n val = val < minVal ? val : minVal;\r\n this._calculateVisibility(rotated ? val : arg, rotated ? arg : val, this.width, this.height);\r\n this[valAxis] = null === val ? val : val + (this[valAxis + \"Correction\"] || 0);\r\n this[\"min\" + valAxis.toUpperCase()] = null === minVal ? minVal : minVal + (this[valAxis + \"Correction\"] || 0);\r\n this[\"default\" + valAxis.toUpperCase()] = valTranslator.translate(CANVAS_POSITION_DEFAULT);\r\n this._translateErrorBars(argVisibleArea);\r\n if (this.inVisibleArea && null !== this[argAxis]) {\r\n if (this[argAxis] < argVisibleArea[0]) {\r\n this[argIntervalName] = this[argIntervalName] - (argVisibleArea[0] - this[argAxis]);\r\n this[argAxis] = argVisibleArea[0]\r\n }\r\n if (this[argAxis] + this[argIntervalName] > argVisibleArea[1]) {\r\n this[argIntervalName] = argVisibleArea[1] - this[argAxis]\r\n }\r\n }\r\n },\r\n _updateMarker: function(animationEnabled, style) {\r\n this.graphic.smartAttr(_extend({}, style, !animationEnabled ? this.getMarkerCoords() : {}))\r\n },\r\n getMarkerCoords: function() {\r\n var x = this.x;\r\n var y = this.y;\r\n var width = this.width;\r\n var height = this.height;\r\n var argAxis = this.series.getArgumentAxis();\r\n var rotated = this._options.rotated;\r\n if (argAxis.getAxisPosition) {\r\n var axisOptions = argAxis.getOptions();\r\n var edgeOffset = Math.round(axisOptions.width / 2);\r\n var argAxisPosition = argAxis.getAxisPosition();\r\n if (axisOptions.visible) {\r\n if (!rotated) {\r\n height -= this.minY === this.defaultY && this.minY === argAxisPosition - argAxis.getAxisShift() ? edgeOffset : 0;\r\n height < 0 && (height = 0)\r\n } else {\r\n var isStartFromAxis = this.minX === this.defaultX && this.minX === argAxisPosition - argAxis.getAxisShift();\r\n x += isStartFromAxis ? edgeOffset : 0;\r\n width -= isStartFromAxis ? edgeOffset : 0;\r\n width < 0 && (width = 0)\r\n }\r\n }\r\n }\r\n return {\r\n x: x,\r\n y: y,\r\n width: width,\r\n height: height\r\n }\r\n },\r\n coordsIn: function(x, y) {\r\n return x >= this.x && x <= this.x + this.width && y >= this.y && y <= this.y + this.height\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/viz/series/points/bubble_point.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nimport symbolPoint from \"./symbol_point\";\r\nvar _extend = extend;\r\nvar MIN_BUBBLE_HEIGHT = 20;\r\nexport default _extend({}, symbolPoint, {\r\n correctCoordinates: function(diameter) {\r\n this.bubbleSize = diameter / 2\r\n },\r\n _drawMarker: function(renderer, group, animationEnabled) {\r\n var attr = _extend({\r\n translateX: this.x,\r\n translateY: this.y\r\n }, this._getStyle());\r\n this.graphic = renderer.circle(0, 0, animationEnabled ? 0 : this.bubbleSize).smartAttr(attr).data({\r\n \"chart-data-point\": this\r\n }).append(group)\r\n },\r\n getTooltipParams: function(location) {\r\n var graphic = this.graphic;\r\n if (!graphic) {\r\n return\r\n }\r\n var height = graphic.getBBox().height;\r\n return {\r\n x: this.x,\r\n y: this.y,\r\n offset: height < MIN_BUBBLE_HEIGHT || \"edge\" === location ? height / 2 : 0\r\n }\r\n },\r\n _getLabelFormatObject: function() {\r\n var formatObject = symbolPoint._getLabelFormatObject.call(this);\r\n formatObject.size = this.initialSize;\r\n return formatObject\r\n },\r\n _updateData: function(data) {\r\n symbolPoint._updateData.call(this, data);\r\n this.size = this.initialSize = data.size\r\n },\r\n _getGraphicBBox: function() {\r\n return this._getSymbolBBox(this.x, this.y, this.bubbleSize)\r\n },\r\n _updateMarker: function(animationEnabled, style) {\r\n if (!animationEnabled) {\r\n style = _extend({\r\n r: this.bubbleSize,\r\n translateX: this.x,\r\n translateY: this.y\r\n }, style)\r\n }\r\n this.graphic.smartAttr(style)\r\n },\r\n _getFormatObject: function(tooltip) {\r\n var formatObject = symbolPoint._getFormatObject.call(this, tooltip);\r\n formatObject.sizeText = tooltip.formatValue(this.initialSize);\r\n return formatObject\r\n },\r\n _storeTrackerR: function() {\r\n return this.bubbleSize\r\n },\r\n _getLabelCoords: function(label) {\r\n var coords;\r\n if (\"inside\" === label.getLayoutOptions().position) {\r\n coords = this._getLabelCoordOfPosition(label, \"inside\")\r\n } else {\r\n coords = symbolPoint._getLabelCoords.call(this, label)\r\n }\r\n return coords\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/viz/series/points/pie_point.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nimport symbolPoint from \"./symbol_point\";\r\nvar _extend = extend;\r\nvar _round = Math.round;\r\nvar _sqrt = Math.sqrt;\r\nvar _acos = Math.acos;\r\nvar DEG = 180 / Math.PI;\r\nvar _abs = Math.abs;\r\nimport {\r\n getVerticallyShiftedAngularCoords,\r\n normalizeAngle as _normalizeAngle,\r\n getCosAndSin as _getCosAndSin\r\n} from \"../../core/utils\";\r\nimport {\r\n isDefined as _isDefined\r\n} from \"../../../core/utils/type\";\r\nimport consts from \"../../components/consts\";\r\nvar RADIAL_LABEL_INDENT = consts.radialLabelIndent;\r\nexport default _extend({}, symbolPoint, {\r\n _updateData: function(data, argumentChanged) {\r\n symbolPoint._updateData.call(this, data);\r\n if (argumentChanged || !_isDefined(this._visible)) {\r\n this._visible = true\r\n }\r\n this.minValue = this.initialMinValue = this.originalMinValue = _isDefined(data.minValue) ? data.minValue : 0\r\n },\r\n animate: function(complete, duration, delay) {\r\n this.graphic.animate({\r\n x: this.centerX,\r\n y: this.centerY,\r\n outerRadius: this.radiusOuter,\r\n innerRadius: this.radiusInner,\r\n startAngle: this.toAngle,\r\n endAngle: this.fromAngle\r\n }, {\r\n delay: delay,\r\n partitionDuration: duration\r\n }, complete)\r\n },\r\n correctPosition: function(correction) {\r\n this.correctRadius(correction);\r\n this.correctLabelRadius(correction.radiusOuter + RADIAL_LABEL_INDENT);\r\n this.centerX = correction.centerX;\r\n this.centerY = correction.centerY\r\n },\r\n correctRadius: function(correction) {\r\n this.radiusInner = correction.radiusInner;\r\n this.radiusOuter = correction.radiusOuter\r\n },\r\n correctLabelRadius: function(radiusLabels) {\r\n this.radiusLabels = radiusLabels\r\n },\r\n correctValue: function(correction, percent, base) {\r\n this.value = (base || this.normalInitialValue) + correction;\r\n this.minValue = correction;\r\n this.percent = percent;\r\n this._label.setDataField(\"percent\", percent)\r\n },\r\n _updateLabelData: function() {\r\n this._label.setData(this._getLabelFormatObject())\r\n },\r\n _getShiftLabelCoords: function() {\r\n var bBox = this._label.getBoundingRect();\r\n var coord = this._getLabelCoords(this._label);\r\n var visibleArea = this._getVisibleArea();\r\n if (this._isLabelDrawingWithoutPoints) {\r\n return this._checkLabelPosition(coord, bBox, visibleArea)\r\n } else {\r\n return this._getLabelExtraCoord(coord, this._checkVerticalLabelPosition(coord, bBox, visibleArea), bBox)\r\n }\r\n },\r\n _getLabelPosition: function(options) {\r\n return options.position\r\n },\r\n getAnnotationCoords: function(location) {\r\n return this._getElementCoords(\"edge\" !== location ? \"inside\" : \"outside\", this.radiusOuter, 0)\r\n },\r\n _getElementCoords: function(position, elementRadius, radialOffset) {\r\n var bBox = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {\r\n x: 0,\r\n y: 0,\r\n width: 0,\r\n height: 0\r\n };\r\n var that = this;\r\n var angleFunctions = _getCosAndSin(that.middleAngle);\r\n var radiusInner = that.radiusInner;\r\n var radiusOuter = that.radiusOuter;\r\n var columnsPosition = \"columns\" === position;\r\n var rad;\r\n var x;\r\n if (\"inside\" === position) {\r\n rad = radiusInner + (radiusOuter - radiusInner) / 2 + radialOffset;\r\n x = that.centerX + rad * angleFunctions.cos - bBox.width / 2\r\n } else {\r\n rad = elementRadius + radialOffset;\r\n if (angleFunctions.cos > .1 || columnsPosition && angleFunctions.cos >= 0) {\r\n x = that.centerX + rad * angleFunctions.cos\r\n } else if (angleFunctions.cos < -.1 || columnsPosition && angleFunctions.cos < 0) {\r\n x = that.centerX + rad * angleFunctions.cos - bBox.width\r\n } else {\r\n x = that.centerX + rad * angleFunctions.cos - bBox.width / 2\r\n }\r\n }\r\n return {\r\n x: x,\r\n y: _round(that.centerY - rad * angleFunctions.sin - bBox.height / 2)\r\n }\r\n },\r\n _getLabelCoords: function(label) {\r\n var bBox = label.getBoundingRect();\r\n var options = label.getLayoutOptions();\r\n var position = this._getLabelPosition(options);\r\n return this._getElementCoords(position, this.radiusLabels, options.radialOffset, bBox)\r\n },\r\n _correctLabelCoord: function(coord, moveLabelsFromCenter) {\r\n var label = this._label;\r\n var bBox = label.getBoundingRect();\r\n var labelWidth = bBox.width;\r\n var options = label.getLayoutOptions();\r\n var visibleArea = this._getVisibleArea();\r\n var rightBorderX = visibleArea.maxX - labelWidth;\r\n var leftBorderX = visibleArea.minX;\r\n var angleOfPoint = _normalizeAngle(this.middleAngle);\r\n var centerX = this.centerX;\r\n var connectorOffset = options.connectorOffset;\r\n var x = coord.x;\r\n if (\"columns\" === options.position) {\r\n if (angleOfPoint <= 90 || angleOfPoint >= 270) {\r\n x = rightBorderX\r\n } else {\r\n x = leftBorderX\r\n }\r\n coord.x = x\r\n } else if (\"inside\" !== options.position && moveLabelsFromCenter) {\r\n if (angleOfPoint <= 90 || angleOfPoint >= 270) {\r\n if (x - connectorOffset < centerX) {\r\n x = centerX + connectorOffset\r\n }\r\n } else if (x + labelWidth + connectorOffset > centerX) {\r\n x = centerX - labelWidth - connectorOffset\r\n }\r\n coord.x = x\r\n }\r\n return coord\r\n },\r\n drawLabel: function() {\r\n this.translate();\r\n this._isLabelDrawingWithoutPoints = true;\r\n this._drawLabel();\r\n this._isLabelDrawingWithoutPoints = false\r\n },\r\n updateLabelCoord: function(moveLabelsFromCenter) {\r\n var bBox = this._label.getBoundingRect();\r\n var coord = this._correctLabelCoord(bBox, moveLabelsFromCenter);\r\n coord = this._checkHorizontalLabelPosition(coord, bBox, this._getVisibleArea());\r\n this._label.shift(_round(coord.x), _round(bBox.y))\r\n },\r\n _checkVerticalLabelPosition: function(coord, box, visibleArea) {\r\n var x = coord.x;\r\n var y = coord.y;\r\n if (coord.y + box.height > visibleArea.maxY) {\r\n y = visibleArea.maxY - box.height\r\n } else if (coord.y < visibleArea.minY) {\r\n y = visibleArea.minY\r\n }\r\n return {\r\n x: x,\r\n y: y\r\n }\r\n },\r\n _getLabelExtraCoord: function(coord, shiftCoord, box) {\r\n return coord.y !== shiftCoord.y ? getVerticallyShiftedAngularCoords({\r\n x: coord.x,\r\n y: coord.y,\r\n width: box.width,\r\n height: box.height\r\n }, shiftCoord.y - coord.y, {\r\n x: this.centerX,\r\n y: this.centerY\r\n }) : coord\r\n },\r\n _checkHorizontalLabelPosition: function(coord, box, visibleArea) {\r\n var x = coord.x;\r\n var y = coord.y;\r\n if (coord.x + box.width > visibleArea.maxX) {\r\n x = visibleArea.maxX - box.width\r\n } else if (coord.x < visibleArea.minX) {\r\n x = visibleArea.minX\r\n }\r\n return {\r\n x: x,\r\n y: y\r\n }\r\n },\r\n applyWordWrap: function(moveLabelsFromCenter) {\r\n var label = this._label;\r\n var box = label.getBoundingRect();\r\n var visibleArea = this._getVisibleArea();\r\n var position = label.getLayoutOptions().position;\r\n var width = box.width;\r\n var rowCountChanged = false;\r\n if (\"columns\" === position && this.series.index > 0) {\r\n width = visibleArea.maxX - this.centerX - this.radiusLabels\r\n } else if (\"inside\" === position) {\r\n if (width > visibleArea.maxX - visibleArea.minX) {\r\n width = visibleArea.maxX - visibleArea.minX\r\n }\r\n } else if (moveLabelsFromCenter && box.x < this.centerX && box.width + box.x > this.centerX) {\r\n width = Math.floor((visibleArea.maxX - visibleArea.minX) / 2)\r\n } else if (box.x + width > visibleArea.maxX) {\r\n width = visibleArea.maxX - box.x\r\n } else if (box.x < visibleArea.minX) {\r\n width = box.x + width - visibleArea.minX\r\n }\r\n if (width < box.width) {\r\n rowCountChanged = label.fit(width)\r\n }\r\n return rowCountChanged\r\n },\r\n setLabelTrackerData: function() {\r\n this._label.setTrackerData(this)\r\n },\r\n _checkLabelPosition: function(coord, bBox, visibleArea) {\r\n coord = this._checkHorizontalLabelPosition(coord, bBox, visibleArea);\r\n return this._checkVerticalLabelPosition(coord, bBox, visibleArea)\r\n },\r\n _getLabelConnector: function() {\r\n var rad = this.radiusOuter;\r\n var seriesStyle = this._options.styles.normal;\r\n var strokeWidthBy2 = seriesStyle[\"stroke-width\"] / 2;\r\n var borderWidth = this.series.getOptions().containerBackgroundColor === seriesStyle.stroke ? _round(strokeWidthBy2) : _round(-strokeWidthBy2);\r\n var angleFunctions = _getCosAndSin(_round(this.middleAngle));\r\n return {\r\n x: _round(this.centerX + (rad - borderWidth) * angleFunctions.cos),\r\n y: _round(this.centerY - (rad - borderWidth) * angleFunctions.sin),\r\n angle: this.middleAngle\r\n }\r\n },\r\n _drawMarker: function(renderer, group, animationEnabled, firstDrawing) {\r\n var radiusOuter = this.radiusOuter;\r\n var radiusInner = this.radiusInner;\r\n var fromAngle = this.fromAngle;\r\n var toAngle = this.toAngle;\r\n if (animationEnabled) {\r\n radiusInner = radiusOuter = 0;\r\n if (!firstDrawing) {\r\n fromAngle = toAngle = this.shiftedAngle\r\n }\r\n }\r\n this.graphic = renderer.arc(this.centerX, this.centerY, radiusInner, radiusOuter, toAngle, fromAngle).attr({\r\n \"stroke-linejoin\": \"round\"\r\n }).smartAttr(this._getStyle()).data({\r\n \"chart-data-point\": this\r\n }).sharp().append(group)\r\n },\r\n getTooltipParams: function() {\r\n var angleFunctions = _getCosAndSin(this.middleAngle);\r\n var radiusInner = this.radiusInner;\r\n var radiusOuter = this.radiusOuter;\r\n return {\r\n x: this.centerX + (radiusInner + (radiusOuter - radiusInner) / 2) * angleFunctions.cos,\r\n y: this.centerY - (radiusInner + (radiusOuter - radiusInner) / 2) * angleFunctions.sin,\r\n offset: 0\r\n }\r\n },\r\n _translate: function() {\r\n var angle = this.shiftedAngle || 0;\r\n var value = this.value;\r\n var minValue = this.minValue;\r\n var translator = this._getValTranslator();\r\n this.fromAngle = translator.translate(minValue) + angle;\r\n this.toAngle = translator.translate(value) + angle;\r\n this.middleAngle = translator.translate((value - minValue) / 2 + minValue) + angle;\r\n if (!this.isVisible()) {\r\n this.middleAngle = this.toAngle = this.fromAngle = this.fromAngle || angle\r\n }\r\n },\r\n getMarkerVisibility: function() {\r\n return true\r\n },\r\n _updateMarker: function(animationEnabled, style, _, callback) {\r\n if (!animationEnabled) {\r\n style = _extend({\r\n x: this.centerX,\r\n y: this.centerY,\r\n outerRadius: this.radiusOuter,\r\n innerRadius: this.radiusInner,\r\n startAngle: this.toAngle,\r\n endAngle: this.fromAngle\r\n }, style)\r\n }\r\n this.graphic.smartAttr(style).sharp();\r\n callback && callback()\r\n },\r\n getLegendStyles: function() {\r\n return this._styles.legendStyles\r\n },\r\n isInVisibleArea: function() {\r\n return true\r\n },\r\n hide: function() {\r\n if (this._visible) {\r\n this._visible = false;\r\n this.hideTooltip();\r\n this._options.visibilityChanged()\r\n }\r\n },\r\n show: function() {\r\n if (!this._visible) {\r\n this._visible = true;\r\n this._options.visibilityChanged()\r\n }\r\n },\r\n setInvisibility: function() {\r\n this._label.draw(false)\r\n },\r\n isVisible: function() {\r\n return this._visible\r\n },\r\n _getFormatObject: function(tooltip) {\r\n var formatObject = symbolPoint._getFormatObject.call(this, tooltip);\r\n var percent = this.percent;\r\n formatObject.percent = percent;\r\n formatObject.percentText = tooltip.formatValue(percent, \"percent\");\r\n return formatObject\r\n },\r\n getColor: function() {\r\n return this._styles.normal.fill\r\n },\r\n coordsIn: function(x, y) {\r\n var lx = x - this.centerX;\r\n var ly = y - this.centerY;\r\n var r = _sqrt(lx * lx + ly * ly);\r\n var fromAngle = this.fromAngle % 360;\r\n var toAngle = this.toAngle % 360;\r\n var angle;\r\n if (r < this.radiusInner || r > this.radiusOuter || 0 === r) {\r\n return false\r\n }\r\n angle = _acos(lx / r) * DEG * (ly > 0 ? -1 : 1);\r\n if (angle < 0) {\r\n angle += 360\r\n }\r\n if (fromAngle === toAngle && _abs(this.toAngle - this.fromAngle) > 1e-4) {\r\n return true\r\n } else {\r\n return fromAngle >= toAngle ? angle <= fromAngle && angle >= toAngle : !(angle >= fromAngle && angle <= toAngle)\r\n }\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/viz/series/points/range_symbol_point.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n each\r\n} from \"../../../core/utils/iterator\";\r\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nimport {\r\n noop\r\n} from \"../../../core/utils/common\";\r\nimport {\r\n Label\r\n} from \"./label\";\r\nimport symbolPoint from \"./symbol_point\";\r\nvar _extend = extend;\r\nimport {\r\n isDefined as _isDefined\r\n} from \"../../../core/utils/type\";\r\nvar _math = Math;\r\nvar _abs = _math.abs;\r\nvar _min = _math.min;\r\nvar _max = _math.max;\r\nvar _round = _math.round;\r\nvar DEFAULT_IMAGE_WIDTH = 20;\r\nvar DEFAULT_IMAGE_HEIGHT = 20;\r\nexport default _extend({}, symbolPoint, {\r\n deleteLabel: function() {\r\n this._topLabel.dispose();\r\n this._topLabel = null;\r\n this._bottomLabel.dispose();\r\n this._bottomLabel = null\r\n },\r\n hideMarker: function(type) {\r\n var graphic = this.graphic;\r\n var marker = graphic && graphic[type + \"Marker\"];\r\n var label = this[\"_\" + type + \"Label\"];\r\n if (marker && \"hidden\" !== marker.attr(\"visibility\")) {\r\n marker.attr({\r\n visibility: \"hidden\"\r\n })\r\n }\r\n label.draw(false)\r\n },\r\n setInvisibility: function() {\r\n this.hideMarker(\"top\");\r\n this.hideMarker(\"bottom\")\r\n },\r\n clearVisibility: function() {\r\n var graphic = this.graphic;\r\n var topMarker = graphic && graphic.topMarker;\r\n var bottomMarker = graphic && graphic.bottomMarker;\r\n if (topMarker && topMarker.attr(\"visibility\")) {\r\n topMarker.attr({\r\n visibility: null\r\n })\r\n }\r\n if (bottomMarker && bottomMarker.attr(\"visibility\")) {\r\n bottomMarker.attr({\r\n visibility: null\r\n })\r\n }\r\n },\r\n clearMarker: function() {\r\n var graphic = this.graphic;\r\n var topMarker = graphic && graphic.topMarker;\r\n var bottomMarker = graphic && graphic.bottomMarker;\r\n var emptySettings = this._emptySettings;\r\n topMarker && topMarker.attr(emptySettings);\r\n bottomMarker && bottomMarker.attr(emptySettings)\r\n },\r\n _getLabelPosition: function(markerType) {\r\n var position;\r\n var labelsInside = \"inside\" === this._options.label.position;\r\n if (!this._options.rotated) {\r\n position = \"top\" === markerType ^ labelsInside ? \"top\" : \"bottom\"\r\n } else {\r\n position = \"top\" === markerType ^ labelsInside ? \"right\" : \"left\"\r\n }\r\n return position\r\n },\r\n _getLabelMinFormatObject: function() {\r\n return {\r\n index: 0,\r\n argument: this.initialArgument,\r\n value: this.initialMinValue,\r\n seriesName: this.series.name,\r\n originalValue: this.originalMinValue,\r\n originalArgument: this.originalArgument,\r\n point: this\r\n }\r\n },\r\n _updateLabelData: function() {\r\n var maxFormatObject = this._getLabelFormatObject();\r\n maxFormatObject.index = 1;\r\n this._topLabel.setData(maxFormatObject);\r\n this._bottomLabel.setData(this._getLabelMinFormatObject())\r\n },\r\n _updateLabelOptions: function() {\r\n var options = this._options.label;\r\n (!this._topLabel || !this._bottomLabel) && this._createLabel();\r\n this._topLabel.setOptions(options);\r\n this._bottomLabel.setOptions(options)\r\n },\r\n _createLabel: function() {\r\n var options = {\r\n renderer: this.series._renderer,\r\n labelsGroup: this.series._labelsGroup,\r\n point: this\r\n };\r\n this._topLabel = new Label(options);\r\n this._bottomLabel = new Label(options)\r\n },\r\n _getGraphicBBox: function(location) {\r\n var options = this._options;\r\n var images = this._getImage(options.image);\r\n var image = \"top\" === location ? this._checkImage(images.top) : this._checkImage(images.bottom);\r\n var bBox;\r\n var coord = this._getPositionFromLocation(location);\r\n if (options.visible) {\r\n bBox = image ? this._getImageBBox(coord.x, coord.y) : this._getSymbolBBox(coord.x, coord.y, options.styles.normal.r)\r\n } else {\r\n bBox = {\r\n x: coord.x,\r\n y: coord.y,\r\n width: 0,\r\n height: 0\r\n }\r\n }\r\n return bBox\r\n },\r\n _getPositionFromLocation: function(location) {\r\n var x;\r\n var y;\r\n var isTop = \"top\" === location;\r\n if (!this._options.rotated) {\r\n x = this.x;\r\n y = isTop ? _min(this.y, this.minY) : _max(this.y, this.minY)\r\n } else {\r\n x = isTop ? _max(this.x, this.minX) : _min(this.x, this.minX);\r\n y = this.y\r\n }\r\n return {\r\n x: x,\r\n y: y\r\n }\r\n },\r\n _checkOverlay: function(bottomCoord, topCoord, topValue) {\r\n return bottomCoord < topCoord + topValue\r\n },\r\n _getOverlayCorrections: function(topCoords, bottomCoords) {\r\n var rotated = this._options.rotated;\r\n var coordSelector = !rotated ? \"y\" : \"x\";\r\n var valueSelector = !rotated ? \"height\" : \"width\";\r\n var visibleArea = this.series.getValueAxis().getVisibleArea();\r\n var minBound = visibleArea[0];\r\n var maxBound = visibleArea[1];\r\n var delta = _round((topCoords[coordSelector] + topCoords[valueSelector] - bottomCoords[coordSelector]) / 2);\r\n var coord1 = topCoords[coordSelector] - delta;\r\n var coord2 = bottomCoords[coordSelector] + delta;\r\n if (coord1 < minBound) {\r\n delta = minBound - coord1;\r\n coord1 += delta;\r\n coord2 += delta\r\n } else if (coord2 + bottomCoords[valueSelector] > maxBound) {\r\n delta = maxBound - coord2 - bottomCoords[valueSelector];\r\n coord1 += delta;\r\n coord2 += delta\r\n }\r\n return {\r\n coord1: coord1,\r\n coord2: coord2\r\n }\r\n },\r\n _checkLabelsOverlay: function(topLocation) {\r\n var topCoords = this._topLabel.getBoundingRect();\r\n var bottomCoords = this._bottomLabel.getBoundingRect();\r\n var corrections = {};\r\n if (!this._options.rotated) {\r\n if (\"top\" === topLocation) {\r\n if (this._checkOverlay(bottomCoords.y, topCoords.y, topCoords.height)) {\r\n corrections = this._getOverlayCorrections(topCoords, bottomCoords);\r\n this._topLabel.shift(topCoords.x, corrections.coord1);\r\n this._bottomLabel.shift(bottomCoords.x, corrections.coord2)\r\n }\r\n } else if (this._checkOverlay(topCoords.y, bottomCoords.y, bottomCoords.height)) {\r\n corrections = this._getOverlayCorrections(bottomCoords, topCoords);\r\n this._topLabel.shift(topCoords.x, corrections.coord2);\r\n this._bottomLabel.shift(bottomCoords.x, corrections.coord1)\r\n }\r\n } else if (\"top\" === topLocation) {\r\n if (this._checkOverlay(topCoords.x, bottomCoords.x, bottomCoords.width)) {\r\n corrections = this._getOverlayCorrections(bottomCoords, topCoords);\r\n this._topLabel.shift(corrections.coord2, topCoords.y);\r\n this._bottomLabel.shift(corrections.coord1, bottomCoords.y)\r\n }\r\n } else if (this._checkOverlay(bottomCoords.x, topCoords.x, topCoords.width)) {\r\n corrections = this._getOverlayCorrections(topCoords, bottomCoords);\r\n this._topLabel.shift(corrections.coord1, topCoords.y);\r\n this._bottomLabel.shift(corrections.coord2, bottomCoords.y)\r\n }\r\n },\r\n _drawLabel: function() {\r\n var labels = [];\r\n var notInverted = this._options.rotated ? this.x >= this.minX : this.y < this.minY;\r\n var customVisibility = this._getCustomLabelVisibility();\r\n var topLabel = this._topLabel;\r\n var bottomLabel = this._bottomLabel;\r\n topLabel.pointPosition = notInverted ? \"top\" : \"bottom\";\r\n bottomLabel.pointPosition = notInverted ? \"bottom\" : \"top\";\r\n if ((this.series.getLabelVisibility() || customVisibility) && this.hasValue() && false !== customVisibility) {\r\n false !== this.visibleTopMarker && labels.push(topLabel);\r\n false !== this.visibleBottomMarker && labels.push(bottomLabel);\r\n each(labels, (function(_, label) {\r\n label.draw(true)\r\n }));\r\n this._checkLabelsOverlay(this._topLabel.pointPosition)\r\n } else {\r\n topLabel.draw(false);\r\n bottomLabel.draw(false)\r\n }\r\n },\r\n _getImage: function(imageOption) {\r\n var image = {};\r\n if (_isDefined(imageOption)) {\r\n if (\"string\" === typeof imageOption) {\r\n image.top = image.bottom = imageOption\r\n } else {\r\n image.top = {\r\n url: \"string\" === typeof imageOption.url ? imageOption.url : imageOption.url && imageOption.url.rangeMaxPoint,\r\n width: \"number\" === typeof imageOption.width ? imageOption.width : imageOption.width && imageOption.width.rangeMaxPoint,\r\n height: \"number\" === typeof imageOption.height ? imageOption.height : imageOption.height && imageOption.height.rangeMaxPoint\r\n };\r\n image.bottom = {\r\n url: \"string\" === typeof imageOption.url ? imageOption.url : imageOption.url && imageOption.url.rangeMinPoint,\r\n width: \"number\" === typeof imageOption.width ? imageOption.width : imageOption.width && imageOption.width.rangeMinPoint,\r\n height: \"number\" === typeof imageOption.height ? imageOption.height : imageOption.height && imageOption.height.rangeMinPoint\r\n }\r\n }\r\n }\r\n return image\r\n },\r\n _checkSymbol: function(oldOptions, newOptions) {\r\n var oldSymbol = oldOptions.symbol;\r\n var newSymbol = newOptions.symbol;\r\n var symbolChanged = \"circle\" === oldSymbol && \"circle\" !== newSymbol || \"circle\" !== oldSymbol && \"circle\" === newSymbol;\r\n var oldImages = this._getImage(oldOptions.image);\r\n var newImages = this._getImage(newOptions.image);\r\n var topImageChanged = this._checkImage(oldImages.top) !== this._checkImage(newImages.top);\r\n var bottomImageChanged = this._checkImage(oldImages.bottom) !== this._checkImage(newImages.bottom);\r\n return symbolChanged || topImageChanged || bottomImageChanged\r\n },\r\n _getSettingsForTwoMarkers: function(style) {\r\n var options = this._options;\r\n var settings = {};\r\n var x = options.rotated ? _min(this.x, this.minX) : this.x;\r\n var y = options.rotated ? this.y : _min(this.y, this.minY);\r\n var radius = style.r;\r\n var points = this._populatePointShape(options.symbol, radius);\r\n settings.top = _extend({\r\n translateX: x + this.width,\r\n translateY: y,\r\n r: radius\r\n }, style);\r\n settings.bottom = _extend({\r\n translateX: x,\r\n translateY: y + this.height,\r\n r: radius\r\n }, style);\r\n if (points) {\r\n settings.top.points = settings.bottom.points = points\r\n }\r\n return settings\r\n },\r\n _hasGraphic: function() {\r\n return this.graphic && this.graphic.topMarker && this.graphic.bottomMarker\r\n },\r\n _drawOneMarker: function(renderer, markerType, imageSettings, settings) {\r\n var graphic = this.graphic;\r\n if (graphic[markerType]) {\r\n this._updateOneMarker(markerType, settings)\r\n } else {\r\n graphic[markerType] = this._createMarker(renderer, graphic, imageSettings, settings)\r\n }\r\n },\r\n _drawMarker: function(renderer, group, animationEnabled, firstDrawing, style) {\r\n var settings = this._getSettingsForTwoMarkers(style || this._getStyle());\r\n var image = this._getImage(this._options.image);\r\n if (this._checkImage(image.top)) {\r\n settings.top = this._getImageSettings(settings.top, image.top)\r\n }\r\n if (this._checkImage(image.bottom)) {\r\n settings.bottom = this._getImageSettings(settings.bottom, image.bottom)\r\n }\r\n this.graphic = this.graphic || renderer.g().append(group);\r\n this.visibleTopMarker && this._drawOneMarker(renderer, \"topMarker\", image.top, settings.top);\r\n this.visibleBottomMarker && this._drawOneMarker(renderer, \"bottomMarker\", image.bottom, settings.bottom)\r\n },\r\n _getSettingsForTracker: function(radius) {\r\n var rotated = this._options.rotated;\r\n return {\r\n translateX: rotated ? _min(this.x, this.minX) - radius : this.x - radius,\r\n translateY: rotated ? this.y - radius : _min(this.y, this.minY) - radius,\r\n width: this.width + 2 * radius,\r\n height: this.height + 2 * radius\r\n }\r\n },\r\n isInVisibleArea: function() {\r\n var rotated = this._options.rotated;\r\n var argument = !rotated ? this.x : this.y;\r\n var maxValue = !rotated ? _max(this.minY, this.y) : _max(this.minX, this.x);\r\n var minValue = !rotated ? _min(this.minY, this.y) : _min(this.minX, this.x);\r\n var tmp;\r\n var visibleTopMarker;\r\n var visibleBottomMarker;\r\n var visibleRangeArea = true;\r\n var visibleArgArea = this.series.getArgumentAxis().getVisibleArea();\r\n var visibleValArea = this.series.getValueAxis().getVisibleArea();\r\n var notVisibleByArg = visibleArgArea[1] < argument || visibleArgArea[0] > argument;\r\n var notVisibleByVal = visibleValArea[0] > minValue && visibleValArea[0] > maxValue || visibleValArea[1] < minValue && visibleValArea[1] < maxValue;\r\n if (notVisibleByArg || notVisibleByVal) {\r\n visibleTopMarker = visibleBottomMarker = visibleRangeArea = false\r\n } else {\r\n visibleTopMarker = visibleValArea[0] <= minValue && visibleValArea[1] > minValue;\r\n visibleBottomMarker = visibleValArea[0] < maxValue && visibleValArea[1] >= maxValue;\r\n if (rotated) {\r\n tmp = visibleTopMarker;\r\n visibleTopMarker = visibleBottomMarker;\r\n visibleBottomMarker = tmp\r\n }\r\n }\r\n this.visibleTopMarker = visibleTopMarker;\r\n this.visibleBottomMarker = visibleBottomMarker;\r\n return visibleRangeArea\r\n },\r\n getTooltipParams: function() {\r\n var x;\r\n var y;\r\n var rotated = this._options.rotated;\r\n var minValue = !rotated ? _min(this.y, this.minY) : _min(this.x, this.minX);\r\n var side = !rotated ? \"height\" : \"width\";\r\n var visibleArea = this._getVisibleArea();\r\n var minVisible = rotated ? visibleArea.minX : visibleArea.minY;\r\n var maxVisible = rotated ? visibleArea.maxX : visibleArea.maxY;\r\n var min = _max(minVisible, minValue);\r\n var max = _min(maxVisible, minValue + this[side]);\r\n if (!rotated) {\r\n x = this.x;\r\n y = min + (max - min) / 2\r\n } else {\r\n y = this.y;\r\n x = min + (max - min) / 2\r\n }\r\n return {\r\n x: x,\r\n y: y,\r\n offset: 0\r\n }\r\n },\r\n _translate: function() {\r\n var rotated = this._options.rotated;\r\n symbolPoint._translate.call(this);\r\n this.height = rotated ? 0 : _abs(this.minY - this.y);\r\n this.width = rotated ? _abs(this.x - this.minX) : 0\r\n },\r\n hasCoords: function() {\r\n return symbolPoint.hasCoords.call(this) && !(null === this.minX || null === this.minY)\r\n },\r\n _updateData: function(data) {\r\n symbolPoint._updateData.call(this, data);\r\n this.minValue = this.initialMinValue = this.originalMinValue = data.minValue\r\n },\r\n _getImageSettings: function(settings, image) {\r\n return {\r\n href: image.url || image.toString(),\r\n width: image.width || DEFAULT_IMAGE_WIDTH,\r\n height: image.height || DEFAULT_IMAGE_HEIGHT,\r\n translateX: settings.translateX,\r\n translateY: settings.translateY\r\n }\r\n },\r\n getCrosshairData: function(x, y) {\r\n var rotated = this._options.rotated;\r\n var minX = this.minX;\r\n var minY = this.minY;\r\n var vx = this.vx;\r\n var vy = this.vy;\r\n var value = this.value;\r\n var minValue = this.minValue;\r\n var argument = this.argument;\r\n var coords = {\r\n axis: this.series.axis,\r\n x: vx,\r\n y: vy,\r\n yValue: value,\r\n xValue: argument\r\n };\r\n if (rotated) {\r\n coords.yValue = argument;\r\n if (_abs(vx - x) < _abs(minX - x)) {\r\n coords.xValue = value\r\n } else {\r\n coords.x = minX;\r\n coords.xValue = minValue\r\n }\r\n } else if (_abs(vy - y) >= _abs(minY - y)) {\r\n coords.y = minY;\r\n coords.yValue = minValue\r\n }\r\n return coords\r\n },\r\n _updateOneMarker: function(markerType, settings) {\r\n this.graphic && this.graphic[markerType] && this.graphic[markerType].attr(settings)\r\n },\r\n _updateMarker: function(animationEnabled, style) {\r\n this._drawMarker(void 0, void 0, false, false, style)\r\n },\r\n _getFormatObject: function(tooltip) {\r\n var initialMinValue = this.initialMinValue;\r\n var initialValue = this.initialValue;\r\n var initialArgument = this.initialArgument;\r\n var minValue = tooltip.formatValue(initialMinValue);\r\n var value = tooltip.formatValue(initialValue);\r\n return {\r\n argument: initialArgument,\r\n argumentText: tooltip.formatValue(initialArgument, \"argument\"),\r\n valueText: minValue + \" - \" + value,\r\n rangeValue1Text: minValue,\r\n rangeValue2Text: value,\r\n rangeValue1: initialMinValue,\r\n rangeValue2: initialValue,\r\n seriesName: this.series.name,\r\n point: this,\r\n originalMinValue: this.originalMinValue,\r\n originalValue: this.originalValue,\r\n originalArgument: this.originalArgument\r\n }\r\n },\r\n getLabel: function() {\r\n return [this._topLabel, this._bottomLabel]\r\n },\r\n getLabels: function() {\r\n return [this._topLabel, this._bottomLabel]\r\n },\r\n getBoundingRect: noop,\r\n coordsIn: function(x, y) {\r\n var trackerRadius = this._storeTrackerR();\r\n var xCond = x >= this.x - trackerRadius && x <= this.x + trackerRadius;\r\n var yCond = y >= this.y - trackerRadius && y <= this.y + trackerRadius;\r\n if (this._options.rotated) {\r\n return yCond && (xCond || x >= this.minX - trackerRadius && x <= this.minX + trackerRadius)\r\n } else {\r\n return xCond && (yCond || y >= this.minY - trackerRadius && y <= this.minY + trackerRadius)\r\n }\r\n },\r\n getMaxValue: function() {\r\n if (\"discrete\" !== this.series.valueAxisType) {\r\n return this.minValue > this.value ? this.minValue : this.value\r\n }\r\n return this.value\r\n },\r\n getMinValue: function() {\r\n if (\"discrete\" !== this.series.valueAxisType) {\r\n return this.minValue < this.value ? this.minValue : this.value\r\n }\r\n return this.minValue\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/viz/series/points/range_bar_point.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n noop\r\n} from \"../../../core/utils/common\";\r\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nimport barPoint from \"./bar_point\";\r\nimport rangeSymbolPointMethods from \"./range_symbol_point\";\r\nvar _extend = extend;\r\nexport default _extend({}, barPoint, {\r\n deleteLabel: rangeSymbolPointMethods.deleteLabel,\r\n _getFormatObject: rangeSymbolPointMethods._getFormatObject,\r\n clearVisibility: function() {\r\n var graphic = this.graphic;\r\n if (graphic && graphic.attr(\"visibility\")) {\r\n graphic.attr({\r\n visibility: null\r\n })\r\n }\r\n },\r\n setInvisibility: function() {\r\n var graphic = this.graphic;\r\n if (graphic && \"hidden\" !== graphic.attr(\"visibility\")) {\r\n graphic.attr({\r\n visibility: \"hidden\"\r\n })\r\n }\r\n this._topLabel.draw(false);\r\n this._bottomLabel.draw(false)\r\n },\r\n getTooltipParams: function(location) {\r\n var edgeLocation = \"edge\" === location;\r\n var x;\r\n var y;\r\n if (this._options.rotated) {\r\n x = edgeLocation ? this.x + this.width : this.x + this.width / 2;\r\n y = this.y + this.height / 2\r\n } else {\r\n x = this.x + this.width / 2;\r\n y = edgeLocation ? this.y : this.y + this.height / 2\r\n }\r\n return {\r\n x: x,\r\n y: y,\r\n offset: 0\r\n }\r\n },\r\n _translate: function() {\r\n var barMethods = barPoint;\r\n barMethods._translate.call(this);\r\n if (this._options.rotated) {\r\n this.width = this.width || 1\r\n } else {\r\n this.height = this.height || 1\r\n }\r\n },\r\n hasCoords: rangeSymbolPointMethods.hasCoords,\r\n _updateData: rangeSymbolPointMethods._updateData,\r\n _getLabelPosition: rangeSymbolPointMethods._getLabelPosition,\r\n _getLabelMinFormatObject: rangeSymbolPointMethods._getLabelMinFormatObject,\r\n _updateLabelData: rangeSymbolPointMethods._updateLabelData,\r\n _updateLabelOptions: rangeSymbolPointMethods._updateLabelOptions,\r\n getCrosshairData: rangeSymbolPointMethods.getCrosshairData,\r\n _createLabel: rangeSymbolPointMethods._createLabel,\r\n _checkOverlay: rangeSymbolPointMethods._checkOverlay,\r\n _checkLabelsOverlay: rangeSymbolPointMethods._checkLabelsOverlay,\r\n _getOverlayCorrections: rangeSymbolPointMethods._getOverlayCorrections,\r\n _drawLabel: rangeSymbolPointMethods._drawLabel,\r\n _getLabelCoords: rangeSymbolPointMethods._getLabelCoords,\r\n getLabel: rangeSymbolPointMethods.getLabel,\r\n getLabels: rangeSymbolPointMethods.getLabels,\r\n getBoundingRect: noop,\r\n getMinValue: rangeSymbolPointMethods.getMinValue,\r\n getMaxValue: rangeSymbolPointMethods.getMaxValue\r\n});\r\n","/**\r\n * DevExtreme (esm/viz/series/points/candlestick_point.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n extend as _extend\r\n} from \"../../../core/utils/extend\";\r\nimport symbolPoint from \"./symbol_point\";\r\nimport barPoint from \"./bar_point\";\r\nvar _math = Math;\r\nvar _abs = _math.abs;\r\nvar _min = _math.min;\r\nvar _max = _math.max;\r\nvar _round = _math.round;\r\nvar DEFAULT_FINANCIAL_TRACKER_MARGIN = 2;\r\nexport default _extend({}, barPoint, {\r\n _getContinuousPoints: function(openCoord, closeCoord) {\r\n var x = this.x;\r\n var createPoint = this._options.rotated ? function(x, y) {\r\n return [y, x]\r\n } : function(x, y) {\r\n return [x, y]\r\n };\r\n var width = this.width;\r\n var highCoord = this.highY;\r\n var max = _abs(highCoord - openCoord) < _abs(highCoord - closeCoord) ? openCoord : closeCoord;\r\n var min = max === closeCoord ? openCoord : closeCoord;\r\n var points;\r\n if (min === max) {\r\n points = [].concat(createPoint(x, this.highY)).concat(createPoint(x, this.lowY)).concat(createPoint(x, this.closeY)).concat(createPoint(x - width / 2, this.closeY)).concat(createPoint(x + width / 2, this.closeY)).concat(createPoint(x, this.closeY))\r\n } else {\r\n points = [].concat(createPoint(x, this.highY)).concat(createPoint(x, max)).concat(createPoint(x + width / 2, max)).concat(createPoint(x + width / 2, min)).concat(createPoint(x, min)).concat(createPoint(x, this.lowY)).concat(createPoint(x, min)).concat(createPoint(x - width / 2, min)).concat(createPoint(x - width / 2, max)).concat(createPoint(x, max))\r\n }\r\n return points\r\n },\r\n _getCrockPoints: function(y) {\r\n var x = this.x;\r\n var createPoint = this._options.rotated ? function(x, y) {\r\n return [y, x]\r\n } : function(x, y) {\r\n return [x, y]\r\n };\r\n return [].concat(createPoint(x, this.highY)).concat(createPoint(x, this.lowY)).concat(createPoint(x, y)).concat(createPoint(x - this.width / 2, y)).concat(createPoint(x + this.width / 2, y)).concat(createPoint(x, y))\r\n },\r\n _getPoints: function() {\r\n var points;\r\n var closeCoord = this.closeY;\r\n var openCoord = this.openY;\r\n if (null !== closeCoord && null !== openCoord) {\r\n points = this._getContinuousPoints(openCoord, closeCoord)\r\n } else if (openCoord === closeCoord) {\r\n points = [this.x, this.highY, this.x, this.lowY]\r\n } else {\r\n points = this._getCrockPoints(null !== openCoord ? openCoord : closeCoord)\r\n }\r\n return points\r\n },\r\n getColor: function() {\r\n return this._isReduction ? this._options.reduction.color : this._styles.normal.stroke || this.series.getColor()\r\n },\r\n _drawMarkerInGroup: function(group, attributes, renderer) {\r\n this.graphic = renderer.path(this._getPoints(), \"area\").attr({\r\n \"stroke-linecap\": \"square\"\r\n }).attr(attributes).data({\r\n \"chart-data-point\": this\r\n }).sharp().append(group)\r\n },\r\n _fillStyle: function() {\r\n var styles = this._options.styles;\r\n if (this._isReduction && this._isPositive) {\r\n this._styles = styles.reductionPositive\r\n } else if (this._isReduction) {\r\n this._styles = styles.reduction\r\n } else if (this._isPositive) {\r\n this._styles = styles.positive\r\n } else {\r\n this._styles = styles\r\n }\r\n },\r\n _getMinTrackerWidth: function() {\r\n return 2 + 2 * this._styles.normal[\"stroke-width\"]\r\n },\r\n correctCoordinates: function(correctOptions) {\r\n var minWidth = this._getMinTrackerWidth();\r\n var width = correctOptions.width;\r\n width = width < minWidth ? minWidth : width > 10 ? 10 : width;\r\n this.width = width + width % 2;\r\n this.xCorrection = correctOptions.offset\r\n },\r\n _getMarkerGroup: function(group) {\r\n var markerGroup;\r\n if (this._isReduction && this._isPositive) {\r\n markerGroup = group.reductionPositiveMarkersGroup\r\n } else if (this._isReduction) {\r\n markerGroup = group.reductionMarkersGroup\r\n } else if (this._isPositive) {\r\n markerGroup = group.defaultPositiveMarkersGroup\r\n } else {\r\n markerGroup = group.defaultMarkersGroup\r\n }\r\n return markerGroup\r\n },\r\n _drawMarker: function(renderer, group) {\r\n this._drawMarkerInGroup(this._getMarkerGroup(group), this._getStyle(), renderer)\r\n },\r\n _getSettingsForTracker: function() {\r\n var highY = this.highY;\r\n var lowY = this.lowY;\r\n var rotated = this._options.rotated;\r\n var x;\r\n var y;\r\n var width;\r\n var height;\r\n if (highY === lowY) {\r\n highY = rotated ? highY + DEFAULT_FINANCIAL_TRACKER_MARGIN : highY - DEFAULT_FINANCIAL_TRACKER_MARGIN;\r\n lowY = rotated ? lowY - DEFAULT_FINANCIAL_TRACKER_MARGIN : lowY + DEFAULT_FINANCIAL_TRACKER_MARGIN\r\n }\r\n if (rotated) {\r\n x = _min(lowY, highY);\r\n y = this.x - this.width / 2;\r\n width = _abs(lowY - highY);\r\n height = this.width\r\n } else {\r\n x = this.x - this.width / 2;\r\n y = _min(lowY, highY);\r\n width = this.width;\r\n height = _abs(lowY - highY)\r\n }\r\n return {\r\n x: x,\r\n y: y,\r\n width: width,\r\n height: height\r\n }\r\n },\r\n _getGraphicBBox: function(location) {\r\n var rotated = this._options.rotated;\r\n var x = this.x;\r\n var width = this.width;\r\n var lowY = this.lowY;\r\n var highY = this.highY;\r\n if (location) {\r\n var valVisibleArea = this.series.getValueAxis().getVisibleArea();\r\n highY = this._truncateCoord(highY, valVisibleArea);\r\n lowY = this._truncateCoord(lowY, valVisibleArea)\r\n }\r\n var bBox = {\r\n x: !rotated ? x - _round(width / 2) : lowY,\r\n y: !rotated ? highY : x - _round(width / 2),\r\n width: !rotated ? width : highY - lowY,\r\n height: !rotated ? lowY - highY : width\r\n };\r\n if (location) {\r\n var isTop = \"top\" === location;\r\n if (!this._options.rotated) {\r\n bBox.y = isTop ? bBox.y : bBox.y + bBox.height;\r\n bBox.height = 0\r\n } else {\r\n bBox.x = isTop ? bBox.x + bBox.width : bBox.x;\r\n bBox.width = 0\r\n }\r\n }\r\n return bBox\r\n },\r\n getTooltipParams: function(location) {\r\n if (this.graphic) {\r\n var minValue = _min(this.lowY, this.highY);\r\n var maxValue = _max(this.lowY, this.highY);\r\n var visibleArea = this._getVisibleArea();\r\n var rotated = this._options.rotated;\r\n var minVisible = rotated ? visibleArea.minX : visibleArea.minY;\r\n var maxVisible = rotated ? visibleArea.maxX : visibleArea.maxY;\r\n var min = _max(minVisible, minValue);\r\n var max = _min(maxVisible, maxValue);\r\n var centerCoord = this.getCenterCoord();\r\n if (\"edge\" === location) {\r\n centerCoord[rotated ? \"x\" : \"y\"] = rotated ? max : min\r\n }\r\n centerCoord.offset = 0;\r\n return centerCoord\r\n }\r\n },\r\n getCenterCoord() {\r\n if (this.graphic) {\r\n var x;\r\n var y;\r\n var minValue = _min(this.lowY, this.highY);\r\n var maxValue = _max(this.lowY, this.highY);\r\n var visibleArea = this._getVisibleArea();\r\n var rotated = this._options.rotated;\r\n var minVisible = rotated ? visibleArea.minX : visibleArea.minY;\r\n var maxVisible = rotated ? visibleArea.maxX : visibleArea.maxY;\r\n var min = _max(minVisible, minValue);\r\n var max = _min(maxVisible, maxValue);\r\n var center = min + (max - min) / 2;\r\n if (rotated) {\r\n y = this.x;\r\n x = center\r\n } else {\r\n x = this.x;\r\n y = center\r\n }\r\n return {\r\n x: x,\r\n y: y\r\n }\r\n }\r\n },\r\n hasValue: function() {\r\n return null !== this.highValue && null !== this.lowValue\r\n },\r\n hasCoords: function() {\r\n return null !== this.x && null !== this.lowY && null !== this.highY\r\n },\r\n _translate: function() {\r\n var rotated = this._options.rotated;\r\n var valTranslator = this._getValTranslator();\r\n var x = this._getArgTranslator().translate(this.argument);\r\n this.vx = this.vy = this.x = null === x ? x : x + (this.xCorrection || 0);\r\n this.openY = null !== this.openValue ? valTranslator.translate(this.openValue) : null;\r\n this.highY = valTranslator.translate(this.highValue);\r\n this.lowY = valTranslator.translate(this.lowValue);\r\n this.closeY = null !== this.closeValue ? valTranslator.translate(this.closeValue) : null;\r\n var centerValue = _min(this.lowY, this.highY) + _abs(this.lowY - this.highY) / 2;\r\n this._calculateVisibility(!rotated ? this.x : centerValue, !rotated ? centerValue : this.x)\r\n },\r\n getCrosshairData: function(x, y) {\r\n var rotated = this._options.rotated;\r\n var origY = rotated ? x : y;\r\n var yValue;\r\n var argument = this.argument;\r\n var coords;\r\n var coord = \"low\";\r\n if (_abs(this.lowY - origY) < _abs(this.closeY - origY)) {\r\n yValue = this.lowY\r\n } else {\r\n yValue = this.closeY;\r\n coord = \"close\"\r\n }\r\n if (_abs(yValue - origY) >= _abs(this.openY - origY)) {\r\n yValue = this.openY;\r\n coord = \"open\"\r\n }\r\n if (_abs(yValue - origY) >= _abs(this.highY - origY)) {\r\n yValue = this.highY;\r\n coord = \"high\"\r\n }\r\n if (rotated) {\r\n coords = {\r\n y: this.vy,\r\n x: yValue,\r\n xValue: this[coord + \"Value\"],\r\n yValue: argument\r\n }\r\n } else {\r\n coords = {\r\n x: this.vx,\r\n y: yValue,\r\n xValue: argument,\r\n yValue: this[coord + \"Value\"]\r\n }\r\n }\r\n coords.axis = this.series.axis;\r\n return coords\r\n },\r\n _updateData: function(data) {\r\n var label = this._label;\r\n var reductionColor = this._options.reduction.color;\r\n this.value = this.initialValue = data.reductionValue;\r\n this.originalValue = data.value;\r\n this.lowValue = this.originalLowValue = data.lowValue;\r\n this.highValue = this.originalHighValue = data.highValue;\r\n this.openValue = this.originalOpenValue = data.openValue;\r\n this.closeValue = this.originalCloseValue = data.closeValue;\r\n this._isPositive = data.openValue < data.closeValue;\r\n this._isReduction = data.isReduction;\r\n if (this._isReduction) {\r\n label.setColor(reductionColor)\r\n }\r\n },\r\n _updateMarker: function(animationEnabled, style, group) {\r\n var graphic = this.graphic;\r\n graphic.attr({\r\n points: this._getPoints()\r\n }).smartAttr(style).sharp();\r\n group && graphic.append(this._getMarkerGroup(group))\r\n },\r\n _getLabelFormatObject: function() {\r\n return {\r\n openValue: this.openValue,\r\n highValue: this.highValue,\r\n lowValue: this.lowValue,\r\n closeValue: this.closeValue,\r\n reductionValue: this.initialValue,\r\n argument: this.initialArgument,\r\n value: this.initialValue,\r\n seriesName: this.series.name,\r\n originalOpenValue: this.originalOpenValue,\r\n originalCloseValue: this.originalCloseValue,\r\n originalLowValue: this.originalLowValue,\r\n originalHighValue: this.originalHighValue,\r\n originalArgument: this.originalArgument,\r\n point: this\r\n }\r\n },\r\n _getFormatObject: function(tooltip) {\r\n var highValue = tooltip.formatValue(this.highValue);\r\n var openValue = tooltip.formatValue(this.openValue);\r\n var closeValue = tooltip.formatValue(this.closeValue);\r\n var lowValue = tooltip.formatValue(this.lowValue);\r\n var symbolMethods = symbolPoint;\r\n var formatObject = symbolMethods._getFormatObject.call(this, tooltip);\r\n return _extend({}, formatObject, {\r\n valueText: \"h: \" + highValue + (\"\" !== openValue ? \" o: \" + openValue : \"\") + (\"\" !== closeValue ? \" c: \" + closeValue : \"\") + \" l: \" + lowValue,\r\n highValueText: highValue,\r\n openValueText: openValue,\r\n closeValueText: closeValue,\r\n lowValueText: lowValue\r\n })\r\n },\r\n getMaxValue: function() {\r\n return this.highValue\r\n },\r\n getMinValue: function() {\r\n return this.lowValue\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/viz/series/points/stock_point.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nimport {\r\n isNumeric\r\n} from \"../../../core/utils/type\";\r\nimport candlestickPoint from \"./candlestick_point\";\r\nvar _extend = extend;\r\nvar _isNumeric = isNumeric;\r\nexport default _extend({}, candlestickPoint, {\r\n _getPoints: function() {\r\n var createPoint = this._options.rotated ? function(x, y) {\r\n return [y, x]\r\n } : function(x, y) {\r\n return [x, y]\r\n };\r\n var openYExist = _isNumeric(this.openY);\r\n var closeYExist = _isNumeric(this.closeY);\r\n var x = this.x;\r\n var width = this.width;\r\n var points = [].concat(createPoint(x, this.highY));\r\n openYExist && (points = points.concat(createPoint(x, this.openY)));\r\n openYExist && (points = points.concat(createPoint(x - width / 2, this.openY)));\r\n openYExist && (points = points.concat(createPoint(x, this.openY)));\r\n closeYExist && (points = points.concat(createPoint(x, this.closeY)));\r\n closeYExist && (points = points.concat(createPoint(x + width / 2, this.closeY)));\r\n closeYExist && (points = points.concat(createPoint(x, this.closeY)));\r\n points = points.concat(createPoint(x, this.lowY));\r\n return points\r\n },\r\n _drawMarkerInGroup: function(group, attributes, renderer) {\r\n this.graphic = renderer.path(this._getPoints(), \"line\").attr({\r\n \"stroke-linecap\": \"square\"\r\n }).attr(attributes).data({\r\n \"chart-data-point\": this\r\n }).sharp().append(group)\r\n },\r\n _getMinTrackerWidth: function() {\r\n var width = 2 + this._styles.normal[\"stroke-width\"];\r\n return width + width % 2\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/viz/series/points/polar_point.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nvar _extend = extend;\r\nimport symbolPoint from \"./symbol_point\";\r\nimport barPoint from \"./bar_point\";\r\nimport piePoint from \"./pie_point\";\r\nimport {\r\n isDefined\r\n} from \"../../../core/utils/type\";\r\nimport {\r\n normalizeAngle,\r\n convertPolarToXY,\r\n getCosAndSin,\r\n convertXYToPolar\r\n} from \"../../core/utils\";\r\nvar _math = Math;\r\nvar _max = _math.max;\r\nimport consts from \"../../components/consts\";\r\nvar RADIAL_LABEL_INDENT = consts.radialLabelIndent;\r\nvar ERROR_BARS_ANGLE_OFFSET = 90;\r\nvar CANVAS_POSITION_START = \"canvas_position_start\";\r\nvar CANVAS_POSITION_END = \"canvas_position_end\";\r\nvar CANVAS_POSITION_DEFAULT = \"canvas_position_default\";\r\nexport var polarSymbolPoint = _extend({}, symbolPoint, {\r\n _getLabelCoords: piePoint._getLabelCoords,\r\n _getElementCoords: piePoint._getElementCoords,\r\n _moveLabelOnCanvas: function(coord, visibleArea, labelBBox) {\r\n var x = coord.x;\r\n var y = coord.y;\r\n if (visibleArea.minX > x) {\r\n x = visibleArea.minX\r\n }\r\n if (visibleArea.maxX < x + labelBBox.width) {\r\n x = visibleArea.maxX - labelBBox.width\r\n }\r\n if (visibleArea.minY > y) {\r\n y = visibleArea.minY\r\n }\r\n if (visibleArea.maxY < y + labelBBox.height) {\r\n y = visibleArea.maxY - labelBBox.height\r\n }\r\n return {\r\n x: x,\r\n y: y\r\n }\r\n },\r\n _getLabelPosition: function() {\r\n return \"outside\"\r\n },\r\n _getCoords: function(argument, value) {\r\n var axis = this.series.getValueAxis();\r\n var startAngle = axis.getAngles()[0];\r\n var angle = this._getArgTranslator().translate(argument);\r\n var radius = this._getValTranslator().translate(value);\r\n var coords = convertPolarToXY(axis.getCenter(), axis.getAngles()[0], angle, radius);\r\n coords.angle = angle + startAngle - 90, coords.radius = radius;\r\n return coords\r\n },\r\n _translate() {\r\n var center = this.series.getValueAxis().getCenter();\r\n var coord = this._getCoords(this.argument, this.value);\r\n var translator = this._getValTranslator();\r\n var maxRadius = translator.isInverted() ? translator.translate(CANVAS_POSITION_START) : translator.translate(CANVAS_POSITION_END);\r\n var normalizedRadius = isDefined(coord.radius) && coord.radius >= 0 ? coord.radius : null;\r\n this.vx = normalizeAngle(coord.angle);\r\n this.vy = this.radiusOuter = this.radiusLabels = normalizedRadius;\r\n this.radiusLabels += RADIAL_LABEL_INDENT;\r\n this.radius = normalizedRadius;\r\n this.middleAngle = -coord.angle;\r\n this.angle = -coord.angle;\r\n this.x = coord.x;\r\n this.y = coord.y;\r\n this.defaultX = this.centerX = center.x;\r\n this.defaultY = this.centerY = center.y;\r\n this._translateErrorBars();\r\n this.inVisibleArea = this._checkRadiusForVisibleArea(normalizedRadius, maxRadius)\r\n },\r\n _checkRadiusForVisibleArea: (radius, maxRadius) => isDefined(radius) && radius <= maxRadius,\r\n _translateErrorBars: function() {\r\n var errorBars = this._options.errorBars;\r\n var translator = this._getValTranslator();\r\n if (!errorBars) {\r\n return\r\n }\r\n isDefined(this.lowError) && (this._lowErrorCoord = this.centerY - translator.translate(this.lowError));\r\n isDefined(this.highError) && (this._highErrorCoord = this.centerY - translator.translate(this.highError));\r\n this._errorBarPos = this.centerX;\r\n this._baseErrorBarPos = \"stdDeviation\" === errorBars.type ? this._lowErrorCoord + (this._highErrorCoord - this._lowErrorCoord) / 2 : this.centerY - this.radius\r\n },\r\n _getTranslates: function(animationEnabled) {\r\n return animationEnabled ? this.getDefaultCoords() : {\r\n x: this.x,\r\n y: this.y\r\n }\r\n },\r\n getDefaultCoords: function() {\r\n var cosSin = getCosAndSin(-this.angle);\r\n var radius = this._getValTranslator().translate(CANVAS_POSITION_DEFAULT);\r\n var x = this.defaultX + radius * cosSin.cos;\r\n var y = this.defaultY + radius * cosSin.sin;\r\n return {\r\n x: x,\r\n y: y\r\n }\r\n },\r\n _addLabelAlignmentAndOffset: function(label, coord) {\r\n return coord\r\n },\r\n _checkLabelPosition: function(label, coord) {\r\n var visibleArea = this._getVisibleArea();\r\n var graphicBBox = this._getGraphicBBox();\r\n if (this._isPointInVisibleArea(visibleArea, graphicBBox)) {\r\n coord = this._moveLabelOnCanvas(coord, visibleArea, label.getBoundingRect())\r\n }\r\n return coord\r\n },\r\n _getErrorBarSettings: function(errorBarOptions, animationEnabled) {\r\n var settings = symbolPoint._getErrorBarSettings.call(this, errorBarOptions, animationEnabled);\r\n settings.rotate = ERROR_BARS_ANGLE_OFFSET - this.angle;\r\n settings.rotateX = this.centerX;\r\n settings.rotateY = this.centerY;\r\n return settings\r\n },\r\n getCoords: function(min) {\r\n return min ? this.getDefaultCoords() : {\r\n x: this.x,\r\n y: this.y\r\n }\r\n }\r\n});\r\nexport var polarBarPoint = _extend({}, barPoint, {\r\n _translateErrorBars: polarSymbolPoint._translateErrorBars,\r\n _getErrorBarSettings: polarSymbolPoint._getErrorBarSettings,\r\n _moveLabelOnCanvas: polarSymbolPoint._moveLabelOnCanvas,\r\n _getLabelCoords: piePoint._getLabelCoords,\r\n _getElementCoords: piePoint._getElementCoords,\r\n _getLabelConnector: piePoint._getLabelConnector,\r\n getTooltipParams: piePoint.getTooltipParams,\r\n _getLabelPosition: piePoint._getLabelPosition,\r\n _getCoords: polarSymbolPoint._getCoords,\r\n _translate() {\r\n var translator = this._getValTranslator();\r\n var businessRange = translator.getBusinessRange();\r\n var maxRadius = translator.isInverted() ? translator.translate(CANVAS_POSITION_START) : translator.translate(CANVAS_POSITION_END);\r\n this.radiusInner = translator.translate(this.minValue);\r\n polarSymbolPoint._translate.call(this);\r\n if (null === this.radiusInner) {\r\n this.radiusInner = this.radius = maxRadius\r\n } else if (null === this.radius) {\r\n this.radius = this.value >= businessRange.minVisible ? maxRadius : 0\r\n } else if (this.radius > maxRadius) {\r\n this.radius = maxRadius\r\n }\r\n this.radiusOuter = this.radiusLabels = _max(this.radiusInner, this.radius);\r\n this.radiusLabels += RADIAL_LABEL_INDENT;\r\n this.radiusInner = this.defaultRadius = _math.min(this.radiusInner, this.radius);\r\n this.middleAngle = this.angle = -normalizeAngle(this.middleAngleCorrection - this.angle)\r\n },\r\n _checkRadiusForVisibleArea(radius) {\r\n return isDefined(radius) || this._getValTranslator().translate(this.minValue) > 0\r\n },\r\n _getErrorBarBaseEdgeLength() {\r\n var coord = this.getMarkerCoords();\r\n return _math.PI * coord.outerRadius * _math.abs(coord.startAngle - coord.endAngle) / 180\r\n },\r\n getMarkerCoords: function() {\r\n return {\r\n x: this.centerX,\r\n y: this.centerY,\r\n outerRadius: this.radiusOuter,\r\n innerRadius: this.defaultRadius,\r\n startAngle: this.middleAngle - this.interval / 2,\r\n endAngle: this.middleAngle + this.interval / 2\r\n }\r\n },\r\n _drawMarker: function(renderer, group, animationEnabled) {\r\n var styles = this._getStyle();\r\n var coords = this.getMarkerCoords();\r\n var innerRadius = coords.innerRadius;\r\n var outerRadius = coords.outerRadius;\r\n var start = this._getCoords(this.argument, CANVAS_POSITION_DEFAULT);\r\n var x = coords.x;\r\n var y = coords.y;\r\n if (animationEnabled) {\r\n innerRadius = 0;\r\n outerRadius = 0;\r\n x = start.x;\r\n y = start.y\r\n }\r\n this.graphic = renderer.arc(x, y, innerRadius, outerRadius, coords.startAngle, coords.endAngle).attr(styles).data({\r\n \"chart-data-point\": this\r\n }).append(group)\r\n },\r\n _checkLabelPosition: function(label, coord) {\r\n var visibleArea = this._getVisibleArea();\r\n var angleFunctions = getCosAndSin(this.middleAngle);\r\n var x = this.centerX + this.defaultRadius * angleFunctions.cos;\r\n var y = this.centerY - this.defaultRadius * angleFunctions.sin;\r\n if (x > visibleArea.minX && x < visibleArea.maxX && y > visibleArea.minY && y < visibleArea.maxY) {\r\n coord = this._moveLabelOnCanvas(coord, visibleArea, label.getBoundingRect())\r\n }\r\n return coord\r\n },\r\n _addLabelAlignmentAndOffset: function(label, coord) {\r\n return coord\r\n },\r\n correctCoordinates: function(correctOptions) {\r\n this.middleAngleCorrection = correctOptions.offset;\r\n this.interval = correctOptions.width\r\n },\r\n coordsIn: function(x, y) {\r\n var val = convertXYToPolar(this.series.getValueAxis().getCenter(), x, y);\r\n var coords = this.getMarkerCoords();\r\n var isBetweenAngles = coords.startAngle < coords.endAngle ? -val.phi >= coords.startAngle && -val.phi <= coords.endAngle : -val.phi <= coords.startAngle && -val.phi >= coords.endAngle;\r\n return val.r >= coords.innerRadius && val.r <= coords.outerRadius && isBetweenAngles\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/viz/series/points/base_point.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nvar mixins = {};\r\nimport consts from \"../../components/consts\";\r\nimport symbolPoint from \"./symbol_point\";\r\nimport barPoint from \"./bar_point\";\r\nimport bubblePoint from \"./bubble_point\";\r\nimport piePoint from \"./pie_point\";\r\nimport rangeSymbolPoint from \"./range_symbol_point\";\r\nimport rangeBarPoint from \"./range_bar_point\";\r\nimport candlestickPoint from \"./candlestick_point\";\r\nimport stockPoint from \"./stock_point\";\r\nimport {\r\n polarSymbolPoint,\r\n polarBarPoint\r\n} from \"./polar_point\";\r\nimport {\r\n normalizeEnum as _normalizeEnum\r\n} from \"../../core/utils\";\r\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nvar _extend = extend;\r\nimport {\r\n isDefined as _isDefined\r\n} from \"../../../core/utils/type\";\r\nimport {\r\n noop as _noop\r\n} from \"../../../core/utils/common\";\r\nvar statesConsts = consts.states;\r\nvar SYMBOL_POINT = \"symbolPoint\";\r\nvar POLAR_SYMBOL_POINT = \"polarSymbolPoint\";\r\nvar BAR_POINT = \"barPoint\";\r\nvar POLAR_BAR_POINT = \"polarBarPoint\";\r\nvar PIE_POINT = \"piePoint\";\r\nvar SELECTED_STATE = statesConsts.selectedMark;\r\nvar HOVER_STATE = statesConsts.hoverMark;\r\nvar NORMAL_STATE = statesConsts.normalMark;\r\nvar HOVER = statesConsts.hover;\r\nvar NORMAL = statesConsts.normal;\r\nvar SELECTION = statesConsts.selection;\r\nvar pointTypes = {\r\n chart: {\r\n scatter: SYMBOL_POINT,\r\n line: SYMBOL_POINT,\r\n spline: SYMBOL_POINT,\r\n stepline: SYMBOL_POINT,\r\n stackedline: SYMBOL_POINT,\r\n fullstackedline: SYMBOL_POINT,\r\n stackedspline: SYMBOL_POINT,\r\n fullstackedspline: SYMBOL_POINT,\r\n stackedsplinearea: SYMBOL_POINT,\r\n fullstackedsplinearea: SYMBOL_POINT,\r\n area: SYMBOL_POINT,\r\n splinearea: SYMBOL_POINT,\r\n steparea: SYMBOL_POINT,\r\n stackedarea: SYMBOL_POINT,\r\n fullstackedarea: SYMBOL_POINT,\r\n rangearea: \"rangeSymbolPoint\",\r\n bar: BAR_POINT,\r\n stackedbar: BAR_POINT,\r\n fullstackedbar: BAR_POINT,\r\n rangebar: \"rangeBarPoint\",\r\n bubble: \"bubblePoint\",\r\n stock: \"stockPoint\",\r\n candlestick: \"candlestickPoint\"\r\n },\r\n pie: {\r\n pie: PIE_POINT,\r\n doughnut: PIE_POINT,\r\n donut: PIE_POINT\r\n },\r\n polar: {\r\n scatter: POLAR_SYMBOL_POINT,\r\n line: POLAR_SYMBOL_POINT,\r\n area: POLAR_SYMBOL_POINT,\r\n bar: POLAR_BAR_POINT,\r\n stackedbar: POLAR_BAR_POINT\r\n }\r\n};\r\n\r\nfunction isNoneMode(mode) {\r\n return \"none\" === _normalizeEnum(mode)\r\n}\r\nexport function Point(series, dataItem, options) {\r\n this.fullState = NORMAL_STATE;\r\n this.series = series;\r\n this.update(dataItem, options);\r\n this._viewCounters = {\r\n hover: 0,\r\n selection: 0\r\n };\r\n this._emptySettings = {\r\n fill: null,\r\n stroke: null,\r\n dashStyle: null\r\n }\r\n}\r\nmixins.symbolPoint = symbolPoint;\r\nmixins.barPoint = barPoint;\r\nmixins.bubblePoint = bubblePoint;\r\nmixins.piePoint = piePoint;\r\nmixins.rangeSymbolPoint = rangeSymbolPoint;\r\nmixins.rangeBarPoint = rangeBarPoint;\r\nmixins.candlestickPoint = candlestickPoint;\r\nmixins.stockPoint = stockPoint;\r\nmixins.polarSymbolPoint = polarSymbolPoint;\r\nmixins.polarBarPoint = polarBarPoint;\r\nPoint.prototype = {\r\n constructor: Point,\r\n getColor: function() {\r\n if (!this.hasValue() && !this._styles.usePointCustomOptions) {\r\n this.series.customizePoint(this, this._dataItem)\r\n }\r\n return this._styles.normal.fill || this.series.getColor()\r\n },\r\n _getStyle: function() {\r\n return this._styles[this._currentStyle || \"normal\"]\r\n },\r\n update: function(dataItem, options) {\r\n this.updateOptions(options);\r\n this.updateData(dataItem)\r\n },\r\n updateData: function(dataItem) {\r\n var argumentWasChanged = this.argument !== dataItem.argument;\r\n this.argument = this.initialArgument = this.originalArgument = dataItem.argument;\r\n this.tag = dataItem.tag;\r\n this.index = dataItem.index;\r\n this._dataItem = dataItem;\r\n this.data = dataItem.data;\r\n this.lowError = dataItem.lowError;\r\n this.highError = dataItem.highError;\r\n this.aggregationInfo = dataItem.aggregationInfo;\r\n this._updateData(dataItem, argumentWasChanged);\r\n !this.hasValue() && this.setInvisibility();\r\n this._fillStyle();\r\n this._updateLabelData()\r\n },\r\n deleteMarker: function() {\r\n if (this.graphic) {\r\n this.graphic.dispose()\r\n }\r\n this.graphic = null\r\n },\r\n draw: function(renderer, groups, animationEnabled, firstDrawing) {\r\n if (this._needDeletingOnDraw || this.series.autoHidePointMarkers && !this.isSelected()) {\r\n this.deleteMarker();\r\n this._needDeletingOnDraw = false\r\n }\r\n if (this._needClearingOnDraw) {\r\n this.clearMarker();\r\n this._needClearingOnDraw = false\r\n }\r\n if (!this._hasGraphic()) {\r\n this.getMarkerVisibility() && !this.series.autoHidePointMarkers && this._drawMarker(renderer, groups.markers, animationEnabled, firstDrawing)\r\n } else {\r\n this._updateMarker(animationEnabled, this._getStyle(), groups.markers)\r\n }\r\n this._drawLabel();\r\n this._drawErrorBar(renderer, groups.errorBars, animationEnabled);\r\n return this\r\n },\r\n _getViewStyle: function() {\r\n var state = NORMAL_STATE;\r\n var fullState = this.fullState;\r\n var styles = [NORMAL, HOVER, SELECTION, SELECTION];\r\n if (this._viewCounters.hover) {\r\n state |= HOVER_STATE\r\n }\r\n if (this._viewCounters.selection) {\r\n state |= SELECTED_STATE\r\n }\r\n if (isNoneMode(this.getOptions().selectionMode)) {\r\n fullState &= ~SELECTED_STATE\r\n }\r\n if (isNoneMode(this.getOptions().hoverMode)) {\r\n fullState &= ~HOVER_STATE\r\n }\r\n state |= fullState;\r\n return styles[state]\r\n },\r\n applyView: function(legendCallback) {\r\n var style = this._getViewStyle();\r\n this._currentStyle = style;\r\n if (!this.graphic && this.getMarkerVisibility() && this.series.autoHidePointMarkers && (style === SELECTION || style === HOVER)) {\r\n this._drawMarker(this.series.getRenderer(), this.series.getMarkersGroup())\r\n }\r\n if (this.graphic) {\r\n if (this.series.autoHidePointMarkers && style !== SELECTION && style !== HOVER) {\r\n this.deleteMarker()\r\n } else {\r\n if (\"normal\" === style) {\r\n this.clearMarker()\r\n } else {\r\n this.graphic.toForeground()\r\n }\r\n this._updateMarker(true, this._styles[style], void 0, legendCallback)\r\n }\r\n }\r\n },\r\n setView: function(style) {\r\n this._viewCounters[style]++;\r\n this.applyView()\r\n },\r\n resetView: function(style) {\r\n var viewCounters = this._viewCounters;\r\n --viewCounters[style];\r\n if (viewCounters[style] < 0) {\r\n viewCounters[style] = 0\r\n }\r\n this.applyView()\r\n },\r\n releaseHoverState: function() {\r\n if (this.graphic && !this.isSelected()) {\r\n this.graphic.toBackground()\r\n }\r\n },\r\n select: function() {\r\n this.series.selectPoint(this)\r\n },\r\n clearSelection: function() {\r\n this.series.deselectPoint(this)\r\n },\r\n hover: function() {\r\n this.series.hoverPoint(this)\r\n },\r\n clearHover: function() {\r\n this.series.clearPointHover()\r\n },\r\n showTooltip: function() {\r\n this.series.showPointTooltip(this)\r\n },\r\n hideTooltip: function() {\r\n this.series.hidePointTooltip(this)\r\n },\r\n _checkLabelsChanging: function(oldType, newType) {\r\n var isNewRange = ~newType.indexOf(\"range\");\r\n var isOldRange = ~oldType.indexOf(\"range\");\r\n return isOldRange && !isNewRange || !isOldRange && isNewRange\r\n },\r\n updateOptions: function(newOptions) {\r\n if (!newOptions) {\r\n return\r\n }\r\n var oldOptions = this._options;\r\n var widgetType = newOptions.widgetType;\r\n var oldType = oldOptions && oldOptions.type;\r\n var newType = newOptions.type;\r\n var newPointTypeMixin = pointTypes[widgetType][newType];\r\n if (oldType !== newType) {\r\n this._needDeletingOnDraw = true;\r\n this._needClearingOnDraw = false;\r\n if (oldType) {\r\n this._checkLabelsChanging(oldType, newType) && this.deleteLabel();\r\n this._resetType(mixins[pointTypes[oldType]])\r\n }\r\n this._setType(mixins[newPointTypeMixin])\r\n } else {\r\n this._needDeletingOnDraw = this._checkSymbol(oldOptions, newOptions);\r\n this._needClearingOnDraw = this._checkCustomize(oldOptions, newOptions)\r\n }\r\n this._options = newOptions;\r\n this._fillStyle();\r\n this._updateLabelOptions(newPointTypeMixin)\r\n },\r\n translate: function() {\r\n if (this.hasValue()) {\r\n this._translate();\r\n this.translated = true\r\n }\r\n },\r\n _checkCustomize: function(oldOptions, newOptions) {\r\n return oldOptions.styles.usePointCustomOptions && !newOptions.styles.usePointCustomOptions\r\n },\r\n _getCustomLabelVisibility: function() {\r\n return this._styles.useLabelCustomOptions ? !!this._options.label.visible : null\r\n },\r\n getBoundingRect: function() {\r\n return this._getGraphicBBox()\r\n },\r\n _resetType: function(methods) {\r\n for (var methodName in methods) {\r\n delete this[methodName]\r\n }\r\n },\r\n _setType: function(methods) {\r\n for (var methodName in methods) {\r\n this[methodName] = methods[methodName]\r\n }\r\n },\r\n isInVisibleArea: function() {\r\n return this.inVisibleArea\r\n },\r\n isSelected: function() {\r\n return !!(this.fullState & SELECTED_STATE)\r\n },\r\n isHovered: function() {\r\n return !!(this.fullState & HOVER_STATE)\r\n },\r\n getOptions: function() {\r\n return this._options\r\n },\r\n animate: function(complete, settings, partitionDuration) {\r\n if (!this.graphic) {\r\n complete && complete();\r\n return\r\n }\r\n this.graphic.animate(settings, {\r\n partitionDuration: partitionDuration\r\n }, complete)\r\n },\r\n getCoords: function(min) {\r\n if (!min) {\r\n return {\r\n x: this.x,\r\n y: this.y\r\n }\r\n }\r\n if (!this._options.rotated) {\r\n return {\r\n x: this.x,\r\n y: this.minY + (this.y - this.minY ? 0 : 1)\r\n }\r\n }\r\n return {\r\n x: this.minX - (this.x - this.minX ? 0 : 1),\r\n y: this.y\r\n }\r\n },\r\n getDefaultCoords: function() {\r\n return !this._options.rotated ? {\r\n x: this.x,\r\n y: this.defaultY\r\n } : {\r\n x: this.defaultX,\r\n y: this.y\r\n }\r\n },\r\n setDefaultCoords() {\r\n var coords = this.getDefaultCoords();\r\n this.x = coords.x;\r\n this.y = coords.y\r\n },\r\n _getVisibleArea: function() {\r\n return this.series.getVisibleArea()\r\n },\r\n _getArgTranslator: function() {\r\n return this.series.getArgumentAxis().getTranslator()\r\n },\r\n _getValTranslator: function() {\r\n return this.series.getValueAxis().getTranslator()\r\n },\r\n _calculateVisibility: function(x, y, width, height) {\r\n var visibleArea = this._getVisibleArea();\r\n var rotated = this._options.rotated;\r\n if (visibleArea.minX > x + (width || 0) || visibleArea.maxX < x || visibleArea.minY > y + (height || 0) || visibleArea.maxY < y || rotated && _isDefined(width) && 0 !== width && (visibleArea.minX === x + width || visibleArea.maxX === x) || !rotated && _isDefined(height) && 0 !== height && (visibleArea.minY === y + height || visibleArea.maxY === y)) {\r\n this.inVisibleArea = false\r\n } else {\r\n this.inVisibleArea = true\r\n }\r\n },\r\n isArgumentCorrect() {\r\n return this.series._argumentChecker(this.argument)\r\n },\r\n isValueCorrect() {\r\n var valueChecker = this.series._valueChecker;\r\n return valueChecker(this.getMinValue()) && valueChecker(this.getMaxValue())\r\n },\r\n hasValue: function() {\r\n return null !== this.value && null !== this.minValue && this.isArgumentCorrect() && this.isValueCorrect()\r\n },\r\n hasCoords: _noop,\r\n correctPosition: _noop,\r\n correctRadius: _noop,\r\n correctLabelRadius: _noop,\r\n getCrosshairData: _noop,\r\n getPointRadius: _noop,\r\n _populatePointShape: _noop,\r\n _checkSymbol: _noop,\r\n getMarkerCoords: _noop,\r\n hide: _noop,\r\n show: _noop,\r\n hideMarker: _noop,\r\n setInvisibility: _noop,\r\n clearVisibility: _noop,\r\n isVisible: _noop,\r\n resetCorrection: _noop,\r\n correctValue: _noop,\r\n resetValue: _noop,\r\n setPercentValue: _noop,\r\n correctCoordinates: _noop,\r\n coordsIn: _noop,\r\n getTooltipParams: _noop,\r\n applyWordWrap: _noop,\r\n setLabelTrackerData: _noop,\r\n updateLabelCoord: _noop,\r\n drawLabel: _noop,\r\n correctLabelPosition: _noop,\r\n getMinValue: _noop,\r\n getMaxValue: _noop,\r\n _drawErrorBar: _noop,\r\n getMarkerVisibility: _noop,\r\n dispose: function() {\r\n this.deleteMarker();\r\n this.deleteLabel();\r\n this._errorBar && this._errorBar.dispose();\r\n this._options = this._styles = this.series = this._errorBar = null\r\n },\r\n getTooltipFormatObject: function(tooltip, stackPoints) {\r\n var tooltipFormatObject = this._getFormatObject(tooltip);\r\n var sharedTooltipValuesArray = [];\r\n var tooltipStackPointsFormatObject = [];\r\n if (stackPoints) {\r\n stackPoints.forEach(point => {\r\n if (!point.isVisible()) {\r\n return\r\n }\r\n var formatObject = point._getFormatObject(tooltip);\r\n tooltipStackPointsFormatObject.push(formatObject);\r\n sharedTooltipValuesArray.push(formatObject.seriesName + \": \" + formatObject.valueText)\r\n });\r\n _extend(tooltipFormatObject, {\r\n points: tooltipStackPointsFormatObject,\r\n valueText: sharedTooltipValuesArray.join(\"\\n\"),\r\n stackName: this.series.getStackName() || null\r\n })\r\n }\r\n var aggregationInfo = this.aggregationInfo;\r\n if (aggregationInfo) {\r\n var axis = this.series.getArgumentAxis();\r\n var rangeText = axis.formatRange(aggregationInfo.intervalStart, aggregationInfo.intervalEnd, aggregationInfo.aggregationInterval);\r\n if (rangeText) {\r\n tooltipFormatObject.valueText += \"\\n\".concat(rangeText)\r\n }\r\n }\r\n return tooltipFormatObject\r\n },\r\n setHole: function(holeValue, position) {\r\n var minValue = isFinite(this.minValue) ? this.minValue : 0;\r\n if (_isDefined(holeValue)) {\r\n if (\"left\" === position) {\r\n this.leftHole = this.value - holeValue;\r\n this.minLeftHole = minValue - holeValue\r\n } else {\r\n this.rightHole = this.value - holeValue;\r\n this.minRightHole = minValue - holeValue\r\n }\r\n }\r\n },\r\n resetHoles: function() {\r\n this.leftHole = null;\r\n this.minLeftHole = null;\r\n this.rightHole = null;\r\n this.minRightHole = null\r\n },\r\n getLabel: function() {\r\n return this._label\r\n },\r\n getLabels: function() {\r\n return [this._label]\r\n },\r\n getCenterCoord() {\r\n return {\r\n x: this.x,\r\n y: this.y\r\n }\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/viz/series/helpers/range_data_calculator.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n unique,\r\n getAddFunction,\r\n getLog\r\n} from \"../../core/utils\";\r\nimport {\r\n isDefined,\r\n isObject\r\n} from \"../../../core/utils/type\";\r\nimport {\r\n noop\r\n} from \"../../../core/utils/common\";\r\nvar DISCRETE = \"discrete\";\r\nvar {\r\n abs: abs,\r\n floor: floor,\r\n ceil: ceil,\r\n min: min\r\n} = Math;\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 value => {\r\n var log = 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 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 if (getLog) {\r\n return (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 = isObject(firstValue) ? firstValue.min : firstValue;\r\n range.max = isObject(firstValue) ? firstValue.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 = unique(range.categories)\r\n }\r\n return range\r\n}\r\n\r\nfunction getValueForArgument(point, extraPoint, x, range) {\r\n if (extraPoint && 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 : noop;\r\n if (argumentAxis && argumentAxis.getMarginOptions().checkInterval) {\r\n var range = series.getArgumentAxis().getTranslator().getBusinessRange();\r\n var add = getAddFunction(range, false);\r\n var interval = range.interval;\r\n if (isFinite(interval) && isDefined(viewport.startValue) && 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 if (!viewport.categories && 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 return range\r\n }\r\n}\r\n\r\nfunction getViewPortFilter(viewport) {\r\n if (viewport.categories) {\r\n var dictionary = viewport.categories.reduce((result, category) => {\r\n result[category.valueOf()] = true;\r\n return result\r\n }, {});\r\n return argument => isDefined(argument) && dictionary[argument.valueOf()]\r\n }\r\n if (!isDefined(viewport.startValue) && !isDefined(viewport.endValue)) {\r\n return () => true\r\n }\r\n if (!isDefined(viewport.endValue)) {\r\n return argument => argument >= viewport.startValue\r\n }\r\n if (!isDefined(viewport.startValue)) {\r\n return argument => argument <= viewport.endValue\r\n }\r\n return argument => argument >= viewport.startValue && argument <= viewport.endValue\r\n}\r\nexport 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(item => item.argument)\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, series.getArgumentRangeInitialValue()),\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 (isDefined(viewport.startValue) || isDefined(viewport.length)) {\r\n argumentCalculator(range.arg, argumentRange.min, argumentRange.min)\r\n }\r\n if (isDefined(viewport.endValue) || isDefined(viewport.length) && 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 } : noop;\r\n return points.reduce((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 [],\r\n []\r\n ])\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/viz/series/scatter_series.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n extend as _extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n inArray\r\n} from \"../../core/utils/array\";\r\nimport {\r\n each as _each\r\n} from \"../../core/utils/iterator\";\r\nimport rangeCalculator from \"./helpers/range_data_calculator\";\r\nimport {\r\n isDefined as _isDefined,\r\n isString as _isString\r\n} from \"../../core/utils/type\";\r\nimport {\r\n map as _map,\r\n normalizeEnum as _normalizeEnum,\r\n convertXYToPolar\r\n} from \"../core/utils\";\r\nimport {\r\n noop as _noop\r\n} from \"../../core/utils/common\";\r\nvar math = Math;\r\nvar _abs = math.abs;\r\nvar _sqrt = math.sqrt;\r\nvar _max = math.max;\r\nvar DEFAULT_TRACKER_WIDTH = 12;\r\nvar DEFAULT_DURATION = 400;\r\nvar HIGH_ERROR = \"highError\";\r\nvar LOW_ERROR = \"lowError\";\r\nvar VARIANCE = \"variance\";\r\nvar STANDARD_DEVIATION = \"stddeviation\";\r\nvar STANDARD_ERROR = \"stderror\";\r\nvar PERCENT = \"percent\";\r\nvar FIXED = \"fixed\";\r\nvar UNDEFINED = \"undefined\";\r\nvar DISCRETE = \"discrete\";\r\nvar LOGARITHMIC = \"logarithmic\";\r\nvar DATETIME = \"datetime\";\r\nvar chart = {};\r\nvar polar = {};\r\n\r\nfunction sum(array) {\r\n var result = 0;\r\n _each(array, (function(_, value) {\r\n result += value\r\n }));\r\n return result\r\n}\r\n\r\nfunction isErrorBarTypeCorrect(type) {\r\n return -1 !== inArray(type, [FIXED, PERCENT, VARIANCE, STANDARD_DEVIATION, STANDARD_ERROR])\r\n}\r\n\r\nfunction variance(array, expectedValue) {\r\n return sum(_map(array, (function(value) {\r\n return (value - expectedValue) * (value - expectedValue)\r\n }))) / array.length\r\n}\r\n\r\nfunction calculateAvgErrorBars(result, data, series) {\r\n var errorBarsOptions = series.getOptions().valueErrorBar;\r\n var valueField = series.getValueFields()[0];\r\n var lowValueField = errorBarsOptions.lowValueField || LOW_ERROR;\r\n var highValueField = errorBarsOptions.highValueField || HIGH_ERROR;\r\n if (series.areErrorBarsVisible() && void 0 === errorBarsOptions.type) {\r\n var fusionData = data.reduce((function(result, item) {\r\n if (_isDefined(item[lowValueField])) {\r\n result[0] += item[valueField] - item[lowValueField];\r\n result[1]++\r\n }\r\n if (_isDefined(item[highValueField])) {\r\n result[2] += item[highValueField] - item[valueField];\r\n result[3]++\r\n }\r\n return result\r\n }), [0, 0, 0, 0]);\r\n if (fusionData[1]) {\r\n result[lowValueField] = result[valueField] - fusionData[0] / fusionData[1]\r\n }\r\n if (fusionData[2]) {\r\n result[highValueField] = result[valueField] + fusionData[2] / fusionData[3]\r\n }\r\n }\r\n return result\r\n}\r\n\r\nfunction calculateSumErrorBars(result, data, series) {\r\n var errorBarsOptions = series.getOptions().valueErrorBar;\r\n var lowValueField = errorBarsOptions.lowValueField || LOW_ERROR;\r\n var highValueField = errorBarsOptions.highValueField || HIGH_ERROR;\r\n if (series.areErrorBarsVisible() && void 0 === errorBarsOptions.type) {\r\n result[lowValueField] = 0;\r\n result[highValueField] = 0;\r\n result = data.reduce((function(result, item) {\r\n result[lowValueField] += item[lowValueField];\r\n result[highValueField] += item[highValueField];\r\n return result\r\n }), result)\r\n }\r\n return result\r\n}\r\n\r\nfunction getMinMaxAggregator(compare) {\r\n return (_ref, series) => {\r\n var {\r\n intervalStart: intervalStart,\r\n intervalEnd: intervalEnd,\r\n data: data\r\n } = _ref;\r\n var valueField = series.getValueFields()[0];\r\n var targetData = data[0];\r\n targetData = data.reduce((result, item) => {\r\n var value = item[valueField];\r\n if (null === result[valueField]) {\r\n result = item\r\n }\r\n if (null !== value && compare(value, result[valueField])) {\r\n return item\r\n }\r\n return result\r\n }, targetData);\r\n return _extend({}, targetData, {\r\n [series.getArgumentField()]: series._getIntervalCenter(intervalStart, intervalEnd)\r\n })\r\n }\r\n}\r\n\r\nfunction checkFields(data, fieldsToCheck, skippedFields) {\r\n var allFieldsIsValid = true;\r\n for (var field in fieldsToCheck) {\r\n var isArgument = \"argument\" === field;\r\n if (isArgument || \"size\" === field ? !_isDefined(data[field]) : void 0 === data[field]) {\r\n var selector = fieldsToCheck[field];\r\n if (!isArgument) {\r\n skippedFields[selector] = (skippedFields[selector] || 0) + 1\r\n }\r\n allFieldsIsValid = false\r\n }\r\n }\r\n return allFieldsIsValid\r\n}\r\nvar baseScatterMethods = {\r\n _defaultDuration: DEFAULT_DURATION,\r\n _defaultTrackerWidth: DEFAULT_TRACKER_WIDTH,\r\n _applyStyle: _noop,\r\n _updateOptions: _noop,\r\n _parseStyle: _noop,\r\n _prepareSegment: _noop,\r\n _drawSegment: _noop,\r\n _appendInGroup: function() {\r\n this._group.append(this._extGroups.seriesGroup)\r\n },\r\n _createLegendState: function(styleOptions, defaultColor) {\r\n return {\r\n fill: styleOptions.color || defaultColor,\r\n hatching: styleOptions.hatching ? _extend({}, styleOptions.hatching, {\r\n direction: \"right\"\r\n }) : void 0\r\n }\r\n },\r\n _applyElementsClipRect: function(settings) {\r\n settings[\"clip-path\"] = this._paneClipRectID\r\n },\r\n _applyMarkerClipRect: function(settings) {\r\n settings[\"clip-path\"] = this._forceClipping ? this._paneClipRectID : null\r\n },\r\n _createGroup: function(groupName, parent, target, settings) {\r\n var group = parent[groupName] = parent[groupName] || this._renderer.g();\r\n target && group.append(target);\r\n settings && group.attr(settings)\r\n },\r\n _applyClearingSettings: function(settings) {\r\n settings.opacity = null;\r\n settings.scale = null;\r\n if (this._options.rotated) {\r\n settings.translateX = null\r\n } else {\r\n settings.translateY = null\r\n }\r\n },\r\n _createGroups: function() {\r\n this._createGroup(\"_markersGroup\", this, this._group);\r\n this._createGroup(\"_labelsGroup\", this)\r\n },\r\n _setMarkerGroupSettings: function() {\r\n var settings = this._createPointStyles(this._getMarkerGroupOptions()).normal;\r\n settings.class = \"dxc-markers\";\r\n settings.opacity = 1;\r\n this._applyMarkerClipRect(settings);\r\n this._markersGroup.attr(settings)\r\n },\r\n getVisibleArea: function() {\r\n return this._visibleArea\r\n },\r\n areErrorBarsVisible: function() {\r\n var errorBarOptions = this._options.valueErrorBar;\r\n return errorBarOptions && this._errorBarsEnabled() && \"none\" !== errorBarOptions.displayMode && (isErrorBarTypeCorrect(_normalizeEnum(errorBarOptions.type)) || _isDefined(errorBarOptions.lowValueField) || _isDefined(errorBarOptions.highValueField))\r\n },\r\n groupPointsByCoords(rotated) {\r\n var cat = [];\r\n _each(this.getVisiblePoints(), (function(_, p) {\r\n var pointCoord = parseInt(rotated ? p.vy : p.vx);\r\n if (!cat[pointCoord]) {\r\n cat[pointCoord] = p\r\n } else {\r\n Array.isArray(cat[pointCoord]) ? cat[pointCoord].push(p) : cat[pointCoord] = [cat[pointCoord], p]\r\n }\r\n }));\r\n return cat\r\n },\r\n _createErrorBarGroup: function(animationEnabled) {\r\n var errorBarOptions = this._options.valueErrorBar;\r\n var settings;\r\n if (this.areErrorBarsVisible()) {\r\n settings = {\r\n class: \"dxc-error-bars\",\r\n stroke: errorBarOptions.color,\r\n \"stroke-width\": errorBarOptions.lineWidth,\r\n opacity: animationEnabled ? .001 : errorBarOptions.opacity || 1,\r\n \"stroke-linecap\": \"square\",\r\n sharp: true,\r\n \"clip-path\": this._forceClipping ? this._paneClipRectID : this._widePaneClipRectID\r\n };\r\n this._createGroup(\"_errorBarGroup\", this, this._group, settings)\r\n }\r\n },\r\n _setGroupsSettings: function(animationEnabled) {\r\n this._setMarkerGroupSettings();\r\n this._setLabelGroupSettings(animationEnabled);\r\n this._createErrorBarGroup(animationEnabled)\r\n },\r\n _getCreatingPointOptions: function() {\r\n var defaultPointOptions;\r\n var creatingPointOptions = this._predefinedPointOptions;\r\n var normalStyle;\r\n if (!creatingPointOptions) {\r\n defaultPointOptions = this._getPointOptions();\r\n this._predefinedPointOptions = creatingPointOptions = _extend(true, {\r\n styles: {}\r\n }, defaultPointOptions);\r\n normalStyle = defaultPointOptions.styles && defaultPointOptions.styles.normal || {};\r\n creatingPointOptions.styles = creatingPointOptions.styles || {};\r\n creatingPointOptions.styles.normal = {\r\n \"stroke-width\": normalStyle[\"stroke-width\"],\r\n r: normalStyle.r,\r\n opacity: normalStyle.opacity\r\n }\r\n }\r\n return creatingPointOptions\r\n },\r\n _getPointOptions: function() {\r\n return this._parsePointOptions(this._preparePointOptions(), this._options.label)\r\n },\r\n _getOptionsForPoint: function() {\r\n return this._options.point\r\n },\r\n _parsePointStyle: function(style, defaultColor, defaultBorderColor, defaultSize) {\r\n var border = style.border || {};\r\n var sizeValue = void 0 !== style.size ? style.size : defaultSize;\r\n return {\r\n fill: style.color || defaultColor,\r\n stroke: border.color || defaultBorderColor,\r\n \"stroke-width\": border.visible ? border.width : 0,\r\n r: sizeValue / 2 + (border.visible && 0 !== sizeValue ? ~~(border.width / 2) || 0 : 0)\r\n }\r\n },\r\n _createPointStyles: function(pointOptions) {\r\n var mainPointColor = pointOptions.color || this._options.mainSeriesColor;\r\n var containerColor = this._options.containerBackgroundColor;\r\n var normalStyle = this._parsePointStyle(pointOptions, mainPointColor, mainPointColor);\r\n normalStyle.visibility = pointOptions.visible ? \"visible\" : \"hidden\";\r\n return {\r\n normal: normalStyle,\r\n hover: this._parsePointStyle(pointOptions.hoverStyle, containerColor, mainPointColor, pointOptions.size),\r\n selection: this._parsePointStyle(pointOptions.selectionStyle, containerColor, mainPointColor, pointOptions.size)\r\n }\r\n },\r\n _checkData: function(data, skippedFields, fieldsToCheck) {\r\n fieldsToCheck = fieldsToCheck || {\r\n value: this.getValueFields()[0]\r\n };\r\n fieldsToCheck.argument = this.getArgumentField();\r\n return checkFields(data, fieldsToCheck, skippedFields || {}) && data.value === data.value\r\n },\r\n getArgumentRangeInitialValue() {\r\n var points = this.getPoints();\r\n if (this.useAggregation() && points.length) {\r\n var _points$0$aggregation, _points$aggregationIn;\r\n return {\r\n min: null === (_points$0$aggregation = points[0].aggregationInfo) || void 0 === _points$0$aggregation ? void 0 : _points$0$aggregation.intervalStart,\r\n max: null === (_points$aggregationIn = points[points.length - 1].aggregationInfo) || void 0 === _points$aggregationIn ? void 0 : _points$aggregationIn.intervalEnd\r\n }\r\n }\r\n return\r\n },\r\n getValueRangeInitialValue: function() {\r\n return\r\n },\r\n _getRangeData: function() {\r\n return rangeCalculator.getRangeData(this)\r\n },\r\n _getPointDataSelector: function() {\r\n var valueField = this.getValueFields()[0];\r\n var argumentField = this.getArgumentField();\r\n var tagField = this.getTagField();\r\n var areErrorBarsVisible = this.areErrorBarsVisible();\r\n var lowValueField;\r\n var highValueField;\r\n if (areErrorBarsVisible) {\r\n var errorBarOptions = this._options.valueErrorBar;\r\n lowValueField = errorBarOptions.lowValueField || LOW_ERROR;\r\n highValueField = errorBarOptions.highValueField || HIGH_ERROR\r\n }\r\n return data => {\r\n var pointData = {\r\n value: this._processEmptyValue(data[valueField]),\r\n argument: data[argumentField],\r\n tag: data[tagField],\r\n data: data\r\n };\r\n if (areErrorBarsVisible) {\r\n pointData.lowError = data[lowValueField];\r\n pointData.highError = data[highValueField]\r\n }\r\n return pointData\r\n }\r\n },\r\n _errorBarsEnabled: function() {\r\n return this.valueAxisType !== DISCRETE && this.valueAxisType !== LOGARITHMIC && this.valueType !== DATETIME\r\n },\r\n _drawPoint: function(options) {\r\n var point = options.point;\r\n if (point.isInVisibleArea()) {\r\n point.clearVisibility();\r\n point.draw(this._renderer, options.groups, options.hasAnimation, options.firstDrawing);\r\n this._drawnPoints.push(point)\r\n } else {\r\n point.setInvisibility()\r\n }\r\n },\r\n _animateComplete: function() {\r\n var animationSettings = {\r\n duration: this._defaultDuration\r\n };\r\n this._labelsGroup && this._labelsGroup.animate({\r\n opacity: 1\r\n }, animationSettings);\r\n this._errorBarGroup && this._errorBarGroup.animate({\r\n opacity: this._options.valueErrorBar.opacity || 1\r\n }, animationSettings)\r\n },\r\n _animate: function() {\r\n var that = this;\r\n var lastPointIndex = that._drawnPoints.length - 1;\r\n _each(that._drawnPoints || [], (function(i, p) {\r\n p.animate(i === lastPointIndex ? function() {\r\n that._animateComplete()\r\n } : void 0, {\r\n translateX: p.x,\r\n translateY: p.y\r\n })\r\n }))\r\n },\r\n _getIntervalCenter(intervalStart, intervalEnd) {\r\n var argAxis = this.getArgumentAxis();\r\n return \"discrete\" !== argAxis.getOptions().type ? argAxis.getVisualRangeCenter({\r\n minVisible: intervalStart,\r\n maxVisible: intervalEnd\r\n }, true) : intervalStart\r\n },\r\n _defaultAggregator: \"avg\",\r\n _aggregators: {\r\n avg(_ref2, series) {\r\n var {\r\n data: data,\r\n intervalStart: intervalStart,\r\n intervalEnd: intervalEnd\r\n } = _ref2;\r\n if (!data.length) {\r\n return\r\n }\r\n var valueField = series.getValueFields()[0];\r\n var aggregationResult = data.reduce((result, item) => {\r\n var value = item[valueField];\r\n if (_isDefined(value)) {\r\n result[0] += value;\r\n result[1]++\r\n } else if (null === value) {\r\n result[2]++\r\n }\r\n return result\r\n }, [0, 0, 0]);\r\n return calculateAvgErrorBars({\r\n [valueField]: aggregationResult[2] === data.length ? null : aggregationResult[0] / aggregationResult[1],\r\n [series.getArgumentField()]: series._getIntervalCenter(intervalStart, intervalEnd)\r\n }, data, series)\r\n },\r\n sum(_ref3, series) {\r\n var {\r\n intervalStart: intervalStart,\r\n intervalEnd: intervalEnd,\r\n data: data\r\n } = _ref3;\r\n if (!data.length) {\r\n return\r\n }\r\n var valueField = series.getValueFields()[0];\r\n var aggregationResult = data.reduce((result, item) => {\r\n var value = item[valueField];\r\n if (void 0 !== value) {\r\n result[0] += value\r\n }\r\n if (null === value) {\r\n result[1]++\r\n } else if (void 0 === value) {\r\n result[2]++\r\n }\r\n return result\r\n }, [0, 0, 0]);\r\n var value = aggregationResult[0];\r\n if (aggregationResult[1] === data.length) {\r\n value = null\r\n }\r\n if (aggregationResult[2] === data.length) {\r\n return\r\n }\r\n return calculateSumErrorBars({\r\n [valueField]: value,\r\n [series.getArgumentField()]: series._getIntervalCenter(intervalStart, intervalEnd)\r\n }, data, series)\r\n },\r\n count(_ref4, series) {\r\n var {\r\n data: data,\r\n intervalStart: intervalStart,\r\n intervalEnd: intervalEnd\r\n } = _ref4;\r\n var valueField = series.getValueFields()[0];\r\n return {\r\n [series.getArgumentField()]: series._getIntervalCenter(intervalStart, intervalEnd),\r\n [valueField]: data.filter(i => void 0 !== i[valueField]).length\r\n }\r\n },\r\n min: getMinMaxAggregator((a, b) => a < b),\r\n max: getMinMaxAggregator((a, b) => a > b)\r\n },\r\n _endUpdateData: function() {\r\n delete this._predefinedPointOptions\r\n },\r\n getArgumentField: function() {\r\n return this._options.argumentField || \"arg\"\r\n },\r\n getValueFields: function() {\r\n var options = this._options;\r\n var errorBarsOptions = options.valueErrorBar;\r\n var valueFields = [options.valueField || \"val\"];\r\n var lowValueField;\r\n var highValueField;\r\n if (errorBarsOptions) {\r\n lowValueField = errorBarsOptions.lowValueField;\r\n highValueField = errorBarsOptions.highValueField;\r\n _isString(lowValueField) && valueFields.push(lowValueField);\r\n _isString(highValueField) && valueFields.push(highValueField)\r\n }\r\n return valueFields\r\n },\r\n _calculateErrorBars: function(data) {\r\n if (!this.areErrorBarsVisible()) {\r\n return\r\n }\r\n var options = this._options;\r\n var errorBarsOptions = options.valueErrorBar;\r\n var errorBarType = _normalizeEnum(errorBarsOptions.type);\r\n var floatErrorValue = parseFloat(errorBarsOptions.value);\r\n var valueField = this.getValueFields()[0];\r\n var value;\r\n var lowValueField = errorBarsOptions.lowValueField || LOW_ERROR;\r\n var highValueField = errorBarsOptions.highValueField || HIGH_ERROR;\r\n var valueArray;\r\n var valueArrayLength;\r\n var meanValue;\r\n var processDataItem;\r\n var addSubError = function(_i, item) {\r\n value = item.value;\r\n item.lowError = value - floatErrorValue;\r\n item.highError = value + floatErrorValue\r\n };\r\n switch (errorBarType) {\r\n case FIXED:\r\n processDataItem = addSubError;\r\n break;\r\n case PERCENT:\r\n processDataItem = function(_, item) {\r\n value = item.value;\r\n var error = value * floatErrorValue / 100;\r\n item.lowError = value - error;\r\n item.highError = value + error\r\n };\r\n break;\r\n case UNDEFINED:\r\n processDataItem = function(_, item) {\r\n item.lowError = item.data[lowValueField];\r\n item.highError = item.data[highValueField]\r\n };\r\n break;\r\n default:\r\n valueArray = _map(data, (function(item) {\r\n return _isDefined(item.data[valueField]) ? item.data[valueField] : null\r\n }));\r\n valueArrayLength = valueArray.length;\r\n floatErrorValue = floatErrorValue || 1;\r\n switch (errorBarType) {\r\n case VARIANCE:\r\n floatErrorValue = variance(valueArray, sum(valueArray) / valueArrayLength) * floatErrorValue;\r\n processDataItem = addSubError;\r\n break;\r\n case STANDARD_DEVIATION:\r\n meanValue = sum(valueArray) / valueArrayLength;\r\n floatErrorValue = _sqrt(variance(valueArray, meanValue)) * floatErrorValue;\r\n processDataItem = function(_, item) {\r\n item.lowError = meanValue - floatErrorValue;\r\n item.highError = meanValue + floatErrorValue\r\n };\r\n break;\r\n case STANDARD_ERROR:\r\n floatErrorValue = _sqrt(variance(valueArray, sum(valueArray) / valueArrayLength) / valueArrayLength) * floatErrorValue;\r\n processDataItem = addSubError\r\n }\r\n }\r\n processDataItem && _each(data, processDataItem)\r\n },\r\n _patchMarginOptions: function(options) {\r\n var pointOptions = this._getCreatingPointOptions();\r\n var styles = pointOptions.styles;\r\n var maxSize = [styles.normal, styles.hover, styles.selection].reduce((function(max, style) {\r\n return _max(max, 2 * style.r + style[\"stroke-width\"])\r\n }), 0);\r\n options.size = pointOptions.visible ? maxSize : 0;\r\n options.sizePointNormalState = pointOptions.visible ? 2 * styles.normal.r + styles.normal[\"stroke-width\"] : 2;\r\n return options\r\n },\r\n usePointsToDefineAutoHiding: () => true\r\n};\r\nchart = _extend({}, baseScatterMethods, {\r\n drawTrackers: function() {\r\n var that = this;\r\n var trackers;\r\n var trackersGroup;\r\n var segments = that._segments || [];\r\n var rotated = that._options.rotated;\r\n if (!that.isVisible()) {\r\n return\r\n }\r\n if (segments.length) {\r\n trackers = that._trackers = that._trackers || [];\r\n trackersGroup = that._trackersGroup = (that._trackersGroup || that._renderer.g().attr({\r\n fill: \"gray\",\r\n opacity: .001,\r\n stroke: \"gray\",\r\n class: \"dxc-trackers\"\r\n })).attr({\r\n \"clip-path\": this._paneClipRectID || null\r\n }).append(that._group);\r\n _each(segments, (function(i, segment) {\r\n if (!trackers[i]) {\r\n trackers[i] = that._drawTrackerElement(segment).data({\r\n \"chart-data-series\": that\r\n }).append(trackersGroup)\r\n } else {\r\n that._updateTrackerElement(segment, trackers[i])\r\n }\r\n }))\r\n }\r\n that._trackersTranslator = that.groupPointsByCoords(rotated)\r\n },\r\n _checkAxisVisibleAreaCoord(isArgument, coord) {\r\n var axis = isArgument ? this.getArgumentAxis() : this.getValueAxis();\r\n var visibleArea = axis.getVisibleArea();\r\n return _isDefined(coord) && visibleArea[0] <= coord && visibleArea[1] >= coord\r\n },\r\n checkSeriesViewportCoord(axis, coord) {\r\n return this.getPoints().length && this.isVisible()\r\n },\r\n getSeriesPairCoord(coord, isArgument) {\r\n var oppositeCoord = null;\r\n var isOpposite = !isArgument && !this._options.rotated || isArgument && this._options.rotated;\r\n var coordName = !isOpposite ? \"vx\" : \"vy\";\r\n var oppositeCoordName = !isOpposite ? \"vy\" : \"vx\";\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 = p[coordName] === coord ? p[oppositeCoordName] : void 0;\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 _getNearestPoints: (point, nextPoint) => [point, nextPoint],\r\n _getBezierPoints: () => [],\r\n _getNearestPointsByCoord(coord, isArgument) {\r\n var that = this;\r\n var rotated = that.getOptions().rotated;\r\n var isOpposite = !isArgument && !rotated || isArgument && rotated;\r\n var coordName = isOpposite ? \"vy\" : \"vx\";\r\n var allPoints = that.getPoints();\r\n var bezierPoints = that._getBezierPoints();\r\n var nearestPoints = [];\r\n if (allPoints.length > 1) {\r\n allPoints.forEach((point, i) => {\r\n var nextPoint = allPoints[i + 1];\r\n if (nextPoint && (point[coordName] <= coord && nextPoint[coordName] >= coord || point[coordName] >= coord && nextPoint[coordName] <= coord)) {\r\n nearestPoints.push(that._getNearestPoints(point, nextPoint, bezierPoints))\r\n }\r\n })\r\n } else {\r\n nearestPoints.push([allPoints[0], allPoints[0]])\r\n }\r\n return nearestPoints\r\n },\r\n getNeighborPoint: function(x, y) {\r\n var pCoord = this._options.rotated ? y : x;\r\n var nCoord = pCoord;\r\n var cat = this._trackersTranslator;\r\n var point = null;\r\n var minDistance;\r\n var oppositeCoord = this._options.rotated ? x : y;\r\n var oppositeCoordName = this._options.rotated ? \"vx\" : \"vy\";\r\n if (this.isVisible() && cat) {\r\n point = cat[pCoord];\r\n do {\r\n point = cat[nCoord] || cat[pCoord];\r\n pCoord--;\r\n nCoord++\r\n } while ((pCoord >= 0 || nCoord < cat.length) && !point);\r\n if (Array.isArray(point)) {\r\n minDistance = _abs(point[0][oppositeCoordName] - oppositeCoord);\r\n _each(point, (function(i, p) {\r\n var distance = _abs(p[oppositeCoordName] - oppositeCoord);\r\n if (minDistance >= distance) {\r\n minDistance = distance;\r\n point = p\r\n }\r\n }))\r\n }\r\n }\r\n return point\r\n },\r\n _applyVisibleArea: function() {\r\n var rotated = this._options.rotated;\r\n var visibleX = (rotated ? this.getValueAxis() : this.getArgumentAxis()).getVisibleArea();\r\n var visibleY = (rotated ? this.getArgumentAxis() : this.getValueAxis()).getVisibleArea();\r\n this._visibleArea = {\r\n minX: visibleX[0],\r\n maxX: visibleX[1],\r\n minY: visibleY[0],\r\n maxY: visibleY[1]\r\n }\r\n },\r\n getPointCenterByArg(arg) {\r\n var point = this.getPointsByArg(arg)[0];\r\n return point ? point.getCenterCoord() : void 0\r\n }\r\n});\r\npolar = _extend({}, baseScatterMethods, {\r\n drawTrackers: function() {\r\n chart.drawTrackers.call(this);\r\n var cat = this._trackersTranslator;\r\n var index;\r\n if (!this.isVisible()) {\r\n return\r\n }\r\n _each(cat, (function(i, category) {\r\n if (category) {\r\n index = i;\r\n return false\r\n }\r\n }));\r\n cat[index + 360] = cat[index]\r\n },\r\n getNeighborPoint: function(x, y) {\r\n var pos = convertXYToPolar(this.getValueAxis().getCenter(), x, y);\r\n return chart.getNeighborPoint.call(this, pos.phi, pos.r)\r\n },\r\n _applyVisibleArea: function() {\r\n var canvas = this.getValueAxis().getCanvas();\r\n this._visibleArea = {\r\n minX: canvas.left,\r\n maxX: canvas.width - canvas.right,\r\n minY: canvas.top,\r\n maxY: canvas.height - canvas.bottom\r\n }\r\n },\r\n getSeriesPairCoord(params, isArgument) {\r\n var coords = null;\r\n var paramName = isArgument ? \"argument\" : \"radius\";\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 tmpPoint = _isDefined(p[paramName]) && _isDefined(params[paramName]) && p[paramName].valueOf() === params[paramName].valueOf() ? {\r\n x: p.x,\r\n y: p.y\r\n } : void 0;\r\n if (_isDefined(tmpPoint)) {\r\n coords = tmpPoint;\r\n break\r\n }\r\n }\r\n return coords\r\n }\r\n});\r\nexport {\r\n chart,\r\n polar\r\n};\r\n","/**\r\n * DevExtreme (esm/viz/series/line_series.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n chart as chartScatterSeries,\r\n polar as polarScatterSeries\r\n} from \"./scatter_series\";\r\nimport {\r\n clone\r\n} from \"../../core/utils/object\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n map,\r\n normalizeAngle,\r\n getCosAndSin\r\n} from \"../core/utils\";\r\nimport {\r\n solveCubicEquation,\r\n trunc\r\n} from \"../../core/utils/math\";\r\nvar DISCRETE = \"discrete\";\r\nvar {\r\n round: round,\r\n sqrt: sqrt,\r\n pow: pow,\r\n min: min,\r\n max: max,\r\n abs: abs\r\n} = Math;\r\nvar chart = {};\r\nvar polar = {};\r\n\r\nfunction clonePoint(point, newX, newY, newAngle) {\r\n var p = clone(point);\r\n p.x = newX;\r\n p.y = newY;\r\n p.angle = newAngle;\r\n return p\r\n}\r\n\r\nfunction getTangentPoint(point, prevPoint, centerPoint, tan, nextStepAngle) {\r\n var correctAngle = point.angle + nextStepAngle;\r\n var cosSin = getCosAndSin(correctAngle);\r\n var x = centerPoint.x + (point.radius + tan * nextStepAngle) * cosSin.cos;\r\n var y = centerPoint.y - (point.radius + tan * nextStepAngle) * cosSin.sin;\r\n return clonePoint(prevPoint, x, y, correctAngle)\r\n}\r\n\r\nfunction obtainCubicBezierTCoef(p, p0, p1, p2, p3) {\r\n var d = p0 - p;\r\n var c = 3 * p1 - 3 * p0;\r\n var b = 3 * p2 - 6 * p1 + 3 * p0;\r\n var a = p3 - 3 * p2 + 3 * p1 - p0;\r\n return solveCubicEquation(a, b, c, d)\r\n}\r\nvar lineMethods = {\r\n autoHidePointMarkersEnabled: () => true,\r\n _applyGroupSettings: function(style, settings, group) {\r\n settings = extend(settings, style);\r\n this._applyElementsClipRect(settings);\r\n group.attr(settings)\r\n },\r\n _setGroupsSettings: function(animationEnabled) {\r\n var style = this._styles.normal;\r\n this._applyGroupSettings(style.elements, {\r\n class: \"dxc-elements\"\r\n }, this._elementsGroup);\r\n this._bordersGroup && this._applyGroupSettings(style.border, {\r\n class: \"dxc-borders\"\r\n }, this._bordersGroup);\r\n chartScatterSeries._setGroupsSettings.call(this, animationEnabled);\r\n animationEnabled && this._markersGroup && this._markersGroup.attr({\r\n opacity: .001\r\n })\r\n },\r\n _createGroups: function() {\r\n this._createGroup(\"_elementsGroup\", this, this._group);\r\n this._areBordersVisible() && this._createGroup(\"_bordersGroup\", this, this._group);\r\n chartScatterSeries._createGroups.call(this)\r\n },\r\n _areBordersVisible: function() {\r\n return false\r\n },\r\n _getDefaultSegment: function(segment) {\r\n return {\r\n line: map(segment.line || [], (function(pt) {\r\n return pt.getDefaultCoords()\r\n }))\r\n }\r\n },\r\n _prepareSegment: function(points) {\r\n return {\r\n line: points\r\n }\r\n },\r\n _parseLineOptions: function(options, defaultColor) {\r\n return {\r\n stroke: options.color || defaultColor,\r\n \"stroke-width\": options.width,\r\n dashStyle: options.dashStyle || \"solid\"\r\n }\r\n },\r\n _parseStyle: function(options, defaultColor) {\r\n return {\r\n elements: this._parseLineOptions(options, defaultColor)\r\n }\r\n },\r\n _applyStyle: function(style) {\r\n this._elementsGroup && this._elementsGroup.attr(style.elements);\r\n each(this._graphics || [], (function(_, graphic) {\r\n graphic.line && graphic.line.attr({\r\n \"stroke-width\": style.elements[\"stroke-width\"]\r\n }).sharp()\r\n }))\r\n },\r\n _drawElement: function(segment, group) {\r\n return {\r\n line: this._createMainElement(segment.line, {\r\n \"stroke-width\": this._styles.normal.elements[\"stroke-width\"]\r\n }).append(group)\r\n }\r\n },\r\n _removeElement: function(element) {\r\n element.line.remove()\r\n },\r\n _updateElement: function(element, segment, animate, animationComplete) {\r\n var params = {\r\n points: segment.line\r\n };\r\n var lineElement = element.line;\r\n animate ? lineElement.animate(params, {}, animationComplete) : lineElement.attr(params)\r\n },\r\n _animateComplete: function() {\r\n chartScatterSeries._animateComplete.call(this);\r\n this._markersGroup && this._markersGroup.animate({\r\n opacity: 1\r\n }, {\r\n duration: this._defaultDuration\r\n })\r\n },\r\n _animate: function() {\r\n var that = this;\r\n var lastIndex = that._graphics.length - 1;\r\n each(that._graphics || [], (function(i, elem) {\r\n var complete;\r\n if (i === lastIndex) {\r\n complete = function() {\r\n that._animateComplete()\r\n }\r\n }\r\n that._updateElement(elem, that._segments[i], true, complete)\r\n }))\r\n },\r\n _drawPoint: function(options) {\r\n chartScatterSeries._drawPoint.call(this, {\r\n point: options.point,\r\n groups: options.groups\r\n })\r\n },\r\n _createMainElement: function(points, settings) {\r\n return this._renderer.path(points, \"line\").attr(settings)\r\n },\r\n _sortPoints: function(points, rotated) {\r\n return rotated ? points.sort((function(p1, p2) {\r\n return p2.y - p1.y\r\n })) : points.sort((function(p1, p2) {\r\n return p1.x - p2.x\r\n }))\r\n },\r\n _drawSegment: function(points, animationEnabled, segmentCount, lastSegment) {\r\n var rotated = this._options.rotated;\r\n var segment = this._prepareSegment(points, rotated, lastSegment);\r\n this._segments.push(segment);\r\n if (!this._graphics[segmentCount]) {\r\n this._graphics[segmentCount] = this._drawElement(animationEnabled ? this._getDefaultSegment(segment) : segment, this._elementsGroup)\r\n } else if (!animationEnabled) {\r\n this._updateElement(this._graphics[segmentCount], segment)\r\n }\r\n },\r\n _getTrackerSettings: function() {\r\n var defaultTrackerWidth = this._defaultTrackerWidth;\r\n var strokeWidthFromElements = this._styles.normal.elements[\"stroke-width\"];\r\n return {\r\n \"stroke-width\": strokeWidthFromElements > defaultTrackerWidth ? strokeWidthFromElements : defaultTrackerWidth,\r\n fill: \"none\"\r\n }\r\n },\r\n _getMainPointsFromSegment: function(segment) {\r\n return segment.line\r\n },\r\n _drawTrackerElement: function(segment) {\r\n return this._createMainElement(this._getMainPointsFromSegment(segment), this._getTrackerSettings(segment))\r\n },\r\n _updateTrackerElement: function(segment, element) {\r\n var settings = this._getTrackerSettings(segment);\r\n settings.points = this._getMainPointsFromSegment(segment);\r\n element.attr(settings)\r\n },\r\n checkSeriesViewportCoord(axis, coord) {\r\n if (!chartScatterSeries.checkSeriesViewportCoord.call(this)) {\r\n return false\r\n }\r\n var range = axis.isArgumentAxis ? this.getArgumentRange() : this.getViewport();\r\n var min = axis.getTranslator().translate(range.categories ? range.categories[0] : range.min);\r\n var max = axis.getTranslator().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 axis.isArgumentAxis && (!rotated && !inverted || rotated && inverted) || !axis.isArgumentAxis && (rotated && !inverted || !rotated && inverted) ? coord >= min && coord <= max : coord >= max && coord <= min\r\n }\r\n};\r\nvar lineSeries = chart.line = extend({}, chartScatterSeries, lineMethods, {\r\n getPointCenterByArg(arg) {\r\n var value = this.getArgumentAxis().getTranslator().translate(arg);\r\n return {\r\n x: value,\r\n y: value\r\n }\r\n },\r\n getSeriesPairCoord(coord, isArgument) {\r\n var oppositeCoord = null;\r\n var nearestPoints = this._getNearestPointsByCoord(coord, isArgument);\r\n var needValueCoord = isArgument && !this._options.rotated || !isArgument && this._options.rotated;\r\n for (var i = 0; i < nearestPoints.length; i++) {\r\n var p = nearestPoints[i];\r\n var k = (p[1].vy - p[0].vy) / (p[1].vx - p[0].vx);\r\n var b = p[0].vy - p[0].vx * k;\r\n var tmpCoord = void 0;\r\n if (p[1].vx - p[0].vx === 0) {\r\n tmpCoord = needValueCoord ? p[0].vy : p[0].vx\r\n } else {\r\n tmpCoord = needValueCoord ? k * coord + b : (coord - b) / k\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\nchart.stepline = extend({}, lineSeries, {\r\n _calculateStepLinePoints(points) {\r\n var segment = [];\r\n var coordName = this._options.rotated ? \"x\" : \"y\";\r\n each(points, (function(i, pt) {\r\n var point;\r\n if (!i) {\r\n segment.push(pt);\r\n return\r\n }\r\n var step = segment[segment.length - 1][coordName];\r\n if (step !== pt[coordName]) {\r\n point = clone(pt);\r\n point[coordName] = step;\r\n segment.push(point)\r\n }\r\n segment.push(pt)\r\n }));\r\n return segment\r\n },\r\n _prepareSegment: function(points) {\r\n return lineSeries._prepareSegment(this._calculateStepLinePoints(points))\r\n },\r\n getSeriesPairCoord(coord, isArgument) {\r\n var oppositeCoord;\r\n var rotated = this._options.rotated;\r\n var isOpposite = !isArgument && !rotated || isArgument && rotated;\r\n var coordName = !isOpposite ? \"vx\" : \"vy\";\r\n var oppositeCoordName = !isOpposite ? \"vy\" : \"vx\";\r\n var nearestPoints = this._getNearestPointsByCoord(coord, isArgument);\r\n for (var i = 0; i < nearestPoints.length; i++) {\r\n var p = nearestPoints[i];\r\n var tmpCoord = void 0;\r\n if (isArgument) {\r\n tmpCoord = coord !== p[1][coordName] ? p[0][oppositeCoordName] : p[1][oppositeCoordName]\r\n } else {\r\n tmpCoord = coord === p[0][coordName] ? p[0][oppositeCoordName] : p[1][oppositeCoordName]\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\nchart.spline = extend({}, lineSeries, {\r\n _calculateBezierPoints: function(src, rotated) {\r\n var bezierPoints = [];\r\n var pointsCopy = src;\r\n var checkExtremum = function(otherPointCoord, pointCoord, controlCoord) {\r\n return otherPointCoord > pointCoord && controlCoord > otherPointCoord || otherPointCoord < pointCoord && controlCoord < otherPointCoord ? otherPointCoord : controlCoord\r\n };\r\n if (1 !== pointsCopy.length) {\r\n pointsCopy.forEach((function(curPoint, i) {\r\n var leftControlX;\r\n var leftControlY;\r\n var rightControlX;\r\n var rightControlY;\r\n var prevPoint = pointsCopy[i - 1];\r\n var nextPoint = pointsCopy[i + 1];\r\n var x1;\r\n var x2;\r\n var y1;\r\n var y2;\r\n var a;\r\n var b;\r\n var c;\r\n var xc;\r\n var yc;\r\n var shift;\r\n if (!i || i === pointsCopy.length - 1) {\r\n bezierPoints.push(curPoint, curPoint);\r\n return\r\n }\r\n var xCur = curPoint.x;\r\n var yCur = curPoint.y;\r\n x1 = prevPoint.x;\r\n x2 = nextPoint.x;\r\n y1 = prevPoint.y;\r\n y2 = nextPoint.y;\r\n var curIsExtremum = !!(!rotated && (yCur <= prevPoint.y && yCur <= nextPoint.y || yCur >= prevPoint.y && yCur >= nextPoint.y) || rotated && (xCur <= prevPoint.x && xCur <= nextPoint.x || xCur >= prevPoint.x && xCur >= nextPoint.x));\r\n if (curIsExtremum) {\r\n if (!rotated) {\r\n rightControlY = leftControlY = yCur;\r\n rightControlX = (xCur + nextPoint.x) / 2;\r\n leftControlX = (xCur + prevPoint.x) / 2\r\n } else {\r\n rightControlX = leftControlX = xCur;\r\n rightControlY = (yCur + nextPoint.y) / 2;\r\n leftControlY = (yCur + prevPoint.y) / 2\r\n }\r\n } else {\r\n a = y2 - y1;\r\n b = x1 - x2;\r\n c = y1 * x2 - x1 * y2;\r\n if (!rotated) {\r\n if (!b) {\r\n bezierPoints.push(curPoint, curPoint, curPoint);\r\n return\r\n }\r\n xc = xCur;\r\n yc = -1 * (a * xc + c) / b;\r\n shift = yc - yCur;\r\n y1 -= shift;\r\n y2 -= shift\r\n } else {\r\n if (!a) {\r\n bezierPoints.push(curPoint, curPoint, curPoint);\r\n return\r\n }\r\n yc = yCur;\r\n xc = -1 * (b * yc + c) / a;\r\n shift = xc - xCur;\r\n x1 -= shift;\r\n x2 -= shift\r\n }\r\n rightControlX = (xCur + .5 * x2) / 1.5;\r\n rightControlY = (yCur + .5 * y2) / 1.5;\r\n leftControlX = (xCur + .5 * x1) / 1.5;\r\n leftControlY = (yCur + .5 * y1) / 1.5\r\n }\r\n if (!rotated) {\r\n leftControlY = checkExtremum(prevPoint.y, yCur, leftControlY);\r\n rightControlY = checkExtremum(nextPoint.y, yCur, rightControlY)\r\n } else {\r\n leftControlX = checkExtremum(prevPoint.x, xCur, leftControlX);\r\n rightControlX = checkExtremum(nextPoint.x, xCur, rightControlX)\r\n }\r\n var leftPoint = clonePoint(curPoint, leftControlX, leftControlY);\r\n var rightPoint = clonePoint(curPoint, rightControlX, rightControlY);\r\n bezierPoints.push(leftPoint, curPoint, rightPoint)\r\n }))\r\n } else {\r\n bezierPoints.push(pointsCopy[0])\r\n }\r\n return bezierPoints\r\n },\r\n _prepareSegment: function(points, rotated) {\r\n return lineSeries._prepareSegment(this._calculateBezierPoints(points, rotated))\r\n },\r\n _createMainElement: function(points, settings) {\r\n return this._renderer.path(points, \"bezier\").attr(settings)\r\n },\r\n getSeriesPairCoord(coord, isArgument) {\r\n var oppositeCoord = null;\r\n var isOpposite = !isArgument && !this._options.rotated || isArgument && this._options.rotated;\r\n var coordName = !isOpposite ? \"vx\" : \"vy\";\r\n var bezierCoordName = !isOpposite ? \"x\" : \"y\";\r\n var oppositeCoordName = !isOpposite ? \"vy\" : \"vx\";\r\n var bezierOppositeCoordName = !isOpposite ? \"y\" : \"x\";\r\n var axis = !isArgument ? this.getArgumentAxis() : this.getValueAxis();\r\n var visibleArea = axis.getVisibleArea();\r\n var nearestPoints = this._getNearestPointsByCoord(coord, isArgument);\r\n var _loop = function(i) {\r\n var p = nearestPoints[i];\r\n if (1 === p.length) {\r\n visibleArea[0] <= p[0][oppositeCoordName] && visibleArea[1] >= p[0][oppositeCoordName] && (oppositeCoord = p[0][oppositeCoordName])\r\n } else {\r\n var ts = obtainCubicBezierTCoef(coord, p[0][coordName], p[1][bezierCoordName], p[2][bezierCoordName], p[3][coordName]);\r\n ts.forEach(t => {\r\n if (t >= 0 && t <= 1) {\r\n var tmpCoord = Math.pow(1 - t, 3) * p[0][oppositeCoordName] + 3 * Math.pow(1 - t, 2) * t * p[1][bezierOppositeCoordName] + 3 * (1 - t) * t * t * p[2][bezierOppositeCoordName] + t * t * t * p[3][oppositeCoordName];\r\n if (visibleArea[0] <= tmpCoord && visibleArea[1] >= tmpCoord) {\r\n oppositeCoord = tmpCoord\r\n }\r\n }\r\n })\r\n }\r\n if (null !== oppositeCoord) {\r\n return \"break\"\r\n }\r\n };\r\n for (var i = 0; i < nearestPoints.length; i++) {\r\n var _ret = _loop(i);\r\n if (\"break\" === _ret) {\r\n break\r\n }\r\n }\r\n return oppositeCoord\r\n },\r\n _getNearestPoints(point, nextPoint, bezierPoints) {\r\n var index = bezierPoints.indexOf(point);\r\n return [point, bezierPoints[index + 1], bezierPoints[index + 2], nextPoint]\r\n },\r\n _getBezierPoints() {\r\n return this._segments.length > 0 ? this._segments.reduce((a, seg) => a.concat(seg.line), []) : []\r\n }\r\n});\r\npolar.line = extend({}, polarScatterSeries, lineMethods, {\r\n _sortPoints: function(points) {\r\n return points\r\n },\r\n _prepareSegment: function(points, rotated, lastSegment) {\r\n var preparedPoints = [];\r\n var centerPoint = this.getValueAxis().getCenter();\r\n var i;\r\n lastSegment && this._closeSegment(points);\r\n if (this.argumentAxisType !== DISCRETE && this.valueAxisType !== DISCRETE) {\r\n for (i = 1; i < points.length; i++) {\r\n preparedPoints = preparedPoints.concat(this._getTangentPoints(points[i], points[i - 1], centerPoint))\r\n }\r\n if (!preparedPoints.length) {\r\n preparedPoints = points\r\n }\r\n } else {\r\n return lineSeries._prepareSegment.call(this, points)\r\n }\r\n return {\r\n line: preparedPoints\r\n }\r\n },\r\n _getRemainingAngle: function(angle) {\r\n var normAngle = normalizeAngle(angle);\r\n return angle >= 0 ? 360 - normAngle : -normAngle\r\n },\r\n _closeSegment(points) {\r\n var point;\r\n if (this._segments.length) {\r\n point = this._segments[0].line[0]\r\n } else {\r\n point = clonePoint(points[0], points[0].x, points[0].y, points[0].angle)\r\n }\r\n point = this._modifyReflectedPoint(point, points[points.length - 1]);\r\n if (point) {\r\n points.push(point)\r\n }\r\n },\r\n _modifyReflectedPoint(point, lastPoint) {\r\n if (lastPoint.angle === point.angle) {\r\n return\r\n }\r\n if (normalizeAngle(round(lastPoint.angle)) === normalizeAngle(round(point.angle))) {\r\n point.angle = lastPoint.angle\r\n } else {\r\n var differenceAngle = lastPoint.angle - point.angle;\r\n point.angle = lastPoint.angle + this._getRemainingAngle(differenceAngle)\r\n }\r\n return point\r\n },\r\n _getTangentPoints: function(point, prevPoint, centerPoint) {\r\n var tangentPoints = [];\r\n var betweenAngle = Math.round(prevPoint.angle - point.angle);\r\n var tan = (prevPoint.radius - point.radius) / betweenAngle;\r\n var i;\r\n if (0 === betweenAngle) {\r\n tangentPoints = [prevPoint, point]\r\n } else if (betweenAngle > 0) {\r\n for (i = betweenAngle; i >= 0; i--) {\r\n tangentPoints.push(getTangentPoint(point, prevPoint, centerPoint, tan, i))\r\n }\r\n } else {\r\n for (i = 0; i >= betweenAngle; i--) {\r\n tangentPoints.push(getTangentPoint(point, prevPoint, centerPoint, tan, betweenAngle - i))\r\n }\r\n }\r\n return tangentPoints\r\n },\r\n getSeriesPairCoord(params, isArgument) {\r\n var argAxis = this.getArgumentAxis();\r\n var paramName = isArgument ? \"angle\" : \"radius\";\r\n var coordParam = params[paramName];\r\n var centerPoint = argAxis.getCenter();\r\n var isInsideInterval = (prevPoint, point, _ref) => {\r\n var {\r\n x: x,\r\n y: y\r\n } = _ref;\r\n return (p1 = {\r\n x: x,\r\n y: y\r\n }, p2 = centerPoint, sqrt(pow(p1.x - p2.x, 2) + pow(p1.y - p2.y, 2))) <= argAxis.getRadius() && min(prevPoint.x, point.x) <= x && max(prevPoint.x, point.x) >= x && min(prevPoint.y, point.y) <= y && max(prevPoint.y, point.y) >= y;\r\n var p1, p2\r\n };\r\n var coords;\r\n var neighborPoints = this.getNeighborPoints(coordParam, paramName);\r\n if (1 === neighborPoints.length) {\r\n coords = neighborPoints[0]\r\n } else if (neighborPoints.length > 1) {\r\n var prevPoint = neighborPoints[0];\r\n var point = neighborPoints[1];\r\n if (this.argumentAxisType !== DISCRETE && this.valueAxisType !== DISCRETE) {\r\n var tan;\r\n var stepAngle;\r\n if (isArgument) {\r\n tan = (prevPoint.radius - point.radius) / (prevPoint.angle - point.angle);\r\n stepAngle = coordParam - point.angle\r\n } else {\r\n tan = (prevPoint.radius - point.radius) / (prevPoint.angle - point.angle);\r\n stepAngle = (coordParam - point.radius) / tan\r\n }\r\n coords = getTangentPoint(point, prevPoint, centerPoint, tan, stepAngle)\r\n } else if (isArgument) {\r\n var cosSin = getCosAndSin(-coordParam);\r\n var k1 = (point.y - prevPoint.y) / (point.x - prevPoint.x);\r\n var b1 = prevPoint.y - prevPoint.x * k1;\r\n var k2 = cosSin.sin / cosSin.cos;\r\n var b2 = centerPoint.y - k2 * centerPoint.x;\r\n var x = (b2 - b1) / (k1 - k2);\r\n var y = k1 * x + b1;\r\n if (isInsideInterval(prevPoint, point, {\r\n x: x,\r\n y: y\r\n })) {\r\n var quarter = abs(trunc((360 + coordParam) / 90) % 4);\r\n if (0 === quarter && x >= centerPoint.x && y <= centerPoint.y || 1 === quarter && x <= centerPoint.x && y <= centerPoint.y || 2 === quarter && x <= centerPoint.x && y >= centerPoint.y || 3 === quarter && x >= centerPoint.x && y >= centerPoint.y) {\r\n coords = {\r\n x: x,\r\n y: y\r\n }\r\n }\r\n }\r\n } else {\r\n var k = (point.y - prevPoint.y) / (point.x - prevPoint.x);\r\n var y0 = prevPoint.y - prevPoint.x * k;\r\n var a = 1 + k * k;\r\n var b = -2 * centerPoint.x + 2 * k * y0 - 2 * k * centerPoint.y;\r\n var c = -pow(coordParam, 2) + pow(y0 - centerPoint.y, 2) + pow(centerPoint.x, 2);\r\n var d = b * b - 4 * a * c;\r\n if (d >= 0) {\r\n var x1 = (-b - sqrt(d)) / (2 * a);\r\n var x2 = (-b + sqrt(d)) / (2 * a);\r\n var y1 = k * x1 + y0;\r\n var y2 = k * x2 + y0;\r\n coords = isInsideInterval(prevPoint, point, {\r\n x: x1,\r\n y: y1\r\n }) ? {\r\n x: x1,\r\n y: y1\r\n } : isInsideInterval(prevPoint, point, {\r\n x: x2,\r\n y: y2\r\n }) ? {\r\n x: x2,\r\n y: y2\r\n } : void 0\r\n }\r\n }\r\n }\r\n return coords\r\n },\r\n getNeighborPoints(param, paramName) {\r\n var points = this.getPoints();\r\n var neighborPoints = [];\r\n if (this.getOptions().closed) {\r\n points = extend(true, [], points);\r\n var lastPoint = points[points.length - 1];\r\n var firstPointCopy = clonePoint(points[0], points[0].x, points[0].y, points[0].angle);\r\n var lastPointCopy = clonePoint(lastPoint, lastPoint.x, lastPoint.y, lastPoint.angle);\r\n var rearwardRefPoint = this._modifyReflectedPoint(firstPointCopy, lastPoint);\r\n var forwardRefPoint = this._modifyReflectedPoint(lastPointCopy, points[0]);\r\n if (forwardRefPoint) {\r\n points.unshift(forwardRefPoint)\r\n }\r\n if (rearwardRefPoint) {\r\n points.push(rearwardRefPoint)\r\n }\r\n }\r\n for (var i = 1; i < points.length; i++) {\r\n if (points[i - 1][paramName] === param) {\r\n neighborPoints.push(points[i - 1])\r\n } else if (points[i][paramName] === param) {\r\n neighborPoints.push(points[i])\r\n } else if (points[i][paramName] > param && points[i - 1][paramName] < param || points[i - 1][paramName] > param && points[i][paramName] < param) {\r\n neighborPoints.push(points[i - 1]);\r\n neighborPoints.push(points[i])\r\n }\r\n if (neighborPoints.length > 0) {\r\n break\r\n }\r\n }\r\n return neighborPoints\r\n }\r\n});\r\nexport {\r\n chart,\r\n polar\r\n};\r\n","/**\r\n * DevExtreme (esm/viz/series/area_series.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n clone\r\n} from \"../../core/utils/object\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n chart as scatterSeries\r\n} from \"./scatter_series\";\r\nimport {\r\n chart as lineSeriesChart,\r\n polar as lineSeriesPolar\r\n} from \"./line_series\";\r\nvar chartLineSeries = lineSeriesChart.line;\r\nvar polarLineSeries = lineSeriesPolar.line;\r\nimport {\r\n map as _map\r\n} from \"../core/utils\";\r\nvar _extend = extend;\r\nvar calculateBezierPoints = lineSeriesChart.spline._calculateBezierPoints;\r\nvar chart = {};\r\nvar 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 scatterSeries.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 this._elementsGroup && this._elementsGroup.smartAttr(style.elements);\r\n this._bordersGroup && this._bordersGroup.attr(style.border);\r\n (this._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 _map(points, (function(pt) {\r\n return pt.getCoords()\r\n })).concat(_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(points, rotated) {\r\n var processedPoints = this._processSinglePointsAreaSegment(points, rotated);\r\n var areaPoints = createAreaPoints(processedPoints);\r\n var argAxis = this.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((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 = 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 lineSeriesPolar.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 = lineSeriesChart.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: lineSeriesChart.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: lineSeriesChart.spline._createMainElement,\r\n getSeriesPairCoord: lineSeriesChart.spline.getSeriesPairCoord,\r\n _getNearestPoints: lineSeriesChart.spline._getNearestPoints,\r\n _getBezierPoints: lineSeriesChart.spline._getBezierPoints,\r\n obtainCubicBezierTCoef: lineSeriesChart.spline.obtainCubicBezierTCoef\r\n});\r\nexport {\r\n chart,\r\n polar\r\n};\r\n","/**\r\n * DevExtreme (esm/viz/series/bar_series.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport * as scatterSeries from \"./scatter_series\";\r\nimport {\r\n chart as areaChart\r\n} from \"./area_series\";\r\nvar areaSeries = areaChart.area;\r\nimport {\r\n convertPolarToXY\r\n} from \"../core/utils\";\r\nvar chartSeries = scatterSeries.chart;\r\nvar polarSeries = scatterSeries.polar;\r\nimport {\r\n isDefined as _isDefined\r\n} from \"../../core/utils/type\";\r\nvar _extend = extend;\r\nvar _each = each;\r\nvar chart = {};\r\nvar 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 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 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 mainColor = pointOptions.color || this._getMainColor();\r\n return {\r\n normal: this._parsePointStyle(pointOptions, mainColor, mainColor),\r\n hover: this._parsePointStyle(pointOptions.hoverStyle || {}, mainColor, mainColor),\r\n selection: this._parsePointStyle(pointOptions.selectionStyle || {}, mainColor, mainColor)\r\n }\r\n },\r\n _updatePointsVisibility: function() {\r\n var visibility = this._options.visible;\r\n 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 that._animatePoints(firstDrawing, (function() {\r\n that._animateComplete()\r\n }), (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 },\r\n getValueRangeInitialValue: areaSeries.getValueRangeInitialValue,\r\n _patchMarginOptions: function(options) {\r\n options.checkInterval = !this.useAggregation();\r\n return options\r\n },\r\n _defaultAggregator: \"sum\",\r\n _defineDrawingState() {},\r\n usePointsToDefineAutoHiding: () => false\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 this._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(this._drawnPoints, complete)\r\n }\r\n },\r\n checkSeriesViewportCoord(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(coord, isArgument) {\r\n var oppositeCoord = null;\r\n var {\r\n rotated: rotated\r\n } = this._options;\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 markersSettings = this._createPointStyles(this._getMarkerGroupOptions()).normal;\r\n markersSettings.class = \"dxc-markers\";\r\n this._applyMarkerClipRect(markersSettings);\r\n var groupSettings = _extend({}, markersSettings);\r\n delete groupSettings.opacity;\r\n this._markersGroup.attr(groupSettings)\r\n },\r\n getSeriesPairCoord(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 = _isDefined(p[paramName]) && _isDefined(params[paramName]) && p[paramName].valueOf() === params[paramName].valueOf() ? convertPolarToXY(argAxis.getCenter(), startAngle, -argAxis.getTranslatedAngle(p.angle), p.radius) : void 0;\r\n if (_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\nexport {\r\n chart,\r\n polar\r\n};\r\n","/**\r\n * DevExtreme (esm/viz/series/range_series.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nvar _extend = extend;\r\nimport {\r\n isDefined as _isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n map as _map\r\n} from \"../core/utils\";\r\nimport {\r\n noop as _noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n chart as scatterSeries\r\n} from \"./scatter_series\";\r\nimport {\r\n chart as barChart\r\n} from \"./bar_series\";\r\nimport {\r\n chart as areaChart\r\n} from \"./area_series\";\r\nvar barSeries = barChart.bar;\r\nvar areaSeries = areaChart.area;\r\nvar chart = {};\r\nvar baseRangeSeries = {\r\n areErrorBarsVisible: _noop,\r\n _createErrorBarGroup: _noop,\r\n _checkData: function(data, skippedFields) {\r\n var valueFields = this.getValueFields();\r\n return scatterSeries._checkData.call(this, data, skippedFields, {\r\n minValue: valueFields[0],\r\n value: valueFields[1]\r\n }) && data.minValue === data.minValue\r\n },\r\n getValueRangeInitialValue: scatterSeries.getValueRangeInitialValue,\r\n _getPointDataSelector: function(data) {\r\n var valueFields = this.getValueFields();\r\n var val1Field = valueFields[0];\r\n var val2Field = valueFields[1];\r\n var tagField = this.getTagField();\r\n var argumentField = this.getArgumentField();\r\n return data => ({\r\n tag: data[tagField],\r\n minValue: this._processEmptyValue(data[val1Field]),\r\n value: this._processEmptyValue(data[val2Field]),\r\n argument: data[argumentField],\r\n data: data\r\n })\r\n },\r\n _defaultAggregator: \"range\",\r\n _aggregators: {\r\n range(_ref, series) {\r\n var {\r\n intervalStart: intervalStart,\r\n intervalEnd: intervalEnd,\r\n data: data\r\n } = _ref;\r\n if (!data.length) {\r\n return\r\n }\r\n var valueFields = series.getValueFields();\r\n var val1Field = valueFields[0];\r\n var val2Field = valueFields[1];\r\n var result = data.reduce((result, item) => {\r\n var val1 = item[val1Field];\r\n var val2 = item[val2Field];\r\n if (!_isDefined(val1) || !_isDefined(val2)) {\r\n return result\r\n }\r\n result[val1Field] = Math.min(result[val1Field], Math.min(val1, val2));\r\n result[val2Field] = Math.max(result[val2Field], Math.max(val1, val2));\r\n return result\r\n }, {\r\n [val1Field]: 1 / 0,\r\n [val2Field]: -1 / 0,\r\n [series.getArgumentField()]: series._getIntervalCenter(intervalStart, intervalEnd)\r\n });\r\n if (!isFinite(result[val1Field]) || !isFinite(result[val2Field])) {\r\n if (data.filter(i => null === i[val1Field] && null === i[val2Field]).length === data.length) {\r\n result[val1Field] = result[val2Field] = null\r\n } else {\r\n return\r\n }\r\n }\r\n return result\r\n }\r\n },\r\n getValueFields: function() {\r\n return [this._options.rangeValue1Field || \"val1\", this._options.rangeValue2Field || \"val2\"]\r\n },\r\n getSeriesPairCoord(coord, isArgument) {\r\n var oppositeCoord = null;\r\n var {\r\n rotated: rotated\r\n } = this._options;\r\n var isOpposite = !isArgument && !rotated || isArgument && rotated;\r\n var coordName = isOpposite ? \"vy\" : \"vx\";\r\n var minCoordName = rotated ? \"minX\" : \"minY\";\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 var coords = [Math.min(p[coordName], p[minCoordName]), Math.max(p[coordName], p[minCoordName])];\r\n tmpCoord = coord >= coords[0] && coord <= coords[1] ? 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\nchart.rangebar = _extend({}, barSeries, baseRangeSeries);\r\nchart.rangearea = _extend({}, areaSeries, {\r\n _drawPoint: function(options) {\r\n var point = options.point;\r\n if (point.isInVisibleArea()) {\r\n point.clearVisibility();\r\n point.draw(this._renderer, options.groups);\r\n this._drawnPoints.push(point);\r\n if (!point.visibleTopMarker) {\r\n point.hideMarker(\"top\")\r\n }\r\n if (!point.visibleBottomMarker) {\r\n point.hideMarker(\"bottom\")\r\n }\r\n } else {\r\n point.setInvisibility()\r\n }\r\n },\r\n _prepareSegment: function(points, rotated) {\r\n var processedPoints = this._processSinglePointsAreaSegment(points, rotated);\r\n var processedMinPointsCoords = _map(processedPoints, (function(pt) {\r\n return pt.getCoords(true)\r\n }));\r\n return {\r\n line: processedPoints,\r\n bottomLine: processedMinPointsCoords,\r\n area: _map(processedPoints, (function(pt) {\r\n return pt.getCoords()\r\n })).concat(processedMinPointsCoords.slice().reverse()),\r\n singlePointSegment: processedPoints !== points\r\n }\r\n },\r\n _getDefaultSegment: function(segment) {\r\n var defaultSegment = areaSeries._getDefaultSegment.call(this, segment);\r\n defaultSegment.bottomLine = defaultSegment.line;\r\n return defaultSegment\r\n },\r\n _removeElement: function(element) {\r\n areaSeries._removeElement.call(this, element);\r\n element.bottomLine && element.bottomLine.remove()\r\n },\r\n _drawElement: function(segment, group) {\r\n var drawnElement = areaSeries._drawElement.call(this, segment, group);\r\n drawnElement.bottomLine = this._bordersGroup && this._createBorderElement(segment.bottomLine, {\r\n \"stroke-width\": this._styles.normal.border[\"stroke-width\"]\r\n }).append(this._bordersGroup);\r\n return drawnElement\r\n },\r\n _applyStyle: function(style) {\r\n var elementsGroup = this._elementsGroup;\r\n var bordersGroup = this._bordersGroup;\r\n elementsGroup && elementsGroup.smartAttr(style.elements);\r\n bordersGroup && bordersGroup.attr(style.border);\r\n (this._graphics || []).forEach((function(graphic) {\r\n graphic.line && graphic.line.attr({\r\n \"stroke-width\": style.border[\"stroke-width\"]\r\n });\r\n graphic.bottomLine && graphic.bottomLine.attr({\r\n \"stroke-width\": style.border[\"stroke-width\"]\r\n })\r\n }))\r\n },\r\n _updateElement: function(element, segment, animate, complete) {\r\n var bottomLineParams = {\r\n points: segment.bottomLine\r\n };\r\n var bottomBorderElement = element.bottomLine;\r\n areaSeries._updateElement.apply(this, arguments);\r\n if (bottomBorderElement) {\r\n animate ? bottomBorderElement.animate(bottomLineParams) : bottomBorderElement.attr(bottomLineParams)\r\n }\r\n }\r\n}, baseRangeSeries);\r\nexport {\r\n chart\r\n};\r\n","/**\r\n * DevExtreme (esm/viz/series/bubble_series.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n chart as lineChart\r\n} from \"./line_series\";\r\nimport {\r\n chart as scatterSeries\r\n} from \"./scatter_series\";\r\nimport {\r\n chart as areaChart\r\n} from \"./area_series\";\r\nimport {\r\n chart as barChart,\r\n polar as barPolar\r\n} from \"./bar_series\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nvar lineSeries = lineChart.line;\r\nvar areaSeries = areaChart.area;\r\nvar chartBarSeries = barChart.bar;\r\nvar polarBarSeries = barPolar.bar;\r\nvar _extend = extend;\r\nvar _each = each;\r\nvar _noop = noop;\r\nvar chart = {};\r\nchart.bubble = _extend({}, scatterSeries, {\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 scatterSeries._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 = scatterSeries._getPointDataSelector.call(this);\r\n return 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(_ref, series) {\r\n var {\r\n data: data,\r\n intervalStart: intervalStart,\r\n intervalEnd: intervalEnd\r\n } = _ref;\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((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 {\r\n [valueField]: aggregate[0] / aggregate[2],\r\n [sizeField]: aggregate[1] / aggregate[2],\r\n [series.getArgumentField()]: series._getIntervalCenter(intervalStart, intervalEnd)\r\n }\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\nexport {\r\n chart\r\n};\r\n","/**\r\n * DevExtreme (esm/viz/series/pie_series.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n chart\r\n} from \"./scatter_series\";\r\nimport {\r\n normalizeAngle,\r\n map\r\n} from \"../core/utils\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n chart as barChart\r\n} from \"./bar_series\";\r\nvar chartScatterSeries = chart;\r\nvar barSeries = barChart.bar;\r\nvar _extend = extend;\r\nvar _each = each;\r\nvar _noop = noop;\r\nvar _map = map;\r\nvar _isFinite = isFinite;\r\nvar _max = Math.max;\r\nvar ANIMATION_DURATION = .7;\r\nvar INSIDE = \"inside\";\r\nexport var pie = _extend({}, barSeries, {\r\n _setGroupsSettings: function() {\r\n chartScatterSeries._setGroupsSettings.apply(this, arguments);\r\n this._labelsGroup.attr({\r\n \"pointer-events\": null\r\n })\r\n },\r\n _createErrorBarGroup: _noop,\r\n _drawPoint: function(options) {\r\n var point = options.point;\r\n var legendCallback = this._legendCallback;\r\n chartScatterSeries._drawPoint.call(this, options);\r\n !point.isVisible() && point.setInvisibility();\r\n point.isSelected() && legendCallback()\r\n },\r\n _getOldPoint: function(data, oldPointsByArgument, index) {\r\n var point = (this._points || [])[index];\r\n if (point) {\r\n oldPointsByArgument[point.argument.valueOf()] = oldPointsByArgument[point.argument.valueOf()].filter(p => p !== point)\r\n }\r\n return point\r\n },\r\n adjustLabels: function(moveLabelsFromCenter) {\r\n return (this._points || []).reduce((r, p) => {\r\n if (p._label.isVisible()) {\r\n p.setLabelTrackerData();\r\n r = p.applyWordWrap(moveLabelsFromCenter) || r;\r\n p.updateLabelCoord(moveLabelsFromCenter);\r\n return r\r\n }\r\n }, false)\r\n },\r\n _applyElementsClipRect: _noop,\r\n getColor: _noop,\r\n areErrorBarsVisible: _noop,\r\n drawLabelsWOPoints: function() {\r\n if (this._options.label.position === INSIDE) {\r\n return false\r\n }\r\n this._labelsGroup.append(this._extGroups.labelsGroup);\r\n (this._points || []).forEach((function(point) {\r\n point.drawLabel()\r\n }));\r\n return true\r\n },\r\n getPointsCount: function() {\r\n return this._data.filter(d => this._checkData(d)).length\r\n },\r\n setMaxPointsCount: function(count) {\r\n this._pointsCount = count\r\n },\r\n _getCreatingPointOptions: function(data, dataIndex) {\r\n return this._getPointOptions(data, dataIndex)\r\n },\r\n _updateOptions: function(options) {\r\n this.labelSpace = 0;\r\n this.innerRadius = \"pie\" === this.type ? 0 : options.innerRadius\r\n },\r\n _checkData: function(data, skippedFields) {\r\n var base = barSeries._checkData.call(this, data, skippedFields, {\r\n value: this.getValueFields()[0]\r\n });\r\n return this._options.paintNullPoints ? base : base && null !== data.value\r\n },\r\n _createGroups: chartScatterSeries._createGroups,\r\n _setMarkerGroupSettings: function() {\r\n this._markersGroup.attr({\r\n class: \"dxc-markers\"\r\n })\r\n },\r\n _getMainColor(data, point) {\r\n var pointsByArg = this.getPointsByArg(data.argument);\r\n var argumentIndex = point ? pointsByArg.indexOf(point) : pointsByArg.length;\r\n return this._options.mainSeriesColor(data.argument, argumentIndex, this._pointsCount)\r\n },\r\n _getPointOptions: function(data) {\r\n return this._parsePointOptions(this._preparePointOptions(), this._options.label, data)\r\n },\r\n _getRangeData: function() {\r\n return this._rangeData\r\n },\r\n _createPointStyles: function(pointOptions, data, point) {\r\n var mainColor = pointOptions.color || this._getMainColor(data, point);\r\n return {\r\n normal: this._parsePointStyle(pointOptions, mainColor, mainColor),\r\n hover: this._parsePointStyle(pointOptions.hoverStyle, mainColor, mainColor),\r\n selection: this._parsePointStyle(pointOptions.selectionStyle, mainColor, mainColor),\r\n legendStyles: {\r\n normal: this._createLegendState(pointOptions, mainColor),\r\n hover: this._createLegendState(pointOptions.hoverStyle, mainColor),\r\n selection: this._createLegendState(pointOptions.selectionStyle, mainColor)\r\n }\r\n }\r\n },\r\n _getArrangeMinShownValue: function(points, total) {\r\n var minSegmentSize = this._options.minSegmentSize;\r\n var totalMinSegmentSize = 0;\r\n var totalNotMinValues = 0;\r\n total = total || points.length;\r\n _each(points, (function(_, point) {\r\n if (point.isVisible()) {\r\n if (point.normalInitialValue < minSegmentSize * total / 360) {\r\n totalMinSegmentSize += minSegmentSize\r\n } else {\r\n totalNotMinValues += point.normalInitialValue\r\n }\r\n }\r\n }));\r\n return totalMinSegmentSize < 360 ? minSegmentSize * totalNotMinValues / (360 - totalMinSegmentSize) : 0\r\n },\r\n _applyArrangeCorrection: function(points, minShownValue, total) {\r\n var options = this._options;\r\n var isClockWise = \"anticlockwise\" !== options.segmentsDirection;\r\n var shiftedAngle = _isFinite(options.startAngle) ? normalizeAngle(options.startAngle) : 0;\r\n var minSegmentSize = options.minSegmentSize;\r\n var percent;\r\n var correction = 0;\r\n var zeroTotalCorrection = 0;\r\n if (0 === total) {\r\n total = points.filter((function(el) {\r\n return el.isVisible()\r\n })).length;\r\n zeroTotalCorrection = 1\r\n }\r\n _each(isClockWise ? points : points.concat([]).reverse(), (function(_, point) {\r\n var val = point.isVisible() ? zeroTotalCorrection || point.normalInitialValue : 0;\r\n var updatedZeroValue;\r\n if (minSegmentSize && point.isVisible() && val < minShownValue) {\r\n updatedZeroValue = minShownValue\r\n }\r\n percent = val / total;\r\n point.correctValue(correction, percent, zeroTotalCorrection + (updatedZeroValue || 0));\r\n point.shiftedAngle = shiftedAngle;\r\n correction += updatedZeroValue || val\r\n }));\r\n this._rangeData = {\r\n val: {\r\n min: 0,\r\n max: correction\r\n }\r\n }\r\n },\r\n _removePoint: function(point) {\r\n var points = this.getPointsByArg(point.argument);\r\n points.splice(points.indexOf(point), 1);\r\n point.dispose()\r\n },\r\n arrangePoints: function() {\r\n var that = this;\r\n var originalPoints = that._points || [];\r\n var minSegmentSize = that._options.minSegmentSize;\r\n var minShownValue;\r\n var isAllPointsNegative = true;\r\n var i = 0;\r\n var len = originalPoints.length;\r\n while (i < len && isAllPointsNegative) {\r\n isAllPointsNegative = originalPoints[i].value <= 0;\r\n i++\r\n }\r\n var points = that._points = _map(originalPoints, (function(point) {\r\n if (null === point.value || !isAllPointsNegative && point.value < 0) {\r\n that._removePoint(point);\r\n return null\r\n } else {\r\n return point\r\n }\r\n }));\r\n var maxValue = points.reduce((function(max, p) {\r\n return _max(max, Math.abs(p.initialValue))\r\n }), 0);\r\n points.forEach((function(p) {\r\n p.normalInitialValue = p.initialValue / (0 !== maxValue ? maxValue : 1)\r\n }));\r\n var total = points.reduce((function(total, point) {\r\n return total + (point.isVisible() ? point.normalInitialValue : 0)\r\n }), 0);\r\n if (minSegmentSize) {\r\n minShownValue = this._getArrangeMinShownValue(points, total)\r\n }\r\n that._applyArrangeCorrection(points, minShownValue, total)\r\n },\r\n correctPosition: function(correction, canvas) {\r\n _each(this._points, (function(_, point) {\r\n point.correctPosition(correction)\r\n }));\r\n this.setVisibleArea(canvas)\r\n },\r\n correctRadius: function(correction) {\r\n this._points.forEach((function(point) {\r\n point.correctRadius(correction)\r\n }))\r\n },\r\n correctLabelRadius: function(labelRadius) {\r\n this._points.forEach((function(point) {\r\n point.correctLabelRadius(labelRadius)\r\n }))\r\n },\r\n setVisibleArea: function(canvas) {\r\n this._visibleArea = {\r\n minX: canvas.left,\r\n maxX: canvas.width - canvas.right,\r\n minY: canvas.top,\r\n maxY: canvas.height - canvas.bottom\r\n }\r\n },\r\n _applyVisibleArea: _noop,\r\n _animate: function(firstDrawing) {\r\n var that = this;\r\n var points = that._points;\r\n var pointsCount = points && points.length;\r\n var completeFunc = function() {\r\n that._animateComplete()\r\n };\r\n var animatePoint;\r\n if (firstDrawing) {\r\n animatePoint = function(p, i) {\r\n p.animate(i === pointsCount - 1 ? completeFunc : void 0, ANIMATION_DURATION, (1 - ANIMATION_DURATION) * i / (pointsCount - 1))\r\n }\r\n } else {\r\n animatePoint = function(p, i) {\r\n p.animate(i === pointsCount - 1 ? completeFunc : void 0)\r\n }\r\n }\r\n points.forEach(animatePoint)\r\n },\r\n getVisiblePoints: function() {\r\n return _map(this._points, (function(p) {\r\n return p.isVisible() ? p : null\r\n }))\r\n },\r\n getPointsByKeys: function(arg, argumentIndex) {\r\n var pointsByArg = this.getPointsByArg(arg);\r\n return pointsByArg[argumentIndex] && [pointsByArg[argumentIndex]] || []\r\n }\r\n});\r\nexport var doughnut = pie;\r\nexport var donut = pie;\r\n","/**\r\n * DevExtreme (esm/viz/series/financial_series.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n chart as scatterSeries\r\n} from \"./scatter_series\";\r\nimport {\r\n chart as barChart\r\n} from \"./bar_series\";\r\nimport {\r\n extend as _extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n isDefined as _isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n normalizeEnum as _normalizeEnum\r\n} from \"../core/utils\";\r\nimport {\r\n noop as _noop\r\n} from \"../../core/utils/common\";\r\nvar barSeries = barChart.bar;\r\nvar DEFAULT_FINANCIAL_POINT_SIZE = 10;\r\nexport var stock = _extend({}, scatterSeries, {\r\n _animate: _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: _noop,\r\n areErrorBarsVisible: _noop,\r\n _createGroups: scatterSeries._createGroups,\r\n _setMarkerGroupSettings: function() {\r\n var markersGroup = this._markersGroup;\r\n var styles = this._createPointStyles(this._getMarkerGroupOptions());\r\n var defaultStyle = _extend(styles.normal, {\r\n class: \"default-markers\"\r\n });\r\n var defaultPositiveStyle = _extend(styles.positive.normal, {\r\n class: \"default-positive-markers\"\r\n });\r\n var reductionStyle = _extend(styles.reduction.normal, {\r\n class: \"reduction-markers\"\r\n });\r\n var reductionPositiveStyle = _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 this._applyMarkerClipRect(markerSettings);\r\n markersGroup.attr(markerSettings);\r\n this._createGroup(\"defaultMarkersGroup\", markersGroup, markersGroup, defaultStyle);\r\n this._createGroup(\"reductionMarkersGroup\", markersGroup, markersGroup, reductionStyle);\r\n this._createGroup(\"defaultPositiveMarkersGroup\", markersGroup, markersGroup, defaultPositiveStyle);\r\n this._createGroup(\"reductionPositiveMarkersGroup\", markersGroup, markersGroup, reductionPositiveStyle)\r\n },\r\n _setGroupsSettings: function() {\r\n scatterSeries._setGroupsSettings.call(this, false)\r\n },\r\n _getCreatingPointOptions: function() {\r\n var defaultPointOptions;\r\n var creatingPointOptions = this._predefinedPointOptions;\r\n if (!creatingPointOptions) {\r\n defaultPointOptions = this._getPointOptions();\r\n this._predefinedPointOptions = creatingPointOptions = _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 scatterSeries._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 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 (_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 data => {\r\n var reductionValue = data[level];\r\n var isReduction = false;\r\n if (_isDefined(reductionValue)) {\r\n if (_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 mainPointColor = options.color || this._options.mainSeriesColor;\r\n return {\r\n normal: this._parsePointStyle(options, mainPointColor, mainPointColor),\r\n hover: this._parsePointStyle(options.hoverStyle, mainPointColor, mainPointColor),\r\n selection: this._parsePointStyle(options.selectionStyle, mainPointColor, mainPointColor)\r\n }\r\n },\r\n _getReductionStyle: function(options) {\r\n var reductionColor = options.reduction.color;\r\n return {\r\n normal: this._parsePointStyle({\r\n color: reductionColor,\r\n width: options.width,\r\n hatching: options.hatching\r\n }, reductionColor, reductionColor),\r\n hover: this._parsePointStyle(options.hoverStyle, reductionColor, reductionColor),\r\n selection: this._parsePointStyle(options.selectionStyle, reductionColor, reductionColor)\r\n }\r\n },\r\n _createPointStyles: function(pointOptions) {\r\n var innerColor = this._options.innerColor;\r\n var styles = this._getDefaultStyle(pointOptions);\r\n var positiveStyle = _extend(true, {}, styles);\r\n var reductionStyle = this._getReductionStyle(pointOptions);\r\n var reductionPositiveStyle = _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: (_ref, series) => {\r\n var {\r\n intervalStart: intervalStart,\r\n intervalEnd: intervalEnd,\r\n data: data\r\n } = _ref;\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()] = series._getIntervalCenter(intervalStart, intervalEnd);\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(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: () => false\r\n});\r\nexport var candlestick = _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\n","/**\r\n * DevExtreme (esm/viz/series/stacked_series.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n noop as _noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n extend as _extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n chart as areaSeries\r\n} from \"./area_series\";\r\nvar chartAreaSeries = areaSeries.area;\r\nimport {\r\n chart as _chart,\r\n polar as _polar\r\n} from \"./bar_series\";\r\nvar chartBarSeries = _chart.bar;\r\nimport {\r\n chart as lineSeries\r\n} from \"./line_series\";\r\nimport {\r\n map\r\n} from \"../core/utils\";\r\nimport {\r\n clone\r\n} from \"../../core/utils/object\";\r\nvar baseStackedSeries = {\r\n _calculateErrorBars: _noop,\r\n _updateOptions: function(options) {\r\n this._stackName = \"axis_\" + (options.axis || \"default\")\r\n }\r\n};\r\nvar chart = {};\r\nvar polar = {};\r\nchart.stackedline = _extend({}, lineSeries.line, baseStackedSeries, {});\r\nchart.stackedspline = _extend({}, lineSeries.spline, baseStackedSeries, {});\r\nchart.fullstackedline = _extend({}, lineSeries.line, baseStackedSeries, {\r\n getValueRangeInitialValue: areaSeries.area.getValueRangeInitialValue\r\n});\r\nchart.fullstackedspline = _extend({}, lineSeries.spline, baseStackedSeries, {\r\n getValueRangeInitialValue: areaSeries.area.getValueRangeInitialValue\r\n});\r\nvar stackedBar = chart.stackedbar = _extend({}, chartBarSeries, baseStackedSeries, {\r\n _updateOptions: function(options) {\r\n baseStackedSeries._updateOptions.call(this, options);\r\n this._stackName = this._stackName + \"_stack_\" + (options.stack || \"default\")\r\n }\r\n});\r\nchart.fullstackedbar = _extend({}, chartBarSeries, baseStackedSeries, {\r\n _updateOptions: stackedBar._updateOptions\r\n});\r\n\r\nfunction clonePoint(point, value, minValue, position) {\r\n point = clone(point);\r\n point.value = value;\r\n point.minValue = minValue;\r\n point.translate();\r\n point.argument = point.argument + position;\r\n return point\r\n}\r\n\r\nfunction preparePointsForStackedAreaSegment(points) {\r\n var i = 0;\r\n var p;\r\n var result = [];\r\n var array;\r\n var len = points.length;\r\n while (i < len) {\r\n p = points[i];\r\n array = [p];\r\n if (p.leftHole) {\r\n array = [clonePoint(p, p.leftHole, p.minLeftHole, \"left\"), p]\r\n }\r\n if (p.rightHole) {\r\n array.push(clonePoint(p, p.rightHole, p.minRightHole, \"right\"))\r\n }\r\n result.push(array);\r\n i++\r\n }\r\n return [].concat.apply([], result)\r\n}\r\nchart.stackedarea = _extend({}, chartAreaSeries, baseStackedSeries, {\r\n _prepareSegment: function(points, rotated) {\r\n return chartAreaSeries._prepareSegment.call(this, preparePointsForStackedAreaSegment(points), rotated)\r\n },\r\n _appendInGroup: function() {\r\n this._group.append(this._extGroups.seriesGroup).toBackground()\r\n }\r\n});\r\n\r\nfunction getPointsByArgFromPrevSeries(prevSeries, argument) {\r\n var result;\r\n while (!result && prevSeries) {\r\n result = prevSeries._segmentByArg && prevSeries._segmentByArg[argument];\r\n prevSeries = prevSeries._prevSeries\r\n }\r\n return result\r\n}\r\nchart.stackedsplinearea = _extend({}, areaSeries.splinearea, baseStackedSeries, {\r\n _prepareSegment: function(points, rotated) {\r\n var that = this;\r\n var areaSegment;\r\n points = preparePointsForStackedAreaSegment(points);\r\n if (!this._prevSeries || 1 === points.length) {\r\n areaSegment = areaSeries.splinearea._prepareSegment.call(this, points, rotated)\r\n } else {\r\n var forwardPoints = lineSeries.spline._calculateBezierPoints(points, rotated);\r\n var backwardPoints = map(points, (function(p) {\r\n var point = p.getCoords(true);\r\n point.argument = p.argument;\r\n return point\r\n }));\r\n var prevSeriesForwardPoints = [];\r\n var pointByArg = {};\r\n var i = 0;\r\n var len = that._prevSeries._segments.length;\r\n while (i < len) {\r\n prevSeriesForwardPoints = prevSeriesForwardPoints.concat(that._prevSeries._segments[i].line);\r\n i++\r\n }\r\n each(prevSeriesForwardPoints, (function(_, p) {\r\n if (null !== p.argument) {\r\n var argument = p.argument.valueOf();\r\n if (!pointByArg[argument]) {\r\n pointByArg[argument] = [p]\r\n } else {\r\n pointByArg[argument].push(p)\r\n }\r\n }\r\n }));\r\n that._prevSeries._segmentByArg = pointByArg;\r\n backwardPoints = lineSeries.spline._calculateBezierPoints(backwardPoints, rotated);\r\n each(backwardPoints, (function(i, p) {\r\n var argument = p.argument.valueOf();\r\n var prevSeriesPoints;\r\n if (i % 3 === 0) {\r\n prevSeriesPoints = pointByArg[argument] || getPointsByArgFromPrevSeries(that._prevSeries, argument);\r\n if (prevSeriesPoints) {\r\n backwardPoints[i - 1] && prevSeriesPoints[0] && (backwardPoints[i - 1] = prevSeriesPoints[0]);\r\n backwardPoints[i + 1] && (backwardPoints[i + 1] = prevSeriesPoints[2] || p)\r\n }\r\n }\r\n }));\r\n areaSegment = {\r\n line: forwardPoints,\r\n area: forwardPoints.concat(backwardPoints.reverse())\r\n };\r\n that._areaPointsToSplineAreaPoints(areaSegment.area)\r\n }\r\n return areaSegment\r\n },\r\n _appendInGroup: chart.stackedarea._appendInGroup\r\n});\r\nchart.fullstackedarea = _extend({}, chartAreaSeries, baseStackedSeries, {\r\n _prepareSegment: chart.stackedarea._prepareSegment,\r\n _appendInGroup: chart.stackedarea._appendInGroup\r\n});\r\nchart.fullstackedsplinearea = _extend({}, areaSeries.splinearea, baseStackedSeries, {\r\n _prepareSegment: chart.stackedsplinearea._prepareSegment,\r\n _appendInGroup: chart.stackedarea._appendInGroup\r\n});\r\npolar.stackedbar = _extend({}, _polar.bar, baseStackedSeries, {});\r\nexport {\r\n chart,\r\n polar\r\n};\r\n","/**\r\n * DevExtreme (esm/viz/series/base_series.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nvar seriesNS = {};\r\nimport {\r\n isFunction,\r\n isDefined as _isDefined,\r\n isEmptyObject as _isEmptyObject\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend as _extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each as _each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n Point\r\n} from \"./points/base_point\";\r\nimport {\r\n normalizeEnum as _normalizeEnum\r\n} from \"../core/utils\";\r\nimport {\r\n noop as _noop\r\n} from \"../../core/utils/common\";\r\nimport consts from \"../components/consts\";\r\nvar states = consts.states;\r\nimport rangeCalculator from \"./helpers/range_data_calculator\";\r\nimport * as scatterSeries from \"./scatter_series\";\r\nimport * as lineSeries from \"./line_series\";\r\nimport * as areaSeries from \"./area_series\";\r\nimport * as barSeries from \"./bar_series\";\r\nimport {\r\n chart as rangeSeriesChart\r\n} from \"./range_series\";\r\nimport {\r\n chart as bubbleSeriesChart\r\n} from \"./bubble_series\";\r\nimport * as pieSeries from \"./pie_series\";\r\nimport * as financialSeries from \"./financial_series\";\r\nimport * as stackedSeries from \"./stacked_series\";\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_extend(seriesNS.mixins.pie, pieSeries);\r\n_extend(seriesNS.mixins.chart, lineSeries.chart, areaSeries.chart, barSeries.chart, rangeSeriesChart, bubbleSeriesChart, financialSeries, stackedSeries.chart);\r\n_extend(seriesNS.mixins.polar, lineSeries.polar, areaSeries.polar, barSeries.polar, stackedSeries.polar);\r\n\r\nfunction includePointsMode(mode) {\r\n mode = _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 = _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\" === _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: 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 = _extend({}, base, extra);\r\n options.border = _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 = _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\nexport function Series(settings, options) {\r\n this.fullState = 0;\r\n this._extGroups = settings;\r\n this._renderer = settings.renderer;\r\n this._group = settings.renderer.g().attr({\r\n class: \"dxc-series\"\r\n });\r\n this._eventTrigger = settings.eventTrigger;\r\n this._eventPipe = settings.eventPipe;\r\n this._incidentOccurred = settings.incidentOccurred;\r\n this._legendCallback = _noop;\r\n this.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 () => true\r\n } else {\r\n return value => value > 0\r\n }\r\n}\r\nSeries.prototype = {\r\n constructor: Series,\r\n _createLegendState: _noop,\r\n getLegendStyles: function() {\r\n return this._styles.legendStyles\r\n },\r\n _createStyles: function(options) {\r\n var mainSeriesColor = options.mainSeriesColor;\r\n this._styles = {\r\n normal: this._parseStyle(options, mainSeriesColor, mainSeriesColor),\r\n hover: this._parseStyle(options.hoverStyle || {}, mainSeriesColor, mainSeriesColor),\r\n selection: this._parseStyle(options.selectionStyle || {}, mainSeriesColor, mainSeriesColor),\r\n legendStyles: {\r\n normal: this._createLegendState(options, mainSeriesColor),\r\n hover: this._createLegendState(options.hoverStyle || {}, mainSeriesColor),\r\n selection: this._createLegendState(options.selectionStyle || {}, mainSeriesColor)\r\n }\r\n }\r\n },\r\n setClippingParams(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: _noop,\r\n getSizeField: _noop,\r\n getArgumentField: _noop,\r\n getPoints: function() {\r\n return this._points\r\n },\r\n getPointsInViewPort: function() {\r\n return rangeCalculator.getPointsInViewPort(this)\r\n },\r\n _createPoint: function(data, index, oldPoint) {\r\n data.index = index;\r\n var pointsByArgument = this.pointsByArgument;\r\n var options = this._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 Point(this, data, options);\r\n if (this.isSelected() && includePointsMode(this.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 this.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 ? rangeCalculator.getArgumentRange(this) : getEmptyBusinessRange()\r\n },\r\n getViewport: function() {\r\n return rangeCalculator.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(newOptions, settings) {\r\n var widgetType = newOptions.widgetType;\r\n var oldType = this.type;\r\n var newType = newOptions.type;\r\n this.type = newType && _normalizeEnum(newType.toString());\r\n if (!this._checkType(widgetType) || this._checkPolarBarType(widgetType, newOptions)) {\r\n this.dispose();\r\n this.isUpdated = false;\r\n return\r\n }\r\n if (oldType !== this.type) {\r\n this._firstDrawing = true;\r\n this._resetType(oldType, widgetType);\r\n this._setType(this.type, widgetType)\r\n } else {\r\n this._defineDrawingState()\r\n }\r\n this._options = newOptions;\r\n this._pointOptions = null;\r\n this.name = newOptions.name;\r\n this.pane = newOptions.pane;\r\n this.tag = newOptions.tag;\r\n if (settings) {\r\n this._seriesModes = settings.commonSeriesModes || this._seriesModes;\r\n this._valueAxis = settings.valueAxis || this._valueAxis;\r\n this.axis = this._valueAxis && this._valueAxis.name;\r\n this._argumentAxis = settings.argumentAxis || this._argumentAxis\r\n }\r\n this._createStyles(newOptions);\r\n this._stackName = null;\r\n this._updateOptions(newOptions);\r\n this._visible = newOptions.visible;\r\n this.isUpdated = true;\r\n this.stack = newOptions.stack;\r\n this.barOverlapGroup = newOptions.barOverlapGroup;\r\n this._createGroups();\r\n this._processEmptyValue = newOptions.ignoreEmptyPoints ? x => null === x ? void 0 : x : x => x\r\n },\r\n _defineDrawingState() {\r\n this._firstDrawing = true\r\n },\r\n _disposePoints: function(points) {\r\n _each(points || [], (function(_, p) {\r\n p.dispose()\r\n }))\r\n },\r\n updateDataType: function(settings) {\r\n this.argumentType = settings.argumentType;\r\n this.valueType = settings.valueType;\r\n this.argumentAxisType = settings.argumentAxisType;\r\n this.valueAxisType = settings.valueAxisType;\r\n this.showZero = settings.showZero;\r\n this._argumentChecker = getValueChecker(settings.argumentAxisType, this.getArgumentAxis());\r\n this._valueChecker = getValueChecker(settings.valueAxisType, this.getValueAxis());\r\n return this\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 options = this._options;\r\n var nameField = options.nameField;\r\n data = data || [];\r\n if (data.length) {\r\n this._canRenderCompleteHandle = true\r\n }\r\n var dataSelector = this._getPointDataSelector();\r\n var itemsWithoutArgument = 0;\r\n this._data = data.reduce((data, dataItem, index) => {\r\n var pointDataItem = dataSelector(dataItem);\r\n if (_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 this._incidentOccurred(\"W2002\", [this.name, this.getArgumentField()])\r\n }\r\n this._endUpdateData()\r\n },\r\n _getData() {\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: _noop,\r\n usePointsToDefineAutoHiding: _noop,\r\n createPoints(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((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(key => that._disposePoints(oldPointsByArgument[key]));\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 _each(that._graphics.splice(startIndex, that._graphics.length) || [], (function(_, elem) {\r\n that._removeElement(elem)\r\n }));\r\n if (that._trackers) {\r\n _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 if (!p.hasValue()) {\r\n segment.length && segments.push([])\r\n } else {\r\n p.setInvisibility()\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 firstDrawing = this._firstDrawing;\r\n this._legendCallback = legendCallback || this._legendCallback;\r\n if (!this._visible) {\r\n this._group.remove();\r\n return\r\n }\r\n this._appendInGroup();\r\n this._applyVisibleArea();\r\n this._setGroupsSettings(animationEnabled, firstDrawing);\r\n !firstDrawing && !this._resetApplyingAnimation && this._drawElements(false, firstDrawing, false);\r\n this._drawElements(animationEnabled, firstDrawing, true);\r\n hideLayoutLabels && this.hideLabels();\r\n if (this.isSelected()) {\r\n this._changeStyle(this.lastSelectionMode, void 0, true)\r\n } else if (this.isHovered()) {\r\n this._changeStyle(this.lastHoverMode, void 0, true)\r\n } else {\r\n this._applyStyle(this._styles.normal)\r\n }\r\n this._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 && -1 !== this.type.indexOf(\"bar\")\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 this._nearestPoint && null !== this._nearestPoint.series && this._nearestPoint.resetView(HOVER);\r\n this._nearestPoint = null\r\n },\r\n _setSelectedState: function(mode) {\r\n this.lastSelectionMode = _normalizeEnum(mode || this._options.selectionMode);\r\n this.fullState = this.fullState | SELECTED_STATE;\r\n this._resetNearestPoint();\r\n this._changeStyle(this.lastSelectionMode);\r\n if (this.lastSelectionMode !== NONE_MODE && this.isHovered() && includePointsMode(this.lastHoverMode)) {\r\n this._resetPointsView(HOVER)\r\n }\r\n },\r\n _releaseSelectedState: function() {\r\n this.fullState = this.fullState & ~SELECTED_STATE;\r\n this._changeStyle(this.lastSelectionMode, SELECTION);\r\n if (this.lastSelectionMode !== NONE_MODE && this.isHovered() && includePointsMode(this.lastHoverMode)) {\r\n this._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() && _normalizeEnum(this._options.hoverMode) !== NONE_MODE\r\n },\r\n _changeStyle: function(mode, resetView, skipPoints) {\r\n var state = this.fullState;\r\n var styles = [NORMAL, HOVER, SELECTION, SELECTION];\r\n if (\"none\" === this.lastHoverMode) {\r\n state &= ~HOVER_STATE\r\n }\r\n if (\"none\" === this.lastSelectionMode) {\r\n state &= ~SELECTED_STATE\r\n }\r\n if (includePointsMode(mode) && !skipPoints) {\r\n if (!resetView) {\r\n this._setPointsView(styles[state])\r\n } else {\r\n this._resetPointsView(resetView)\r\n }\r\n }\r\n this._legendCallback([RESET_ITEM, APPLY_HOVER, APPLY_SELECTED, APPLY_SELECTED][state]);\r\n this._applyStyle(this._styles[styles[state]])\r\n },\r\n updateHover: function(x, y) {\r\n var currentNearestPoint = this._nearestPoint;\r\n var point = this.isHovered() && this.lastHoverMode === NEAREST_POINT && this.getNeighborPoint(x, y);\r\n if (point !== currentNearestPoint && !(this.isSelected() && this.lastSelectionMode !== NONE_MODE)) {\r\n this._resetNearestPoint();\r\n if (point) {\r\n point.setView(HOVER);\r\n this._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 !_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(point, pointData) {\r\n var options = this._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 = _extend({\r\n seriesName: this.name\r\n }, pointData);\r\n customizeObject.series = this;\r\n customLabelOptions = customizeLabel.call(customizeObject, customizeObject);\r\n useLabelCustomOptions = customLabelOptions && !_isEmptyObject(customLabelOptions);\r\n customLabelOptions = useLabelCustomOptions ? _extend(true, {}, options.label, customLabelOptions) : null\r\n }\r\n if (customizePoint && customizePoint.call) {\r\n customizeObject = customizeObject || _extend({\r\n seriesName: this.name\r\n }, pointData);\r\n customizeObject.series = this;\r\n customOptions = customizePoint.call(customizeObject, customizeObject);\r\n usePointCustomOptions = customOptions && !_isEmptyObject(customOptions)\r\n }\r\n if (useLabelCustomOptions || usePointCustomOptions) {\r\n pointOptions = this._parsePointOptions(this._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 this._visible = this._options.visible = visibility;\r\n this._updatePointsVisibility();\r\n this.hidePointTooltip();\r\n this._options.visibilityChanged(this)\r\n },\r\n _updatePointsVisibility: _noop,\r\n hideLabels: function() {\r\n _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 options = this._options;\r\n var styles = this._createPointStyles(pointOptions, data, point);\r\n var parsedOptions = _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 (this.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 _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 = _normalizeEnum(options.method);\r\n var customAggregator = \"custom\" === method && options.calculate;\r\n var aggregator;\r\n if (isDiscrete && !aggregateByCategory) {\r\n aggregator = _ref => {\r\n var {\r\n data: data\r\n } = _ref;\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(_ref2, data) {\r\n var {\r\n interval: interval,\r\n ticks: ticks,\r\n aggregateByCategory: aggregateByCategory\r\n } = _ref2;\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 = (target, data, aggregationInfo) => {\r\n if (!data) {\r\n return\r\n }\r\n var processData = 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((g, category) => {\r\n g[category.valueOf()] = [];\r\n return g\r\n }, {});\r\n data.forEach(dataItem => {\r\n groups[dataItem.argument.valueOf()].push(dataItem)\r\n });\r\n return categories.reduce((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((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 eventTrigger = this._eventTrigger;\r\n if (this.isHovered()) {\r\n return\r\n }\r\n this.lastHoverMode = _normalizeEnum(mode || this._options.hoverMode);\r\n this.fullState = this.fullState | HOVER_STATE;\r\n this._changeStyle(this.lastHoverMode, void 0, this.isSelected() && this.lastSelectionMode !== NONE_MODE);\r\n eventTrigger(SERIES_HOVER_CHANGED, {\r\n target: this\r\n })\r\n },\r\n clearHover: function() {\r\n var eventTrigger = this._eventTrigger;\r\n if (!this.isHovered()) {\r\n return\r\n }\r\n this._resetNearestPoint();\r\n this.fullState = this.fullState & ~HOVER_STATE;\r\n this._changeStyle(this.lastHoverMode, HOVER, this.isSelected() && this.lastSelectionMode !== NONE_MODE);\r\n eventTrigger(SERIES_HOVER_CHANGED, {\r\n target: this\r\n })\r\n },\r\n hoverPoint: function(point) {\r\n if (!point.isHovered()) {\r\n point.clearHover();\r\n setPointHoverState(point, this._legendCallback);\r\n this._canChangeView() && this._applyStyle(this._styles.hover);\r\n this._eventPipe({\r\n action: POINT_HOVER,\r\n target: point\r\n });\r\n this._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 if (!this.isSelected()) {\r\n this._setSelectedState(this._options.selectionMode);\r\n this._eventPipe({\r\n action: SERIES_SELECT,\r\n target: this\r\n });\r\n this._group.toForeground();\r\n this._eventTrigger(SERIES_SELECTION_CHANGED, {\r\n target: this\r\n })\r\n }\r\n },\r\n clearSelection: function() {\r\n if (this.isSelected()) {\r\n this._releaseSelectedState();\r\n this._eventTrigger(SERIES_SELECTION_CHANGED, {\r\n target: this\r\n })\r\n }\r\n },\r\n getPointsByArg: function(arg, skipPointsCreation) {\r\n var argValue = arg.valueOf();\r\n var points = this.pointsByArgument[argValue];\r\n if (!points && !skipPointsCreation && this._createAllAggregatedPoints()) {\r\n points = this.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 = _normalizeEnum(targetOptions.hoverMode);\r\n var selectionModeOfPoint = _normalizeEnum(targetOptions.selectionMode);\r\n if (action === POINT_HOVER) {\r\n that._hoverPointHandler(target, pointHoverMode, data.notifyLegend)\r\n } else if (action === CLEAR_POINT_HOVER) {\r\n that._clearPointHoverHandler(target, pointHoverMode, data.notifyLegend)\r\n } else if (action === SERIES_SELECT) {\r\n target !== that && \"single\" === seriesModes.seriesSelectionMode && that.clearSelection()\r\n } else 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 if (action === POINT_DESELECT) {\r\n that._deselectPointHandler(target, selectionModeOfPoint)\r\n }\r\n },\r\n _selectPointHandler: function(target, mode) {\r\n if (mode === ALL_SERIES_POINTS) {\r\n target.series === this && this._setPointsView(SELECTION, target)\r\n } else if (mode === ALL_ARGUMENT_POINTS) {\r\n this.getPointsByKeys(target.argument, target.argumentIndex).forEach((function(currentPoint) {\r\n currentPoint !== target && currentPoint.setView(SELECTION)\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 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 _hoverPointHandler: function(target, mode, notifyLegend) {\r\n if (target.series !== this && mode === ALL_ARGUMENT_POINTS) {\r\n this.getPointsByKeys(target.argument, target.argumentIndex).forEach((function(currentPoint) {\r\n currentPoint.setView(HOVER)\r\n }));\r\n notifyLegend && this._legendCallback(target)\r\n } else if (mode === ALL_SERIES_POINTS && target.series === this) {\r\n this._setPointsView(HOVER, target)\r\n }\r\n },\r\n _clearPointHoverHandler: function(target, mode, notifyLegend) {\r\n if (mode === ALL_ARGUMENT_POINTS) {\r\n target.series !== this && this.getPointsByKeys(target.argument, target.argumentIndex).forEach((function(currentPoint) {\r\n currentPoint.resetView(HOVER)\r\n }));\r\n notifyLegend && this._legendCallback(target)\r\n } else if (mode === ALL_SERIES_POINTS && target.series === this) {\r\n this._resetPointsView(HOVER, target)\r\n }\r\n },\r\n _deletePoints: function() {\r\n this._disposePoints(this._points);\r\n this._points = this._drawnPoints = null\r\n },\r\n _deleteTrackers: function() {\r\n _each(this._trackers || [], (function(_, tracker) {\r\n tracker.remove()\r\n }));\r\n this._trackersGroup && this._trackersGroup.dispose();\r\n this._trackers = this._trackersGroup = null\r\n },\r\n dispose: function() {\r\n this._deletePoints();\r\n this._group.dispose();\r\n this._labelsGroup && this._labelsGroup.dispose();\r\n this._errorBarGroup && this._errorBarGroup.dispose();\r\n this._deleteTrackers();\r\n this._group = this._extGroups = this._markersGroup = this._elementsGroup = this._bordersGroup = this._labelsGroup = this._errorBarGroup = this._graphics = this._rangeData = this._renderer = this._styles = this._options = this._pointOptions = this._drawnPoints = this.pointsByArgument = this._segments = this._prevSeries = null\r\n },\r\n correctPosition: _noop,\r\n drawTrackers: _noop,\r\n getNeighborPoint: _noop,\r\n areErrorBarsVisible: _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() {\r\n return this._markersGroup\r\n },\r\n getRenderer() {\r\n return this._renderer\r\n },\r\n removePointElements() {\r\n if (this._markersGroup) {\r\n _each(this._points, (_, p) => p.deleteMarker());\r\n this._markersGroup.dispose();\r\n this._markersGroup = null\r\n }\r\n },\r\n removeGraphicElements() {\r\n var that = this;\r\n if (that._elementsGroup) {\r\n that._elementsGroup.dispose();\r\n that._elementsGroup = null\r\n }\r\n _each(that._graphics || [], (_, elem) => {\r\n that._removeElement(elem)\r\n });\r\n that._graphics = null\r\n },\r\n removeBordersGroup() {\r\n if (this._bordersGroup) {\r\n this._bordersGroup.dispose();\r\n this._bordersGroup = null\r\n }\r\n }\r\n};\r\nexport var mixins = seriesNS.mixins;\r\n","/**\r\n * DevExtreme (esm/viz/core/series_family.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n isNumeric,\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each as _each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n sign\r\n} from \"../../core/utils/math\";\r\nimport {\r\n noop as _noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n map as _map,\r\n normalizeEnum as _normalizeEnum\r\n} from \"./utils\";\r\nimport dateUtils from \"../../core/utils/date\";\r\nvar {\r\n round: round,\r\n abs: abs,\r\n pow: pow,\r\n sqrt: sqrt\r\n} = Math;\r\nvar _min = Math.min;\r\nvar DEFAULT_BAR_GROUP_PADDING = .3;\r\n\r\nfunction validateBarPadding(barPadding) {\r\n return barPadding < 0 || barPadding > 1 ? void 0 : barPadding\r\n}\r\n\r\nfunction validateBarGroupPadding(barGroupPadding) {\r\n return barGroupPadding < 0 || barGroupPadding > 1 ? DEFAULT_BAR_GROUP_PADDING : barGroupPadding\r\n}\r\n\r\nfunction isStackExist(series, arg) {\r\n return series.some((function(s) {\r\n return !s.getOptions().ignoreEmptyPoints || s.getPointsByArg(arg, true).some((function(point) {\r\n return point.hasValue()\r\n }))\r\n }))\r\n}\r\n\r\nfunction correctStackCoordinates(series, currentStacks, arg, stack, parameters, barsArea, seriesStackIndexCallback) {\r\n series.forEach((function(series) {\r\n var stackIndex = seriesStackIndexCallback(currentStacks.indexOf(stack), currentStacks.length);\r\n var points = series.getPointsByArg(arg, true);\r\n var barPadding = validateBarPadding(series.getOptions().barPadding);\r\n var barWidth = series.getOptions().barWidth;\r\n var offset = getOffset(stackIndex, parameters);\r\n var width = parameters.width;\r\n var extraParameters;\r\n if (-1 === stackIndex) {\r\n return\r\n }\r\n if (isDefined(barPadding) || isDefined(barWidth)) {\r\n extraParameters = calculateParams(barsArea, currentStacks.length, 1 - barPadding, barWidth);\r\n width = extraParameters.width;\r\n if (!series.getBarOverlapGroup()) {\r\n offset = getOffset(stackIndex, extraParameters)\r\n }\r\n }\r\n correctPointCoordinates(points, width, offset)\r\n }))\r\n}\r\n\r\nfunction getStackName(series) {\r\n return series.getStackName() || series.getBarOverlapGroup()\r\n}\r\n\r\nfunction adjustBarSeriesDimensionsCore(series, options, seriesStackIndexCallback) {\r\n var _series$, _series$2;\r\n var commonStacks = [];\r\n var allArguments = [];\r\n var seriesInStacks = {};\r\n var barGroupWidth = options.barGroupWidth;\r\n var argumentAxis = null === (_series$ = series[0]) || void 0 === _series$ ? void 0 : _series$.getArgumentAxis();\r\n var interval;\r\n if (null !== (_series$2 = series[0]) && void 0 !== _series$2 && _series$2.useAggregation()) {\r\n var _series$3;\r\n var isDateArgAxis = \"datetime\" === (null === (_series$3 = series[0]) || void 0 === _series$3 ? void 0 : _series$3.argumentType);\r\n var tickInterval = argumentAxis.getTickInterval();\r\n var aggregationInterval = argumentAxis.getAggregationInterval();\r\n tickInterval = isDateArgAxis ? dateUtils.dateToMilliseconds(tickInterval) : tickInterval;\r\n aggregationInterval = isDateArgAxis ? dateUtils.dateToMilliseconds(aggregationInterval) : aggregationInterval;\r\n interval = aggregationInterval < tickInterval ? aggregationInterval : tickInterval\r\n }\r\n interval = null === argumentAxis || void 0 === argumentAxis ? void 0 : argumentAxis.getTranslator().getInterval(interval);\r\n var barsArea = barGroupWidth ? interval > barGroupWidth ? barGroupWidth : interval : interval * (1 - validateBarGroupPadding(options.barGroupPadding));\r\n series.forEach((function(s, i) {\r\n var stackName = getStackName(s) || i.toString();\r\n var argument;\r\n for (argument in s.pointsByArgument) {\r\n if (-1 === allArguments.indexOf(argument.valueOf())) {\r\n allArguments.push(argument.valueOf())\r\n }\r\n }\r\n if (-1 === commonStacks.indexOf(stackName)) {\r\n commonStacks.push(stackName);\r\n seriesInStacks[stackName] = []\r\n }\r\n seriesInStacks[stackName].push(s)\r\n }));\r\n allArguments.forEach((function(arg) {\r\n var currentStacks = commonStacks.reduce((stacks, stack) => {\r\n if (isStackExist(seriesInStacks[stack], arg)) {\r\n stacks.push(stack)\r\n }\r\n return stacks\r\n }, []);\r\n var parameters = calculateParams(barsArea, currentStacks.length);\r\n commonStacks.forEach(stack => {\r\n correctStackCoordinates(seriesInStacks[stack], currentStacks, arg, stack, parameters, barsArea, seriesStackIndexCallback)\r\n })\r\n }))\r\n}\r\n\r\nfunction calculateParams(barsArea, count, percentWidth, fixedBarWidth) {\r\n var spacing;\r\n var width;\r\n if (fixedBarWidth) {\r\n width = _min(fixedBarWidth, barsArea / count);\r\n spacing = count > 1 ? round((barsArea - round(width) * count) / (count - 1)) : 0\r\n } else if (isDefined(percentWidth)) {\r\n width = barsArea * percentWidth / count;\r\n spacing = count > 1 ? round((barsArea - barsArea * percentWidth) / (count - 1)) : 0\r\n } else {\r\n spacing = round(barsArea / count * .2);\r\n width = (barsArea - spacing * (count - 1)) / count\r\n }\r\n return {\r\n width: width > 1 ? round(width) : 1,\r\n spacing: spacing,\r\n middleIndex: count / 2,\r\n rawWidth: width\r\n }\r\n}\r\n\r\nfunction getOffset(stackIndex, parameters) {\r\n var width = parameters.rawWidth < 1 ? parameters.rawWidth : parameters.width;\r\n return (stackIndex - parameters.middleIndex + .5) * width - (parameters.middleIndex - stackIndex - .5) * parameters.spacing\r\n}\r\n\r\nfunction correctPointCoordinates(points, width, offset) {\r\n _each(points, (function(_, point) {\r\n point.correctCoordinates({\r\n width: width,\r\n offset: offset\r\n })\r\n }))\r\n}\r\n\r\nfunction getValueType(value) {\r\n return value >= 0 ? \"positive\" : \"negative\"\r\n}\r\n\r\nfunction getVisibleSeries(that) {\r\n return that.series.filter((function(s) {\r\n return s.isVisible()\r\n }))\r\n}\r\n\r\nfunction getAbsStackSumByArg(stackKeepers, stackName, argument) {\r\n var positiveStackValue = (stackKeepers.positive[stackName] || {})[argument] || 0;\r\n var negativeStackValue = -(stackKeepers.negative[stackName] || {})[argument] || 0;\r\n return positiveStackValue + negativeStackValue\r\n}\r\n\r\nfunction getStackSumByArg(stackKeepers, stackName, argument) {\r\n var positiveStackValue = (stackKeepers.positive[stackName] || {})[argument] || 0;\r\n var negativeStackValue = (stackKeepers.negative[stackName] || {})[argument] || 0;\r\n return positiveStackValue + negativeStackValue\r\n}\r\n\r\nfunction getSeriesStackIndexCallback(inverted) {\r\n if (!inverted) {\r\n return function(index) {\r\n return index\r\n }\r\n } else {\r\n return function(index, stackCount) {\r\n return stackCount - index - 1\r\n }\r\n }\r\n}\r\n\r\nfunction isInverted(series) {\r\n return series[0] && series[0].getArgumentAxis().getTranslator().isInverted()\r\n}\r\n\r\nfunction adjustBarSeriesDimensions() {\r\n var series = getVisibleSeries(this);\r\n adjustBarSeriesDimensionsCore(series, this._options, getSeriesStackIndexCallback(isInverted(series)))\r\n}\r\n\r\nfunction getFirstValueSign(series) {\r\n var points = series.getPoints();\r\n var value;\r\n for (var i = 0; i < points.length; i++) {\r\n var point = points[i];\r\n value = point.initialValue && point.initialValue.valueOf();\r\n if (abs(value) > 0) {\r\n break\r\n }\r\n }\r\n return sign(value)\r\n}\r\n\r\nfunction adjustStackedSeriesValues() {\r\n var negativesAsZeroes = this._options.negativesAsZeroes;\r\n var series = getVisibleSeries(this);\r\n var stackKeepers = {\r\n positive: {},\r\n negative: {}\r\n };\r\n var holesStack = {\r\n left: {},\r\n right: {}\r\n };\r\n var lastSeriesInPositiveStack = {};\r\n var lastSeriesInNegativeStack = {};\r\n series.forEach((function(singleSeries) {\r\n var stackName = getStackName(singleSeries);\r\n var hole = false;\r\n var stack = getFirstValueSign(singleSeries) < 0 ? lastSeriesInNegativeStack : lastSeriesInPositiveStack;\r\n singleSeries._prevSeries = stack[stackName];\r\n stack[stackName] = singleSeries;\r\n singleSeries.holes = extend(true, {}, holesStack);\r\n singleSeries.getPoints().forEach((function(point, index, points) {\r\n var value = point.initialValue && point.initialValue.valueOf();\r\n var argument = point.argument.valueOf();\r\n var stacks = value >= 0 ? stackKeepers.positive : stackKeepers.negative;\r\n var isNotBarSeries = \"bar\" !== singleSeries.type;\r\n if (negativesAsZeroes && value < 0) {\r\n stacks = stackKeepers.positive;\r\n value = 0;\r\n point.resetValue()\r\n }\r\n stacks[stackName] = stacks[stackName] || {};\r\n var currentStack = stacks[stackName];\r\n if (currentStack[argument]) {\r\n if (isNotBarSeries) {\r\n point.correctValue(currentStack[argument])\r\n }\r\n currentStack[argument] += value\r\n } else {\r\n currentStack[argument] = value;\r\n if (isNotBarSeries) {\r\n point.resetCorrection()\r\n }\r\n }\r\n if (!point.hasValue()) {\r\n var prevPoint = points[index - 1];\r\n if (!hole && prevPoint && prevPoint.hasValue()) {\r\n argument = prevPoint.argument.valueOf();\r\n prevPoint._skipSetRightHole = true;\r\n holesStack.right[argument] = (holesStack.right[argument] || 0) + (prevPoint.value.valueOf() - (isFinite(prevPoint.minValue) ? prevPoint.minValue.valueOf() : 0))\r\n }\r\n hole = true\r\n } else if (hole) {\r\n hole = false;\r\n holesStack.left[argument] = (holesStack.left[argument] || 0) + (point.value.valueOf() - (isFinite(point.minValue) ? point.minValue.valueOf() : 0));\r\n point._skipSetLeftHole = true\r\n }\r\n }))\r\n }));\r\n series.forEach((function(singleSeries) {\r\n var holes = singleSeries.holes;\r\n singleSeries.getPoints().forEach((function(point) {\r\n var argument = point.argument.valueOf();\r\n point.resetHoles();\r\n !point._skipSetLeftHole && point.setHole(holes.left[argument] || holesStack.left[argument] && 0, \"left\");\r\n !point._skipSetRightHole && point.setHole(holes.right[argument] || holesStack.right[argument] && 0, \"right\");\r\n point._skipSetLeftHole = null;\r\n point._skipSetRightHole = null\r\n }))\r\n }));\r\n this._stackKeepers = stackKeepers;\r\n series.forEach((function(singleSeries) {\r\n singleSeries.getPoints().forEach((function(point) {\r\n var argument = point.argument.valueOf();\r\n var stackName = getStackName(singleSeries);\r\n var absTotal = getAbsStackSumByArg(stackKeepers, stackName, argument);\r\n var total = getStackSumByArg(stackKeepers, stackName, argument);\r\n point.setPercentValue(absTotal, total, holesStack.left[argument], holesStack.right[argument])\r\n }))\r\n }))\r\n}\r\n\r\nfunction updateStackedSeriesValues() {\r\n var that = this;\r\n var series = getVisibleSeries(that);\r\n var stack = that._stackKeepers;\r\n var stackKeepers = {\r\n positive: {},\r\n negative: {}\r\n };\r\n _each(series, (function(_, singleSeries) {\r\n var minBarSize = singleSeries.getOptions().minBarSize;\r\n var valueAxisTranslator = singleSeries.getValueAxis().getTranslator();\r\n var minShownBusinessValue = minBarSize && valueAxisTranslator.getMinBarSize(minBarSize);\r\n var stackName = singleSeries.getStackName();\r\n _each(singleSeries.getPoints(), (function(index, point) {\r\n if (!point.hasValue()) {\r\n return\r\n }\r\n var value = point.initialValue && point.initialValue.valueOf();\r\n var argument = point.argument.valueOf();\r\n if (that.fullStacked) {\r\n value = value / getAbsStackSumByArg(stack, stackName, argument) || 0\r\n }\r\n var updateValue = valueAxisTranslator.checkMinBarSize(value, minShownBusinessValue, point.value);\r\n var valueType = getValueType(updateValue);\r\n var currentStack = stackKeepers[valueType][stackName] = stackKeepers[valueType][stackName] || {};\r\n if (currentStack[argument]) {\r\n point.minValue = currentStack[argument];\r\n currentStack[argument] += updateValue\r\n } else {\r\n currentStack[argument] = updateValue\r\n }\r\n point.value = currentStack[argument]\r\n }))\r\n }));\r\n if (that.fullStacked) {\r\n updateFullStackedSeriesValues(series, stackKeepers)\r\n }\r\n}\r\n\r\nfunction updateFullStackedSeriesValues(series, stackKeepers) {\r\n _each(series, (function(_, singleSeries) {\r\n var stackName = singleSeries.getStackName ? singleSeries.getStackName() : \"default\";\r\n _each(singleSeries.getPoints(), (function(index, point) {\r\n var stackSum = getAbsStackSumByArg(stackKeepers, stackName, point.argument.valueOf());\r\n if (0 !== stackSum) {\r\n point.value = point.value / stackSum;\r\n if (isNumeric(point.minValue)) {\r\n point.minValue = point.minValue / stackSum\r\n }\r\n }\r\n }))\r\n }))\r\n}\r\n\r\nfunction updateBarSeriesValues() {\r\n _each(this.series, (function(_, singleSeries) {\r\n var minBarSize = singleSeries.getOptions().minBarSize;\r\n var valueAxisTranslator = singleSeries.getValueAxis().getTranslator();\r\n var minShownBusinessValue = minBarSize && valueAxisTranslator.getMinBarSize(minBarSize);\r\n if (minShownBusinessValue) {\r\n _each(singleSeries.getPoints(), (function(index, point) {\r\n if (point.hasValue()) {\r\n point.value = valueAxisTranslator.checkMinBarSize(point.initialValue, minShownBusinessValue)\r\n }\r\n }))\r\n }\r\n }))\r\n}\r\n\r\nfunction adjustCandlestickSeriesDimensions() {\r\n var series = getVisibleSeries(this);\r\n adjustBarSeriesDimensionsCore(series, {\r\n barGroupPadding: .3\r\n }, getSeriesStackIndexCallback(isInverted(series)))\r\n}\r\n\r\nfunction adjustBubbleSeriesDimensions() {\r\n var series = getVisibleSeries(this);\r\n if (!series.length) {\r\n return\r\n }\r\n var options = this._options;\r\n var visibleAreaX = series[0].getArgumentAxis().getVisibleArea();\r\n var visibleAreaY = series[0].getValueAxis().getVisibleArea();\r\n var min = _min(visibleAreaX[1] - visibleAreaX[0], visibleAreaY[1] - visibleAreaY[0]);\r\n var minBubbleArea = pow(options.minBubbleSize, 2);\r\n var maxBubbleArea = pow(min * options.maxBubbleSize, 2);\r\n var equalBubbleSize = (min * options.maxBubbleSize + options.minBubbleSize) / 2;\r\n var minPointSize = 1 / 0;\r\n var maxPointSize = -1 / 0;\r\n var pointSize;\r\n var bubbleArea;\r\n var sizeProportion;\r\n _each(series, (function(_, seriesItem) {\r\n _each(seriesItem.getPoints(), (function(_, point) {\r\n maxPointSize = maxPointSize > point.size ? maxPointSize : point.size;\r\n minPointSize = minPointSize < point.size ? minPointSize : point.size\r\n }))\r\n }));\r\n var sizeDispersion = maxPointSize - minPointSize;\r\n var areaDispersion = abs(maxBubbleArea - minBubbleArea);\r\n _each(series, (function(_, seriesItem) {\r\n _each(seriesItem.getPoints(), (function(_, point) {\r\n if (maxPointSize === minPointSize) {\r\n pointSize = round(equalBubbleSize)\r\n } else {\r\n sizeProportion = abs(point.size - minPointSize) / sizeDispersion;\r\n bubbleArea = areaDispersion * sizeProportion + minBubbleArea;\r\n pointSize = round(sqrt(bubbleArea))\r\n }\r\n point.correctCoordinates(pointSize)\r\n }))\r\n }))\r\n}\r\nexport function SeriesFamily(options) {\r\n this.type = _normalizeEnum(options.type);\r\n this.pane = options.pane;\r\n this.series = [];\r\n this.updateOptions(options);\r\n switch (this.type) {\r\n case \"bar\":\r\n this.adjustSeriesDimensions = adjustBarSeriesDimensions;\r\n this.updateSeriesValues = updateBarSeriesValues;\r\n this.adjustSeriesValues = adjustStackedSeriesValues;\r\n break;\r\n case \"rangebar\":\r\n this.adjustSeriesDimensions = adjustBarSeriesDimensions;\r\n break;\r\n case \"fullstackedbar\":\r\n this.fullStacked = true;\r\n this.adjustSeriesDimensions = adjustBarSeriesDimensions;\r\n this.adjustSeriesValues = adjustStackedSeriesValues;\r\n this.updateSeriesValues = updateStackedSeriesValues;\r\n break;\r\n case \"stackedbar\":\r\n this.adjustSeriesDimensions = adjustBarSeriesDimensions;\r\n this.adjustSeriesValues = adjustStackedSeriesValues;\r\n this.updateSeriesValues = updateStackedSeriesValues;\r\n break;\r\n case \"fullstackedarea\":\r\n case \"fullstackedline\":\r\n case \"fullstackedspline\":\r\n case \"fullstackedsplinearea\":\r\n this.fullStacked = true;\r\n this.adjustSeriesValues = adjustStackedSeriesValues;\r\n break;\r\n case \"stackedarea\":\r\n case \"stackedsplinearea\":\r\n case \"stackedline\":\r\n case \"stackedspline\":\r\n this.adjustSeriesValues = adjustStackedSeriesValues;\r\n break;\r\n case \"candlestick\":\r\n case \"stock\":\r\n this.adjustSeriesDimensions = adjustCandlestickSeriesDimensions;\r\n break;\r\n case \"bubble\":\r\n this.adjustSeriesDimensions = adjustBubbleSeriesDimensions\r\n }\r\n}\r\nSeriesFamily.prototype = {\r\n constructor: SeriesFamily,\r\n adjustSeriesDimensions: _noop,\r\n adjustSeriesValues: _noop,\r\n updateSeriesValues: _noop,\r\n updateOptions: function(options) {\r\n this._options = options\r\n },\r\n dispose: function() {\r\n this.series = null\r\n },\r\n add: function(series) {\r\n var type = this.type;\r\n this.series = _map(series, singleSeries => singleSeries.type === type ? singleSeries : null)\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/viz/components/data_validator.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n isDefined as _isDefined,\r\n isFunction as _isFunction,\r\n isString as _isString,\r\n isDate as _isDate,\r\n isNumeric as _isNumber,\r\n isObject as _isObject\r\n} from \"../../core/utils/type\";\r\nvar STRING = \"string\";\r\nvar NUMERIC = \"numeric\";\r\nvar DATETIME = \"datetime\";\r\nvar DISCRETE = \"discrete\";\r\nvar SEMIDISCRETE = \"semidiscrete\";\r\nvar CONTINUOUS = \"continuous\";\r\nvar LOGARITHMIC = \"logarithmic\";\r\nvar VALUE_TYPE = \"valueType\";\r\nvar ARGUMENT_TYPE = \"argumentType\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n enumParser\r\n} from \"../core/utils\";\r\nvar axisTypeParser = enumParser([STRING, NUMERIC, DATETIME]);\r\nimport {\r\n getParser as _getParser\r\n} from \"./parse_utils\";\r\nvar _isArray = Array.isArray;\r\n\r\nfunction groupingValues(data, others, valueField, index) {\r\n if (index >= 0) {\r\n data.slice(index).forEach((function(cell) {\r\n if (_isDefined(cell[valueField])) {\r\n others[valueField] += cell[valueField];\r\n cell[valueField] = void 0\r\n }\r\n }))\r\n }\r\n}\r\n\r\nfunction processGroups(groups) {\r\n groups.forEach((function(group) {\r\n group.valueType = group.valueAxisType = null;\r\n group.series.forEach((function(series) {\r\n series.updateDataType({})\r\n }));\r\n group.valueAxis && group.valueAxis.resetTypes(VALUE_TYPE)\r\n }))\r\n}\r\n\r\nfunction sortValues(data, asc, selector) {\r\n var func = asc ? function(a, b) {\r\n return a - b\r\n } : function(a, b) {\r\n return b - a\r\n };\r\n data.sort((function(a, b) {\r\n var valA = selector(a);\r\n var valB = selector(b);\r\n var aa = _isDefined(valA) ? 1 : 0;\r\n var bb = _isDefined(valB) ? 1 : 0;\r\n return aa && bb ? func(valA, valB) : func(aa, bb)\r\n }));\r\n return data\r\n}\r\n\r\nfunction resetArgumentAxes(axes) {\r\n axes && axes.forEach((function(axis) {\r\n axis.resetTypes(ARGUMENT_TYPE)\r\n }))\r\n}\r\n\r\nfunction parseCategories(categories, parser) {\r\n var newArray = [];\r\n categories.forEach((function(category) {\r\n var parsedCategory = parser(category);\r\n void 0 !== parsedCategory && newArray.push(parsedCategory)\r\n }));\r\n return newArray\r\n}\r\n\r\nfunction parseAxisCategories(groupsData, parsers) {\r\n var argumentCategories = groupsData.argumentOptions && groupsData.argumentOptions.categories;\r\n groupsData.groups.forEach((function(valueGroup, i) {\r\n var categories = valueGroup.valueOptions && valueGroup.valueOptions.categories;\r\n if (categories) {\r\n valueGroup.valueOptions.categories = parseCategories(categories, parsers[i + 1])\r\n }\r\n }));\r\n if (argumentCategories) {\r\n groupsData.argumentOptions.categories = parseCategories(argumentCategories, parsers[0])\r\n }\r\n}\r\n\r\nfunction eigen(x) {\r\n return x\r\n}\r\n\r\nfunction getType(unit, type) {\r\n var result = type;\r\n if (type === STRING || _isString(unit)) {\r\n result = STRING\r\n } else if (type === DATETIME || _isDate(unit)) {\r\n result = DATETIME\r\n } else if (_isNumber(unit)) {\r\n result = NUMERIC\r\n }\r\n return result\r\n}\r\n\r\nfunction correctAxisType(type, axisType, hasCategories, incidentOccurred) {\r\n if (type === STRING && (axisType === CONTINUOUS || axisType === LOGARITHMIC || axisType === SEMIDISCRETE)) {\r\n incidentOccurred(\"E2002\")\r\n }\r\n return axisType === LOGARITHMIC ? LOGARITHMIC : hasCategories || axisType === DISCRETE || type === STRING ? DISCRETE : axisType === SEMIDISCRETE ? SEMIDISCRETE : CONTINUOUS\r\n}\r\n\r\nfunction validUnit(unit, field, incidentOccurred) {\r\n if (unit) {\r\n incidentOccurred(!_isNumber(unit) && !_isDate(unit) && !_isString(unit) ? \"E2003\" : \"E2004\", [field])\r\n }\r\n}\r\n\r\nfunction createParserUnit(type, axisType, incidentOccurred) {\r\n var parser = type ? _getParser(type) : eigen;\r\n var filterInfinity = axisType !== DISCRETE ? function(x) {\r\n return isFinite(x) || void 0 === x ? x : null\r\n } : eigen;\r\n return function(unit, field) {\r\n var parseUnit = filterInfinity(parser(unit));\r\n if (void 0 === parseUnit) {\r\n validUnit(unit, field, incidentOccurred)\r\n }\r\n return parseUnit\r\n }\r\n}\r\n\r\nfunction prepareParsers(groupsData, incidentOccurred) {\r\n var argumentParser = createParserUnit(groupsData.argumentType, groupsData.argumentAxisType, incidentOccurred);\r\n var sizeParser;\r\n var valueParser;\r\n var categoryParsers = [argumentParser];\r\n var cache = {};\r\n var list = [];\r\n groupsData.groups.forEach((function(group, groupIndex) {\r\n group.series.forEach((function(series) {\r\n valueParser = createParserUnit(group.valueType, group.valueAxisType, incidentOccurred);\r\n sizeParser = createParserUnit(NUMERIC, CONTINUOUS, incidentOccurred);\r\n cache[series.getArgumentField()] = argumentParser;\r\n series.getValueFields().forEach((function(field) {\r\n categoryParsers[groupIndex + 1] = valueParser;\r\n cache[field] = valueParser\r\n }));\r\n if (series.getSizeField()) {\r\n cache[series.getSizeField()] = sizeParser\r\n }\r\n }))\r\n }));\r\n for (var field in cache) {\r\n list.push([field, cache[field]])\r\n }\r\n list.length && parseAxisCategories(groupsData, categoryParsers);\r\n return list\r\n}\r\n\r\nfunction getParsedCell(cell, parsers) {\r\n var i;\r\n var ii = parsers.length;\r\n var obj = extend({}, cell);\r\n var field;\r\n var value;\r\n for (i = 0; i < ii; ++i) {\r\n field = parsers[i][0];\r\n value = cell[field];\r\n obj[field] = parsers[i][1](value, field)\r\n }\r\n return obj\r\n}\r\n\r\nfunction parse(data, parsers) {\r\n var parsedData = [];\r\n var i;\r\n var ii = data.length;\r\n parsedData.length = ii;\r\n for (i = 0; i < ii; ++i) {\r\n parsedData[i] = getParsedCell(data[i], parsers)\r\n }\r\n return parsedData\r\n}\r\n\r\nfunction findIndexByThreshold(data, valueField, threshold) {\r\n var i;\r\n var ii = data.length;\r\n var value;\r\n for (i = 0; i < ii; ++i) {\r\n value = data[i][valueField];\r\n if (_isDefined(value) && threshold > value) {\r\n break\r\n }\r\n }\r\n return i\r\n}\r\n\r\nfunction groupMinSlices(originalData, argumentField, valueField, smallValuesGrouping) {\r\n smallValuesGrouping = smallValuesGrouping || {};\r\n var mode = smallValuesGrouping.mode;\r\n var others = {};\r\n if (!mode || \"none\" === mode) {\r\n return\r\n }\r\n others[argumentField] = String(smallValuesGrouping.groupName || \"others\");\r\n others[valueField] = 0;\r\n var data = sortValues(originalData.slice(), false, (function(a) {\r\n return a[valueField]\r\n }));\r\n groupingValues(data, others, valueField, \"smallValueThreshold\" === mode ? findIndexByThreshold(data, valueField, smallValuesGrouping.threshold) : smallValuesGrouping.topCount);\r\n others[valueField] && originalData.push(others)\r\n}\r\n\r\nfunction groupPieData(data, groupsData) {\r\n var firstSeries = groupsData.groups[0] && groupsData.groups[0].series[0];\r\n var isPie = firstSeries && (\"pie\" === firstSeries.type || \"doughnut\" === firstSeries.type || \"donut\" === firstSeries.type);\r\n if (!isPie) {\r\n return\r\n }\r\n groupsData.groups.forEach((function(group) {\r\n group.series.forEach((function(series) {\r\n groupMinSlices(data, series.getArgumentField(), series.getValueFields()[0], series.getOptions().smallValuesGrouping)\r\n }))\r\n }))\r\n}\r\n\r\nfunction addUniqueItemToCollection(item, collection, itemsHash) {\r\n if (!itemsHash[item]) {\r\n collection.push(item);\r\n itemsHash[item] = true\r\n }\r\n}\r\n\r\nfunction getUniqueArgumentFields(groupsData) {\r\n var uniqueArgumentFields = [];\r\n var hash = {};\r\n groupsData.groups.forEach((function(group) {\r\n group.series.forEach((function(series) {\r\n addUniqueItemToCollection(series.getArgumentField(), uniqueArgumentFields, hash)\r\n }))\r\n }));\r\n return uniqueArgumentFields\r\n}\r\n\r\nfunction sort(a, b) {\r\n var result = a - b;\r\n if (isNaN(result)) {\r\n if (!_isDefined(a)) {\r\n return 1\r\n }\r\n if (!_isDefined(b)) {\r\n return -1\r\n }\r\n return 0\r\n }\r\n return result\r\n}\r\n\r\nfunction sortByArgument(data, argumentField) {\r\n return data.slice().sort((function(a, b) {\r\n return sort(a[argumentField], b[argumentField])\r\n }))\r\n}\r\n\r\nfunction sortByCallback(data, callback) {\r\n return data.slice().sort(callback)\r\n}\r\n\r\nfunction checkValueTypeOfGroup(group, cell) {\r\n group.series.forEach((function(series) {\r\n series.getValueFields().forEach((function(field) {\r\n group.valueType = getType(cell[field], group.valueType)\r\n }))\r\n }));\r\n return group.valueType\r\n}\r\n\r\nfunction getSortByCategories(categories) {\r\n var hash = {};\r\n categories.forEach((function(value, i) {\r\n hash[value] = i\r\n }));\r\n return function(data, argumentField) {\r\n return sortValues(data.slice(), true, (function(a) {\r\n return hash[a[argumentField]]\r\n }))\r\n }\r\n}\r\n\r\nfunction sortData(data, groupsData, options, uniqueArgumentFields) {\r\n var dataByArguments = {};\r\n var isDiscrete = groupsData.argumentAxisType === DISCRETE;\r\n var userCategories = isDiscrete && groupsData.argumentOptions && groupsData.argumentOptions.categories;\r\n var sortFunction = function(data) {\r\n return data\r\n };\r\n var sortingMethodOption = options.sortingMethod;\r\n var reSortCategories;\r\n if (!userCategories && _isFunction(sortingMethodOption)) {\r\n data = sortByCallback(data, sortingMethodOption)\r\n }\r\n if (isDiscrete) {\r\n groupsData.categories = getCategories(data, uniqueArgumentFields, userCategories)\r\n }\r\n if (userCategories || !_isFunction(sortingMethodOption) && groupsData.argumentType === STRING && !options._skipArgumentSorting) {\r\n sortFunction = getSortByCategories(groupsData.categories)\r\n } else if (true === sortingMethodOption && groupsData.argumentType !== STRING) {\r\n sortFunction = sortByArgument;\r\n reSortCategories = isDiscrete\r\n }\r\n uniqueArgumentFields.forEach((function(field) {\r\n dataByArguments[field] = sortFunction(data, field)\r\n }));\r\n if (reSortCategories) {\r\n groupsData.categories = groupsData.categories.sort(sort)\r\n }\r\n return dataByArguments\r\n}\r\n\r\nfunction checkItemExistence(collection, item) {\r\n return -1 === collection.map((function(collectionItem) {\r\n return collectionItem.valueOf()\r\n })).indexOf(item.valueOf())\r\n}\r\n\r\nfunction getCategories(data, uniqueArgumentFields, userCategories) {\r\n var categories = userCategories ? userCategories.slice() : [];\r\n uniqueArgumentFields.forEach((function(field) {\r\n data.forEach((function(item) {\r\n var dataItem = item[field];\r\n _isDefined(dataItem) && checkItemExistence(categories, dataItem) && categories.push(dataItem)\r\n }))\r\n }));\r\n return categories\r\n}\r\n\r\nfunction checkArgumentTypeOfGroup(series, cell, groupsData) {\r\n series.forEach((function(currentSeries) {\r\n groupsData.argumentType = getType(cell[currentSeries.getArgumentField()], groupsData.argumentType)\r\n }));\r\n return groupsData.argumentType\r\n}\r\n\r\nfunction checkType(data, groupsData, checkTypeForAllData) {\r\n var groupsWithUndefinedValueType = [];\r\n var groupsWithUndefinedArgumentType = [];\r\n var argumentTypeGroup = groupsData.argumentOptions && axisTypeParser(groupsData.argumentOptions.argumentType);\r\n var groupsIndexes;\r\n groupsData.groups.forEach((function(group) {\r\n if (!group.series.length) {\r\n return\r\n }\r\n var valueTypeGroup = group.valueOptions && axisTypeParser(group.valueOptions.valueType);\r\n group.valueType = valueTypeGroup;\r\n groupsData.argumentType = argumentTypeGroup;\r\n !valueTypeGroup && groupsWithUndefinedValueType.push(group);\r\n !argumentTypeGroup && groupsWithUndefinedArgumentType.push(group)\r\n }));\r\n if (groupsWithUndefinedValueType.length || groupsWithUndefinedArgumentType.length) {\r\n groupsIndexes = groupsWithUndefinedValueType.map((function(_, index) {\r\n return index\r\n }));\r\n data.some((function(cell) {\r\n var defineArg;\r\n groupsWithUndefinedValueType.forEach((function(group, groupIndex) {\r\n if (checkValueTypeOfGroup(group, cell) && groupsIndexes.indexOf(groupIndex) >= 0) {\r\n groupsIndexes.splice(groupIndex, 1)\r\n }\r\n }));\r\n if (!defineArg) {\r\n groupsWithUndefinedArgumentType.forEach((function(group) {\r\n defineArg = checkArgumentTypeOfGroup(group.series, cell, groupsData)\r\n }))\r\n }\r\n if (!checkTypeForAllData && defineArg && 0 === groupsIndexes.length) {\r\n return true\r\n }\r\n }))\r\n }\r\n}\r\n\r\nfunction checkAxisType(groupsData, incidentOccurred) {\r\n var argumentOptions = groupsData.argumentOptions || {};\r\n var userArgumentCategories = argumentOptions && argumentOptions.categories || [];\r\n var argumentAxisType = correctAxisType(groupsData.argumentType, argumentOptions.type, !!userArgumentCategories.length, incidentOccurred);\r\n groupsData.groups.forEach((function(group) {\r\n var valueOptions = group.valueOptions || {};\r\n var valueCategories = valueOptions.categories || [];\r\n var valueAxisType = correctAxisType(group.valueType, valueOptions.type, !!valueCategories.length, incidentOccurred);\r\n group.series.forEach((function(series) {\r\n var optionsSeries = {};\r\n optionsSeries.argumentAxisType = argumentAxisType;\r\n optionsSeries.valueAxisType = valueAxisType;\r\n groupsData.argumentAxisType = groupsData.argumentAxisType || optionsSeries.argumentAxisType;\r\n group.valueAxisType = group.valueAxisType || optionsSeries.valueAxisType;\r\n optionsSeries.argumentType = groupsData.argumentType;\r\n optionsSeries.valueType = group.valueType;\r\n optionsSeries.showZero = valueOptions.showZero;\r\n series.updateDataType(optionsSeries)\r\n }));\r\n group.valueAxisType = group.valueAxisType || valueAxisType;\r\n if (group.valueAxis) {\r\n group.valueAxis.setTypes(group.valueAxisType, group.valueType, VALUE_TYPE);\r\n group.valueAxis.validate()\r\n }\r\n }));\r\n groupsData.argumentAxisType = groupsData.argumentAxisType || argumentAxisType;\r\n if (groupsData.argumentAxes) {\r\n groupsData.argumentAxes.forEach((function(axis) {\r\n axis.setTypes(groupsData.argumentAxisType, groupsData.argumentType, ARGUMENT_TYPE);\r\n axis.validate()\r\n }))\r\n }\r\n}\r\n\r\nfunction verifyData(source, incidentOccurred) {\r\n var data = [];\r\n var sourceIsDefined = _isDefined(source);\r\n var hasError = sourceIsDefined && !_isArray(source);\r\n var i;\r\n var ii;\r\n var k;\r\n var item;\r\n if (sourceIsDefined && !hasError) {\r\n for (i = 0, ii = source.length, k = 0; i < ii; ++i) {\r\n item = source[i];\r\n if (_isObject(item)) {\r\n data[k++] = item\r\n } else if (item) {\r\n hasError = true\r\n }\r\n }\r\n }\r\n if (hasError) {\r\n incidentOccurred(\"E2001\")\r\n }\r\n return data\r\n}\r\nexport function validateData(data, groupsData, incidentOccurred, options) {\r\n data = verifyData(data, incidentOccurred);\r\n groupsData.argumentType = groupsData.argumentAxisType = null;\r\n processGroups(groupsData.groups);\r\n resetArgumentAxes(groupsData.argumentAxes);\r\n checkType(data, groupsData, options.checkTypeForAllData);\r\n checkAxisType(groupsData, incidentOccurred);\r\n if (options.convertToAxisDataType) {\r\n data = parse(data, prepareParsers(groupsData, incidentOccurred))\r\n }\r\n groupPieData(data, groupsData);\r\n var dataByArgumentFields = sortData(data, groupsData, options, getUniqueArgumentFields(groupsData));\r\n return dataByArgumentFields\r\n}\r\n","/**\r\n * DevExtreme (esm/viz/palette.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n normalizeEnum\r\n} from \"./core/utils\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nvar _floor = Math.floor;\r\nvar _ceil = Math.ceil;\r\nimport _Color from \"../color\";\r\nvar _isArray = Array.isArray;\r\nimport {\r\n isString as _isString\r\n} from \"../core/utils/type\";\r\nvar HIGHLIGHTING_STEP = 50;\r\nvar DEFAULT_PALETTE = \"material\";\r\nvar officePalette = {\r\n simpleSet: [\"#5f8b95\", \"#ba4d51\", \"#af8a53\", \"#955f71\", \"#859666\", \"#7e688c\"],\r\n indicatingSet: [\"#a3b97c\", \"#e1b676\", \"#ec7f83\"],\r\n gradientSet: [\"#5f8b95\", \"#ba4d51\"],\r\n accentColor: \"#ba4d51\"\r\n};\r\nvar palettes = {\r\n [DEFAULT_PALETTE]: {\r\n simpleSet: [\"#1db2f5\", \"#f5564a\", \"#97c95c\", \"#ffc720\", \"#eb3573\", \"#a63db8\"],\r\n indicatingSet: [\"#97c95c\", \"#ffc720\", \"#f5564a\"],\r\n gradientSet: [\"#1db2f5\", \"#97c95c\"],\r\n accentColor: \"#1db2f5\"\r\n },\r\n office: officePalette,\r\n \"harmony light\": {\r\n simpleSet: [\"#fcb65e\", \"#679ec5\", \"#ad79ce\", \"#7abd5c\", \"#e18e92\", \"#b6d623\", \"#b7abea\", \"#85dbd5\"],\r\n indicatingSet: [\"#b6d623\", \"#fcb65e\", \"#e18e92\"],\r\n gradientSet: [\"#7abd5c\", \"#fcb65e\"],\r\n accentColor: \"#679ec5\"\r\n },\r\n \"soft pastel\": {\r\n simpleSet: [\"#60a69f\", \"#78b6d9\", \"#6682bb\", \"#a37182\", \"#eeba69\", \"#90ba58\", \"#456c68\", \"#7565a4\"],\r\n indicatingSet: [\"#90ba58\", \"#eeba69\", \"#a37182\"],\r\n gradientSet: [\"#78b6d9\", \"#eeba69\"],\r\n accentColor: \"#60a69f\"\r\n },\r\n pastel: {\r\n simpleSet: [\"#bb7862\", \"#70b3a1\", \"#bb626a\", \"#057d85\", \"#ab394b\", \"#dac599\", \"#153459\", \"#b1d2c6\"],\r\n indicatingSet: [\"#70b3a1\", \"#dac599\", \"#bb626a\"],\r\n gradientSet: [\"#bb7862\", \"#70b3a1\"],\r\n accentColor: \"#bb7862\"\r\n },\r\n bright: {\r\n simpleSet: [\"#70c92f\", \"#f8ca00\", \"#bd1550\", \"#e97f02\", \"#9d419c\", \"#7e4452\", \"#9ab57e\", \"#36a3a6\"],\r\n indicatingSet: [\"#70c92f\", \"#f8ca00\", \"#bd1550\"],\r\n gradientSet: [\"#e97f02\", \"#f8ca00\"],\r\n accentColor: \"#e97f02\"\r\n },\r\n soft: {\r\n simpleSet: [\"#cbc87b\", \"#9ab57e\", \"#e55253\", \"#7e4452\", \"#e8c267\", \"#565077\", \"#6babac\", \"#ad6082\"],\r\n indicatingSet: [\"#9ab57e\", \"#e8c267\", \"#e55253\"],\r\n gradientSet: [\"#9ab57e\", \"#e8c267\"],\r\n accentColor: \"#565077\"\r\n },\r\n ocean: {\r\n simpleSet: [\"#75c099\", \"#acc371\", \"#378a8a\", \"#5fa26a\", \"#064970\", \"#38c5d2\", \"#00a7c6\", \"#6f84bb\"],\r\n indicatingSet: [\"#c8e394\", \"#7bc59d\", \"#397c8b\"],\r\n gradientSet: [\"#acc371\", \"#38c5d2\"],\r\n accentColor: \"#378a8a\"\r\n },\r\n vintage: {\r\n simpleSet: [\"#dea484\", \"#efc59c\", \"#cb715e\", \"#eb9692\", \"#a85c4c\", \"#f2c0b5\", \"#c96374\", \"#dd956c\"],\r\n indicatingSet: [\"#ffe5c6\", \"#f4bb9d\", \"#e57660\"],\r\n gradientSet: [\"#efc59c\", \"#cb715e\"],\r\n accentColor: \"#cb715e\"\r\n },\r\n violet: {\r\n simpleSet: [\"#d1a1d1\", \"#eeacc5\", \"#7b5685\", \"#7e7cad\", \"#a13d73\", \"#5b41ab\", \"#e287e2\", \"#689cc1\"],\r\n indicatingSet: [\"#d8e2f6\", \"#d0b2da\", \"#d56a8a\"],\r\n gradientSet: [\"#eeacc5\", \"#7b5685\"],\r\n accentColor: \"#7b5685\"\r\n },\r\n carmine: {\r\n simpleSet: [\"#fb7764\", \"#73d47f\", \"#fed85e\", \"#d47683\", \"#dde392\", \"#757ab2\"],\r\n indicatingSet: [\"#5cb85c\", \"#f0ad4e\", \"#d9534f\"],\r\n gradientSet: [\"#fb7764\", \"#73d47f\"],\r\n accentColor: \"#f05b41\"\r\n },\r\n \"dark moon\": {\r\n simpleSet: [\"#4ddac1\", \"#f4c99a\", \"#80dd9b\", \"#f998b3\", \"#4aaaa0\", \"#a5aef1\"],\r\n indicatingSet: [\"#59d8a4\", \"#f0ad4e\", \"#f9517e\"],\r\n gradientSet: [\"#4ddac1\", \"#f4c99a\"],\r\n accentColor: \"#3debd3\"\r\n },\r\n \"soft blue\": {\r\n simpleSet: [\"#7ab8eb\", \"#97da97\", \"#facb86\", \"#e78683\", \"#839bda\", \"#4db7be\"],\r\n indicatingSet: [\"#5cb85c\", \"#f0ad4e\", \"#d9534f\"],\r\n gradientSet: [\"#7ab8eb\", \"#97da97\"],\r\n accentColor: \"#7ab8eb\"\r\n },\r\n \"dark violet\": {\r\n simpleSet: [\"#9c63ff\", \"#64c064\", \"#eead51\", \"#d2504b\", \"#4b6bbf\", \"#2da7b0\"],\r\n indicatingSet: [\"#5cb85c\", \"#f0ad4e\", \"#d9534f\"],\r\n gradientSet: [\"#9c63ff\", \"#64c064\"],\r\n accentColor: \"#9c63ff\"\r\n },\r\n \"green mist\": {\r\n simpleSet: [\"#3cbab2\", \"#8ed962\", \"#5b9d95\", \"#efcc7c\", \"#f1929f\", \"#4d8dab\"],\r\n indicatingSet: [\"#72d63c\", \"#ffc852\", \"#f74a5e\"],\r\n gradientSet: [\"#3cbab2\", \"#8ed962\"],\r\n accentColor: \"#3cbab2\"\r\n }\r\n};\r\nvar currentPaletteName;\r\nexport function currentPalette(name) {\r\n if (void 0 === name) {\r\n return currentPaletteName || DEFAULT_PALETTE\r\n } else {\r\n name = normalizeEnum(name);\r\n currentPaletteName = name in palettes ? name : void 0\r\n }\r\n}\r\nexport function generateColors(palette, count) {\r\n var options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {\r\n keepLastColorInEnd: false\r\n };\r\n options.type = options.baseColorSet;\r\n options.extensionMode = options.paletteExtensionMode;\r\n return createPalette(palette, options).generateColors(count)\r\n}\r\nexport function getPalette(palette, parameters) {\r\n parameters = parameters || {};\r\n palette = palette || (void 0 === currentPaletteName ? parameters.themeDefault : currentPalette());\r\n var result;\r\n var type = parameters.type;\r\n if (_isArray(palette)) {\r\n return palette.slice(0)\r\n } else {\r\n if (_isString(palette)) {\r\n result = palettes[normalizeEnum(palette)]\r\n }\r\n if (!result) {\r\n result = palettes[currentPalette()]\r\n }\r\n }\r\n return type ? result[type].slice(0) : result\r\n}\r\nexport function registerPalette(name, palette) {\r\n var item = {};\r\n var paletteName;\r\n if (_isArray(palette)) {\r\n item.simpleSet = palette.slice(0)\r\n } else if (palette) {\r\n item.simpleSet = _isArray(palette.simpleSet) ? palette.simpleSet.slice(0) : void 0;\r\n item.indicatingSet = _isArray(palette.indicatingSet) ? palette.indicatingSet.slice(0) : void 0;\r\n item.gradientSet = _isArray(palette.gradientSet) ? palette.gradientSet.slice(0) : void 0;\r\n item.accentColor = palette.accentColor\r\n }\r\n if (!item.accentColor) {\r\n item.accentColor = item.simpleSet && item.simpleSet[0]\r\n }\r\n if (item.simpleSet || item.indicatingSet || item.gradientSet) {\r\n paletteName = normalizeEnum(name);\r\n extend(palettes[paletteName] = palettes[paletteName] || {}, item)\r\n }\r\n}\r\nexport function getAccentColor(palette, themeDefault) {\r\n palette = getPalette(palette, {\r\n themeDefault: themeDefault\r\n });\r\n return palette.accentColor || palette[0]\r\n}\r\n\r\nfunction RingBuf(buf) {\r\n var ind = 0;\r\n this.next = function() {\r\n var res = buf[ind++];\r\n if (ind === buf.length) {\r\n this.reset()\r\n }\r\n return res\r\n };\r\n this.reset = function() {\r\n ind = 0\r\n }\r\n}\r\n\r\nfunction getAlternateColorsStrategy(palette, parameters) {\r\n var stepHighlight = parameters.useHighlight ? HIGHLIGHTING_STEP : 0;\r\n var paletteSteps = new RingBuf([0, stepHighlight, -stepHighlight]);\r\n var currentPalette = [];\r\n\r\n function _reset() {\r\n var step = paletteSteps.next();\r\n currentPalette = step ? getAlteredPalette(palette, step) : palette.slice(0)\r\n }\r\n return {\r\n getColor: function(index) {\r\n var color = currentPalette[index % palette.length];\r\n if (index % palette.length === palette.length - 1) {\r\n _reset()\r\n }\r\n return color\r\n },\r\n generateColors: function(count) {\r\n var colors = [];\r\n count = count || parameters.count;\r\n for (var i = 0; i < count; i++) {\r\n colors.push(this.getColor(i))\r\n }\r\n return colors\r\n },\r\n reset: function() {\r\n paletteSteps.reset();\r\n _reset()\r\n }\r\n }\r\n}\r\n\r\nfunction getExtrapolateColorsStrategy(palette, parameters) {\r\n return {\r\n getColor: function(index, count) {\r\n var paletteCount = palette.length;\r\n var cycles = _floor((count - 1) / paletteCount + 1);\r\n var color = palette[index % paletteCount];\r\n if (cycles > 1) {\r\n return function(color, cycleIndex, cycleCount) {\r\n var hsl = new _Color(color).hsl;\r\n var l = hsl.l / 100;\r\n var diapason = cycleCount - 1 / cycleCount;\r\n var minL = l - .5 * diapason;\r\n var maxL = l + .5 * diapason;\r\n var cycleMiddle = (cycleCount - 1) / 2;\r\n var cycleDiff = cycleIndex - cycleMiddle;\r\n if (minL < Math.min(.5, .9 * l)) {\r\n minL = Math.min(.5, .9 * l)\r\n }\r\n if (maxL > Math.max(.8, l + .15 * (1 - l))) {\r\n maxL = Math.max(.8, l + .15 * (1 - l))\r\n }\r\n if (cycleDiff < 0) {\r\n l -= (minL - l) * cycleDiff / cycleMiddle\r\n } else {\r\n l += cycleDiff / cycleMiddle * (maxL - l)\r\n }\r\n hsl.l = 100 * l;\r\n return _Color.prototype.fromHSL(hsl).toHex()\r\n }(color, _floor(index / paletteCount), cycles)\r\n }\r\n return color\r\n },\r\n generateColors: function(count) {\r\n var colors = [];\r\n count = count || parameters.count;\r\n for (var i = 0; i < count; i++) {\r\n colors.push(this.getColor(i, count))\r\n }\r\n return colors\r\n },\r\n reset: function() {}\r\n }\r\n}\r\n\r\nfunction getColorMixer(palette, parameters) {\r\n var paletteCount = palette.length;\r\n var extendedPalette = [];\r\n\r\n function distributeColors(count, colorsCount, startIndex, distribution) {\r\n var groupSize = Math.floor(count / colorsCount);\r\n var extraItems = count - colorsCount * groupSize;\r\n var i = startIndex;\r\n var middleIndex;\r\n var size;\r\n while (i < startIndex + count) {\r\n size = groupSize;\r\n if (extraItems > 0) {\r\n size += 1;\r\n extraItems--\r\n }\r\n middleIndex = size > 2 ? Math.floor(size / 2) : 0;\r\n distribution.push(i + middleIndex);\r\n i += size\r\n }\r\n return distribution.sort((function(a, b) {\r\n return a - b\r\n }))\r\n }\r\n\r\n function getColorAndDistance(arr, startIndex, count) {\r\n startIndex = (count + startIndex) % count;\r\n var distance = 0;\r\n for (var i = startIndex; i < 2 * count; i += 1) {\r\n var index = (count + i) % count;\r\n if (arr[index]) {\r\n return [arr[index], distance]\r\n }\r\n distance++\r\n }\r\n }\r\n\r\n function extendPalette(count) {\r\n if (count <= paletteCount) {\r\n return palette\r\n }\r\n var result = [];\r\n var colorInGroups = paletteCount - 2;\r\n var currentColorIndex = 0;\r\n var cleanColorIndices = [];\r\n if (parameters.keepLastColorInEnd) {\r\n cleanColorIndices = distributeColors(count - 2, colorInGroups, 1, [0, count - 1])\r\n } else {\r\n cleanColorIndices = distributeColors(count - 1, paletteCount - 1, 1, [0])\r\n }\r\n for (var i = 0; i < count; i++) {\r\n if (cleanColorIndices.indexOf(i) > -1) {\r\n result[i] = palette[currentColorIndex++]\r\n }\r\n }\r\n result = function(paletteWithEmptyColors, paletteLength) {\r\n for (var i = 0; i < paletteLength; i++) {\r\n var color = paletteWithEmptyColors[i];\r\n if (!color) {\r\n var color1 = paletteWithEmptyColors[i - 1];\r\n if (!color1) {\r\n continue\r\n } else {\r\n var c2 = getColorAndDistance(paletteWithEmptyColors, i, paletteLength);\r\n var color2 = new _Color(c2[0]);\r\n color1 = new _Color(color1);\r\n for (var j = 0; j < c2[1]; j++, i++) {\r\n paletteWithEmptyColors[i] = color1.blend(color2, (j + 1) / (c2[1] + 1)).toHex()\r\n }\r\n }\r\n }\r\n }\r\n return paletteWithEmptyColors\r\n }(result, count);\r\n return result\r\n }\r\n return {\r\n getColor: function(index, count) {\r\n count = count || parameters.count || paletteCount;\r\n if (extendedPalette.length !== count) {\r\n extendedPalette = extendPalette(count)\r\n }\r\n return extendedPalette[index % count]\r\n },\r\n generateColors: function(count, repeat) {\r\n count = count || parameters.count || paletteCount;\r\n if (repeat && count > paletteCount) {\r\n var colors = extendPalette(paletteCount);\r\n for (var i = 0; i < count - paletteCount; i++) {\r\n colors.push(colors[i])\r\n }\r\n return colors\r\n } else {\r\n return paletteCount > 0 ? extendPalette(count).slice(0, count) : []\r\n }\r\n },\r\n reset: function() {}\r\n }\r\n}\r\nexport function createPalette(palette, parameters, themeDefaultPalette) {\r\n var paletteObj = {\r\n dispose() {\r\n this._extensionStrategy = null\r\n },\r\n getNextColor(count) {\r\n return this._extensionStrategy.getColor(this._currentColor++, count)\r\n },\r\n generateColors(count, parameters) {\r\n return this._extensionStrategy.generateColors(count, (parameters || {}).repeat)\r\n },\r\n reset() {\r\n this._currentColor = 0;\r\n this._extensionStrategy.reset();\r\n return this\r\n }\r\n };\r\n parameters = parameters || {};\r\n var extensionMode = (parameters.extensionMode || \"\").toLowerCase();\r\n var colors = getPalette(palette, {\r\n type: parameters.type || \"simpleSet\",\r\n themeDefault: themeDefaultPalette\r\n });\r\n if (\"alternate\" === extensionMode) {\r\n paletteObj._extensionStrategy = getAlternateColorsStrategy(colors, parameters)\r\n } else if (\"extrapolate\" === extensionMode) {\r\n paletteObj._extensionStrategy = getExtrapolateColorsStrategy(colors, parameters)\r\n } else {\r\n paletteObj._extensionStrategy = getColorMixer(colors, parameters)\r\n }\r\n paletteObj.reset();\r\n return paletteObj\r\n}\r\n\r\nfunction getAlteredPalette(originalPalette, step) {\r\n var palette = [];\r\n var i;\r\n var ii = originalPalette.length;\r\n for (i = 0; i < ii; ++i) {\r\n palette.push(getNewColor(originalPalette[i], step))\r\n }\r\n return palette\r\n}\r\n\r\nfunction getNewColor(currentColor, step) {\r\n var newColor = new _Color(currentColor).alter(step);\r\n var lightness = getLightness(newColor);\r\n if (lightness > 200 || lightness < 55) {\r\n newColor = new _Color(currentColor).alter(-step / 2)\r\n }\r\n return newColor.toHex()\r\n}\r\n\r\nfunction getLightness(color) {\r\n return .3 * color.r + .59 * color.g + .11 * color.b\r\n}\r\nexport function getDiscretePalette(source, size, themeDefaultPalette) {\r\n var palette = size > 0 ? createDiscreteColors(getPalette(source, {\r\n type: \"gradientSet\",\r\n themeDefault: themeDefaultPalette\r\n }), size) : [];\r\n return {\r\n getColor: function(index) {\r\n return palette[index] || null\r\n }\r\n }\r\n}\r\n\r\nfunction createDiscreteColors(source, count) {\r\n var colorCount = count - 1;\r\n var sourceCount = source.length - 1;\r\n var colors = [];\r\n var gradient = [];\r\n var i;\r\n\r\n function addColor(pos) {\r\n var k = sourceCount * pos;\r\n var kl = _floor(k);\r\n var kr = _ceil(k);\r\n gradient.push(colors[kl].blend(colors[kr], k - kl).toHex())\r\n }\r\n for (i = 0; i <= sourceCount; ++i) {\r\n colors.push(new _Color(source[i]))\r\n }\r\n if (colorCount > 0) {\r\n for (i = 0; i <= colorCount; ++i) {\r\n addColor(i / colorCount)\r\n }\r\n } else {\r\n addColor(.5)\r\n }\r\n return gradient\r\n}\r\nexport function getGradientPalette(source, themeDefaultPalette) {\r\n var palette = getPalette(source, {\r\n type: \"gradientSet\",\r\n themeDefault: themeDefaultPalette\r\n });\r\n var color1 = new _Color(palette[0]);\r\n var color2 = new _Color(palette[1]);\r\n return {\r\n getColor: function(ratio) {\r\n return 0 <= ratio && ratio <= 1 ? color1.blend(color2, ratio).toHex() : null\r\n }\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/viz/core/themes/generic.light.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nvar WHITE = \"#ffffff\";\r\nvar BLACK = \"#000000\";\r\nvar LIGHT_GREY = \"#d3d3d3\";\r\nvar GREY_GREEN = \"#303030\";\r\nvar SOME_GREY = \"#2b2b2b\";\r\nvar RED = \"#ff0000\";\r\nvar PRIMARY_TITLE_COLOR = \"#232323\";\r\nvar SECONDARY_TITLE_COLOR = \"#767676\";\r\nvar NONE = \"none\";\r\nvar SOLID = \"solid\";\r\nvar TOP = \"top\";\r\nvar RIGHT = \"right\";\r\nvar BOTTOM = \"bottom\";\r\nvar LEFT = \"left\";\r\nvar CENTER = \"center\";\r\nvar INSIDE = \"inside\";\r\nvar OUTSIDE = \"outside\";\r\nexport default [{\r\n theme: {\r\n name: \"generic.light\",\r\n isDefault: true,\r\n font: {\r\n color: SECONDARY_TITLE_COLOR,\r\n family: \"'Segoe UI', 'Helvetica Neue', 'Trebuchet MS', Verdana, sans-serif\",\r\n weight: 400,\r\n size: 12,\r\n cursor: \"default\"\r\n },\r\n redrawOnResize: true,\r\n backgroundColor: WHITE,\r\n primaryTitleColor: PRIMARY_TITLE_COLOR,\r\n secondaryTitleColor: SECONDARY_TITLE_COLOR,\r\n gridColor: LIGHT_GREY,\r\n axisColor: SECONDARY_TITLE_COLOR,\r\n title: {\r\n backgroundColor: WHITE,\r\n font: {\r\n size: 28,\r\n family: \"'Segoe UI Light', 'Helvetica Neue Light', 'Segoe UI', 'Helvetica Neue', 'Trebuchet MS', Verdana, sans-serif\",\r\n weight: 200\r\n },\r\n subtitle: {\r\n font: {\r\n size: 16\r\n },\r\n offset: 0,\r\n wordWrap: \"normal\",\r\n textOverflow: \"ellipsis\"\r\n },\r\n wordWrap: \"normal\",\r\n textOverflow: \"ellipsis\"\r\n },\r\n loadingIndicator: {\r\n text: \"Loading...\"\r\n },\r\n export: {\r\n backgroundColor: WHITE,\r\n margin: 10,\r\n font: {\r\n size: 14,\r\n color: PRIMARY_TITLE_COLOR,\r\n weight: 400\r\n },\r\n button: {\r\n margin: {\r\n top: 8,\r\n left: 10,\r\n right: 10,\r\n bottom: 8\r\n },\r\n default: {\r\n color: \"#333\",\r\n borderColor: \"#ddd\",\r\n backgroundColor: WHITE\r\n },\r\n hover: {\r\n color: \"#333\",\r\n borderColor: \"#bebebe\",\r\n backgroundColor: \"#e6e6e6\"\r\n },\r\n focus: {\r\n color: BLACK,\r\n borderColor: \"#9d9d9d\",\r\n backgroundColor: \"#e6e6e6\"\r\n },\r\n active: {\r\n color: \"#333\",\r\n borderColor: \"#9d9d9d\",\r\n backgroundColor: \"#d4d4d4\"\r\n }\r\n },\r\n shadowColor: LIGHT_GREY\r\n },\r\n tooltip: {\r\n enabled: false,\r\n border: {\r\n width: 1,\r\n color: LIGHT_GREY,\r\n dashStyle: SOLID,\r\n visible: true\r\n },\r\n font: {\r\n color: PRIMARY_TITLE_COLOR\r\n },\r\n color: WHITE,\r\n arrowLength: 10,\r\n paddingLeftRight: 18,\r\n paddingTopBottom: 15,\r\n textAlignment: \"center\",\r\n shared: false,\r\n location: CENTER,\r\n shadow: {\r\n opacity: .4,\r\n offsetX: 0,\r\n offsetY: 4,\r\n blur: 2,\r\n color: BLACK\r\n },\r\n interactive: false\r\n },\r\n legend: {\r\n hoverMode: \"includePoints\",\r\n verticalAlignment: TOP,\r\n horizontalAlignment: RIGHT,\r\n position: OUTSIDE,\r\n visible: true,\r\n margin: 10,\r\n markerSize: 12,\r\n border: {\r\n visible: false,\r\n width: 1,\r\n cornerRadius: 0,\r\n dashStyle: SOLID\r\n },\r\n paddingLeftRight: 20,\r\n paddingTopBottom: 15,\r\n columnCount: 0,\r\n rowCount: 0,\r\n columnItemSpacing: 20,\r\n rowItemSpacing: 8,\r\n title: {\r\n backgroundColor: WHITE,\r\n margin: {\r\n left: 0,\r\n bottom: 9,\r\n right: 0,\r\n top: 0\r\n },\r\n font: {\r\n size: 18,\r\n weight: 200\r\n },\r\n subtitle: {\r\n offset: 0,\r\n font: {\r\n size: 14\r\n },\r\n wordWrap: \"none\",\r\n textOverflow: \"ellipsis\"\r\n },\r\n wordWrap: \"none\",\r\n textOverflow: \"ellipsis\"\r\n }\r\n },\r\n \"chart:common\": {\r\n animation: {\r\n enabled: true,\r\n duration: 1e3,\r\n easing: \"easeOutCubic\",\r\n maxPointCountSupported: 300\r\n },\r\n commonSeriesSettings: {\r\n border: {\r\n visible: false,\r\n width: 2\r\n },\r\n showInLegend: true,\r\n visible: true,\r\n hoverMode: \"nearestPoint\",\r\n selectionMode: \"includePoints\",\r\n hoverStyle: {\r\n hatching: {\r\n direction: RIGHT,\r\n width: 2,\r\n step: 6,\r\n opacity: .75\r\n },\r\n border: {\r\n visible: false,\r\n width: 3\r\n }\r\n },\r\n selectionStyle: {\r\n hatching: {\r\n direction: RIGHT,\r\n width: 2,\r\n step: 6,\r\n opacity: .5\r\n },\r\n border: {\r\n visible: false,\r\n width: 3\r\n }\r\n },\r\n valueErrorBar: {\r\n displayMode: \"auto\",\r\n value: 1,\r\n color: BLACK,\r\n lineWidth: 2,\r\n edgeLength: 8\r\n },\r\n label: {\r\n visible: false,\r\n alignment: CENTER,\r\n rotationAngle: 0,\r\n horizontalOffset: 0,\r\n verticalOffset: 0,\r\n radialOffset: 0,\r\n showForZeroValues: true,\r\n customizeText: void 0,\r\n maxLabelCount: void 0,\r\n position: OUTSIDE,\r\n font: {\r\n color: WHITE\r\n },\r\n border: {\r\n visible: false,\r\n width: 1,\r\n color: LIGHT_GREY,\r\n dashStyle: SOLID\r\n },\r\n connector: {\r\n visible: false,\r\n width: 1\r\n }\r\n }\r\n },\r\n seriesSelectionMode: \"single\",\r\n pointSelectionMode: \"single\",\r\n equalRowHeight: true,\r\n dataPrepareSettings: {\r\n checkTypeForAllData: false,\r\n convertToAxisDataType: true,\r\n sortingMethod: true\r\n },\r\n title: {\r\n margin: 10\r\n },\r\n adaptiveLayout: {\r\n width: 80,\r\n height: 80,\r\n keepLabels: true\r\n },\r\n _rtl: {\r\n legend: {\r\n itemTextPosition: LEFT\r\n }\r\n },\r\n resolveLabelOverlapping: NONE\r\n },\r\n \"chart:common:axis\": {\r\n visible: true,\r\n valueMarginsEnabled: true,\r\n placeholderSize: null,\r\n logarithmBase: 10,\r\n discreteAxisDivisionMode: \"betweenLabels\",\r\n width: 1,\r\n label: {\r\n visible: true\r\n },\r\n grid: {\r\n visible: false,\r\n width: 1\r\n },\r\n minorGrid: {\r\n visible: false,\r\n width: 1,\r\n opacity: .3\r\n },\r\n tick: {\r\n visible: true,\r\n width: 1,\r\n length: 7,\r\n shift: 3\r\n },\r\n minorTick: {\r\n visible: false,\r\n width: 1,\r\n opacity: .3,\r\n length: 7,\r\n shift: 3\r\n },\r\n stripStyle: {\r\n paddingLeftRight: 10,\r\n paddingTopBottom: 5\r\n },\r\n constantLineStyle: {\r\n width: 1,\r\n color: BLACK,\r\n dashStyle: SOLID,\r\n label: {\r\n visible: true,\r\n position: INSIDE\r\n }\r\n },\r\n marker: {\r\n label: {}\r\n }\r\n },\r\n \"chart:common:annotation\": {\r\n font: {\r\n color: \"#333333\"\r\n },\r\n tooltipEnabled: true,\r\n border: {\r\n width: 1,\r\n color: \"#dddddd\",\r\n dashStyle: SOLID,\r\n visible: true\r\n },\r\n color: WHITE,\r\n opacity: .9,\r\n arrowLength: 14,\r\n arrowWidth: 14,\r\n paddingLeftRight: 10,\r\n paddingTopBottom: 10,\r\n shadow: {\r\n opacity: .15,\r\n offsetX: 0,\r\n offsetY: 1,\r\n blur: 4,\r\n color: BLACK\r\n },\r\n image: {\r\n width: 30,\r\n height: 30\r\n },\r\n wordWrap: \"normal\",\r\n textOverflow: \"ellipsis\",\r\n allowDragging: false\r\n },\r\n chart: {\r\n commonSeriesSettings: {\r\n type: \"line\",\r\n stack: \"default\",\r\n aggregation: {\r\n enabled: void 0\r\n },\r\n point: {\r\n visible: true,\r\n symbol: \"circle\",\r\n size: 12,\r\n border: {\r\n visible: false,\r\n width: 1\r\n },\r\n hoverMode: \"onlyPoint\",\r\n selectionMode: \"onlyPoint\",\r\n hoverStyle: {\r\n border: {\r\n visible: true,\r\n width: 4\r\n }\r\n },\r\n selectionStyle: {\r\n border: {\r\n visible: true,\r\n width: 4\r\n }\r\n }\r\n },\r\n scatter: {},\r\n line: {\r\n width: 2,\r\n dashStyle: SOLID,\r\n hoverStyle: {\r\n width: 3,\r\n hatching: {\r\n direction: NONE\r\n }\r\n },\r\n selectionStyle: {\r\n width: 3\r\n }\r\n },\r\n stackedline: {\r\n width: 2,\r\n dashStyle: SOLID,\r\n hoverStyle: {\r\n width: 3,\r\n hatching: {\r\n direction: NONE\r\n }\r\n },\r\n selectionStyle: {\r\n width: 3\r\n }\r\n },\r\n stackedspline: {\r\n width: 2,\r\n dashStyle: SOLID,\r\n hoverStyle: {\r\n width: 3,\r\n hatching: {\r\n direction: NONE\r\n }\r\n },\r\n selectionStyle: {\r\n width: 3\r\n }\r\n },\r\n fullstackedline: {\r\n width: 2,\r\n dashStyle: SOLID,\r\n hoverStyle: {\r\n width: 3,\r\n hatching: {\r\n direction: NONE\r\n }\r\n },\r\n selectionStyle: {\r\n width: 3\r\n }\r\n },\r\n fullstackedspline: {\r\n width: 2,\r\n dashStyle: SOLID,\r\n hoverStyle: {\r\n width: 3,\r\n hatching: {\r\n direction: NONE\r\n }\r\n },\r\n selectionStyle: {\r\n width: 3\r\n }\r\n },\r\n stepline: {\r\n width: 2,\r\n dashStyle: SOLID,\r\n hoverStyle: {\r\n width: 3,\r\n hatching: {\r\n direction: NONE\r\n }\r\n },\r\n selectionStyle: {\r\n width: 3\r\n }\r\n },\r\n area: {\r\n point: {\r\n visible: false\r\n },\r\n opacity: .5\r\n },\r\n stackedarea: {\r\n point: {\r\n visible: false\r\n },\r\n opacity: .5\r\n },\r\n fullstackedarea: {\r\n point: {\r\n visible: false\r\n },\r\n opacity: .5\r\n },\r\n fullstackedsplinearea: {\r\n point: {\r\n visible: false\r\n },\r\n opacity: .5\r\n },\r\n steparea: {\r\n border: {\r\n visible: true,\r\n width: 2\r\n },\r\n point: {\r\n visible: false\r\n },\r\n hoverStyle: {\r\n border: {\r\n visible: true,\r\n width: 3\r\n }\r\n },\r\n selectionStyle: {\r\n border: {\r\n visible: true,\r\n width: 3\r\n }\r\n },\r\n opacity: .5\r\n },\r\n spline: {\r\n width: 2,\r\n hoverStyle: {\r\n width: 3,\r\n hatching: {\r\n direction: NONE\r\n }\r\n },\r\n selectionStyle: {\r\n width: 3\r\n }\r\n },\r\n splinearea: {\r\n point: {\r\n visible: false\r\n },\r\n opacity: .5\r\n },\r\n stackedsplinearea: {\r\n point: {\r\n visible: false\r\n },\r\n opacity: .5\r\n },\r\n bar: {\r\n cornerRadius: 0,\r\n point: {\r\n hoverStyle: {\r\n border: {\r\n visible: false\r\n }\r\n },\r\n selectionStyle: {\r\n border: {\r\n visible: false\r\n }\r\n }\r\n }\r\n },\r\n stackedbar: {\r\n cornerRadius: 0,\r\n point: {\r\n hoverStyle: {\r\n border: {\r\n visible: false\r\n }\r\n },\r\n selectionStyle: {\r\n border: {\r\n visible: false\r\n }\r\n }\r\n },\r\n label: {\r\n position: INSIDE\r\n }\r\n },\r\n fullstackedbar: {\r\n cornerRadius: 0,\r\n point: {\r\n hoverStyle: {\r\n border: {\r\n visible: false\r\n }\r\n },\r\n selectionStyle: {\r\n border: {\r\n visible: false\r\n }\r\n }\r\n },\r\n label: {\r\n position: INSIDE\r\n }\r\n },\r\n rangebar: {\r\n cornerRadius: 0,\r\n point: {\r\n hoverStyle: {\r\n border: {\r\n visible: false\r\n }\r\n },\r\n selectionStyle: {\r\n border: {\r\n visible: false\r\n }\r\n }\r\n }\r\n },\r\n rangearea: {\r\n point: {\r\n visible: false\r\n },\r\n opacity: .5\r\n },\r\n rangesplinearea: {\r\n point: {\r\n visible: false\r\n },\r\n opacity: .5\r\n },\r\n bubble: {\r\n opacity: .5,\r\n point: {\r\n hoverStyle: {\r\n border: {\r\n visible: false\r\n }\r\n },\r\n selectionStyle: {\r\n border: {\r\n visible: false\r\n }\r\n }\r\n }\r\n },\r\n candlestick: {\r\n width: 1,\r\n reduction: {\r\n color: RED\r\n },\r\n hoverStyle: {\r\n width: 3,\r\n hatching: {\r\n direction: NONE\r\n }\r\n },\r\n selectionStyle: {\r\n width: 3\r\n },\r\n point: {\r\n border: {\r\n visible: true\r\n }\r\n }\r\n },\r\n stock: {\r\n width: 1,\r\n reduction: {\r\n color: RED\r\n },\r\n hoverStyle: {\r\n width: 3,\r\n hatching: {\r\n direction: NONE\r\n }\r\n },\r\n selectionStyle: {\r\n width: 3\r\n },\r\n point: {\r\n border: {\r\n visible: true\r\n }\r\n }\r\n }\r\n },\r\n crosshair: {\r\n enabled: false,\r\n color: \"#f05b41\",\r\n width: 1,\r\n dashStyle: SOLID,\r\n label: {\r\n visible: false,\r\n font: {\r\n color: WHITE,\r\n size: 12\r\n }\r\n },\r\n verticalLine: {\r\n visible: true\r\n },\r\n horizontalLine: {\r\n visible: true\r\n }\r\n },\r\n commonAxisSettings: {\r\n multipleAxesSpacing: 5,\r\n forceUserTickInterval: false,\r\n breakStyle: {\r\n width: 5,\r\n color: \"#ababab\",\r\n line: \"waved\"\r\n },\r\n label: {\r\n displayMode: \"standard\",\r\n overlappingBehavior: \"hide\",\r\n indentFromAxis: 10,\r\n wordWrap: \"normal\",\r\n textOverflow: \"none\"\r\n },\r\n title: {\r\n font: {\r\n size: 16\r\n },\r\n margin: 6,\r\n alignment: CENTER\r\n },\r\n constantLineStyle: {\r\n paddingLeftRight: 10,\r\n paddingTopBottom: 10\r\n }\r\n },\r\n horizontalAxis: {\r\n position: BOTTOM,\r\n axisDivisionFactor: 70,\r\n label: {\r\n rotationAngle: 90,\r\n staggeringSpacing: 5,\r\n alignment: CENTER\r\n },\r\n stripStyle: {\r\n label: {\r\n horizontalAlignment: CENTER,\r\n verticalAlignment: TOP\r\n }\r\n },\r\n constantLineStyle: {\r\n label: {\r\n horizontalAlignment: RIGHT,\r\n verticalAlignment: TOP\r\n }\r\n },\r\n constantLines: []\r\n },\r\n verticalAxis: {\r\n position: LEFT,\r\n axisDivisionFactor: 40,\r\n label: {\r\n alignment: RIGHT\r\n },\r\n stripStyle: {\r\n label: {\r\n horizontalAlignment: LEFT,\r\n verticalAlignment: CENTER\r\n }\r\n },\r\n constantLineStyle: {\r\n label: {\r\n horizontalAlignment: LEFT,\r\n verticalAlignment: TOP\r\n }\r\n },\r\n constantLines: []\r\n },\r\n argumentAxis: {\r\n endOnTick: false,\r\n workWeek: [1, 2, 3, 4, 5]\r\n },\r\n valueAxis: {\r\n grid: {\r\n visible: true\r\n },\r\n autoBreaksEnabled: false,\r\n maxAutoBreakCount: 4\r\n },\r\n commonPaneSettings: {\r\n backgroundColor: NONE,\r\n border: {\r\n color: LIGHT_GREY,\r\n width: 1,\r\n visible: false,\r\n top: true,\r\n bottom: true,\r\n left: true,\r\n right: true,\r\n dashStyle: SOLID\r\n }\r\n },\r\n scrollBar: {\r\n visible: false,\r\n offset: 5,\r\n color: \"gray\",\r\n width: 10\r\n },\r\n adjustOnZoom: true,\r\n autoHidePointMarkers: true,\r\n rotated: false,\r\n synchronizeMultiAxes: true,\r\n stickyHovering: true,\r\n barGroupPadding: .3,\r\n minBubbleSize: 12,\r\n maxBubbleSize: .2,\r\n zoomAndPan: {\r\n dragBoxStyle: {\r\n color: \"#2a2a2a\",\r\n opacity: .2\r\n },\r\n panKey: \"shift\",\r\n allowMouseWheel: true,\r\n allowTouchGestures: true\r\n }\r\n },\r\n pie: {\r\n innerRadius: .5,\r\n minDiameter: .5,\r\n type: \"pie\",\r\n dataPrepareSettings: {\r\n _skipArgumentSorting: true\r\n },\r\n commonSeriesSettings: {\r\n pie: {\r\n border: {\r\n visible: false,\r\n width: 2,\r\n color: WHITE\r\n },\r\n hoverStyle: {\r\n hatching: {\r\n direction: RIGHT,\r\n width: 4,\r\n step: 10,\r\n opacity: .75\r\n },\r\n border: {\r\n visible: false,\r\n width: 2\r\n }\r\n },\r\n selectionStyle: {\r\n hatching: {\r\n direction: RIGHT,\r\n width: 4,\r\n step: 10,\r\n opacity: .5\r\n },\r\n border: {\r\n visible: false,\r\n width: 2\r\n }\r\n }\r\n },\r\n doughnut: {\r\n border: {\r\n visible: false,\r\n width: 2,\r\n color: WHITE\r\n },\r\n hoverStyle: {\r\n hatching: {\r\n direction: RIGHT,\r\n width: 4,\r\n step: 10,\r\n opacity: .75\r\n },\r\n border: {\r\n visible: false,\r\n width: 2\r\n }\r\n },\r\n selectionStyle: {\r\n hatching: {\r\n direction: RIGHT,\r\n width: 4,\r\n step: 10,\r\n opacity: .5\r\n },\r\n border: {\r\n visible: false,\r\n width: 2\r\n }\r\n }\r\n },\r\n donut: {\r\n border: {\r\n visible: false,\r\n width: 2,\r\n color: WHITE\r\n },\r\n hoverStyle: {\r\n hatching: {\r\n direction: RIGHT,\r\n width: 4,\r\n step: 10,\r\n opacity: .75\r\n },\r\n border: {\r\n visible: false,\r\n width: 2\r\n }\r\n },\r\n selectionStyle: {\r\n hatching: {\r\n direction: RIGHT,\r\n width: 4,\r\n step: 10,\r\n opacity: .5\r\n },\r\n border: {\r\n visible: false,\r\n width: 2\r\n }\r\n }\r\n },\r\n label: {\r\n textOverflow: \"ellipsis\",\r\n wordWrap: \"normal\"\r\n }\r\n },\r\n legend: {\r\n hoverMode: \"allArgumentPoints\",\r\n backgroundColor: NONE\r\n },\r\n adaptiveLayout: {\r\n keepLabels: false\r\n }\r\n },\r\n gauge: {\r\n scale: {\r\n tick: {\r\n visible: true,\r\n length: 5,\r\n width: 2,\r\n opacity: 1\r\n },\r\n minorTick: {\r\n visible: false,\r\n length: 3,\r\n width: 1,\r\n opacity: 1\r\n },\r\n label: {\r\n visible: true,\r\n alignment: CENTER,\r\n hideFirstOrLast: \"last\",\r\n overlappingBehavior: \"hide\"\r\n },\r\n position: TOP,\r\n endOnTick: false\r\n },\r\n rangeContainer: {\r\n offset: 0,\r\n width: 5,\r\n backgroundColor: \"#808080\"\r\n },\r\n valueIndicators: {\r\n _default: {\r\n color: \"#c2c2c2\"\r\n },\r\n rangebar: {\r\n space: 2,\r\n size: 10,\r\n color: \"#cbc5cf\",\r\n backgroundColor: NONE,\r\n text: {\r\n indent: 0,\r\n font: {\r\n size: 14,\r\n color: null\r\n }\r\n }\r\n },\r\n twocolorneedle: {\r\n secondColor: \"#e18e92\"\r\n },\r\n trianglemarker: {\r\n space: 2,\r\n length: 14,\r\n width: 13,\r\n color: \"#8798a5\"\r\n },\r\n textcloud: {\r\n arrowLength: 5,\r\n horizontalOffset: 6,\r\n verticalOffset: 3,\r\n color: \"#679ec5\",\r\n text: {\r\n font: {\r\n color: WHITE,\r\n size: 18\r\n }\r\n }\r\n }\r\n },\r\n indicator: {\r\n hasPositiveMeaning: true,\r\n layout: {\r\n horizontalAlignment: CENTER,\r\n verticalAlignment: BOTTOM\r\n },\r\n text: {\r\n font: {\r\n size: 18\r\n }\r\n }\r\n },\r\n _circular: {\r\n scale: {\r\n scaleDivisionFactor: 17,\r\n orientation: OUTSIDE,\r\n label: {\r\n indentFromTick: 10\r\n }\r\n },\r\n rangeContainer: {\r\n orientation: OUTSIDE\r\n },\r\n valueIndicatorType: \"rectangleneedle\",\r\n subvalueIndicatorType: \"trianglemarker\",\r\n valueIndicators: {\r\n _type: \"rectangleneedle\",\r\n _default: {\r\n offset: 20,\r\n indentFromCenter: 0,\r\n width: 2,\r\n spindleSize: 14,\r\n spindleGapSize: 10,\r\n beginAdaptingAtRadius: 50\r\n },\r\n triangleneedle: {\r\n width: 4\r\n },\r\n twocolorneedle: {\r\n space: 2,\r\n secondFraction: .4\r\n },\r\n rangebar: {\r\n offset: 30\r\n },\r\n trianglemarker: {\r\n offset: 6\r\n },\r\n textcloud: {\r\n offset: -6\r\n }\r\n }\r\n },\r\n _linear: {\r\n scale: {\r\n scaleDivisionFactor: 25,\r\n horizontalOrientation: RIGHT,\r\n verticalOrientation: BOTTOM,\r\n label: {\r\n indentFromTick: -10\r\n }\r\n },\r\n rangeContainer: {\r\n horizontalOrientation: RIGHT,\r\n verticalOrientation: BOTTOM\r\n },\r\n valueIndicatorType: \"rangebar\",\r\n subvalueIndicatorType: \"trianglemarker\",\r\n valueIndicators: {\r\n _type: \"rectangle\",\r\n _default: {\r\n offset: 2.5,\r\n length: 15,\r\n width: 15\r\n },\r\n rectangle: {\r\n width: 10\r\n },\r\n rangebar: {\r\n offset: 10,\r\n horizontalOrientation: RIGHT,\r\n verticalOrientation: BOTTOM\r\n },\r\n trianglemarker: {\r\n offset: 10,\r\n horizontalOrientation: LEFT,\r\n verticalOrientation: TOP\r\n },\r\n textcloud: {\r\n offset: -1,\r\n horizontalOrientation: LEFT,\r\n verticalOrientation: TOP\r\n }\r\n }\r\n }\r\n },\r\n barGauge: {\r\n backgroundColor: \"#e0e0e0\",\r\n relativeInnerRadius: .3,\r\n barSpacing: 4,\r\n resolveLabelOverlapping: \"hide\",\r\n label: {\r\n indent: 20,\r\n connectorWidth: 2,\r\n font: {\r\n size: 16\r\n }\r\n },\r\n legend: {\r\n visible: false\r\n },\r\n indicator: {\r\n hasPositiveMeaning: true,\r\n layout: {\r\n horizontalAlignment: CENTER,\r\n verticalAlignment: BOTTOM\r\n },\r\n text: {\r\n font: {\r\n size: 18\r\n }\r\n }\r\n }\r\n },\r\n rangeSelector: {\r\n scale: {\r\n valueMarginsEnabled: true,\r\n width: 1,\r\n color: BLACK,\r\n opacity: .1,\r\n showCustomBoundaryTicks: true,\r\n label: {\r\n overlappingBehavior: \"hide\",\r\n alignment: CENTER,\r\n visible: true,\r\n topIndent: 7,\r\n font: {\r\n size: 11\r\n }\r\n },\r\n tick: {\r\n width: 1,\r\n color: BLACK,\r\n opacity: .17,\r\n visible: true,\r\n length: 12\r\n },\r\n minorTick: {\r\n width: 1,\r\n color: BLACK,\r\n opacity: .05,\r\n visible: true,\r\n length: 12\r\n },\r\n marker: {\r\n width: 1,\r\n color: \"#000000\",\r\n opacity: .1,\r\n visible: true,\r\n separatorHeight: 33,\r\n topIndent: 10,\r\n textLeftIndent: 7,\r\n textTopIndent: 11,\r\n label: {}\r\n },\r\n logarithmBase: 10,\r\n workWeek: [1, 2, 3, 4, 5],\r\n breakStyle: {\r\n width: 5,\r\n color: \"#ababab\",\r\n line: \"waved\"\r\n },\r\n endOnTick: false\r\n },\r\n selectedRangeColor: \"#606060\",\r\n sliderMarker: {\r\n visible: true,\r\n paddingTopBottom: 2,\r\n paddingLeftRight: 4,\r\n color: \"#606060\",\r\n invalidRangeColor: RED,\r\n font: {\r\n color: WHITE,\r\n size: 11\r\n }\r\n },\r\n sliderHandle: {\r\n width: 1,\r\n color: BLACK,\r\n opacity: .2\r\n },\r\n shutter: {\r\n opacity: .75\r\n },\r\n background: {\r\n color: \"#c0bae1\",\r\n visible: true,\r\n image: {\r\n location: \"full\"\r\n }\r\n },\r\n behavior: {\r\n snapToTicks: true,\r\n animationEnabled: true,\r\n moveSelectedRangeByClick: true,\r\n manualRangeSelectionEnabled: true,\r\n allowSlidersSwap: true,\r\n callValueChanged: \"onMovingComplete\"\r\n },\r\n redrawOnResize: true,\r\n chart: {\r\n barGroupPadding: .3,\r\n minBubbleSize: 12,\r\n maxBubbleSize: .2,\r\n topIndent: .1,\r\n bottomIndent: 0,\r\n valueAxis: {\r\n inverted: false,\r\n logarithmBase: 10\r\n },\r\n commonSeriesSettings: {\r\n type: \"area\",\r\n aggregation: {\r\n enabled: void 0\r\n },\r\n point: {\r\n visible: false\r\n },\r\n scatter: {\r\n point: {\r\n visible: true\r\n }\r\n }\r\n }\r\n }\r\n },\r\n map: {\r\n title: {\r\n margin: 10\r\n },\r\n background: {\r\n borderWidth: 1,\r\n borderColor: \"#cacaca\"\r\n },\r\n layer: {\r\n label: {\r\n enabled: false,\r\n stroke: WHITE,\r\n \"stroke-width\": 1,\r\n \"stroke-opacity\": .7,\r\n font: {\r\n color: SOME_GREY,\r\n size: 12\r\n }\r\n }\r\n },\r\n \"layer:area\": {\r\n borderWidth: 1,\r\n borderColor: WHITE,\r\n color: \"#d2d2d2\",\r\n hoveredBorderColor: GREY_GREEN,\r\n selectedBorderWidth: 2,\r\n selectedBorderColor: GREY_GREEN,\r\n label: {\r\n \"stroke-width\": 2,\r\n font: {\r\n size: 16\r\n }\r\n }\r\n },\r\n \"layer:line\": {\r\n borderWidth: 2,\r\n color: \"#ba8365\",\r\n hoveredColor: \"#a94813\",\r\n selectedBorderWidth: 3,\r\n selectedColor: \"#e55100\",\r\n label: {\r\n \"stroke-width\": 2,\r\n font: {\r\n size: 16\r\n }\r\n }\r\n },\r\n \"layer:marker\": {\r\n label: {\r\n enabled: true,\r\n \"stroke-width\": 1,\r\n font: {\r\n size: 12\r\n }\r\n }\r\n },\r\n \"layer:marker:dot\": {\r\n borderWidth: 2,\r\n borderColor: WHITE,\r\n size: 8,\r\n selectedStep: 2,\r\n backStep: 18,\r\n backColor: WHITE,\r\n backOpacity: .32,\r\n shadow: true\r\n },\r\n \"layer:marker:bubble\": {\r\n minSize: 20,\r\n maxSize: 50,\r\n hoveredBorderWidth: 1,\r\n hoveredBorderColor: GREY_GREEN,\r\n selectedBorderWidth: 2,\r\n selectedBorderColor: GREY_GREEN\r\n },\r\n \"layer:marker:pie\": {\r\n size: 50,\r\n hoveredBorderWidth: 1,\r\n hoveredBorderColor: GREY_GREEN,\r\n selectedBorderWidth: 2,\r\n selectedBorderColor: GREY_GREEN\r\n },\r\n \"layer:marker:image\": {\r\n size: 20\r\n },\r\n legend: {\r\n verticalAlignment: BOTTOM,\r\n horizontalAlignment: RIGHT,\r\n position: INSIDE,\r\n backgroundOpacity: .65,\r\n border: {\r\n visible: true\r\n },\r\n paddingLeftRight: 16,\r\n paddingTopBottom: 12\r\n },\r\n controlBar: {\r\n borderColor: \"#5d5d5d\",\r\n borderWidth: 3,\r\n color: WHITE,\r\n margin: 20,\r\n opacity: .3\r\n },\r\n _rtl: {\r\n legend: {\r\n itemTextPosition: LEFT\r\n }\r\n }\r\n },\r\n treeMap: {\r\n tile: {\r\n border: {\r\n width: 1,\r\n opacity: .2,\r\n color: \"#000000\"\r\n },\r\n color: \"#5f8b95\",\r\n hoverStyle: {\r\n hatching: {\r\n opacity: .75,\r\n step: 6,\r\n width: 2,\r\n direction: \"right\"\r\n },\r\n border: {}\r\n },\r\n selectionStyle: {\r\n hatching: {\r\n opacity: .5,\r\n step: 6,\r\n width: 2,\r\n direction: \"right\"\r\n },\r\n border: {\r\n opacity: 1\r\n }\r\n },\r\n label: {\r\n visible: true,\r\n paddingLeftRight: 5,\r\n paddingTopBottom: 4,\r\n font: {\r\n color: \"#ffffff\",\r\n weight: 600\r\n },\r\n shadow: {\r\n opacity: .6,\r\n offsetX: 0,\r\n offsetY: 1,\r\n blur: 2,\r\n color: \"#000000\"\r\n },\r\n wordWrap: \"normal\",\r\n textOverflow: \"ellipsis\"\r\n }\r\n },\r\n group: {\r\n padding: 4,\r\n border: {\r\n width: 1\r\n },\r\n color: \"#eeeeee\",\r\n hoverStyle: {\r\n hatching: {\r\n opacity: 0,\r\n step: 6,\r\n width: 2,\r\n direction: \"right\"\r\n },\r\n border: {}\r\n },\r\n selectionStyle: {\r\n hatching: {\r\n opacity: 0,\r\n step: 6,\r\n width: 2,\r\n direction: \"right\"\r\n },\r\n border: {}\r\n },\r\n label: {\r\n visible: true,\r\n paddingLeftRight: 5,\r\n paddingTopBottom: 4,\r\n font: {\r\n color: SECONDARY_TITLE_COLOR,\r\n weight: 600\r\n },\r\n textOverflow: \"ellipsis\"\r\n }\r\n },\r\n title: {\r\n subtitle: {}\r\n },\r\n tooltip: {},\r\n loadingIndicator: {}\r\n },\r\n sparkline: {\r\n lineColor: \"#666666\",\r\n lineWidth: 2,\r\n areaOpacity: .2,\r\n minColor: \"#e8c267\",\r\n maxColor: \"#e55253\",\r\n barPositiveColor: \"#a9a9a9\",\r\n barNegativeColor: \"#d7d7d7\",\r\n winColor: \"#a9a9a9\",\r\n lossColor: \"#d7d7d7\",\r\n firstLastColor: \"#666666\",\r\n pointSymbol: \"circle\",\r\n pointColor: WHITE,\r\n pointSize: 4,\r\n type: \"line\",\r\n argumentField: \"arg\",\r\n valueField: \"val\",\r\n winlossThreshold: 0,\r\n showFirstLast: true,\r\n showMinMax: false,\r\n tooltip: {\r\n enabled: true\r\n }\r\n },\r\n bullet: {\r\n color: \"#e8c267\",\r\n targetColor: \"#666666\",\r\n targetWidth: 4,\r\n showTarget: true,\r\n showZeroLevel: true,\r\n tooltip: {\r\n enabled: true\r\n }\r\n },\r\n polar: {\r\n commonSeriesSettings: {\r\n type: \"scatter\",\r\n closed: true,\r\n point: {\r\n visible: true,\r\n symbol: \"circle\",\r\n size: 12,\r\n border: {\r\n visible: false,\r\n width: 1\r\n },\r\n hoverMode: \"onlyPoint\",\r\n selectionMode: \"onlyPoint\",\r\n hoverStyle: {\r\n border: {\r\n visible: true,\r\n width: 4\r\n },\r\n size: 12\r\n },\r\n selectionStyle: {\r\n border: {\r\n visible: true,\r\n width: 4\r\n },\r\n size: 12\r\n }\r\n },\r\n scatter: {},\r\n line: {\r\n width: 2,\r\n dashStyle: SOLID,\r\n hoverStyle: {\r\n width: 3,\r\n hatching: {\r\n direction: NONE\r\n }\r\n },\r\n selectionStyle: {\r\n width: 3\r\n }\r\n },\r\n area: {\r\n point: {\r\n visible: false\r\n },\r\n opacity: .5\r\n },\r\n stackedline: {\r\n width: 2\r\n },\r\n bar: {\r\n opacity: .8\r\n },\r\n stackedbar: {\r\n opacity: .8\r\n }\r\n },\r\n adaptiveLayout: {\r\n width: 80,\r\n height: 80,\r\n keepLabels: true\r\n },\r\n barGroupPadding: .3,\r\n commonAxisSettings: {\r\n visible: true,\r\n forceUserTickInterval: false,\r\n label: {\r\n overlappingBehavior: \"hide\",\r\n indentFromAxis: 5\r\n },\r\n grid: {\r\n visible: true\r\n },\r\n minorGrid: {\r\n visible: true\r\n },\r\n tick: {\r\n visible: true\r\n },\r\n title: {\r\n font: {\r\n size: 16\r\n },\r\n margin: 10\r\n }\r\n },\r\n argumentAxis: {\r\n startAngle: 0,\r\n firstPointOnStartAngle: false,\r\n period: void 0\r\n },\r\n valueAxis: {\r\n endOnTick: false,\r\n tick: {\r\n visible: false\r\n }\r\n },\r\n horizontalAxis: {\r\n position: TOP,\r\n axisDivisionFactor: 50,\r\n label: {\r\n alignment: CENTER\r\n }\r\n },\r\n verticalAxis: {\r\n position: TOP,\r\n axisDivisionFactor: 30,\r\n label: {\r\n alignment: RIGHT\r\n }\r\n }\r\n },\r\n funnel: {\r\n sortData: true,\r\n valueField: \"val\",\r\n colorField: \"color\",\r\n argumentField: \"arg\",\r\n hoverEnabled: true,\r\n selectionMode: \"single\",\r\n item: {\r\n border: {\r\n visible: false,\r\n width: 2,\r\n color: WHITE\r\n },\r\n hoverStyle: {\r\n hatching: {\r\n opacity: .75,\r\n step: 6,\r\n width: 2,\r\n direction: RIGHT\r\n },\r\n border: {}\r\n },\r\n selectionStyle: {\r\n hatching: {\r\n opacity: .5,\r\n step: 6,\r\n width: 2,\r\n direction: RIGHT\r\n },\r\n border: {}\r\n }\r\n },\r\n title: {\r\n margin: 10\r\n },\r\n adaptiveLayout: {\r\n width: 80,\r\n height: 80,\r\n keepLabels: true\r\n },\r\n legend: {\r\n visible: false\r\n },\r\n _rtl: {\r\n legend: {\r\n itemTextPosition: LEFT\r\n }\r\n },\r\n tooltip: {\r\n customizeTooltip: function(info) {\r\n return {\r\n text: info.item.argument + \" \" + info.valueText\r\n }\r\n }\r\n },\r\n inverted: false,\r\n algorithm: \"dynamicSlope\",\r\n neckWidth: 0,\r\n neckHeight: 0,\r\n resolveLabelOverlapping: \"shift\",\r\n label: {\r\n textOverflow: \"ellipsis\",\r\n wordWrap: \"normal\",\r\n visible: true,\r\n horizontalAlignment: RIGHT,\r\n horizontalOffset: 0,\r\n verticalOffset: 0,\r\n showForZeroValues: false,\r\n customizeText: function(info) {\r\n return info.item.argument + \" \" + info.valueText\r\n },\r\n position: \"columns\",\r\n font: {\r\n color: WHITE\r\n },\r\n border: {\r\n visible: false,\r\n width: 1,\r\n color: LIGHT_GREY,\r\n dashStyle: SOLID\r\n },\r\n connector: {\r\n visible: true,\r\n width: 1,\r\n opacity: .5\r\n }\r\n }\r\n },\r\n sankey: {\r\n sourceField: \"source\",\r\n targetField: \"target\",\r\n weightField: \"weight\",\r\n hoverEnabled: true,\r\n alignment: CENTER,\r\n adaptiveLayout: {\r\n width: 80,\r\n height: 80,\r\n keepLabels: true\r\n },\r\n label: {\r\n visible: true,\r\n horizontalOffset: 8,\r\n verticalOffset: 0,\r\n overlappingBehavior: \"ellipsis\",\r\n useNodeColors: false,\r\n font: {\r\n color: BLACK,\r\n weight: 500\r\n },\r\n border: {\r\n visible: false,\r\n width: 2,\r\n color: WHITE\r\n },\r\n customizeText: function(info) {\r\n return info.title\r\n },\r\n shadow: {\r\n opacity: .2,\r\n offsetX: 0,\r\n offsetY: 1,\r\n blur: 1,\r\n color: WHITE\r\n }\r\n },\r\n title: {\r\n margin: 10,\r\n font: {\r\n size: 28,\r\n weight: 200\r\n },\r\n subtitle: {\r\n font: {\r\n size: 16\r\n }\r\n }\r\n },\r\n tooltip: {\r\n enabled: true\r\n },\r\n node: {\r\n padding: 30,\r\n width: 8,\r\n opacity: 1,\r\n border: {\r\n color: WHITE,\r\n width: 1,\r\n visible: false\r\n },\r\n hoverStyle: {\r\n hatching: {\r\n opacity: .75,\r\n step: 6,\r\n width: 2,\r\n direction: RIGHT\r\n },\r\n border: {}\r\n }\r\n },\r\n link: {\r\n color: \"#888888\",\r\n colorMode: \"none\",\r\n opacity: .3,\r\n border: {\r\n color: WHITE,\r\n width: 1,\r\n visible: false\r\n },\r\n hoverStyle: {\r\n opacity: .5,\r\n hatching: {\r\n opacity: .75,\r\n step: 6,\r\n width: 2,\r\n direction: RIGHT\r\n },\r\n border: {}\r\n }\r\n }\r\n }\r\n },\r\n baseThemeName: void 0\r\n}, {\r\n theme: {\r\n name: \"generic.light.compact\"\r\n },\r\n baseThemeName: \"generic.light\"\r\n}];\r\n","/**\r\n * DevExtreme (esm/viz/core/themes/generic.carmine.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nvar ACCENT_COLOR = \"#f05b41\";\r\nvar BACKGROUND_COLOR = \"#fff\";\r\nvar TITLE_COLOR = \"#333\";\r\nvar SUBTITLE_COLOR = \"#8899a8\";\r\nvar TEXT_COLOR = \"#707070\";\r\nvar BORDER_COLOR = \"#dee1e3\";\r\nexport default [{\r\n theme: {\r\n name: \"generic.carmine\",\r\n defaultPalette: \"Carmine\",\r\n backgroundColor: BACKGROUND_COLOR,\r\n primaryTitleColor: TITLE_COLOR,\r\n secondaryTitleColor: SUBTITLE_COLOR,\r\n gridColor: BORDER_COLOR,\r\n axisColor: TEXT_COLOR,\r\n export: {\r\n backgroundColor: BACKGROUND_COLOR,\r\n font: {\r\n color: TITLE_COLOR\r\n },\r\n button: {\r\n default: {\r\n color: TITLE_COLOR,\r\n borderColor: \"#b1b7bd\",\r\n backgroundColor: BACKGROUND_COLOR\r\n },\r\n hover: {\r\n color: TITLE_COLOR,\r\n borderColor: \"#b1b7bd\",\r\n backgroundColor: \"#faf2f0\"\r\n },\r\n focus: {\r\n color: TITLE_COLOR,\r\n borderColor: \"#6d7781\",\r\n backgroundColor: \"#faf2f0\"\r\n },\r\n active: {\r\n color: TITLE_COLOR,\r\n borderColor: \"#6d7781\",\r\n backgroundColor: \"#f5e7e4\"\r\n }\r\n }\r\n },\r\n legend: {\r\n font: {\r\n color: TEXT_COLOR\r\n }\r\n },\r\n tooltip: {\r\n color: BACKGROUND_COLOR,\r\n border: {\r\n color: BORDER_COLOR\r\n },\r\n font: {\r\n color: TITLE_COLOR\r\n }\r\n },\r\n \"chart:common\": {\r\n commonSeriesSettings: {\r\n label: {\r\n border: {\r\n color: BORDER_COLOR\r\n }\r\n }\r\n }\r\n },\r\n \"chart:common:annotation\": {\r\n font: {\r\n color: TITLE_COLOR\r\n },\r\n border: {\r\n color: BORDER_COLOR\r\n },\r\n color: BACKGROUND_COLOR\r\n },\r\n chart: {\r\n commonPaneSettings: {\r\n border: {\r\n color: BORDER_COLOR\r\n }\r\n },\r\n commonAxisSettings: {\r\n breakStyle: {\r\n color: \"#c1c5c7\"\r\n }\r\n }\r\n },\r\n rangeSelector: {\r\n scale: {\r\n breakStyle: {\r\n color: \"#c1c5c7\"\r\n },\r\n tick: {\r\n opacity: .12\r\n }\r\n },\r\n selectedRangeColor: ACCENT_COLOR,\r\n sliderMarker: {\r\n color: ACCENT_COLOR\r\n },\r\n sliderHandle: {\r\n color: ACCENT_COLOR,\r\n opacity: .5\r\n }\r\n },\r\n sparkline: {\r\n pointColor: BACKGROUND_COLOR,\r\n minColor: \"#f0ad4e\",\r\n maxColor: \"#f74d61\"\r\n },\r\n treeMap: {\r\n group: {\r\n color: BORDER_COLOR,\r\n label: {\r\n font: {\r\n color: SUBTITLE_COLOR\r\n }\r\n }\r\n }\r\n },\r\n bullet: {\r\n color: ACCENT_COLOR\r\n },\r\n gauge: {\r\n valueIndicators: {\r\n rangebar: {\r\n color: ACCENT_COLOR\r\n },\r\n textcloud: {\r\n color: ACCENT_COLOR\r\n }\r\n }\r\n }\r\n },\r\n baseThemeName: \"generic.light\"\r\n}, {\r\n theme: {\r\n name: \"generic.carmine.compact\"\r\n },\r\n baseThemeName: \"generic.carmine\"\r\n}];\r\n","/**\r\n * DevExtreme (esm/viz/core/themes/generic.dark.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nvar WHITE = \"#ffffff\";\r\nvar BLACK = \"#000000\";\r\nvar SOME_GREY = \"#2b2b2b\";\r\nvar RANGE_COLOR = \"#b5b5b5\";\r\nvar GREY_GREEN = \"#303030\";\r\nvar AREA_LAYER_COLOR = \"#686868\";\r\nvar LINE_COLOR = \"#c7c7c7\";\r\nvar TARGET_COLOR = \"#8e8e8e\";\r\nvar POSITIVE_COLOR = \"#b8b8b8\";\r\nvar BORDER_COLOR = \"#494949\";\r\nexport default [{\r\n theme: {\r\n name: \"generic.dark\",\r\n font: {\r\n color: \"#808080\"\r\n },\r\n backgroundColor: \"#2a2a2a\",\r\n primaryTitleColor: \"#dedede\",\r\n secondaryTitleColor: \"#a3a3a3\",\r\n gridColor: \"#555555\",\r\n axisColor: \"#a3a3a3\",\r\n export: {\r\n backgroundColor: \"#2a2a2a\",\r\n font: {\r\n color: \"#dbdbdb\"\r\n },\r\n button: {\r\n default: {\r\n color: \"#dedede\",\r\n borderColor: \"#4d4d4d\",\r\n backgroundColor: \"#2e2e2e\"\r\n },\r\n hover: {\r\n color: \"#dedede\",\r\n borderColor: \"#6c6c6c\",\r\n backgroundColor: \"#444\"\r\n },\r\n focus: {\r\n color: \"#dedede\",\r\n borderColor: \"#8d8d8d\",\r\n backgroundColor: \"#444444\"\r\n },\r\n active: {\r\n color: \"#dedede\",\r\n borderColor: \"#8d8d8d\",\r\n backgroundColor: \"#555555\"\r\n }\r\n },\r\n shadowColor: \"#292929\"\r\n },\r\n tooltip: {\r\n color: SOME_GREY,\r\n border: {\r\n color: BORDER_COLOR\r\n },\r\n font: {\r\n color: \"#929292\"\r\n }\r\n },\r\n \"chart:common\": {\r\n commonSeriesSettings: {\r\n label: {\r\n border: {\r\n color: BORDER_COLOR\r\n }\r\n },\r\n valueErrorBar: {\r\n color: WHITE\r\n }\r\n }\r\n },\r\n \"chart:common:axis\": {\r\n constantLineStyle: {\r\n color: WHITE\r\n }\r\n },\r\n \"chart:common:annotation\": {\r\n font: {\r\n color: \"#929292\"\r\n },\r\n border: {\r\n color: BORDER_COLOR\r\n },\r\n color: SOME_GREY,\r\n shadow: {\r\n opacity: .008,\r\n offsetY: 4,\r\n blur: 8\r\n }\r\n },\r\n chart: {\r\n commonPaneSettings: {\r\n border: {\r\n color: BORDER_COLOR\r\n }\r\n },\r\n commonAxisSettings: {\r\n breakStyle: {\r\n color: \"#818181\"\r\n }\r\n },\r\n zoomAndPan: {\r\n dragBoxStyle: {\r\n color: WHITE\r\n }\r\n }\r\n },\r\n gauge: {\r\n rangeContainer: {\r\n backgroundColor: RANGE_COLOR\r\n },\r\n valueIndicators: {\r\n _default: {\r\n color: RANGE_COLOR\r\n },\r\n rangebar: {\r\n color: \"#84788b\"\r\n },\r\n twocolorneedle: {\r\n secondColor: \"#ba544d\"\r\n },\r\n trianglemarker: {\r\n color: \"#b7918f\"\r\n },\r\n textcloud: {\r\n color: \"#ba544d\"\r\n }\r\n }\r\n },\r\n barGauge: {\r\n backgroundColor: \"#3c3c3c\"\r\n },\r\n rangeSelector: {\r\n scale: {\r\n tick: {\r\n color: WHITE,\r\n opacity: .32\r\n },\r\n minorTick: {\r\n color: WHITE,\r\n opacity: .1\r\n },\r\n breakStyle: {\r\n color: \"#818181\"\r\n }\r\n },\r\n selectedRangeColor: RANGE_COLOR,\r\n sliderMarker: {\r\n color: RANGE_COLOR,\r\n font: {\r\n color: GREY_GREEN\r\n }\r\n },\r\n sliderHandle: {\r\n color: WHITE,\r\n opacity: .2\r\n },\r\n shutter: {\r\n color: SOME_GREY,\r\n opacity: .9\r\n }\r\n },\r\n map: {\r\n background: {\r\n borderColor: \"#3f3f3f\"\r\n },\r\n layer: {\r\n label: {\r\n stroke: BLACK,\r\n font: {\r\n color: WHITE\r\n }\r\n }\r\n },\r\n \"layer:area\": {\r\n borderColor: GREY_GREEN,\r\n color: AREA_LAYER_COLOR,\r\n hoveredBorderColor: WHITE,\r\n selectedBorderColor: WHITE\r\n },\r\n \"layer:line\": {\r\n color: \"#c77244\",\r\n hoveredColor: \"#ff5d04\",\r\n selectedColor: \"#ff784f\"\r\n },\r\n \"layer:marker:bubble\": {\r\n hoveredBorderColor: WHITE,\r\n selectedBorderColor: WHITE\r\n },\r\n \"layer:marker:pie\": {\r\n hoveredBorderColor: WHITE,\r\n selectedBorderColor: WHITE\r\n },\r\n legend: {\r\n border: {\r\n color: \"#3f3f3f\"\r\n },\r\n font: {\r\n color: WHITE\r\n }\r\n },\r\n controlBar: {\r\n borderColor: LINE_COLOR,\r\n color: GREY_GREEN\r\n }\r\n },\r\n treeMap: {\r\n group: {\r\n color: \"#4c4c4c\",\r\n label: {\r\n font: {\r\n color: \"#a3a3a3\"\r\n }\r\n }\r\n }\r\n },\r\n sparkline: {\r\n lineColor: LINE_COLOR,\r\n firstLastColor: LINE_COLOR,\r\n barPositiveColor: POSITIVE_COLOR,\r\n barNegativeColor: TARGET_COLOR,\r\n winColor: POSITIVE_COLOR,\r\n lossColor: TARGET_COLOR,\r\n pointColor: GREY_GREEN\r\n },\r\n bullet: {\r\n targetColor: TARGET_COLOR\r\n },\r\n funnel: {\r\n item: {\r\n border: {\r\n color: \"#2a2a2a\"\r\n }\r\n }\r\n },\r\n sankey: {\r\n label: {\r\n font: {\r\n color: WHITE\r\n },\r\n shadow: {\r\n opacity: 0\r\n }\r\n },\r\n node: {\r\n border: {\r\n color: \"#2a2a2a\"\r\n }\r\n },\r\n link: {\r\n color: \"#888888\",\r\n border: {\r\n color: \"#2a2a2a\"\r\n },\r\n hoverStyle: {\r\n color: \"#bbbbbb\"\r\n }\r\n }\r\n }\r\n },\r\n baseThemeName: \"generic.light\"\r\n}, {\r\n theme: {\r\n name: \"generic.dark.compact\"\r\n },\r\n baseThemeName: \"generic.dark\"\r\n}];\r\n","/**\r\n * DevExtreme (esm/viz/core/themes/generic.contrast.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nvar WHITE = \"#ffffff\";\r\nvar BLACK = \"#000000\";\r\nvar CONTRAST_ACTIVE = \"#cf00da\";\r\nvar MARKER_COLOR = \"#f8ca00\";\r\nvar AREA_LAYER_COLOR = \"#686868\";\r\nexport default [{\r\n theme: {\r\n name: \"generic.contrast\",\r\n defaultPalette: \"Bright\",\r\n font: {\r\n color: WHITE\r\n },\r\n backgroundColor: BLACK,\r\n primaryTitleColor: WHITE,\r\n secondaryTitleColor: WHITE,\r\n gridColor: WHITE,\r\n axisColor: WHITE,\r\n export: {\r\n backgroundColor: BLACK,\r\n font: {\r\n color: WHITE\r\n },\r\n button: {\r\n default: {\r\n color: WHITE,\r\n borderColor: WHITE,\r\n backgroundColor: BLACK\r\n },\r\n hover: {\r\n color: WHITE,\r\n borderColor: WHITE,\r\n backgroundColor: \"#cf00d7\"\r\n },\r\n focus: {\r\n color: WHITE,\r\n borderColor: \"#cf00d7\",\r\n backgroundColor: BLACK\r\n },\r\n active: {\r\n color: BLACK,\r\n borderColor: WHITE,\r\n backgroundColor: WHITE\r\n }\r\n },\r\n borderColor: WHITE,\r\n menuButtonColor: BLACK,\r\n activeBackgroundColor: WHITE,\r\n activeColor: BLACK,\r\n selectedBorderColor: CONTRAST_ACTIVE,\r\n selectedColor: CONTRAST_ACTIVE,\r\n shadowColor: \"none\"\r\n },\r\n tooltip: {\r\n border: {\r\n color: WHITE\r\n },\r\n font: {\r\n color: WHITE\r\n },\r\n color: BLACK\r\n },\r\n \"chart:common\": {\r\n commonSeriesSettings: {\r\n valueErrorBar: {\r\n color: WHITE\r\n },\r\n hoverStyle: {\r\n hatching: {\r\n opacity: .5\r\n }\r\n },\r\n selectionStyle: {\r\n hatching: {\r\n opacity: .35\r\n }\r\n },\r\n label: {\r\n font: {\r\n color: WHITE\r\n },\r\n border: {\r\n color: WHITE\r\n }\r\n }\r\n }\r\n },\r\n \"chart:common:axis\": {\r\n constantLineStyle: {\r\n color: WHITE\r\n }\r\n },\r\n \"chart:common:annotation\": {\r\n font: {\r\n color: WHITE\r\n },\r\n border: {\r\n color: WHITE\r\n },\r\n color: BLACK\r\n },\r\n chart: {\r\n commonSeriesSettings: {},\r\n crosshair: {\r\n color: \"#cf00d7\"\r\n },\r\n commonPaneSettings: {\r\n backgroundColor: BLACK,\r\n border: {\r\n color: WHITE\r\n }\r\n },\r\n scrollBar: {\r\n color: WHITE\r\n },\r\n commonAxisSettings: {\r\n breakStyle: {\r\n color: \"#cf00d7\"\r\n }\r\n },\r\n zoomAndPan: {\r\n dragBoxStyle: {\r\n color: WHITE,\r\n opacity: .7\r\n }\r\n }\r\n },\r\n pie: {\r\n commonSeriesSettings: {\r\n pie: {\r\n hoverStyle: {\r\n hatching: {\r\n opacity: .5\r\n }\r\n },\r\n selectionStyle: {\r\n hatching: {\r\n opacity: .35\r\n }\r\n }\r\n },\r\n doughnut: {\r\n hoverStyle: {\r\n hatching: {\r\n opacity: .5\r\n }\r\n },\r\n selectionStyle: {\r\n hatching: {\r\n opacity: .35\r\n }\r\n }\r\n },\r\n donut: {\r\n hoverStyle: {\r\n hatching: {\r\n opacity: .5\r\n }\r\n },\r\n selectionStyle: {\r\n hatching: {\r\n opacity: .35\r\n }\r\n }\r\n }\r\n }\r\n },\r\n gauge: {\r\n rangeContainer: {\r\n backgroundColor: WHITE\r\n },\r\n valueIndicators: {\r\n _default: {\r\n color: WHITE\r\n },\r\n rangebar: {\r\n color: WHITE,\r\n backgroundColor: BLACK\r\n },\r\n twocolorneedle: {\r\n secondColor: WHITE\r\n },\r\n trianglemarker: {\r\n color: WHITE\r\n },\r\n textcloud: {\r\n color: WHITE,\r\n text: {\r\n font: {\r\n color: BLACK\r\n }\r\n }\r\n }\r\n }\r\n },\r\n barGauge: {\r\n backgroundColor: \"#3c3c3c\"\r\n },\r\n rangeSelector: {\r\n scale: {\r\n tick: {\r\n color: WHITE,\r\n opacity: .4\r\n },\r\n minorTick: {\r\n color: WHITE,\r\n opacity: .12\r\n },\r\n breakStyle: {\r\n color: \"#cf00d7\"\r\n }\r\n },\r\n selectedRangeColor: CONTRAST_ACTIVE,\r\n sliderMarker: {\r\n color: CONTRAST_ACTIVE\r\n },\r\n sliderHandle: {\r\n color: CONTRAST_ACTIVE,\r\n opacity: 1\r\n },\r\n shutter: {\r\n opacity: .75\r\n },\r\n background: {\r\n color: BLACK\r\n }\r\n },\r\n map: {\r\n background: {\r\n borderColor: WHITE\r\n },\r\n layer: {\r\n label: {\r\n stroke: BLACK,\r\n font: {\r\n color: WHITE\r\n }\r\n }\r\n },\r\n \"layer:area\": {\r\n borderColor: BLACK,\r\n color: AREA_LAYER_COLOR,\r\n hoveredBorderColor: WHITE,\r\n selectedBorderColor: WHITE,\r\n label: {\r\n font: {\r\n opacity: 1\r\n }\r\n }\r\n },\r\n \"layer:line\": {\r\n color: \"#267cff\",\r\n hoveredColor: \"#f613ff\",\r\n selectedColor: WHITE\r\n },\r\n \"layer:marker:dot\": {\r\n borderColor: BLACK,\r\n color: MARKER_COLOR,\r\n backColor: BLACK,\r\n backOpacity: .32\r\n },\r\n \"layer:marker:bubble\": {\r\n color: MARKER_COLOR,\r\n hoveredBorderColor: WHITE,\r\n selectedBorderColor: WHITE\r\n },\r\n \"layer:marker:pie\": {\r\n hoveredBorderColor: WHITE,\r\n selectedBorderColor: WHITE\r\n },\r\n controlBar: {\r\n borderColor: WHITE,\r\n color: BLACK,\r\n opacity: .3\r\n }\r\n },\r\n treeMap: {\r\n tile: {\r\n color: \"#70c92f\"\r\n },\r\n group: {\r\n color: \"#797979\",\r\n label: {\r\n font: {\r\n color: WHITE\r\n }\r\n }\r\n }\r\n },\r\n sparkline: {\r\n pointColor: BLACK\r\n },\r\n bullet: {},\r\n polar: {\r\n commonSeriesSettings: {}\r\n },\r\n funnel: {\r\n label: {\r\n connector: {\r\n opacity: 1\r\n }\r\n }\r\n },\r\n sankey: {\r\n label: {\r\n font: {\r\n color: WHITE\r\n },\r\n shadow: {\r\n opacity: 0\r\n }\r\n },\r\n node: {\r\n border: {\r\n visible: true,\r\n width: 1,\r\n color: WHITE\r\n }\r\n },\r\n link: {\r\n opacity: .5,\r\n border: {\r\n visible: true,\r\n width: 1,\r\n color: WHITE\r\n },\r\n hoverStyle: {\r\n opacity: .9\r\n }\r\n }\r\n }\r\n },\r\n baseThemeName: \"generic.light\"\r\n}, {\r\n theme: {\r\n name: \"generic.contrast.compact\"\r\n },\r\n baseThemeName: \"generic.contrast\"\r\n}];\r\n","/**\r\n * DevExtreme (esm/viz/core/themes/generic.darkmoon.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nvar ACCENT_COLOR = \"#3debd3\";\r\nvar BACKGROUND_COLOR = \"#465672\";\r\nvar TITLE_COLOR = \"#fff\";\r\nvar SUBTITLE_COLOR = \"#919bac\";\r\nvar TEXT_COLOR = \"#c7ccd4\";\r\nvar BORDER_COLOR = \"#596980\";\r\nexport default [{\r\n theme: {\r\n name: \"generic.darkmoon\",\r\n defaultPalette: \"Dark Moon\",\r\n backgroundColor: BACKGROUND_COLOR,\r\n primaryTitleColor: TITLE_COLOR,\r\n secondaryTitleColor: SUBTITLE_COLOR,\r\n gridColor: BORDER_COLOR,\r\n axisColor: TEXT_COLOR,\r\n export: {\r\n backgroundColor: BACKGROUND_COLOR,\r\n font: {\r\n color: TITLE_COLOR\r\n },\r\n button: {\r\n default: {\r\n color: TITLE_COLOR,\r\n borderColor: \"#7a889e\",\r\n backgroundColor: BACKGROUND_COLOR\r\n },\r\n hover: {\r\n color: TITLE_COLOR,\r\n borderColor: \"#9da8b8\",\r\n backgroundColor: \"#596e92\"\r\n },\r\n focus: {\r\n color: TITLE_COLOR,\r\n borderColor: \"#c4cad4\",\r\n backgroundColor: \"#596e92\"\r\n },\r\n active: {\r\n color: TITLE_COLOR,\r\n borderColor: \"#c4cad4\",\r\n backgroundColor: \"#6b80a4\"\r\n }\r\n }\r\n },\r\n legend: {\r\n font: {\r\n color: TEXT_COLOR\r\n }\r\n },\r\n tooltip: {\r\n color: \"#62789e\",\r\n border: {\r\n color: BORDER_COLOR\r\n },\r\n font: {\r\n color: TITLE_COLOR\r\n }\r\n },\r\n \"chart:common\": {\r\n commonSeriesSettings: {\r\n label: {\r\n border: {\r\n color: BORDER_COLOR\r\n }\r\n }\r\n }\r\n },\r\n \"chart:common:annotation\": {\r\n font: {\r\n color: TITLE_COLOR\r\n },\r\n border: {\r\n color: BORDER_COLOR\r\n },\r\n color: \"#62789e\"\r\n },\r\n chart: {\r\n commonPaneSettings: {\r\n border: {\r\n color: BORDER_COLOR\r\n }\r\n },\r\n commonAxisSettings: {\r\n breakStyle: {\r\n color: \"#73869e\"\r\n }\r\n }\r\n },\r\n gauge: {\r\n valueIndicators: {\r\n rangebar: {\r\n color: ACCENT_COLOR\r\n },\r\n textcloud: {\r\n color: ACCENT_COLOR,\r\n text: {\r\n font: {\r\n color: BACKGROUND_COLOR\r\n }\r\n }\r\n }\r\n }\r\n },\r\n barGauge: {\r\n backgroundColor: \"#526280\"\r\n },\r\n funnel: {\r\n item: {\r\n border: {\r\n color: BACKGROUND_COLOR\r\n }\r\n }\r\n },\r\n sparkline: {\r\n pointColor: BACKGROUND_COLOR,\r\n minColor: \"#f0ad4e\",\r\n maxColor: \"#f9517e\"\r\n },\r\n treeMap: {\r\n group: {\r\n color: BORDER_COLOR,\r\n label: {\r\n font: {\r\n color: TITLE_COLOR\r\n }\r\n }\r\n }\r\n },\r\n map: {\r\n background: {\r\n borderColor: BORDER_COLOR\r\n },\r\n \"layer:area\": {\r\n color: \"#97a3b6\",\r\n borderColor: BACKGROUND_COLOR\r\n }\r\n },\r\n rangeSelector: {\r\n shutter: {\r\n color: BACKGROUND_COLOR\r\n },\r\n scale: {\r\n breakStyle: {\r\n color: \"#73869e\"\r\n },\r\n tick: {\r\n opacity: .2\r\n }\r\n },\r\n selectedRangeColor: ACCENT_COLOR,\r\n sliderMarker: {\r\n color: ACCENT_COLOR,\r\n font: {\r\n color: \"#000\"\r\n }\r\n },\r\n sliderHandle: {\r\n color: ACCENT_COLOR,\r\n opacity: .5\r\n }\r\n },\r\n bullet: {\r\n color: ACCENT_COLOR\r\n },\r\n sankey: {\r\n link: {\r\n border: {\r\n color: BACKGROUND_COLOR\r\n }\r\n },\r\n node: {\r\n border: {\r\n color: BACKGROUND_COLOR\r\n }\r\n }\r\n }\r\n },\r\n baseThemeName: \"generic.dark\"\r\n}, {\r\n theme: {\r\n name: \"generic.darkmoon.compact\"\r\n },\r\n baseThemeName: \"generic.darkmoon\"\r\n}];\r\n","/**\r\n * DevExtreme (esm/viz/core/themes/generic.darkviolet.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nvar ACCENT_COLOR = \"#9c63ff\";\r\nvar BACKGROUND_COLOR = \"#17171f\";\r\nvar TITLE_COLOR = \"#f5f6f7\";\r\nvar SUBTITLE_COLOR = \"#fff\";\r\nvar TEXT_COLOR = \"#b2b2b6\";\r\nvar BORDER_COLOR = \"#343840\";\r\nexport default [{\r\n theme: {\r\n name: \"generic.darkviolet\",\r\n defaultPalette: \"Dark Violet\",\r\n backgroundColor: BACKGROUND_COLOR,\r\n primaryTitleColor: TITLE_COLOR,\r\n secondaryTitleColor: SUBTITLE_COLOR,\r\n gridColor: BORDER_COLOR,\r\n axisColor: TEXT_COLOR,\r\n export: {\r\n backgroundColor: BACKGROUND_COLOR,\r\n font: {\r\n color: TITLE_COLOR\r\n },\r\n button: {\r\n default: {\r\n color: TITLE_COLOR,\r\n borderColor: \"#414152\",\r\n backgroundColor: BACKGROUND_COLOR\r\n },\r\n hover: {\r\n color: TITLE_COLOR,\r\n borderColor: \"#5c5c74\",\r\n backgroundColor: \"#2d2d3c\"\r\n },\r\n focus: {\r\n color: TITLE_COLOR,\r\n borderColor: \"#7c7c97\",\r\n backgroundColor: \"#2d2d3c\"\r\n },\r\n active: {\r\n color: TITLE_COLOR,\r\n borderColor: \"#7c7c97\",\r\n backgroundColor: \"#3c3c51\"\r\n }\r\n }\r\n },\r\n legend: {\r\n font: {\r\n color: TEXT_COLOR\r\n }\r\n },\r\n tooltip: {\r\n color: BACKGROUND_COLOR,\r\n border: {\r\n color: \"#414152\"\r\n },\r\n font: {\r\n color: TITLE_COLOR\r\n }\r\n },\r\n \"chart:common\": {\r\n commonSeriesSettings: {\r\n label: {\r\n border: {\r\n color: BORDER_COLOR\r\n }\r\n }\r\n }\r\n },\r\n \"chart:common:annotation\": {\r\n font: {\r\n color: TITLE_COLOR\r\n },\r\n border: {\r\n color: \"#414152\"\r\n },\r\n color: BACKGROUND_COLOR\r\n },\r\n chart: {\r\n commonPaneSettings: {\r\n border: {\r\n color: BORDER_COLOR\r\n }\r\n },\r\n commonAxisSettings: {\r\n breakStyle: {\r\n color: \"#575e6b\"\r\n }\r\n }\r\n },\r\n funnel: {\r\n item: {\r\n border: {\r\n color: BACKGROUND_COLOR\r\n }\r\n }\r\n },\r\n sparkline: {\r\n pointColor: BACKGROUND_COLOR,\r\n minColor: \"#f0ad4e\",\r\n maxColor: \"#d9534f\"\r\n },\r\n treeMap: {\r\n group: {\r\n color: BORDER_COLOR,\r\n label: {\r\n font: {\r\n color: SUBTITLE_COLOR\r\n }\r\n }\r\n }\r\n },\r\n rangeSelector: {\r\n shutter: {\r\n color: BACKGROUND_COLOR\r\n },\r\n scale: {\r\n breakStyle: {\r\n color: \"#575e6b\"\r\n },\r\n tick: {\r\n opacity: .2\r\n }\r\n },\r\n selectedRangeColor: ACCENT_COLOR,\r\n sliderMarker: {\r\n color: ACCENT_COLOR,\r\n font: {\r\n color: \"#fff\"\r\n }\r\n },\r\n sliderHandle: {\r\n color: ACCENT_COLOR,\r\n opacity: .5\r\n }\r\n },\r\n bullet: {\r\n color: ACCENT_COLOR\r\n },\r\n gauge: {\r\n valueIndicators: {\r\n rangebar: {\r\n color: ACCENT_COLOR\r\n },\r\n textcloud: {\r\n color: ACCENT_COLOR\r\n }\r\n }\r\n },\r\n sankey: {\r\n link: {\r\n border: {\r\n color: BACKGROUND_COLOR\r\n }\r\n },\r\n node: {\r\n border: {\r\n color: BACKGROUND_COLOR\r\n }\r\n }\r\n }\r\n },\r\n baseThemeName: \"generic.dark\"\r\n}, {\r\n theme: {\r\n name: \"generic.darkviolet.compact\"\r\n },\r\n baseThemeName: \"generic.darkviolet\"\r\n}];\r\n","/**\r\n * DevExtreme (esm/viz/core/themes/generic.greenmist.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nvar ACCENT_COLOR = \"#3cbab2\";\r\nvar BACKGROUND_COLOR = \"#f5f5f5\";\r\nvar TITLE_COLOR = \"#28484f\";\r\nvar SUBTITLE_COLOR = \"#7eb2be\";\r\nvar TEXT_COLOR = \"#657c80\";\r\nvar BORDER_COLOR = \"#dedede\";\r\nexport default [{\r\n theme: {\r\n name: \"generic.greenmist\",\r\n defaultPalette: \"Green Mist\",\r\n backgroundColor: BACKGROUND_COLOR,\r\n primaryTitleColor: TITLE_COLOR,\r\n secondaryTitleColor: SUBTITLE_COLOR,\r\n gridColor: BORDER_COLOR,\r\n axisColor: TEXT_COLOR,\r\n export: {\r\n backgroundColor: BACKGROUND_COLOR,\r\n font: {\r\n color: TITLE_COLOR\r\n },\r\n button: {\r\n default: {\r\n color: TITLE_COLOR,\r\n borderColor: \"#a2b4b8\",\r\n backgroundColor: BACKGROUND_COLOR\r\n },\r\n hover: {\r\n color: TITLE_COLOR,\r\n borderColor: \"#7f989e\",\r\n backgroundColor: \"rgba(222, 222, 222, 0.4)\"\r\n },\r\n focus: {\r\n color: TITLE_COLOR,\r\n borderColor: \"#5f777c\",\r\n backgroundColor: \"rgba(222, 222, 222, 0.4)\"\r\n },\r\n active: {\r\n color: TITLE_COLOR,\r\n borderColor: \"#5f777c\",\r\n backgroundColor: \"rgba(222, 222, 222, 0.8)\"\r\n }\r\n }\r\n },\r\n legend: {\r\n font: {\r\n color: TEXT_COLOR\r\n }\r\n },\r\n tooltip: {\r\n color: \"#fff\",\r\n border: {\r\n color: BORDER_COLOR\r\n },\r\n font: {\r\n color: TITLE_COLOR\r\n }\r\n },\r\n \"chart:common\": {\r\n commonSeriesSettings: {\r\n label: {\r\n border: {\r\n color: BORDER_COLOR\r\n }\r\n }\r\n }\r\n },\r\n \"chart:common:annotation\": {\r\n color: \"#fff\",\r\n border: {\r\n color: BORDER_COLOR\r\n },\r\n font: {\r\n color: TITLE_COLOR\r\n }\r\n },\r\n chart: {\r\n commonPaneSettings: {\r\n border: {\r\n color: BORDER_COLOR\r\n }\r\n },\r\n commonAxisSettings: {\r\n breakStyle: {\r\n color: \"#c1c1c1\"\r\n }\r\n }\r\n },\r\n funnel: {\r\n item: {\r\n border: {\r\n color: BACKGROUND_COLOR\r\n }\r\n }\r\n },\r\n sparkline: {\r\n pointColor: BACKGROUND_COLOR,\r\n minColor: \"#ffc852\",\r\n maxColor: \"#f74a5e\"\r\n },\r\n treeMap: {\r\n group: {\r\n color: BORDER_COLOR,\r\n label: {\r\n font: {\r\n color: SUBTITLE_COLOR\r\n }\r\n }\r\n }\r\n },\r\n rangeSelector: {\r\n shutter: {\r\n color: BACKGROUND_COLOR\r\n },\r\n scale: {\r\n breakStyle: {\r\n color: \"#c1c1c1\"\r\n },\r\n tick: {\r\n opacity: .12\r\n }\r\n },\r\n selectedRangeColor: ACCENT_COLOR,\r\n sliderMarker: {\r\n color: ACCENT_COLOR\r\n },\r\n sliderHandle: {\r\n color: ACCENT_COLOR,\r\n opacity: .5\r\n }\r\n },\r\n bullet: {\r\n color: ACCENT_COLOR\r\n },\r\n gauge: {\r\n valueIndicators: {\r\n rangebar: {\r\n color: ACCENT_COLOR\r\n },\r\n textcloud: {\r\n color: ACCENT_COLOR\r\n }\r\n }\r\n }\r\n },\r\n baseThemeName: \"generic.light\"\r\n}, {\r\n theme: {\r\n name: \"generic.greenmist.compact\"\r\n },\r\n baseThemeName: \"generic.greenmist\"\r\n}];\r\n","/**\r\n * DevExtreme (esm/viz/core/themes/generic.softblue.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nvar ACCENT_COLOR = \"#7ab8eb\";\r\nvar BACKGROUND_COLOR = \"#fff\";\r\nvar TITLE_COLOR = \"#333\";\r\nvar SUBTITLE_COLOR = \"#99a1a8\";\r\nvar TEXT_COLOR = \"#707070\";\r\nvar BORDER_COLOR = \"#e8eaeb\";\r\nexport default [{\r\n theme: {\r\n name: \"generic.softblue\",\r\n defaultPalette: \"Soft Blue\",\r\n backgroundColor: BACKGROUND_COLOR,\r\n primaryTitleColor: TITLE_COLOR,\r\n secondaryTitleColor: SUBTITLE_COLOR,\r\n gridColor: BORDER_COLOR,\r\n axisColor: TEXT_COLOR,\r\n export: {\r\n backgroundColor: BACKGROUND_COLOR,\r\n font: {\r\n color: TITLE_COLOR\r\n },\r\n button: {\r\n default: {\r\n color: TITLE_COLOR,\r\n borderColor: \"#c9d0d4\",\r\n backgroundColor: BACKGROUND_COLOR\r\n },\r\n hover: {\r\n color: TITLE_COLOR,\r\n borderColor: \"#a7b2b9\",\r\n backgroundColor: \"#e6e6e6\"\r\n },\r\n focus: {\r\n color: TITLE_COLOR,\r\n borderColor: \"#82929b\",\r\n backgroundColor: \"#e6e6e6\"\r\n },\r\n active: {\r\n color: TITLE_COLOR,\r\n borderColor: \"#82929b\",\r\n backgroundColor: \"#d4d4d4\"\r\n }\r\n }\r\n },\r\n legend: {\r\n font: {\r\n color: TEXT_COLOR\r\n }\r\n },\r\n tooltip: {\r\n color: BACKGROUND_COLOR,\r\n border: {\r\n color: BORDER_COLOR\r\n },\r\n font: {\r\n color: TITLE_COLOR\r\n }\r\n },\r\n \"chart:common\": {\r\n commonSeriesSettings: {\r\n label: {\r\n border: {\r\n color: BORDER_COLOR\r\n }\r\n }\r\n }\r\n },\r\n \"chart:common:annotation\": {\r\n color: BACKGROUND_COLOR,\r\n border: {\r\n color: BORDER_COLOR\r\n },\r\n font: {\r\n color: TITLE_COLOR\r\n }\r\n },\r\n chart: {\r\n commonPaneSettings: {\r\n border: {\r\n color: BORDER_COLOR\r\n }\r\n },\r\n commonAxisSettings: {\r\n breakStyle: {\r\n color: \"#cfd2d3\"\r\n }\r\n }\r\n },\r\n rangeSelector: {\r\n scale: {\r\n breakStyle: {\r\n color: \"#cfd2d3\"\r\n },\r\n tick: {\r\n opacity: .12\r\n }\r\n },\r\n selectedRangeColor: ACCENT_COLOR,\r\n sliderMarker: {\r\n color: ACCENT_COLOR\r\n },\r\n sliderHandle: {\r\n color: ACCENT_COLOR,\r\n opacity: .5\r\n }\r\n },\r\n sparkline: {\r\n pointColor: BACKGROUND_COLOR,\r\n minColor: \"#f0ad4e\",\r\n maxColor: \"#d9534f\"\r\n },\r\n treeMap: {\r\n group: {\r\n color: BORDER_COLOR,\r\n label: {\r\n font: {\r\n color: SUBTITLE_COLOR\r\n }\r\n }\r\n }\r\n },\r\n bullet: {\r\n color: ACCENT_COLOR\r\n },\r\n gauge: {\r\n valueIndicators: {\r\n rangebar: {\r\n color: ACCENT_COLOR\r\n },\r\n textcloud: {\r\n color: ACCENT_COLOR\r\n }\r\n }\r\n }\r\n },\r\n baseThemeName: \"generic.light\"\r\n}, {\r\n theme: {\r\n name: \"generic.softblue.compact\"\r\n },\r\n baseThemeName: \"generic.softblue\"\r\n}];\r\n","/**\r\n * DevExtreme (esm/viz/core/themes/material.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nvar FONT_FAMILY = \"'Roboto', 'RobotoFallback', 'Helvetica', 'Arial', sans-serif\";\r\nvar LIGHT_TITLE_COLOR = \"rgba(0,0,0,0.87)\";\r\nvar LIGHT_LABEL_COLOR = \"rgba(0,0,0,0.54)\";\r\nvar DARK_TITLE_COLOR = \"rgba(255,255,255,0.87)\";\r\nvar DARK_LABEL_COLOR = \"rgba(255,255,255,0.54)\";\r\nvar DARK_BACKGROUND_COLOR = \"#363640\";\r\nvar WHITE = \"#ffffff\";\r\nvar BLACK = \"#000000\";\r\nvar RANGE_COLOR = \"#b5b5b5\";\r\nvar AREA_LAYER_COLOR = \"#686868\";\r\nvar LINE_COLOR = \"#c7c7c7\";\r\nvar TARGET_COLOR = \"#8e8e8e\";\r\nvar POSITIVE_COLOR = \"#b8b8b8\";\r\nvar LABEL_BORDER_COLOR = \"#494949\";\r\nvar BREAK_STYLE_COLOR = \"#818181\";\r\nvar themes = [{\r\n theme: {\r\n name: \"material\",\r\n defaultPalette: \"Material\",\r\n font: {\r\n family: FONT_FAMILY\r\n },\r\n title: {\r\n margin: {\r\n top: 20,\r\n bottom: 20,\r\n left: 0,\r\n right: 0\r\n },\r\n font: {\r\n size: 20,\r\n family: FONT_FAMILY,\r\n weight: 500\r\n },\r\n horizontalAlignment: \"left\",\r\n subtitle: {\r\n font: {\r\n size: 14\r\n },\r\n horizontalAlignment: \"left\"\r\n }\r\n },\r\n tooltip: {\r\n shadow: {\r\n opacity: 0\r\n },\r\n border: {\r\n visible: false\r\n },\r\n paddingLeftRight: 8,\r\n paddingTopBottom: 6,\r\n arrowLength: 0,\r\n location: \"edge\",\r\n color: \"#616161\",\r\n font: {\r\n color: WHITE\r\n },\r\n cornerRadius: 4\r\n },\r\n chart: {\r\n commonAxisSettings: {\r\n minorTick: {\r\n opacity: .5\r\n },\r\n label: {\r\n font: {\r\n size: 11\r\n }\r\n }\r\n },\r\n commonAnnotationSettings: {\r\n font: {\r\n color: WHITE\r\n },\r\n border: {\r\n color: \"#616161\"\r\n },\r\n color: \"#616161\",\r\n arrowLength: 14,\r\n arrowWidth: 0,\r\n shadow: {\r\n opacity: .08,\r\n offsetY: 4,\r\n blur: 8\r\n },\r\n cornerRadius: 4\r\n }\r\n },\r\n pie: {\r\n title: {\r\n horizontalAlignment: \"center\",\r\n subtitle: {\r\n horizontalAlignment: \"center\"\r\n }\r\n }\r\n },\r\n polar: {\r\n commonAxisSettings: {\r\n minorTick: {\r\n opacity: .5\r\n }\r\n },\r\n title: {\r\n horizontalAlignment: \"center\",\r\n subtitle: {\r\n horizontalAlignment: \"center\"\r\n }\r\n }\r\n },\r\n funnel: {\r\n title: {\r\n horizontalAlignment: \"center\",\r\n subtitle: {\r\n horizontalAlignment: \"center\"\r\n }\r\n }\r\n },\r\n gauge: {\r\n title: {\r\n horizontalAlignment: \"center\",\r\n subtitle: {\r\n horizontalAlignment: \"center\"\r\n }\r\n }\r\n },\r\n barGauge: {\r\n title: {\r\n horizontalAlignment: \"center\",\r\n subtitle: {\r\n horizontalAlignment: \"center\"\r\n }\r\n }\r\n },\r\n rangeSelector: {\r\n sliderHandle: {\r\n opacity: .5\r\n }\r\n },\r\n treeMap: {\r\n group: {\r\n label: {\r\n font: {\r\n weight: 500\r\n }\r\n }\r\n }\r\n }\r\n },\r\n baseThemeName: \"generic.light\"\r\n}, {\r\n theme: {\r\n name: \"material.light\",\r\n gridColor: \"#e0e0e0\",\r\n axisColor: LIGHT_LABEL_COLOR,\r\n primaryTitleColor: LIGHT_TITLE_COLOR,\r\n legend: {\r\n font: {\r\n color: LIGHT_LABEL_COLOR\r\n }\r\n },\r\n chart: {\r\n scrollBar: {\r\n color: \"#bfbfbf\",\r\n opacity: .7\r\n }\r\n },\r\n gauge: {\r\n rangeContainer: {\r\n backgroundColor: \"rgba(0,0,0,0.2)\"\r\n }\r\n },\r\n barGauge: {\r\n backgroundColor: \"#efefef\"\r\n }\r\n },\r\n baseThemeName: \"material\"\r\n}, {\r\n theme: {\r\n name: \"material.dark\",\r\n gridColor: \"#515159\",\r\n backgroundColor: DARK_BACKGROUND_COLOR,\r\n axisColor: DARK_LABEL_COLOR,\r\n font: {\r\n color: DARK_LABEL_COLOR\r\n },\r\n primaryTitleColor: DARK_TITLE_COLOR,\r\n secondaryTitleColor: DARK_TITLE_COLOR,\r\n tooltip: {\r\n color: \"#000\"\r\n },\r\n export: {\r\n backgroundColor: DARK_BACKGROUND_COLOR,\r\n font: {\r\n color: \"#dbdbdb\"\r\n },\r\n button: {\r\n default: {\r\n color: \"#dedede\",\r\n borderColor: \"#4d4d4d\",\r\n backgroundColor: DARK_BACKGROUND_COLOR\r\n },\r\n hover: {\r\n color: \"#dedede\",\r\n borderColor: \"#6c6c6c\",\r\n backgroundColor: \"#3f3f4b\"\r\n },\r\n focus: {\r\n color: \"#dedede\",\r\n borderColor: \"#8d8d8d\",\r\n backgroundColor: \"#494956\"\r\n },\r\n active: {\r\n color: \"#dedede\",\r\n borderColor: \"#8d8d8d\",\r\n backgroundColor: \"#494956\"\r\n }\r\n },\r\n shadowColor: \"#292929\"\r\n },\r\n \"chart:common\": {\r\n commonSeriesSettings: {\r\n label: {\r\n border: {\r\n color: LABEL_BORDER_COLOR\r\n }\r\n },\r\n valueErrorBar: {\r\n color: WHITE\r\n }\r\n }\r\n },\r\n \"chart:common:axis\": {\r\n constantLineStyle: {\r\n color: WHITE\r\n }\r\n },\r\n \"chart:common:annotation\": {\r\n border: {\r\n color: \"#000\"\r\n },\r\n color: \"#000\"\r\n },\r\n chart: {\r\n commonPaneSettings: {\r\n border: {\r\n color: LABEL_BORDER_COLOR\r\n }\r\n },\r\n commonAxisSettings: {\r\n breakStyle: {\r\n color: BREAK_STYLE_COLOR\r\n }\r\n },\r\n zoomAndPan: {\r\n dragBoxStyle: {\r\n color: WHITE\r\n }\r\n }\r\n },\r\n gauge: {\r\n rangeContainer: {\r\n backgroundColor: RANGE_COLOR\r\n },\r\n valueIndicators: {\r\n _default: {\r\n color: RANGE_COLOR\r\n },\r\n rangebar: {\r\n color: \"#84788b\"\r\n },\r\n twocolorneedle: {\r\n secondColor: \"#ba544d\"\r\n },\r\n trianglemarker: {\r\n color: \"#b7918f\"\r\n },\r\n textcloud: {\r\n color: \"#ba544d\"\r\n }\r\n }\r\n },\r\n barGauge: {\r\n backgroundColor: \"#3c3c3c\"\r\n },\r\n rangeSelector: {\r\n scale: {\r\n tick: {\r\n color: WHITE,\r\n opacity: .32\r\n },\r\n minorTick: {\r\n color: WHITE,\r\n opacity: .1\r\n },\r\n breakStyle: {\r\n color: BREAK_STYLE_COLOR\r\n }\r\n },\r\n selectedRangeColor: RANGE_COLOR,\r\n sliderMarker: {\r\n color: RANGE_COLOR,\r\n font: {\r\n color: DARK_BACKGROUND_COLOR\r\n }\r\n },\r\n sliderHandle: {\r\n color: WHITE,\r\n opacity: .2\r\n },\r\n shutter: {\r\n color: WHITE,\r\n opacity: .1\r\n }\r\n },\r\n map: {\r\n background: {\r\n borderColor: \"#3f3f3f\"\r\n },\r\n layer: {\r\n label: {\r\n stroke: BLACK,\r\n font: {\r\n color: WHITE\r\n }\r\n }\r\n },\r\n \"layer:area\": {\r\n borderColor: DARK_BACKGROUND_COLOR,\r\n color: AREA_LAYER_COLOR,\r\n hoveredBorderColor: WHITE,\r\n selectedBorderColor: WHITE\r\n },\r\n \"layer:line\": {\r\n color: \"#c77244\",\r\n hoveredColor: \"#ff5d04\",\r\n selectedColor: \"#ff784f\"\r\n },\r\n \"layer:marker:bubble\": {\r\n hoveredBorderColor: WHITE,\r\n selectedBorderColor: WHITE\r\n },\r\n \"layer:marker:pie\": {\r\n hoveredBorderColor: WHITE,\r\n selectedBorderColor: WHITE\r\n },\r\n legend: {\r\n border: {\r\n color: \"#3f3f3f\"\r\n },\r\n font: {\r\n color: WHITE\r\n }\r\n },\r\n controlBar: {\r\n borderColor: LINE_COLOR,\r\n color: DARK_BACKGROUND_COLOR\r\n }\r\n },\r\n treeMap: {\r\n group: {\r\n color: \"#4c4c4c\",\r\n label: {\r\n font: {\r\n color: \"#a3a3a3\"\r\n }\r\n }\r\n }\r\n },\r\n sparkline: {\r\n lineColor: LINE_COLOR,\r\n firstLastColor: LINE_COLOR,\r\n barPositiveColor: POSITIVE_COLOR,\r\n barNegativeColor: TARGET_COLOR,\r\n winColor: POSITIVE_COLOR,\r\n lossColor: TARGET_COLOR,\r\n pointColor: DARK_BACKGROUND_COLOR\r\n },\r\n bullet: {\r\n targetColor: TARGET_COLOR\r\n },\r\n funnel: {\r\n item: {\r\n border: {\r\n color: DARK_BACKGROUND_COLOR\r\n }\r\n }\r\n },\r\n sankey: {\r\n label: {\r\n font: {\r\n color: WHITE\r\n }\r\n }\r\n }\r\n },\r\n baseThemeName: \"material\"\r\n}];\r\n\r\nfunction getMaterialColorScheme(accentName, themeName, accentColor) {\r\n return {\r\n theme: {\r\n name: \"material.\" + accentName + \".\" + themeName,\r\n rangeSelector: {\r\n selectedRangeColor: accentColor,\r\n sliderMarker: {\r\n color: accentColor\r\n },\r\n sliderHandle: {\r\n color: accentColor\r\n }\r\n },\r\n map: {\r\n \"layer:marker:dot\": {\r\n color: accentColor\r\n },\r\n \"layer:marker:bubble\": {\r\n color: accentColor\r\n },\r\n legend: {\r\n markerColor: accentColor\r\n }\r\n },\r\n bullet: {\r\n color: accentColor\r\n },\r\n gauge: {\r\n valueIndicators: {\r\n rangebar: {\r\n color: accentColor\r\n },\r\n textcloud: {\r\n color: accentColor\r\n }\r\n }\r\n }\r\n },\r\n baseThemeName: \"material.\" + themeName\r\n }\r\n}\r\nvar materialAccents = {\r\n blue: \"#03a9f4\",\r\n lime: \"#cddc39\",\r\n orange: \"#ff5722\",\r\n purple: \"#9c27b0\",\r\n teal: \"#009688\"\r\n};\r\nfor (var accent in materialAccents) {\r\n if (Object.prototype.hasOwnProperty.call(materialAccents, accent)) {\r\n var color = materialAccents[accent];\r\n themes.push(getMaterialColorScheme(accent, \"light\", color), getMaterialColorScheme(accent, \"dark\", color), {\r\n theme: {\r\n name: \"material.\".concat(accent, \".light.compact\")\r\n },\r\n baseThemeName: \"material.\".concat(accent, \".light\")\r\n }, {\r\n theme: {\r\n name: \"material.\".concat(accent, \".dark.compact\")\r\n },\r\n baseThemeName: \"material.\".concat(accent, \".dark\")\r\n })\r\n }\r\n}\r\nexport default themes;\r\n","/**\r\n * DevExtreme (esm/viz/themes.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport {\r\n normalizeEnum\r\n} from \"./core/utils\";\r\nimport {\r\n current as getCurrentTheme\r\n} from \"../ui/themes\";\r\nimport {\r\n isEmptyObject\r\n} from \"../core/utils/type\";\r\nimport lightThemes from \"./core/themes/generic.light\";\r\nimport carmineThemes from \"./core/themes/generic.carmine\";\r\nimport darkThemes from \"./core/themes/generic.dark\";\r\nimport contrastThemes from \"./core/themes/generic.contrast\";\r\nimport darkMoonThemes from \"./core/themes/generic.darkmoon\";\r\nimport darkVioletThemes from \"./core/themes/generic.darkviolet\";\r\nimport greenMistThemes from \"./core/themes/generic.greenmist\";\r\nimport softBlueThemes from \"./core/themes/generic.softblue\";\r\nimport materialThemes from \"./core/themes/material\";\r\nvar themes = {};\r\nvar themesMapping = {};\r\nvar themesSchemeMapping = {};\r\nvar _extend = extend;\r\nvar _each = each;\r\nvar currentThemeName = null;\r\nvar defaultTheme;\r\nvar nextCacheUid = 0;\r\nvar widgetsCache = {};\r\nexport function getTheme(themeName) {\r\n var name = normalizeEnum(themeName);\r\n return themes[name] || themes[themesMapping[name] || currentTheme()]\r\n}\r\n\r\nfunction findThemeNameByName(name, scheme) {\r\n return themesMapping[name + \".\" + scheme] || themesSchemeMapping[name + \".\" + scheme] || themesMapping[name]\r\n}\r\n\r\nfunction findThemeNameByPlatform(platform, version, scheme) {\r\n return findThemeNameByName(platform + version, scheme) || findThemeNameByName(platform, scheme)\r\n}\r\nexport function currentTheme(themeName, colorScheme) {\r\n if (!arguments.length) {\r\n return currentThemeName || findThemeNameByName(getCurrentTheme()) || defaultTheme\r\n }\r\n var scheme = normalizeEnum(colorScheme);\r\n currentThemeName = (themeName && themeName.platform ? findThemeNameByPlatform(normalizeEnum(themeName.platform), themeName.version, scheme) : findThemeNameByName(normalizeEnum(themeName), scheme)) || currentThemeName;\r\n return this\r\n}\r\n\r\nfunction getThemeInfo(themeName, splitter) {\r\n var k = themeName.indexOf(splitter);\r\n return k > 0 ? {\r\n name: themeName.substring(0, k),\r\n scheme: themeName.substring(k + 1)\r\n } : null\r\n}\r\n\r\nfunction registerThemeName(themeName, targetThemeName) {\r\n var themeInfo = getThemeInfo(themeName, \".\") || {\r\n name: themeName\r\n };\r\n var name = themeInfo.name;\r\n var scheme = themeInfo.scheme;\r\n if (scheme) {\r\n themesMapping[name] = themesMapping[name] || targetThemeName;\r\n themesMapping[name + \".\" + scheme] = targetThemeName\r\n } else {\r\n themesMapping[name] = targetThemeName\r\n }\r\n}\r\nexport function registerTheme(theme, baseThemeName) {\r\n var themeName = normalizeEnum(theme && theme.name);\r\n if (themeName) {\r\n theme.isDefault && (defaultTheme = themeName);\r\n registerThemeName(themeName, themeName);\r\n themes[themeName] = _extend(true, {}, getTheme(baseThemeName), patchTheme(theme))\r\n }\r\n}\r\nexport function registerThemeSchemeAlias(from, to) {\r\n themesSchemeMapping[from] = to\r\n}\r\n\r\nfunction mergeScalar(target, field, source, sourceValue) {\r\n var _value = source ? source[field] : sourceValue;\r\n if (void 0 !== _value && void 0 === target[field]) {\r\n target[field] = _value\r\n }\r\n}\r\n\r\nfunction mergeObject(target, field, source, sourceValue) {\r\n var _value = source ? source[field] : sourceValue;\r\n if (void 0 !== _value) {\r\n target[field] = _extend(true, {}, _value, target[field])\r\n }\r\n}\r\n\r\nfunction patchTheme(theme) {\r\n theme = _extend(true, {\r\n loadingIndicator: {\r\n font: {}\r\n },\r\n export: {\r\n font: {}\r\n },\r\n legend: {\r\n font: {},\r\n border: {}\r\n },\r\n title: {\r\n font: {}\r\n },\r\n tooltip: {\r\n font: {}\r\n },\r\n \"chart:common\": {},\r\n \"chart:common:axis\": {\r\n grid: {},\r\n minorGrid: {},\r\n tick: {},\r\n minorTick: {},\r\n title: {\r\n font: {}\r\n },\r\n label: {\r\n font: {}\r\n }\r\n },\r\n \"chart:common:annotation\": {\r\n font: {},\r\n border: {}\r\n },\r\n chart: {\r\n commonSeriesSettings: {\r\n candlestick: {}\r\n }\r\n },\r\n pie: {},\r\n polar: {},\r\n gauge: {\r\n scale: {\r\n tick: {},\r\n minorTick: {},\r\n label: {\r\n font: {}\r\n }\r\n }\r\n },\r\n barGauge: {},\r\n funnel: {},\r\n sankey: {},\r\n map: {\r\n background: {}\r\n },\r\n treeMap: {\r\n tile: {\r\n selectionStyle: {\r\n border: {}\r\n }\r\n },\r\n group: {\r\n border: {},\r\n selectionStyle: {\r\n border: {}\r\n },\r\n label: {\r\n font: {}\r\n }\r\n }\r\n },\r\n rangeSelector: {\r\n scale: {\r\n tick: {},\r\n minorTick: {},\r\n label: {\r\n font: {}\r\n }\r\n },\r\n chart: {}\r\n },\r\n sparkline: {},\r\n bullet: {}\r\n }, theme);\r\n mergeScalar(theme.loadingIndicator, \"backgroundColor\", theme);\r\n mergeScalar(theme.chart.commonSeriesSettings.candlestick, \"innerColor\", null, theme.backgroundColor);\r\n mergeScalar(theme.map.background, \"color\", null, theme.backgroundColor);\r\n mergeScalar(theme.title.font, \"color\", null, theme.primaryTitleColor);\r\n mergeObject(theme.title, \"subtitle\", null, theme.title);\r\n mergeScalar(theme.legend.font, \"color\", null, theme.secondaryTitleColor);\r\n mergeScalar(theme.legend.border, \"color\", null, theme.gridColor);\r\n patchAxes(theme);\r\n _each([\"chart\", \"pie\", \"polar\", \"gauge\", \"barGauge\", \"map\", \"treeMap\", \"funnel\", \"rangeSelector\", \"sparkline\", \"bullet\", \"sankey\"], (function(_, section) {\r\n mergeScalar(theme[section], \"redrawOnResize\", theme);\r\n mergeScalar(theme[section], \"containerBackgroundColor\", null, theme.backgroundColor);\r\n mergeObject(theme[section], \"tooltip\", theme);\r\n mergeObject(theme[section], \"export\", theme)\r\n }));\r\n _each([\"chart\", \"pie\", \"polar\", \"gauge\", \"barGauge\", \"map\", \"treeMap\", \"funnel\", \"rangeSelector\", \"sankey\"], (function(_, section) {\r\n mergeObject(theme[section], \"loadingIndicator\", theme);\r\n mergeObject(theme[section], \"legend\", theme);\r\n mergeObject(theme[section], \"title\", theme)\r\n }));\r\n _each([\"chart\", \"pie\", \"polar\"], (function(_, section) {\r\n mergeObject(theme, section, null, theme[\"chart:common\"])\r\n }));\r\n _each([\"chart\", \"polar\"], (function(_, section) {\r\n theme[section] = theme[section] || {};\r\n mergeObject(theme[section], \"commonAxisSettings\", null, theme[\"chart:common:axis\"])\r\n }));\r\n _each([\"chart\", \"polar\", \"map\", \"pie\"], (function(_, section) {\r\n theme[section] = theme[section] || {};\r\n mergeObject(theme[section], \"commonAnnotationSettings\", null, theme[\"chart:common:annotation\"])\r\n }));\r\n mergeObject(theme.rangeSelector.chart, \"commonSeriesSettings\", theme.chart);\r\n mergeObject(theme.rangeSelector.chart, \"dataPrepareSettings\", theme.chart);\r\n mergeScalar(theme.treeMap.group.border, \"color\", null, theme.gridColor);\r\n mergeScalar(theme.treeMap.tile.selectionStyle.border, \"color\", null, theme.primaryTitleColor);\r\n mergeScalar(theme.treeMap.group.selectionStyle.border, \"color\", null, theme.primaryTitleColor);\r\n mergeScalar(theme.map.legend, \"backgroundColor\", theme);\r\n patchMapLayers(theme);\r\n return theme\r\n}\r\n\r\nfunction patchAxes(theme) {\r\n var commonAxisSettings = theme[\"chart:common:axis\"];\r\n _each([commonAxisSettings.grid, commonAxisSettings.minorGrid], (function(_, obj) {\r\n mergeScalar(obj, \"color\", null, theme.gridColor)\r\n }));\r\n _each([commonAxisSettings, commonAxisSettings.tick, commonAxisSettings.minorTick, commonAxisSettings.label.font], (function(_, obj) {\r\n mergeScalar(obj, \"color\", null, theme.axisColor)\r\n }));\r\n mergeScalar(commonAxisSettings.title.font, \"color\", null, theme.secondaryTitleColor);\r\n mergeScalar(theme.gauge.scale.label.font, \"color\", null, theme.axisColor);\r\n mergeScalar(theme.gauge.scale.tick, \"color\", null, theme.backgroundColor);\r\n mergeScalar(theme.gauge.scale.minorTick, \"color\", null, theme.backgroundColor);\r\n mergeScalar(theme.rangeSelector.scale.label.font, \"color\", null, theme.axisColor)\r\n}\r\n\r\nfunction patchMapLayers(theme) {\r\n var map = theme.map;\r\n _each([\"area\", \"line\", \"marker\"], (function(_, section) {\r\n mergeObject(map, \"layer:\" + section, null, map.layer)\r\n }));\r\n _each([\"dot\", \"bubble\", \"pie\", \"image\"], (function(_, section) {\r\n mergeObject(map, \"layer:marker:\" + section, null, map[\"layer:marker\"])\r\n }))\r\n}\r\nexport function addCacheItem(target) {\r\n var cacheUid = ++nextCacheUid;\r\n target._cache = cacheUid;\r\n widgetsCache[cacheUid] = target\r\n}\r\nexport function removeCacheItem(target) {\r\n delete widgetsCache[target._cache]\r\n}\r\nexport function refreshTheme() {\r\n _each(widgetsCache, (function() {\r\n this.refresh()\r\n }));\r\n return this\r\n}\r\nif (isEmptyObject(themes) && isEmptyObject(themesMapping) && !defaultTheme) {\r\n [].concat(lightThemes, carmineThemes, darkThemes, contrastThemes, darkMoonThemes, darkVioletThemes, greenMistThemes, softBlueThemes, materialThemes).forEach(t => {\r\n registerTheme(t.theme, t.baseThemeName)\r\n })\r\n}\r\n","/**\r\n * DevExtreme (esm/viz/core/base_theme_manager.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport Class from \"../../core/class\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n isString as _isString\r\n} from \"../../core/utils/type\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n createPalette as getPalette,\r\n getDiscretePalette,\r\n getGradientPalette,\r\n getAccentColor as accentColor\r\n} from \"../palette\";\r\nimport {\r\n parseScalar as _parseScalar\r\n} from \"./utils\";\r\nimport {\r\n getTheme,\r\n addCacheItem,\r\n removeCacheItem\r\n} from \"../themes\";\r\nvar _getTheme = getTheme;\r\nvar _addCacheItem = addCacheItem;\r\nvar _removeCacheItem = removeCacheItem;\r\nvar _extend = extend;\r\nvar _each = each;\r\n\r\nfunction getThemePart(theme, path) {\r\n var _theme = theme;\r\n path && _each(path.split(\".\"), (function(_, pathItem) {\r\n return _theme = _theme[pathItem]\r\n }));\r\n return _theme\r\n}\r\nexport var BaseThemeManager = Class.inherit({\r\n ctor: function(options) {\r\n this._themeSection = options.themeSection;\r\n this._fontFields = options.fontFields || [];\r\n _addCacheItem(this)\r\n },\r\n dispose: function() {\r\n _removeCacheItem(this);\r\n this._callback = this._theme = this._font = null;\r\n return this\r\n },\r\n setCallback: function(callback) {\r\n this._callback = callback;\r\n return this\r\n },\r\n setTheme: function(theme, rtl) {\r\n this._current = theme;\r\n this._rtl = rtl;\r\n return this.refresh()\r\n },\r\n refresh: function() {\r\n var current = this._current || {};\r\n var theme = _getTheme(current.name || current);\r\n this._themeName = theme.name;\r\n this._defaultPalette = theme.defaultPalette;\r\n this._font = _extend({}, theme.font, current.font);\r\n this._themeSection && _each(this._themeSection.split(\".\"), (function(_, path) {\r\n theme = _extend(true, {}, theme[path])\r\n }));\r\n this._theme = _extend(true, {}, theme, _isString(current) ? {} : current);\r\n this._initializeTheme();\r\n if (_parseScalar(this._rtl, this._theme.rtlEnabled)) {\r\n _extend(true, this._theme, this._theme._rtl)\r\n }\r\n this._callback();\r\n return this\r\n },\r\n theme: function(path) {\r\n return getThemePart(this._theme, path)\r\n },\r\n themeName: function() {\r\n return this._themeName\r\n },\r\n createPalette: function(palette, options) {\r\n return getPalette(palette, options, this._defaultPalette)\r\n },\r\n createDiscretePalette: function(palette, count) {\r\n return getDiscretePalette(palette, count, this._defaultPalette)\r\n },\r\n createGradientPalette: function(palette) {\r\n return getGradientPalette(palette, this._defaultPalette)\r\n },\r\n getAccentColor: function(palette) {\r\n return accentColor(palette, this._defaultPalette)\r\n },\r\n _initializeTheme: function() {\r\n var that = this;\r\n _each(that._fontFields || [], (function(_, path) {\r\n that._initializeFont(getThemePart(that._theme, path))\r\n }))\r\n },\r\n _initializeFont: function(font) {\r\n _extend(font, this._font, _extend({}, font))\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/viz/components/chart_theme_manager.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isString as _isString,\r\n isDefined as _isDefined,\r\n isNumeric,\r\n isPlainObject\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n BaseThemeManager\r\n} from \"../core/base_theme_manager\";\r\nimport {\r\n normalizeEnum as _normalizeEnum\r\n} from \"../core/utils\";\r\nexport var ThemeManager = BaseThemeManager.inherit(function() {\r\n var processAxisOptions = function(axisOptions) {\r\n if (!axisOptions) {\r\n return {}\r\n }\r\n axisOptions = extend(true, {}, axisOptions);\r\n axisOptions.title = (options = axisOptions.title, _isString(options) ? {\r\n text: options\r\n } : options);\r\n var options;\r\n if (\"logarithmic\" === axisOptions.type && axisOptions.logarithmBase <= 0 || axisOptions.logarithmBase && !isNumeric(axisOptions.logarithmBase)) {\r\n axisOptions.logarithmBase = void 0;\r\n axisOptions.logarithmBaseError = true\r\n }\r\n if (axisOptions.label) {\r\n if (axisOptions.label.alignment) {\r\n axisOptions.label.userAlignment = true\r\n }\r\n }\r\n return axisOptions\r\n };\r\n var applyParticularAxisOptions = function(name, userOptions, rotated) {\r\n var theme = this._theme;\r\n var position = !(rotated ^ \"valueAxis\" === name) ? \"horizontalAxis\" : \"verticalAxis\";\r\n var processedUserOptions = processAxisOptions(userOptions);\r\n var commonAxisSettings = processAxisOptions(this._userOptions.commonAxisSettings);\r\n var mergeOptions = extend(true, {}, theme.commonAxisSettings, theme[position], theme[name], commonAxisSettings, processedUserOptions);\r\n mergeOptions.workWeek = processedUserOptions.workWeek || theme[name].workWeek;\r\n mergeOptions.forceUserTickInterval |= _isDefined(processedUserOptions.tickInterval) && !_isDefined(processedUserOptions.axisDivisionFactor);\r\n return mergeOptions\r\n };\r\n var mergeOptions = function(name, userOptions) {\r\n userOptions = userOptions || this._userOptions[name];\r\n var theme = this._theme[name];\r\n var result = this._mergedSettings[name];\r\n if (result) {\r\n return result\r\n }\r\n if (isPlainObject(theme) && isPlainObject(userOptions)) {\r\n result = extend(true, {}, theme, userOptions)\r\n } else {\r\n result = _isDefined(userOptions) ? userOptions : theme\r\n }\r\n this._mergedSettings[name] = result;\r\n return result\r\n };\r\n var applyParticularTheme = {\r\n base: mergeOptions,\r\n argumentAxis: applyParticularAxisOptions,\r\n valueAxisRangeSelector: function() {\r\n return mergeOptions.call(this, \"valueAxis\")\r\n },\r\n valueAxis: applyParticularAxisOptions,\r\n series: function(name, userOptions, seriesCount) {\r\n var that = this;\r\n var theme = that._theme;\r\n var userCommonSettings = that._userOptions.commonSeriesSettings || {};\r\n var themeCommonSettings = theme.commonSeriesSettings;\r\n var widgetType = that._themeSection.split(\".\").slice(-1)[0];\r\n var type = _normalizeEnum(userOptions.type || userCommonSettings.type || themeCommonSettings.type || \"pie\" === widgetType && theme.type);\r\n var palette = that.palette;\r\n var isBar = ~type.indexOf(\"bar\");\r\n var isLine = ~type.indexOf(\"line\");\r\n var isArea = ~type.indexOf(\"area\");\r\n var isBubble = \"bubble\" === type;\r\n var mainSeriesColor;\r\n var resolveLabelsOverlapping = that.getOptions(\"resolveLabelsOverlapping\");\r\n var containerBackgroundColor = that.getOptions(\"containerBackgroundColor\");\r\n var seriesTemplate = applyParticularTheme.seriesTemplate.call(this);\r\n var seriesVisibility;\r\n if (isBar || isBubble) {\r\n userOptions = extend(true, {}, userCommonSettings, userCommonSettings[type], userOptions);\r\n seriesVisibility = userOptions.visible;\r\n userCommonSettings = {\r\n type: {}\r\n };\r\n extend(true, userOptions, userOptions.point);\r\n userOptions.visible = seriesVisibility\r\n }\r\n var settings = extend(true, {\r\n aggregation: {}\r\n }, themeCommonSettings, themeCommonSettings[type], userCommonSettings, userCommonSettings[type], userOptions);\r\n settings.aggregation.enabled = \"chart\" === widgetType && !!settings.aggregation.enabled;\r\n settings.type = type;\r\n settings.widgetType = widgetType;\r\n settings.containerBackgroundColor = containerBackgroundColor;\r\n if (\"pie\" !== widgetType) {\r\n mainSeriesColor = settings.color || palette.getNextColor(seriesCount)\r\n } else {\r\n mainSeriesColor = function(argument, index, count) {\r\n var cat = \"\".concat(argument, \"-\").concat(index);\r\n if (!that._multiPieColors[cat]) {\r\n that._multiPieColors[cat] = palette.getNextColor(count)\r\n }\r\n return that._multiPieColors[cat]\r\n }\r\n }\r\n settings.mainSeriesColor = mainSeriesColor;\r\n settings.resolveLabelsOverlapping = resolveLabelsOverlapping;\r\n if (settings.label && (isLine || isArea && \"rangearea\" !== type || \"scatter\" === type)) {\r\n settings.label.position = \"outside\"\r\n }\r\n if (seriesTemplate) {\r\n settings.nameField = seriesTemplate.nameField\r\n }\r\n return settings\r\n },\r\n animation: function(name) {\r\n var userOptions = this._userOptions[name];\r\n userOptions = isPlainObject(userOptions) ? userOptions : _isDefined(userOptions) ? {\r\n enabled: !!userOptions\r\n } : {};\r\n return mergeOptions.call(this, name, userOptions)\r\n },\r\n seriesTemplate() {\r\n var value = mergeOptions.call(this, \"seriesTemplate\");\r\n if (value) {\r\n value.nameField = value.nameField || \"series\"\r\n }\r\n return value\r\n },\r\n zoomAndPan() {\r\n function parseOption(option) {\r\n option = _normalizeEnum(option);\r\n var pan = \"pan\" === option || \"both\" === option;\r\n var zoom = \"zoom\" === option || \"both\" === option;\r\n return {\r\n pan: pan,\r\n zoom: zoom,\r\n none: !pan && !zoom\r\n }\r\n }\r\n var options = mergeOptions.call(this, \"zoomAndPan\");\r\n return {\r\n valueAxis: parseOption(options.valueAxis),\r\n argumentAxis: parseOption(options.argumentAxis),\r\n dragToZoom: !!options.dragToZoom,\r\n dragBoxStyle: {\r\n class: \"dxc-shutter\",\r\n fill: options.dragBoxStyle.color,\r\n opacity: options.dragBoxStyle.opacity\r\n },\r\n panKey: options.panKey,\r\n allowMouseWheel: !!options.allowMouseWheel,\r\n allowTouchGestures: !!options.allowTouchGestures\r\n }\r\n }\r\n };\r\n return {\r\n _themeSection: \"chart\",\r\n ctor: function(params) {\r\n var that = this;\r\n that.callBase.apply(that, arguments);\r\n var options = params.options || {};\r\n that._userOptions = options;\r\n that._mergeAxisTitleOptions = [];\r\n that._multiPieColors = {};\r\n that._callback = noop\r\n },\r\n dispose: function() {\r\n var that = this;\r\n that.palette && that.palette.dispose();\r\n that.palette = that._userOptions = that._mergedSettings = that._multiPieColors = null;\r\n return that.callBase.apply(that, arguments)\r\n },\r\n resetPalette: function() {\r\n this.palette.reset();\r\n this._multiPieColors = {}\r\n },\r\n getOptions: function(name) {\r\n return (applyParticularTheme[name] || applyParticularTheme.base).apply(this, arguments)\r\n },\r\n refresh: function() {\r\n this._mergedSettings = {};\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _initializeTheme: function() {\r\n var that = this;\r\n that.callBase.apply(that, arguments);\r\n that.updatePalette()\r\n },\r\n resetOptions: function(name) {\r\n this._mergedSettings[name] = null\r\n },\r\n update: function(options) {\r\n this._userOptions = options\r\n },\r\n updatePalette: function() {\r\n this.palette = this.createPalette(this.getOptions(\"palette\"), {\r\n useHighlight: true,\r\n extensionMode: this.getOptions(\"paletteExtensionMode\")\r\n })\r\n }\r\n }\r\n}());\r\n","/**\r\n * DevExtreme (esm/viz/range_selector/series_data_source.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n Series\r\n} from \"../series/base_series\";\r\nimport {\r\n SeriesFamily\r\n} from \"../core/series_family\";\r\nimport {\r\n isNumeric,\r\n isDate,\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n inArray\r\n} from \"../../core/utils/array\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n mergeMarginOptions,\r\n processSeriesTemplate\r\n} from \"../core/utils\";\r\nimport {\r\n Range\r\n} from \"../translators/range\";\r\nimport {\r\n validateData\r\n} from \"../components/data_validator\";\r\nimport {\r\n ThemeManager as ChartThemeManager\r\n} from \"../components/chart_theme_manager\";\r\nvar createThemeManager = function(chartOptions) {\r\n return new ChartThemeManager({\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 each(series, (function(i, item) {\r\n if (-1 === inArray(item.type, types)) {\r\n types.push(item.type)\r\n }\r\n }));\r\n each(types, (function(_, type) {\r\n var family = new 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\nexport var SeriesDataSource = function(options) {\r\n var themeManager = this._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 this._indent = {\r\n top: topIndent >= 0 && topIndent < 1 ? topIndent : 0,\r\n bottom: bottomIndent >= 0 && bottomIndent < 1 ? bottomIndent : 0\r\n };\r\n this._valueAxis = themeManager.getOptions(\"valueAxisRangeSelector\") || {};\r\n this._hideChart = false;\r\n this._series = this._calculateSeries(options);\r\n this._seriesFamilies = []\r\n};\r\nSeriesDataSource.prototype = {\r\n constructor: SeriesDataSource,\r\n _calculateSeries: function(options) {\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 = this._themeManager;\r\n var seriesTemplate = chartThemeManager.getOptions(\"seriesTemplate\");\r\n var allSeriesOptions = seriesTemplate ? processSeriesTemplate(seriesTemplate, data) : options.chart.series;\r\n var dataSourceField;\r\n var valueAxis = this._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 this._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 = 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 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 = validateData(data, groupsData, options.incidentOccurred, chartThemeManager.getOptions(\"dataPrepareSettings\"));\r\n this.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() {\r\n if (0 === this._series.length) {\r\n return\r\n }\r\n var series = this._series;\r\n var viewport = new 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 }, isDefined(negativesAsZeroes) ? negativesAsZeroes : negativesAsZeros)\r\n },\r\n adjustSeriesDimensions: function() {\r\n each(this._seriesFamilies, (function(_, family) {\r\n family.adjustSeriesDimensions()\r\n }))\r\n },\r\n getBoundRange: function() {\r\n var rangeData;\r\n var valueAxis = this._valueAxis;\r\n var valRange = new 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({});\r\n var rangeYSize;\r\n var rangeVisibleSizeY;\r\n var minIndent;\r\n var maxIndent;\r\n each(this._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 ? this._indent.top : this._indent.bottom;\r\n maxIndent = valueAxis.inverted ? this._indent.bottom : this._indent.top;\r\n rangeYSize = valRange.max - valRange.min;\r\n rangeVisibleSizeY = (isNumeric(valRange.maxVisible) ? valRange.maxVisible : valRange.max) - (isNumeric(valRange.minVisible) ? valRange.minVisible : valRange.min);\r\n if (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 (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 (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 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 (esm/viz/core/helpers.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n extend as _extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nvar isServerSide = !hasWindow();\r\n\r\nfunction Flags() {\r\n this.reset()\r\n}\r\nFlags.prototype = {\r\n constructor: Flags,\r\n add: function(codes) {\r\n var i;\r\n var ii = codes.length;\r\n var flags = this._flags;\r\n for (i = 0; i < ii; ++i) {\r\n flags[codes[i]] = 1\r\n }\r\n },\r\n has: function(code) {\r\n return this._flags[code] > 0\r\n },\r\n count: function() {\r\n return Object.keys(this._flags).length\r\n },\r\n reset: function() {\r\n this._flags = {}\r\n }\r\n};\r\n\r\nfunction combineMaps(baseMap, thisMap) {\r\n return baseMap !== thisMap ? _extend({}, baseMap, thisMap) : _extend({}, baseMap)\r\n}\r\n\r\nfunction combineLists(baseList, thisList) {\r\n return baseList !== thisList ? baseList.concat(thisList) : baseList.slice()\r\n}\r\n\r\nfunction buildTotalChanges(proto) {\r\n proto._totalChangesOrder = proto._optionChangesOrder.concat(proto._layoutChangesOrder, proto._customChangesOrder)\r\n}\r\n\r\nfunction addChange(settings) {\r\n var proto = this.prototype;\r\n var code = settings.code;\r\n proto[\"_change_\" + code] = settings.handler;\r\n if (settings.isThemeDependent) {\r\n proto._themeDependentChanges.push(code)\r\n }\r\n if (settings.option) {\r\n proto._optionChangesMap[settings.option] = code\r\n }(settings.isOptionChange ? proto._optionChangesOrder : proto._customChangesOrder).push(code);\r\n buildTotalChanges(proto)\r\n}\r\n\r\nfunction createChainExecutor() {\r\n var executeChain = function executeChain() {\r\n var i;\r\n var ii = executeChain._chain.length;\r\n var result;\r\n for (i = 0; i < ii; ++i) {\r\n result = executeChain._chain[i].apply(this, arguments)\r\n }\r\n return result\r\n };\r\n executeChain._chain = [];\r\n executeChain.add = function(item) {\r\n executeChain._chain.push(item)\r\n };\r\n executeChain.copy = function(executor) {\r\n executeChain._chain = executor._chain.slice()\r\n };\r\n return executeChain\r\n}\r\nexport function expand(target, name, expander) {\r\n var current = target[name];\r\n if (!current) {\r\n current = expander\r\n } else if (!current.add) {\r\n current = createChainExecutor();\r\n current.add(target[name]);\r\n current.add(expander)\r\n } else {\r\n if (false === Object.prototype.hasOwnProperty.call(target, name)) {\r\n current = createChainExecutor();\r\n current.copy(target[name])\r\n }\r\n current.add(expander)\r\n }\r\n target[name] = current\r\n}\r\n\r\nfunction addPlugin(plugin) {\r\n var proto = this.prototype;\r\n proto._plugins.push(plugin);\r\n plugin.fontFields && proto._fontFields.push.apply(proto._fontFields, plugin.fontFields);\r\n if (plugin.members) {\r\n _extend(this.prototype, plugin.members)\r\n }\r\n if (plugin.customize) {\r\n plugin.customize(this)\r\n }\r\n if (plugin.extenders) {\r\n Object.keys(plugin.extenders).forEach((function(key) {\r\n var func = plugin.extenders[key];\r\n expand(proto, key, func)\r\n }), this)\r\n }\r\n}\r\nexport var replaceInherit = isServerSide ? function(widget) {\r\n var _inherit = widget.inherit;\r\n widget.inherit = function() {\r\n var result = _inherit.apply(this, arguments);\r\n var proto = result.prototype;\r\n [\"_plugins\", \"_eventsMap\", \"_initialChanges\", \"_themeDependentChanges\", \"_optionChangesMap\", \"_optionChangesOrder\", \"_layoutChangesOrder\", \"_customChangesOrder\", \"_totalChangesOrder\"].forEach((function(key) {\r\n proto[key] = {}\r\n }));\r\n result.addPlugin = noop;\r\n return result\r\n };\r\n widget.addChange = noop;\r\n widget.addPlugin = noop\r\n} : function(widget) {\r\n var _inherit = widget.inherit;\r\n widget.inherit = function() {\r\n var proto = this.prototype;\r\n var plugins = proto._plugins;\r\n var fontFields = proto._fontFields;\r\n var eventsMap = proto._eventsMap;\r\n var initialChanges = proto._initialChanges;\r\n var themeDependentChanges = proto._themeDependentChanges;\r\n var optionChangesMap = proto._optionChangesMap;\r\n var partialOptionChangesMap = proto._partialOptionChangesMap;\r\n var partialOptionChangesPath = proto._partialOptionChangesPath;\r\n var optionChangesOrder = proto._optionChangesOrder;\r\n var layoutChangesOrder = proto._layoutChangesOrder;\r\n var customChangesOrder = proto._customChangesOrder;\r\n var result = _inherit.apply(this, arguments);\r\n proto = result.prototype;\r\n proto._plugins = combineLists(plugins, proto._plugins);\r\n proto._fontFields = combineLists(fontFields, proto._fontFields);\r\n proto._eventsMap = combineMaps(eventsMap, proto._eventsMap);\r\n proto._initialChanges = combineLists(initialChanges, proto._initialChanges);\r\n proto._themeDependentChanges = combineLists(themeDependentChanges, proto._themeDependentChanges);\r\n proto._optionChangesMap = combineMaps(optionChangesMap, proto._optionChangesMap);\r\n proto._partialOptionChangesMap = combineMaps(partialOptionChangesMap, proto._partialOptionChangesMap);\r\n proto._partialOptionChangesPath = combineMaps(partialOptionChangesPath, proto._partialOptionChangesPath);\r\n proto._optionChangesOrder = combineLists(optionChangesOrder, proto._optionChangesOrder);\r\n proto._layoutChangesOrder = combineLists(layoutChangesOrder, proto._layoutChangesOrder);\r\n proto._customChangesOrder = combineLists(customChangesOrder, proto._customChangesOrder);\r\n buildTotalChanges(proto);\r\n result.addPlugin = addPlugin;\r\n return result\r\n };\r\n widget.prototype._plugins = [];\r\n widget.prototype._fontFields = [];\r\n widget.addChange = addChange;\r\n widget.addPlugin = addPlugin\r\n};\r\nexport function changes() {\r\n return new Flags\r\n}\r\n","/**\r\n * DevExtreme (esm/viz/core/errors_warnings.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport errorUtils from \"../../core/utils/error\";\r\nimport errors from \"../../core/errors\";\r\nexport default errorUtils(errors.ERROR_MESSAGES, {\r\n E2001: \"Invalid data source\",\r\n E2002: \"Axis type and data type are incompatible\",\r\n E2003: 'The \"{0}\" data source field contains data of unsupported type',\r\n E2004: 'The \"{0}\" data source field is inconsistent',\r\n E2005: 'The value field \"{0}\" is absent in the data source or all its values are negative',\r\n E2006: \"A cycle is detected in provided data\",\r\n E2007: 'The value field \"{0}\" is absent in the data source',\r\n E2008: 'The value field \"{0}\" must be a string',\r\n E2009: 'The value field \"{0}\" must be a positive numeric value',\r\n E2101: \"Unknown series type: {0}\",\r\n E2102: \"Ambiguity occurred between two value axes with the same name\",\r\n E2103: 'The \"{0}\" option is given an invalid value. Assign a function instead',\r\n E2104: \"Invalid logarithm base\",\r\n E2105: 'Invalid value of a \"{0}\"',\r\n E2202: \"Invalid {0} scale value\",\r\n E2203: \"The range you are trying to set is invalid\",\r\n W2002: \"The {0} series cannot be drawn because the {1} data field is missing\",\r\n W2003: \"Tick interval is too small\",\r\n W2101: 'The \"{0}\" pane does not exist; the last pane is used by default',\r\n W2102: 'A value axis with the \"{0}\" name was created automatically',\r\n W2103: \"The chart title was hidden due to the container size\",\r\n W2104: \"The legend was hidden due to the container size\",\r\n W2105: 'The title of the \"{0}\" axis was hidden due to the container size',\r\n W2106: 'The labels of the \"{0}\" axis were hidden due to the container size',\r\n W2107: \"The export menu was hidden due to the container size\",\r\n W2108: \"The browser does not support exporting images to {0} format.\",\r\n W2301: \"Invalid value range\"\r\n});\r\n","/**\r\n * DevExtreme (esm/viz/core/renderers/animation.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n requestAnimationFrame,\r\n cancelAnimationFrame\r\n} from \"../../../animation/frame\";\r\nvar noop = function() {};\r\nexport var easingFunctions = {\r\n easeOutCubic: function(pos, start, end) {\r\n return 1 === pos ? end : (1 - Math.pow(1 - pos, 3)) * (end - start) + +start\r\n },\r\n linear: function(pos, start, end) {\r\n return 1 === pos ? end : pos * (end - start) + +start\r\n }\r\n};\r\nexport var animationSvgStep = {\r\n segments: function(elem, params, progress, easing, currentParams) {\r\n var from = params.from;\r\n var to = params.to;\r\n var curSeg;\r\n var seg;\r\n var i;\r\n var j;\r\n var segments = [];\r\n for (i = 0; i < from.length; i++) {\r\n curSeg = from[i];\r\n seg = [curSeg[0]];\r\n if (curSeg.length > 1) {\r\n for (j = 1; j < curSeg.length; j++) {\r\n seg.push(easing(progress, curSeg[j], to[i][j]))\r\n }\r\n }\r\n segments.push(seg)\r\n }\r\n currentParams.segments = params.end && 1 === progress ? params.end : segments;\r\n elem.attr({\r\n segments: segments\r\n })\r\n },\r\n arc: function(elem, params, progress, easing) {\r\n var from = params.from;\r\n var to = params.to;\r\n var current = {};\r\n for (var i in from) {\r\n current[i] = easing(progress, from[i], to[i])\r\n }\r\n elem.attr(current)\r\n },\r\n transform: function(elem, params, progress, easing, currentParams) {\r\n var from = params.from;\r\n var to = params.to;\r\n var current = {};\r\n for (var i in from) {\r\n current[i] = currentParams[i] = easing(progress, from[i], to[i])\r\n }\r\n elem.attr(current)\r\n },\r\n base: function(elem, params, progress, easing, currentParams, attributeName) {\r\n var obj = {};\r\n obj[attributeName] = currentParams[attributeName] = easing(progress, params.from, params.to);\r\n elem.attr(obj)\r\n },\r\n _: noop,\r\n complete: function(element, currentSettings) {\r\n element.attr(currentSettings)\r\n }\r\n};\r\n\r\nfunction step(now) {\r\n var animateStep = this._animateStep;\r\n var attrName;\r\n this._progress = this._calcProgress(now);\r\n for (attrName in this.params) {\r\n var anim = animateStep[attrName] || animateStep.base;\r\n anim(this.element, this.params[attrName], this._progress, this._easing, this._currentParams, attrName)\r\n }\r\n this.options.step && this.options.step(this._easing(this._progress, 0, 1), this._progress);\r\n if (1 === this._progress) {\r\n return this.stop()\r\n }\r\n return true\r\n}\r\n\r\nfunction delayTick(now) {\r\n if (now - this._startTime >= this.delay) {\r\n this.tick = step\r\n }\r\n return true\r\n}\r\n\r\nfunction start(now) {\r\n this._startTime = now;\r\n this.tick = this.delay ? delayTick : step;\r\n return true\r\n}\r\n\r\nfunction Animation(element, params, options) {\r\n this._progress = 0;\r\n this.element = element;\r\n this.params = params;\r\n this.options = options;\r\n this.duration = options.partitionDuration ? options.duration * options.partitionDuration : options.duration;\r\n this.delay = options.delay && options.duration * options.delay || 0;\r\n this._animateStep = options.animateStep || animationSvgStep;\r\n this._easing = easingFunctions[options.easing] || easingFunctions.easeOutCubic;\r\n this._currentParams = {};\r\n this.tick = start\r\n}\r\nAnimation.prototype = {\r\n _calcProgress: function(now) {\r\n return Math.min(1, (now - this.delay - this._startTime) / this.duration)\r\n },\r\n stop: function(disableComplete) {\r\n var options = this.options;\r\n var animateStep = this._animateStep;\r\n this.stop = this.tick = noop;\r\n animateStep.complete && animateStep.complete(this.element, this._currentParams);\r\n options.complete && !disableComplete && options.complete()\r\n }\r\n};\r\nexport function AnimationController(element) {\r\n this._animationCount = 0;\r\n this._timerId = null;\r\n this._animations = {};\r\n this.element = element\r\n}\r\nAnimationController.prototype = {\r\n _loop: function() {\r\n var that = this;\r\n var animations = that._animations;\r\n var activeAnimation = 0;\r\n var now = (new Date).getTime();\r\n var an;\r\n var endAnimation = that._endAnimation;\r\n for (an in animations) {\r\n if (!animations[an].tick(now)) {\r\n delete animations[an]\r\n }\r\n activeAnimation++\r\n }\r\n if (0 === activeAnimation) {\r\n that.stop();\r\n that._endAnimationTimer = endAnimation && setTimeout((function() {\r\n if (0 === that._animationCount) {\r\n endAnimation();\r\n that._endAnimation = null\r\n }\r\n }));\r\n return\r\n }\r\n that._timerId = requestAnimationFrame.call(null, (function() {\r\n that._loop()\r\n }), that.element)\r\n },\r\n addAnimation: function(animation) {\r\n var that = this;\r\n that._animations[that._animationCount++] = animation;\r\n clearTimeout(that._endAnimationTimer);\r\n if (!that._timerId) {\r\n clearTimeout(that._startDelay);\r\n that._startDelay = setTimeout((function() {\r\n that._timerId = 1;\r\n that._loop()\r\n }), 0)\r\n }\r\n },\r\n animateElement: function(elem, params, options) {\r\n if (elem && params && options) {\r\n elem.animation && elem.animation.stop();\r\n this.addAnimation(elem.animation = new Animation(elem, params, options))\r\n }\r\n },\r\n onEndAnimation: function(endAnimation) {\r\n this._animationCount ? this._endAnimation = endAnimation : endAnimation()\r\n },\r\n dispose: function() {\r\n this.stop();\r\n this.element = null\r\n },\r\n stop: function() {\r\n this._animations = {};\r\n this._animationCount = 0;\r\n cancelAnimationFrame(this._timerId);\r\n clearTimeout(this._startDelay);\r\n clearTimeout(this._endAnimationTimer);\r\n this._timerId = null\r\n },\r\n lock: function() {\r\n var an;\r\n var animations = this._animations;\r\n var unstoppable;\r\n var hasUnstoppableInAnimations;\r\n for (an in animations) {\r\n unstoppable = animations[an].options.unstoppable;\r\n hasUnstoppableInAnimations = hasUnstoppableInAnimations || unstoppable;\r\n if (!unstoppable) {\r\n animations[an].stop(true);\r\n delete animations[an]\r\n }\r\n }!hasUnstoppableInAnimations && this.stop()\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/viz/core/renderers/renderer.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport $ from \"../../../core/renderer\";\r\nimport domAdapter from \"../../../core/dom_adapter\";\r\nimport {\r\n getWindow\r\n} from \"../../../core/utils/window\";\r\nimport callOnce from \"../../../core/utils/call_once\";\r\nimport eventsEngine from \"../../../events/core/events_engine\";\r\nimport browser from \"../../../core/utils/browser\";\r\nimport {\r\n getSvgMarkup\r\n} from \"../../../core/utils/svg\";\r\nimport {\r\n AnimationController\r\n} from \"./animation\";\r\nimport {\r\n normalizeBBox,\r\n rotateBBox,\r\n normalizeEnum\r\n} from \"../utils\";\r\nimport {\r\n isDefined\r\n} from \"../../../core/utils/type\";\r\nvar window = getWindow();\r\nvar {\r\n max: max,\r\n min: min,\r\n floor: floor,\r\n round: round,\r\n sin: sin,\r\n cos: cos,\r\n abs: abs,\r\n PI: PI\r\n} = Math;\r\nvar PI_DIV_180 = PI / 180;\r\nvar SHARPING_CORRECTION = .5;\r\nvar ARC_COORD_PREC = 5;\r\nvar pxAddingExceptions = {\r\n \"column-count\": true,\r\n \"fill-opacity\": true,\r\n \"flex-grow\": true,\r\n \"flex-shrink\": true,\r\n \"font-weight\": true,\r\n \"line-height\": true,\r\n opacity: true,\r\n order: true,\r\n orphans: true,\r\n widows: true,\r\n \"z-index\": true,\r\n zoom: true\r\n};\r\nvar KEY_TEXT = \"text\";\r\nvar KEY_STROKE = \"stroke\";\r\nvar KEY_STROKE_WIDTH = \"stroke-width\";\r\nvar KEY_STROKE_OPACITY = \"stroke-opacity\";\r\nvar KEY_FONT_SIZE = \"font-size\";\r\nvar KEY_FONT_STYLE = \"font-style\";\r\nvar KEY_FONT_WEIGHT = \"font-weight\";\r\nvar KEY_TEXT_DECORATION = \"text-decoration\";\r\nvar KEY_TEXTS_ALIGNMENT = \"textsAlignment\";\r\nvar NONE = \"none\";\r\nvar DEFAULT_FONT_SIZE = 12;\r\nvar ELLIPSIS = \"...\";\r\nvar objectCreate = function() {\r\n if (!Object.create) {\r\n return function(proto) {\r\n var F = function() {};\r\n F.prototype = proto;\r\n return new F\r\n }\r\n } else {\r\n return function(proto) {\r\n return Object.create(proto)\r\n }\r\n }\r\n}();\r\nvar DEFAULTS = {\r\n scaleX: 1,\r\n scaleY: 1,\r\n \"pointer-events\": null\r\n};\r\nvar getBackup = callOnce((function() {\r\n var backupContainer = domAdapter.createElement(\"div\");\r\n backupContainer.style.left = \"-9999px\";\r\n backupContainer.style.position = \"absolute\";\r\n return {\r\n backupContainer: backupContainer,\r\n backupCounter: 0\r\n }\r\n}));\r\n\r\nfunction backupRoot(root) {\r\n if (0 === getBackup().backupCounter) {\r\n domAdapter.getBody().appendChild(getBackup().backupContainer)\r\n }++getBackup().backupCounter;\r\n root.append({\r\n element: getBackup().backupContainer\r\n })\r\n}\r\n\r\nfunction restoreRoot(root, container) {\r\n root.append({\r\n element: container\r\n });\r\n --getBackup().backupCounter;\r\n if (0 === getBackup().backupCounter) {\r\n domAdapter.getBody().removeChild(getBackup().backupContainer)\r\n }\r\n}\r\nvar getNextDefsSvgId = function() {\r\n var numDefsSvgElements = 1;\r\n return function() {\r\n return \"DevExpress_\" + numDefsSvgElements++\r\n }\r\n}();\r\n\r\nfunction isObjectArgument(value) {\r\n return value && \"string\" !== typeof value\r\n}\r\n\r\nfunction createElement(tagName) {\r\n return domAdapter.createElementNS(\"http://www.w3.org/2000/svg\", tagName)\r\n}\r\nexport function getFuncIri(id, pathModified) {\r\n return null !== id ? \"url(\" + (pathModified ? window.location.href.split(\"#\")[0] : \"\") + \"#\" + id + \")\" : id\r\n}\r\n\r\nfunction extend(target, source) {\r\n var key;\r\n for (key in source) {\r\n target[key] = source[key]\r\n }\r\n return target\r\n}\r\n\r\nfunction roundValue(value, exp) {\r\n value = value.toString().split(\"e\");\r\n value = round(+(value[0] + \"e\" + (value[1] ? +value[1] + exp : exp)));\r\n value = value.toString().split(\"e\");\r\n return +(value[0] + \"e\" + (value[1] ? +value[1] - exp : -exp))\r\n}\r\n\r\nfunction getBoundingClientRect(element) {\r\n var box;\r\n try {\r\n box = element.getBoundingClientRect()\r\n } catch (e) {}\r\n return box || {\r\n left: 0,\r\n top: 0\r\n }\r\n}\r\nvar preserveAspectRatioMap = {\r\n full: NONE,\r\n lefttop: \"xMinYMin\",\r\n leftcenter: \"xMinYMid\",\r\n leftbottom: \"xMinYMax\",\r\n centertop: \"xMidYMin\",\r\n center: \"xMidYMid\",\r\n centerbottom: \"xMidYMax\",\r\n righttop: \"xMaxYMin\",\r\n rightcenter: \"xMaxYMid\",\r\n rightbottom: \"xMaxYMax\"\r\n};\r\nexport function processHatchingAttrs(element, attrs) {\r\n if (attrs.hatching && \"none\" !== normalizeEnum(attrs.hatching.direction)) {\r\n attrs = extend({}, attrs);\r\n attrs.fill = element._hatching = element.renderer.lockHatching(attrs.fill, attrs.hatching, element._hatching);\r\n delete attrs.hatching\r\n } else if (element._hatching) {\r\n element.renderer.releaseHatching(element._hatching);\r\n element._hatching = null\r\n }\r\n return attrs\r\n}\r\n\r\nfunction normalizeArcParams(x, y, innerR, outerR, startAngle, endAngle) {\r\n var isCircle;\r\n var noArc = true;\r\n var angleDiff = roundValue(endAngle, 3) - roundValue(startAngle, 3);\r\n if (angleDiff) {\r\n if (abs(angleDiff) % 360 === 0) {\r\n startAngle = 0;\r\n endAngle = 360;\r\n isCircle = true;\r\n endAngle -= .01\r\n }\r\n if (startAngle > 360) {\r\n startAngle %= 360\r\n }\r\n if (endAngle > 360) {\r\n endAngle %= 360\r\n }\r\n if (startAngle > endAngle) {\r\n startAngle -= 360\r\n }\r\n noArc = false\r\n }\r\n startAngle *= PI_DIV_180;\r\n endAngle *= PI_DIV_180;\r\n return [x, y, min(outerR, innerR), max(outerR, innerR), cos(startAngle), sin(startAngle), cos(endAngle), sin(endAngle), isCircle, floor(abs(endAngle - startAngle) / PI) % 2 ? \"1\" : \"0\", noArc]\r\n}\r\nvar buildArcPath = function(x, y, innerR, outerR, startAngleCos, startAngleSin, endAngleCos, endAngleSin, isCircle, longFlag) {\r\n return [\"M\", (x + outerR * startAngleCos).toFixed(ARC_COORD_PREC), (y - outerR * startAngleSin).toFixed(ARC_COORD_PREC), \"A\", outerR.toFixed(ARC_COORD_PREC), outerR.toFixed(ARC_COORD_PREC), 0, longFlag, 0, (x + outerR * endAngleCos).toFixed(ARC_COORD_PREC), (y - outerR * endAngleSin).toFixed(ARC_COORD_PREC), isCircle ? \"M\" : \"L\", (x + innerR * endAngleCos).toFixed(5), (y - innerR * endAngleSin).toFixed(ARC_COORD_PREC), \"A\", innerR.toFixed(ARC_COORD_PREC), innerR.toFixed(ARC_COORD_PREC), 0, longFlag, 1, (x + innerR * startAngleCos).toFixed(ARC_COORD_PREC), (y - innerR * startAngleSin).toFixed(ARC_COORD_PREC), \"Z\"].join(\" \")\r\n};\r\n\r\nfunction buildPathSegments(points, type) {\r\n var list = [\r\n [\"M\", 0, 0]\r\n ];\r\n switch (type) {\r\n case \"line\":\r\n list = buildLineSegments(points);\r\n break;\r\n case \"area\":\r\n list = buildLineSegments(points, true);\r\n break;\r\n case \"bezier\":\r\n list = buildCurveSegments(points);\r\n break;\r\n case \"bezierarea\":\r\n list = buildCurveSegments(points, true)\r\n }\r\n return list\r\n}\r\n\r\nfunction buildLineSegments(points, close) {\r\n return buildSegments(points, buildSimpleLineSegment, close)\r\n}\r\n\r\nfunction buildCurveSegments(points, close) {\r\n return buildSegments(points, buildSimpleCurveSegment, close)\r\n}\r\n\r\nfunction buildSegments(points, buildSimpleSegment, close) {\r\n var _points$;\r\n var i;\r\n var ii;\r\n var list = [];\r\n if (null !== (_points$ = points[0]) && void 0 !== _points$ && _points$.length) {\r\n for (i = 0, ii = points.length; i < ii; ++i) {\r\n buildSimpleSegment(points[i], close, list)\r\n }\r\n } else {\r\n buildSimpleSegment(points, close, list)\r\n }\r\n return list\r\n}\r\n\r\nfunction buildSimpleLineSegment(points, close, list) {\r\n var i = 0;\r\n var k0 = list.length;\r\n var k = k0;\r\n var ii = (points || []).length;\r\n if (ii) {\r\n if (void 0 !== points[0].x) {\r\n for (; i < ii;) {\r\n list[k++] = [\"L\", points[i].x, points[i++].y]\r\n }\r\n } else {\r\n for (; i < ii;) {\r\n list[k++] = [\"L\", points[i++], points[i++]]\r\n }\r\n }\r\n list[k0][0] = \"M\"\r\n } else {\r\n list[k] = [\"M\", 0, 0]\r\n }\r\n close && list.push([\"Z\"]);\r\n return list\r\n}\r\n\r\nfunction buildSimpleCurveSegment(points, close, list) {\r\n var i;\r\n var k = list.length;\r\n var ii = (points || []).length;\r\n if (ii) {\r\n if (void 0 !== points[0].x) {\r\n list[k++] = [\"M\", points[0].x, points[0].y];\r\n for (i = 1; i < ii;) {\r\n list[k++] = [\"C\", points[i].x, points[i++].y, points[i].x, points[i++].y, points[i].x, points[i++].y]\r\n }\r\n } else {\r\n list[k++] = [\"M\", points[0], points[1]];\r\n for (i = 2; i < ii;) {\r\n list[k++] = [\"C\", points[i++], points[i++], points[i++], points[i++], points[i++], points[i++]]\r\n }\r\n }\r\n } else {\r\n list[k] = [\"M\", 0, 0]\r\n }\r\n close && list.push([\"Z\"]);\r\n return list\r\n}\r\n\r\nfunction combinePathParam(segments) {\r\n var d = [];\r\n var k = 0;\r\n var i;\r\n var ii = segments.length;\r\n var segment;\r\n var j;\r\n var jj;\r\n for (i = 0; i < ii; ++i) {\r\n segment = segments[i];\r\n for (j = 0, jj = segment.length; j < jj; ++j) {\r\n d[k++] = segment[j]\r\n }\r\n }\r\n return d.join(\" \")\r\n}\r\n\r\nfunction compensateSegments(oldSegments, newSegments, type) {\r\n var oldLength = oldSegments.length;\r\n var newLength = newSegments.length;\r\n var i;\r\n var originalNewSegments;\r\n var makeEqualSegments = -1 !== type.indexOf(\"area\") ? makeEqualAreaSegments : makeEqualLineSegments;\r\n if (0 === oldLength) {\r\n for (i = 0; i < newLength; i++) {\r\n oldSegments.push(newSegments[i].slice(0))\r\n }\r\n } else if (oldLength < newLength) {\r\n makeEqualSegments(oldSegments, newSegments, type)\r\n } else if (oldLength > newLength) {\r\n originalNewSegments = newSegments.slice(0);\r\n makeEqualSegments(newSegments, oldSegments, type)\r\n }\r\n return originalNewSegments\r\n}\r\n\r\nfunction prepareConstSegment(constSeg, type) {\r\n var x = constSeg[constSeg.length - 2];\r\n var y = constSeg[constSeg.length - 1];\r\n switch (type) {\r\n case \"line\":\r\n case \"area\":\r\n constSeg[0] = \"L\";\r\n break;\r\n case \"bezier\":\r\n case \"bezierarea\":\r\n constSeg[0] = \"C\";\r\n constSeg[1] = constSeg[3] = constSeg[5] = x;\r\n constSeg[2] = constSeg[4] = constSeg[6] = y\r\n }\r\n}\r\n\r\nfunction makeEqualLineSegments(short, long, type) {\r\n var constSeg = short[short.length - 1].slice();\r\n var i = short.length;\r\n prepareConstSegment(constSeg, type);\r\n for (; i < long.length; i++) {\r\n short[i] = constSeg.slice(0)\r\n }\r\n}\r\n\r\nfunction makeEqualAreaSegments(short, long, type) {\r\n var i;\r\n var head;\r\n var shortLength = short.length;\r\n var longLength = long.length;\r\n var constsSeg1;\r\n var constsSeg2;\r\n if ((shortLength - 1) % 2 === 0 && (longLength - 1) % 2 === 0) {\r\n i = (shortLength - 1) / 2 - 1;\r\n head = short.slice(0, i + 1);\r\n constsSeg1 = head[head.length - 1].slice(0);\r\n constsSeg2 = short.slice(i + 1)[0].slice(0);\r\n prepareConstSegment(constsSeg1, type);\r\n prepareConstSegment(constsSeg2, type);\r\n for (var j = i; j < (longLength - 1) / 2 - 1; j++) {\r\n short.splice(j + 1, 0, constsSeg1);\r\n short.splice(j + 3, 0, constsSeg2)\r\n }\r\n }\r\n}\r\n\r\nfunction baseCss(that, styles) {\r\n var elemStyles = that._styles;\r\n var key;\r\n var value;\r\n styles = styles || {};\r\n for (key in styles) {\r\n value = styles[key];\r\n if (isDefined(value)) {\r\n value += \"number\" === typeof value && !pxAddingExceptions[key] ? \"px\" : \"\";\r\n elemStyles[key] = \"\" !== value ? value : null\r\n }\r\n }\r\n for (key in elemStyles) {\r\n value = elemStyles[key];\r\n if (value) {\r\n that.element.style[key] = value\r\n } else if (null === value) {\r\n that.element.style[key] = \"\"\r\n }\r\n }\r\n return that\r\n}\r\n\r\nfunction fixFuncIri(wrapper, attribute) {\r\n var element = wrapper.element;\r\n var id = wrapper.attr(attribute);\r\n if (id && -1 !== id.indexOf(\"DevExpress\")) {\r\n element.removeAttribute(attribute);\r\n element.setAttribute(attribute, getFuncIri(id, wrapper.renderer.pathModified))\r\n }\r\n}\r\n\r\nfunction baseAttr(that, attrs) {\r\n attrs = attrs || {};\r\n var settings = that._settings;\r\n var attributes = {};\r\n var key;\r\n var value;\r\n var elem = that.element;\r\n var renderer = that.renderer;\r\n var rtl = renderer.rtl;\r\n var hasTransformations;\r\n var recalculateDashStyle;\r\n var sw;\r\n var i;\r\n if (!isObjectArgument(attrs)) {\r\n if (attrs in settings) {\r\n return settings[attrs]\r\n }\r\n if (attrs in DEFAULTS) {\r\n return DEFAULTS[attrs]\r\n }\r\n return 0\r\n }\r\n extend(attributes, attrs);\r\n for (key in attributes) {\r\n value = attributes[key];\r\n if (void 0 === value) {\r\n continue\r\n }\r\n settings[key] = value;\r\n if (\"align\" === key) {\r\n key = \"text-anchor\";\r\n value = {\r\n left: rtl ? \"end\" : \"start\",\r\n center: \"middle\",\r\n right: rtl ? \"start\" : \"end\"\r\n } [value] || null\r\n } else if (\"dashStyle\" === key) {\r\n recalculateDashStyle = true;\r\n continue\r\n } else if (key === KEY_STROKE_WIDTH) {\r\n recalculateDashStyle = true\r\n } else if (value && (\"fill\" === key || \"clip-path\" === key || \"filter\" === key) && 0 === value.indexOf(\"DevExpress\")) {\r\n that._addFixIRICallback();\r\n value = getFuncIri(value, renderer.pathModified)\r\n } else if (/^(translate(X|Y)|rotate[XY]?|scale(X|Y)|sharp|sharpDirection)$/i.test(key)) {\r\n hasTransformations = true;\r\n continue\r\n } else if (/^(x|y|d)$/i.test(key)) {\r\n hasTransformations = true\r\n }\r\n if (null === value) {\r\n elem.removeAttribute(key)\r\n } else {\r\n elem.setAttribute(key, value)\r\n }\r\n }\r\n if (recalculateDashStyle && \"dashStyle\" in settings) {\r\n value = settings.dashStyle;\r\n sw = (\"_originalSW\" in that ? that._originalSW : settings[KEY_STROKE_WIDTH]) || 1;\r\n key = \"stroke-dasharray\";\r\n value = null === value ? \"\" : normalizeEnum(value);\r\n if (\"\" === value || \"solid\" === value || value === NONE) {\r\n that.element.removeAttribute(key)\r\n } else {\r\n value = value.replace(/longdash/g, \"8,3,\").replace(/dash/g, \"4,3,\").replace(/dot/g, \"1,3,\").replace(/,$/, \"\").split(\",\");\r\n i = value.length;\r\n while (i--) {\r\n value[i] = parseInt(value[i]) * sw\r\n }\r\n that.element.setAttribute(key, value.join(\",\"))\r\n }\r\n }\r\n if (hasTransformations) {\r\n that._applyTransformation()\r\n }\r\n return that\r\n}\r\n\r\nfunction pathAttr(attrs) {\r\n var segments;\r\n if (isObjectArgument(attrs)) {\r\n attrs = extend({}, attrs);\r\n segments = attrs.segments;\r\n if (\"points\" in attrs) {\r\n segments = buildPathSegments(attrs.points, this.type);\r\n delete attrs.points\r\n }\r\n if (segments) {\r\n attrs.d = combinePathParam(segments);\r\n this.segments = segments;\r\n delete attrs.segments\r\n }\r\n }\r\n return baseAttr(this, attrs)\r\n}\r\n\r\nfunction arcAttr(attrs) {\r\n var settings = this._settings;\r\n var x;\r\n var y;\r\n var innerRadius;\r\n var outerRadius;\r\n var startAngle;\r\n var endAngle;\r\n if (isObjectArgument(attrs)) {\r\n attrs = extend({}, attrs);\r\n if (\"x\" in attrs || \"y\" in attrs || \"innerRadius\" in attrs || \"outerRadius\" in attrs || \"startAngle\" in attrs || \"endAngle\" in attrs) {\r\n settings.x = x = \"x\" in attrs ? attrs.x : settings.x;\r\n delete attrs.x;\r\n settings.y = y = \"y\" in attrs ? attrs.y : settings.y;\r\n delete attrs.y;\r\n settings.innerRadius = innerRadius = \"innerRadius\" in attrs ? attrs.innerRadius : settings.innerRadius;\r\n delete attrs.innerRadius;\r\n settings.outerRadius = outerRadius = \"outerRadius\" in attrs ? attrs.outerRadius : settings.outerRadius;\r\n delete attrs.outerRadius;\r\n settings.startAngle = startAngle = \"startAngle\" in attrs ? attrs.startAngle : settings.startAngle;\r\n delete attrs.startAngle;\r\n settings.endAngle = endAngle = \"endAngle\" in attrs ? attrs.endAngle : settings.endAngle;\r\n delete attrs.endAngle;\r\n attrs.d = buildArcPath.apply(null, normalizeArcParams(x, y, innerRadius, outerRadius, startAngle, endAngle))\r\n }\r\n }\r\n return baseAttr(this, attrs)\r\n}\r\n\r\nfunction rectAttr(attrs) {\r\n var x;\r\n var y;\r\n var width;\r\n var height;\r\n var sw;\r\n var maxSW;\r\n var newSW;\r\n if (isObjectArgument(attrs)) {\r\n attrs = extend({}, attrs);\r\n if (void 0 !== attrs.x || void 0 !== attrs.y || void 0 !== attrs.width || void 0 !== attrs.height || void 0 !== attrs[KEY_STROKE_WIDTH]) {\r\n void 0 !== attrs.x ? x = this._originalX = attrs.x : x = this._originalX || 0;\r\n void 0 !== attrs.y ? y = this._originalY = attrs.y : y = this._originalY || 0;\r\n void 0 !== attrs.width ? width = this._originalWidth = attrs.width : width = this._originalWidth || 0;\r\n void 0 !== attrs.height ? height = this._originalHeight = attrs.height : height = this._originalHeight || 0;\r\n void 0 !== attrs[KEY_STROKE_WIDTH] ? sw = this._originalSW = attrs[KEY_STROKE_WIDTH] : sw = this._originalSW;\r\n maxSW = ~~((width < height ? width : height) / 2);\r\n newSW = (sw || 0) < maxSW ? sw || 0 : maxSW;\r\n attrs.x = x + newSW / 2;\r\n attrs.y = y + newSW / 2;\r\n attrs.width = width - newSW;\r\n attrs.height = height - newSW;\r\n ((sw || 0) !== newSW || !(0 === newSW && void 0 === sw)) && (attrs[KEY_STROKE_WIDTH] = newSW)\r\n }\r\n if (\"sharp\" in attrs) {\r\n delete attrs.sharp\r\n }\r\n }\r\n return baseAttr(this, attrs)\r\n}\r\n\r\nfunction textAttr(attrs) {\r\n var isResetRequired;\r\n if (!isObjectArgument(attrs)) {\r\n return baseAttr(this, attrs)\r\n }\r\n attrs = extend({}, attrs);\r\n var settings = this._settings;\r\n var wasStroked = isDefined(settings[KEY_STROKE]) && isDefined(settings[KEY_STROKE_WIDTH]);\r\n if (void 0 !== attrs[KEY_TEXT]) {\r\n settings[KEY_TEXT] = attrs[KEY_TEXT];\r\n delete attrs[KEY_TEXT];\r\n isResetRequired = true\r\n }\r\n if (void 0 !== attrs[KEY_STROKE]) {\r\n settings[KEY_STROKE] = attrs[KEY_STROKE];\r\n delete attrs[KEY_STROKE]\r\n }\r\n if (void 0 !== attrs[KEY_STROKE_WIDTH]) {\r\n settings[KEY_STROKE_WIDTH] = attrs[KEY_STROKE_WIDTH];\r\n delete attrs[KEY_STROKE_WIDTH]\r\n }\r\n if (void 0 !== attrs[KEY_STROKE_OPACITY]) {\r\n settings[KEY_STROKE_OPACITY] = attrs[KEY_STROKE_OPACITY];\r\n delete attrs[KEY_STROKE_OPACITY]\r\n }\r\n if (void 0 !== attrs[KEY_TEXTS_ALIGNMENT]) {\r\n alignTextNodes(this, attrs[KEY_TEXTS_ALIGNMENT]);\r\n delete attrs[KEY_TEXTS_ALIGNMENT]\r\n }\r\n var isStroked = isDefined(settings[KEY_STROKE]) && isDefined(settings[KEY_STROKE_WIDTH]);\r\n baseAttr(this, attrs);\r\n isResetRequired = isResetRequired || isStroked !== wasStroked && settings[KEY_TEXT];\r\n if (isResetRequired) {\r\n createTextNodes(this, settings.text, isStroked);\r\n this._hasEllipsis = false\r\n }\r\n if (isResetRequired || void 0 !== attrs.x || void 0 !== attrs.y) {\r\n locateTextNodes(this)\r\n }\r\n if (isStroked) {\r\n strokeTextNodes(this)\r\n }\r\n return this\r\n}\r\n\r\nfunction textCss(styles) {\r\n styles = styles || {};\r\n baseCss(this, styles);\r\n if (KEY_FONT_SIZE in styles) {\r\n locateTextNodes(this)\r\n }\r\n return this\r\n}\r\n\r\nfunction orderHtmlTree(list, line, node, parentStyle, parentClassName) {\r\n var style;\r\n var realStyle;\r\n var i;\r\n var ii;\r\n var nodes;\r\n if (void 0 !== node.wholeText) {\r\n list.push({\r\n value: node.wholeText,\r\n style: parentStyle,\r\n className: parentClassName,\r\n line: line,\r\n height: parentStyle[KEY_FONT_SIZE] || 0\r\n })\r\n } else if (\"BR\" === node.tagName) {\r\n ++line\r\n } else if (domAdapter.isElementNode(node)) {\r\n extend(style = {}, parentStyle);\r\n switch (node.tagName) {\r\n case \"B\":\r\n case \"STRONG\":\r\n style[KEY_FONT_WEIGHT] = \"bold\";\r\n break;\r\n case \"I\":\r\n case \"EM\":\r\n style[KEY_FONT_STYLE] = \"italic\";\r\n break;\r\n case \"U\":\r\n style[KEY_TEXT_DECORATION] = \"underline\"\r\n }\r\n realStyle = node.style;\r\n realStyle.color && (style.fill = realStyle.color);\r\n realStyle.fontSize && (style[KEY_FONT_SIZE] = realStyle.fontSize);\r\n realStyle.fontStyle && (style[KEY_FONT_STYLE] = realStyle.fontStyle);\r\n realStyle.fontWeight && (style[KEY_FONT_WEIGHT] = realStyle.fontWeight);\r\n realStyle.textDecoration && (style[KEY_TEXT_DECORATION] = realStyle.textDecoration);\r\n for (i = 0, nodes = node.childNodes, ii = nodes.length; i < ii; ++i) {\r\n line = orderHtmlTree(list, line, nodes[i], style, node.className || parentClassName)\r\n }\r\n }\r\n return line\r\n}\r\n\r\nfunction adjustLineHeights(items) {\r\n var i;\r\n var ii;\r\n var currentItem = items[0];\r\n var item;\r\n for (i = 1, ii = items.length; i < ii; ++i) {\r\n item = items[i];\r\n if (item.line === currentItem.line) {\r\n currentItem.height = maxLengthFontSize(currentItem.height, item.height);\r\n currentItem.inherits = currentItem.inherits || 0 === parseFloat(item.height);\r\n item.height = NaN\r\n } else {\r\n currentItem = item\r\n }\r\n }\r\n}\r\n\r\nfunction removeExtraAttrs(html) {\r\n var findStyleAndClassAttrs = /(style|class)\\s*=\\s*([\"'])(?:(?!\\2).)*\\2\\s?/gi;\r\n return html.replace(/(?:(<[a-z0-9]+\\s*))([\\s\\S]*?)(>|\\/>)/gi, (function(allTagAttrs, p1, p2, p3) {\r\n p2 = (p2 && p2.match(findStyleAndClassAttrs) || []).map((function(str) {\r\n return str\r\n })).join(\" \");\r\n return p1 + p2 + p3\r\n }))\r\n}\r\n\r\nfunction parseHTML(text) {\r\n var items = [];\r\n var div = domAdapter.createElement(\"div\");\r\n div.innerHTML = text.replace(/\\r/g, \"\").replace(/\\n/g, \"
\");\r\n orderHtmlTree(items, 0, div, {}, \"\");\r\n adjustLineHeights(items);\r\n return items\r\n}\r\n\r\nfunction parseMultiline(text) {\r\n var texts = text.replace(/\\r/g, \"\").split(/\\n/g);\r\n var i = 0;\r\n var items = [];\r\n for (; i < texts.length; i++) {\r\n items.push({\r\n value: texts[i].trim(),\r\n height: 0,\r\n line: i\r\n })\r\n }\r\n return items\r\n}\r\n\r\nfunction createTspans(items, element, fieldName) {\r\n var i;\r\n var ii;\r\n var item;\r\n for (i = 0, ii = items.length; i < ii; ++i) {\r\n item = items[i];\r\n item[fieldName] = createElement(\"tspan\");\r\n item[fieldName].appendChild(domAdapter.createTextNode(item.value));\r\n item.style && baseCss({\r\n element: item[fieldName],\r\n _styles: {}\r\n }, item.style);\r\n item.className && item[fieldName].setAttribute(\"class\", item.className);\r\n element.appendChild(item[fieldName])\r\n }\r\n}\r\n\r\nfunction restoreText() {\r\n if (this._hasEllipsis) {\r\n this.attr({\r\n text: this._settings.text\r\n })\r\n }\r\n}\r\n\r\nfunction applyEllipsis(maxWidth) {\r\n var lines;\r\n var hasEllipsis = false;\r\n var i;\r\n var ii;\r\n var lineParts;\r\n var j;\r\n var jj;\r\n var text;\r\n restoreText.call(this);\r\n var ellipsis = this.renderer.text(ELLIPSIS).attr(this._styles).append(this.renderer.root);\r\n var ellipsisWidth = ellipsis.getBBox().width;\r\n if (this._getElementBBox().width > maxWidth) {\r\n if (maxWidth - ellipsisWidth < 0) {\r\n maxWidth = 0\r\n } else {\r\n maxWidth -= ellipsisWidth\r\n }\r\n lines = prepareLines(this.element, this._texts, maxWidth);\r\n for (i = 0, ii = lines.length; i < ii; ++i) {\r\n lineParts = lines[i].parts;\r\n if (1 === lines[i].commonLength) {\r\n continue\r\n }\r\n for (j = 0, jj = lineParts.length; j < jj; ++j) {\r\n text = lineParts[j];\r\n if (isDefined(text.endIndex)) {\r\n setNewText(text, text.endIndex);\r\n hasEllipsis = true\r\n } else if (text.startBox > maxWidth) {\r\n removeTextSpan(text)\r\n }\r\n }\r\n }\r\n }\r\n ellipsis.remove();\r\n this._hasEllipsis = hasEllipsis;\r\n return hasEllipsis\r\n}\r\n\r\nfunction cloneAndRemoveAttrs(node) {\r\n var clone;\r\n if (node) {\r\n clone = node.cloneNode();\r\n clone.removeAttribute(\"y\");\r\n clone.removeAttribute(\"x\")\r\n }\r\n return clone || node\r\n}\r\n\r\nfunction detachTitleElements(element) {\r\n var titleElements = domAdapter.querySelectorAll(element, \"title\");\r\n for (var i = 0; i < titleElements.length; i++) {\r\n element.removeChild(titleElements[i])\r\n }\r\n return titleElements\r\n}\r\n\r\nfunction detachAndStoreTitleElements(element) {\r\n var titleElements = detachTitleElements(element);\r\n return () => {\r\n for (var i = 0; i < titleElements.length; i++) {\r\n element.appendChild(titleElements[i])\r\n }\r\n }\r\n}\r\n\r\nfunction setMaxSize(maxWidth, maxHeight) {\r\n var options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\r\n var that = this;\r\n var lines = [];\r\n var textChanged = false;\r\n var textIsEmpty = false;\r\n var ellipsisMaxWidth = maxWidth;\r\n restoreText.call(that);\r\n var restoreTitleElement = detachAndStoreTitleElements(this.element);\r\n var ellipsis = that.renderer.text(ELLIPSIS).attr(that._styles).append(that.renderer.root);\r\n var ellipsisWidth = ellipsis.getBBox().width;\r\n var {\r\n width: width,\r\n height: height\r\n } = that._getElementBBox();\r\n if ((width || height) && (width > maxWidth || maxHeight && height > maxHeight)) {\r\n if (maxWidth - ellipsisWidth < 0) {\r\n ellipsisMaxWidth = 0\r\n } else {\r\n ellipsisMaxWidth -= ellipsisWidth\r\n }\r\n lines = applyOverflowRules(that.element, that._texts, maxWidth, ellipsisMaxWidth, options);\r\n lines = setMaxHeight(lines, ellipsisMaxWidth, options, maxHeight, parseFloat(this._getLineHeight()));\r\n this._texts = lines.reduce((texts, line) => texts.concat(line.parts), []).filter(t => \"\" !== t.value).map(t => {\r\n t.stroke && t.tspan.parentNode.appendChild(t.stroke);\r\n return t\r\n }).map(t => {\r\n t.tspan.parentNode.appendChild(t.tspan);\r\n return t\r\n });\r\n !this._texts.length && (this._texts = null);\r\n textChanged = true;\r\n if (this._texts) {\r\n locateTextNodes(this)\r\n } else {\r\n this.element.textContent = \"\";\r\n textIsEmpty = true\r\n }\r\n }\r\n ellipsis.remove();\r\n that._hasEllipsis = textChanged;\r\n restoreTitleElement();\r\n return {\r\n rowCount: lines.length,\r\n textChanged: textChanged,\r\n textIsEmpty: textIsEmpty\r\n }\r\n}\r\n\r\nfunction getIndexForEllipsis(text, maxWidth, startBox, endBox) {\r\n var k;\r\n var kk;\r\n if (startBox <= maxWidth && endBox > maxWidth) {\r\n for (k = 1, kk = text.value.length; k <= kk; ++k) {\r\n if (startBox + text.tspan.getSubStringLength(0, k) > maxWidth) {\r\n return k - 1\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction getTextWidth(text) {\r\n return text.value.length ? text.tspan.getSubStringLength(0, text.value.length) : 0\r\n}\r\n\r\nfunction prepareLines(element, texts, maxWidth) {\r\n var lines = [];\r\n var i;\r\n var ii;\r\n var text;\r\n var startBox;\r\n var endBox;\r\n if (texts) {\r\n for (i = 0, ii = texts.length; i < ii; ++i) {\r\n text = texts[i];\r\n if (!lines[text.line]) {\r\n text.startBox = startBox = 0;\r\n lines.push({\r\n commonLength: text.value.length,\r\n parts: [text]\r\n })\r\n } else {\r\n text.startBox = startBox;\r\n lines[text.line].parts.push(text);\r\n lines[text.line].commonLength += text.value.length\r\n }\r\n endBox = startBox + text.tspan.getSubStringLength(0, text.value.length);\r\n text.endIndex = getIndexForEllipsis(text, maxWidth, startBox, endBox);\r\n startBox = endBox\r\n }\r\n } else {\r\n text = {\r\n value: element.textContent,\r\n tspan: element\r\n };\r\n text.startBox = startBox = 0;\r\n endBox = startBox + getTextWidth(text);\r\n text.endIndex = getIndexForEllipsis(text, maxWidth, startBox, endBox);\r\n lines = [{\r\n commonLength: element.textContent.length,\r\n parts: [text]\r\n }]\r\n }\r\n return lines\r\n}\r\n\r\nfunction getSpaceBreakIndex(text, maxWidth) {\r\n var initialIndices = text.startBox > 0 ? [0] : [];\r\n var spaceIndices = text.value.split(\"\").reduce((indices, char, index) => {\r\n if (\" \" === char) {\r\n indices.push(index)\r\n }\r\n return indices\r\n }, initialIndices);\r\n var spaceIndex = 0;\r\n while (void 0 !== spaceIndices[spaceIndex + 1] && text.startBox + text.tspan.getSubStringLength(0, spaceIndices[spaceIndex + 1]) < maxWidth) {\r\n spaceIndex++\r\n }\r\n return spaceIndices[spaceIndex]\r\n}\r\n\r\nfunction getWordBreakIndex(text, maxWidth) {\r\n for (var i = 0; i < text.value.length - 1; i++) {\r\n if (text.startBox + text.tspan.getSubStringLength(0, i + 1) > maxWidth) {\r\n return i\r\n }\r\n }\r\n}\r\n\r\nfunction getEllipsisString(ellipsisMaxWidth, _ref) {\r\n var {\r\n hideOverflowEllipsis: hideOverflowEllipsis\r\n } = _ref;\r\n return hideOverflowEllipsis && 0 === ellipsisMaxWidth ? \"\" : ELLIPSIS\r\n}\r\n\r\nfunction setEllipsis(text, ellipsisMaxWidth, options) {\r\n var ellipsis = getEllipsisString(ellipsisMaxWidth, options);\r\n if (text.value.length && text.tspan.parentNode) {\r\n for (var i = text.value.length - 1; i >= 1; i--) {\r\n if (text.startBox + text.tspan.getSubStringLength(0, i) < ellipsisMaxWidth) {\r\n setNewText(text, i, ellipsis);\r\n break\r\n } else if (1 === i) {\r\n setNewText(text, 0, ellipsis)\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction wordWrap(text, maxWidth, ellipsisMaxWidth, options, lastStepBreakIndex) {\r\n var wholeText = text.value;\r\n var breakIndex;\r\n if (\"none\" !== options.wordWrap) {\r\n breakIndex = \"normal\" === options.wordWrap ? getSpaceBreakIndex(text, maxWidth) : getWordBreakIndex(text, maxWidth)\r\n }\r\n var restLines = [];\r\n var restText;\r\n if (isFinite(breakIndex) && !(0 === lastStepBreakIndex && 0 === breakIndex)) {\r\n setNewText(text, breakIndex, \"\");\r\n var newTextOffset = \" \" === wholeText[breakIndex] ? 1 : 0;\r\n var restString = wholeText.slice(breakIndex + newTextOffset);\r\n if (restString.length) {\r\n var restTspan = cloneAndRemoveAttrs(text.tspan);\r\n restTspan.textContent = restString;\r\n text.tspan.parentNode.appendChild(restTspan);\r\n restText = extend(extend({}, text), {\r\n value: restString,\r\n startBox: 0,\r\n height: 0,\r\n tspan: restTspan,\r\n stroke: cloneAndRemoveAttrs(text.stroke),\r\n endBox: restTspan.getSubStringLength(0, restString.length)\r\n });\r\n restText.stroke && (restText.stroke.textContent = restString);\r\n if (restText.endBox > maxWidth) {\r\n restLines = wordWrap(restText, maxWidth, ellipsisMaxWidth, options, breakIndex);\r\n if (!restLines.length) {\r\n return []\r\n }\r\n }\r\n }\r\n }\r\n if (text.value.length) {\r\n if (\"ellipsis\" === options.textOverflow && text.tspan.getSubStringLength(0, text.value.length) > maxWidth) {\r\n setEllipsis(text, ellipsisMaxWidth, options)\r\n }\r\n if (\"hide\" === options.textOverflow && text.tspan.getSubStringLength(0, text.value.length) > maxWidth) {\r\n return []\r\n }\r\n } else {\r\n text.tspan.parentNode.removeChild(text.tspan)\r\n }\r\n var parts = [];\r\n if (restText) {\r\n parts.push(restText)\r\n }\r\n return [{\r\n commonLength: wholeText.length,\r\n parts: parts\r\n }].concat(restLines)\r\n}\r\n\r\nfunction calculateLineHeight(line, lineHeight) {\r\n return line.parts.reduce((height, text) => max(height, getItemLineHeight(text, lineHeight)), 0)\r\n}\r\n\r\nfunction setMaxHeight(lines, ellipsisMaxWidth, options, maxHeight, lineHeight) {\r\n var textOverflow = options.textOverflow;\r\n if (!isFinite(maxHeight) || 0 === Number(maxHeight) || \"none\" === textOverflow) {\r\n return lines\r\n }\r\n var result = lines.reduce((_ref2, l, index, arr) => {\r\n var [lines, commonHeight] = _ref2;\r\n var height = calculateLineHeight(l, lineHeight);\r\n commonHeight += height;\r\n if (commonHeight < maxHeight) {\r\n lines.push(l)\r\n } else {\r\n l.parts.forEach(item => {\r\n removeTextSpan(item)\r\n });\r\n if (\"ellipsis\" === textOverflow) {\r\n var prevLine = arr[index - 1];\r\n if (prevLine) {\r\n var text = prevLine.parts[prevLine.parts.length - 1];\r\n if (!text.hasEllipsis) {\r\n if (0 === ellipsisMaxWidth || text.endBox < ellipsisMaxWidth) {\r\n setNewText(text, text.value.length, getEllipsisString(ellipsisMaxWidth, options))\r\n } else {\r\n setEllipsis(text, ellipsisMaxWidth, options)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return [lines, commonHeight]\r\n }, [\r\n [], 0\r\n ]);\r\n if (\"hide\" === textOverflow && result[1] > maxHeight) {\r\n result[0].forEach(l => {\r\n l.parts.forEach(item => {\r\n removeTextSpan(item)\r\n })\r\n });\r\n return []\r\n }\r\n return result[0]\r\n}\r\n\r\nfunction applyOverflowRules(element, texts, maxWidth, ellipsisMaxWidth, options) {\r\n if (!texts) {\r\n var textValue = element.textContent;\r\n var text = {\r\n value: textValue,\r\n height: 0,\r\n line: 0\r\n };\r\n element.textContent = \"\";\r\n createTspans([text], element, \"tspan\");\r\n texts = [text]\r\n }\r\n return texts.reduce((_ref3, text) => {\r\n var [lines, startBox, endBox, stop, lineNumber] = _ref3;\r\n var line = lines[lines.length - 1];\r\n if (stop) {\r\n return [lines, startBox, endBox, stop]\r\n }\r\n if (!line || text.line !== lineNumber) {\r\n text.startBox = startBox = 0;\r\n lines.push({\r\n commonLength: text.value.length,\r\n parts: [text]\r\n })\r\n } else {\r\n text.startBox = startBox;\r\n if (startBox > ellipsisMaxWidth && \"none\" === options.wordWrap && \"ellipsis\" === options.textOverflow) {\r\n removeTextSpan(text);\r\n return [lines, startBox, endBox, stop, lineNumber]\r\n }\r\n line.parts.push(text);\r\n line.commonLength += text.value.length\r\n }\r\n text.endBox = endBox = startBox + getTextWidth(text);\r\n startBox = endBox;\r\n if (isDefined(maxWidth) && endBox > maxWidth) {\r\n var wordWrapLines = wordWrap(text, maxWidth, ellipsisMaxWidth, options);\r\n if (!wordWrapLines.length) {\r\n lines = [];\r\n stop = true\r\n } else {\r\n lines = lines.concat(wordWrapLines.filter(l => l.parts.length > 0))\r\n }\r\n }\r\n return [lines, startBox, endBox, stop, text.line]\r\n }, [\r\n [], 0, 0, false, 0\r\n ])[0]\r\n}\r\n\r\nfunction setNewText(text, index) {\r\n var insertString = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : ELLIPSIS;\r\n var newText = text.value.substr(0, index) + insertString;\r\n text.value = text.tspan.textContent = newText;\r\n text.stroke && (text.stroke.textContent = newText);\r\n if (insertString === ELLIPSIS) {\r\n text.hasEllipsis = true\r\n }\r\n}\r\n\r\nfunction removeTextSpan(text) {\r\n text.tspan.parentNode && text.tspan.parentNode.removeChild(text.tspan);\r\n text.stroke && text.stroke.parentNode && text.stroke.parentNode.removeChild(text.stroke)\r\n}\r\n\r\nfunction createTextNodes(wrapper, text, isStroked) {\r\n var items;\r\n var parsedHtml;\r\n wrapper._texts = null;\r\n wrapper.clear();\r\n if (null === text) {\r\n return\r\n }\r\n text = \"\" + text;\r\n if (!wrapper.renderer.encodeHtml && (/<[a-z][\\s\\S]*>/i.test(text) || -1 !== text.indexOf(\"&\"))) {\r\n parsedHtml = removeExtraAttrs(text);\r\n items = parseHTML(parsedHtml)\r\n } else if (/\\n/g.test(text)) {\r\n items = parseMultiline(text)\r\n } else if (isStroked) {\r\n items = [{\r\n value: text.trim(),\r\n height: 0\r\n }]\r\n }\r\n if (items) {\r\n if (items.length) {\r\n wrapper._texts = items;\r\n if (isStroked) {\r\n createTspans(items, wrapper.element, KEY_STROKE)\r\n }\r\n createTspans(items, wrapper.element, \"tspan\")\r\n }\r\n } else {\r\n wrapper.element.appendChild(domAdapter.createTextNode(text))\r\n }\r\n}\r\n\r\nfunction setTextNodeAttribute(item, name, value) {\r\n item.tspan.setAttribute(name, value);\r\n item.stroke && item.stroke.setAttribute(name, value)\r\n}\r\n\r\nfunction getItemLineHeight(item, defaultValue) {\r\n return item.inherits ? maxLengthFontSize(item.height, defaultValue) : item.height || defaultValue\r\n}\r\n\r\nfunction locateTextNodes(wrapper) {\r\n if (!wrapper._texts) {\r\n return\r\n }\r\n var items = wrapper._texts;\r\n var x = wrapper._settings.x;\r\n var lineHeight = wrapper._getLineHeight();\r\n var i;\r\n var ii;\r\n var item = items[0];\r\n setTextNodeAttribute(item, \"x\", x);\r\n setTextNodeAttribute(item, \"y\", wrapper._settings.y);\r\n for (i = 1, ii = items.length; i < ii; ++i) {\r\n item = items[i];\r\n if (parseFloat(item.height) >= 0) {\r\n setTextNodeAttribute(item, \"x\", x);\r\n var height = getItemLineHeight(item, lineHeight);\r\n setTextNodeAttribute(item, \"dy\", height)\r\n }\r\n }\r\n}\r\n\r\nfunction alignTextNodes(wrapper, alignment) {\r\n if (!wrapper._texts || \"center\" === alignment) {\r\n return\r\n }\r\n var items = wrapper._texts;\r\n var direction = \"left\" === alignment ? -1 : 1;\r\n var maxTextWidth = Math.max.apply(Math, items.map(t => getTextWidth(t)));\r\n for (var i = 0; i < items.length; i++) {\r\n var item = items[i];\r\n var textWidth = getTextWidth(item);\r\n if (0 !== maxTextWidth && maxTextWidth !== textWidth) {\r\n setTextNodeAttribute(item, \"dx\", direction * round((maxTextWidth - textWidth) / 2 * 10) / 10)\r\n }\r\n }\r\n}\r\n\r\nfunction maxLengthFontSize(fontSize1, fontSize2) {\r\n var parsedHeight1 = parseFloat(fontSize1);\r\n var parsedHeight2 = parseFloat(fontSize2);\r\n var height1 = parsedHeight1 || DEFAULT_FONT_SIZE;\r\n var height2 = parsedHeight2 || DEFAULT_FONT_SIZE;\r\n return height1 > height2 ? !isNaN(parsedHeight1) ? fontSize1 : height1 : !isNaN(parsedHeight2) ? fontSize2 : height2\r\n}\r\n\r\nfunction strokeTextNodes(wrapper) {\r\n if (!wrapper._texts) {\r\n return\r\n }\r\n var items = wrapper._texts;\r\n var stroke = wrapper._settings[KEY_STROKE];\r\n var strokeWidth = wrapper._settings[KEY_STROKE_WIDTH];\r\n var strokeOpacity = wrapper._settings[KEY_STROKE_OPACITY] || 1;\r\n var tspan;\r\n var i;\r\n var ii;\r\n for (i = 0, ii = items.length; i < ii; ++i) {\r\n tspan = items[i].stroke;\r\n tspan.setAttribute(KEY_STROKE, stroke);\r\n tspan.setAttribute(KEY_STROKE_WIDTH, strokeWidth);\r\n tspan.setAttribute(KEY_STROKE_OPACITY, strokeOpacity);\r\n tspan.setAttribute(\"stroke-linejoin\", \"round\")\r\n }\r\n}\r\n\r\nfunction baseAnimate(that, params, options, complete) {\r\n options = options || {};\r\n var key;\r\n var value;\r\n var renderer = that.renderer;\r\n var settings = that._settings;\r\n var animationParams = {};\r\n var defaults = {\r\n translateX: 0,\r\n translateY: 0,\r\n scaleX: 1,\r\n scaleY: 1,\r\n rotate: 0,\r\n rotateX: 0,\r\n rotateY: 0\r\n };\r\n if (complete) {\r\n options.complete = complete\r\n }\r\n if (renderer.animationEnabled()) {\r\n for (key in params) {\r\n value = params[key];\r\n if (/^(translate(X|Y)|rotate[XY]?|scale(X|Y))$/i.test(key)) {\r\n animationParams.transform = animationParams.transform || {\r\n from: {},\r\n to: {}\r\n };\r\n animationParams.transform.from[key] = key in settings ? Number(settings[key].toFixed(3)) : defaults[key];\r\n animationParams.transform.to[key] = value\r\n } else if (\"arc\" === key || \"segments\" === key) {\r\n animationParams[key] = value\r\n } else {\r\n animationParams[key] = {\r\n from: key in settings ? settings[key] : parseFloat(that.element.getAttribute(key) || 0),\r\n to: value\r\n }\r\n }\r\n }\r\n renderer.animateElement(that, animationParams, extend(extend({}, renderer._animation), options))\r\n } else {\r\n options.step && options.step.call(that, 1, 1);\r\n options.complete && options.complete.call(that);\r\n that.attr(params)\r\n }\r\n return that\r\n}\r\n\r\nfunction pathAnimate(params, options, complete) {\r\n var curSegments = this.segments || [];\r\n var newSegments;\r\n var endSegments;\r\n if (this.renderer.animationEnabled() && \"points\" in params) {\r\n newSegments = buildPathSegments(params.points, this.type);\r\n endSegments = compensateSegments(curSegments, newSegments, this.type);\r\n params.segments = {\r\n from: curSegments,\r\n to: newSegments,\r\n end: endSegments\r\n };\r\n delete params.points\r\n }\r\n return baseAnimate(this, params, options, complete)\r\n}\r\n\r\nfunction arcAnimate(params, options, complete) {\r\n var settings = this._settings;\r\n var arcParams = {\r\n from: {},\r\n to: {}\r\n };\r\n if (this.renderer.animationEnabled() && (\"x\" in params || \"y\" in params || \"innerRadius\" in params || \"outerRadius\" in params || \"startAngle\" in params || \"endAngle\" in params)) {\r\n arcParams.from.x = settings.x || 0;\r\n arcParams.from.y = settings.y || 0;\r\n arcParams.from.innerRadius = settings.innerRadius || 0;\r\n arcParams.from.outerRadius = settings.outerRadius || 0;\r\n arcParams.from.startAngle = settings.startAngle || 0;\r\n arcParams.from.endAngle = settings.endAngle || 0;\r\n arcParams.to.x = \"x\" in params ? params.x : settings.x;\r\n delete params.x;\r\n arcParams.to.y = \"y\" in params ? params.y : settings.y;\r\n delete params.y;\r\n arcParams.to.innerRadius = \"innerRadius\" in params ? params.innerRadius : settings.innerRadius;\r\n delete params.innerRadius;\r\n arcParams.to.outerRadius = \"outerRadius\" in params ? params.outerRadius : settings.outerRadius;\r\n delete params.outerRadius;\r\n arcParams.to.startAngle = \"startAngle\" in params ? params.startAngle : settings.startAngle;\r\n delete params.startAngle;\r\n arcParams.to.endAngle = \"endAngle\" in params ? params.endAngle : settings.endAngle;\r\n delete params.endAngle;\r\n params.arc = arcParams\r\n }\r\n return baseAnimate(this, params, options, complete)\r\n}\r\n\r\nfunction buildLink(target, parameters) {\r\n var obj = {\r\n is: false,\r\n name: parameters.name || parameters,\r\n after: parameters.after\r\n };\r\n if (target) {\r\n obj.to = target\r\n } else {\r\n obj.virtual = true\r\n }\r\n return obj\r\n}\r\nexport var SvgElement = function(renderer, tagName, type) {\r\n this.renderer = renderer;\r\n this.element = createElement(tagName);\r\n this._settings = {};\r\n this._styles = {};\r\n if (\"path\" === tagName) {\r\n this.type = type || \"line\"\r\n }\r\n};\r\n\r\nfunction removeFuncIriCallback(callback) {\r\n fixFuncIriCallbacks.remove(callback)\r\n}\r\nSvgElement.prototype = {\r\n constructor: SvgElement,\r\n _getJQElement: function() {\r\n return this._$element || (this._$element = $(this.element))\r\n },\r\n _addFixIRICallback: function() {\r\n var that = this;\r\n var fn = function() {\r\n fixFuncIri(that, \"fill\");\r\n fixFuncIri(that, \"clip-path\");\r\n fixFuncIri(that, \"filter\")\r\n };\r\n that.element._fixFuncIri = fn;\r\n fn.renderer = that.renderer;\r\n fixFuncIriCallbacks.add(fn);\r\n that._addFixIRICallback = function() {}\r\n },\r\n _clearChildrenFuncIri: function() {\r\n ! function clearChildren(element) {\r\n var i;\r\n for (i = 0; i < element.childNodes.length; i++) {\r\n removeFuncIriCallback(element.childNodes[i]._fixFuncIri);\r\n clearChildren(element.childNodes[i])\r\n }\r\n }(this.element)\r\n },\r\n dispose: function() {\r\n removeFuncIriCallback(this.element._fixFuncIri);\r\n this._clearChildrenFuncIri();\r\n this._getJQElement().remove();\r\n return this\r\n },\r\n append: function(parent) {\r\n (parent || this.renderer.root).element.appendChild(this.element);\r\n return this\r\n },\r\n remove: function() {\r\n var element = this.element;\r\n element.parentNode && element.parentNode.removeChild(element);\r\n return this\r\n },\r\n enableLinks: function() {\r\n this._links = [];\r\n return this\r\n },\r\n virtualLink: function(parameters) {\r\n linkItem({\r\n _link: buildLink(null, parameters)\r\n }, this);\r\n return this\r\n },\r\n linkAfter: function(name) {\r\n this._linkAfter = name;\r\n return this\r\n },\r\n linkOn: function(target, parameters) {\r\n this._link = buildLink(target, parameters);\r\n linkItem(this, target);\r\n return this\r\n },\r\n linkOff: function() {\r\n unlinkItem(this);\r\n this._link = null;\r\n return this\r\n },\r\n linkAppend: function() {\r\n var link = this._link;\r\n var items = link.to._links;\r\n var i;\r\n var next;\r\n for (i = link.i + 1;\r\n (next = items[i]) && !next._link.is; ++i) {}\r\n this._insert(link.to, next);\r\n link.is = true;\r\n return this\r\n },\r\n _insert: function(parent, next) {\r\n parent.element.insertBefore(this.element, next ? next.element : null)\r\n },\r\n linkRemove: function() {\r\n this.remove();\r\n this._link.is = false;\r\n return this\r\n },\r\n clear: function() {\r\n this._clearChildrenFuncIri();\r\n this._getJQElement().empty();\r\n return this\r\n },\r\n toBackground: function() {\r\n var elem = this.element;\r\n var parent = elem.parentNode;\r\n parent && parent.insertBefore(elem, parent.firstChild);\r\n return this\r\n },\r\n toForeground: function() {\r\n var elem = this.element;\r\n var parent = elem.parentNode;\r\n parent && parent.appendChild(elem);\r\n return this\r\n },\r\n attr: function(attrs) {\r\n return baseAttr(this, attrs)\r\n },\r\n smartAttr: function(attrs) {\r\n return this.attr(processHatchingAttrs(this, attrs))\r\n },\r\n css: function(styles) {\r\n return baseCss(this, styles)\r\n },\r\n animate: function(params, options, complete) {\r\n return baseAnimate(this, params, options, complete)\r\n },\r\n sharp(pos, sharpDirection) {\r\n return this.attr({\r\n sharp: pos || true,\r\n sharpDirection: sharpDirection\r\n })\r\n },\r\n _applyTransformation() {\r\n var tr = this._settings;\r\n var rotateX;\r\n var rotateY;\r\n var transformations = [];\r\n var sharpMode = tr.sharp;\r\n var trDirection = tr.sharpDirection || 1;\r\n var strokeOdd = tr[KEY_STROKE_WIDTH] % 2;\r\n var correctionX = strokeOdd && (\"h\" === sharpMode || true === sharpMode) ? SHARPING_CORRECTION * trDirection : 0;\r\n var correctionY = strokeOdd && (\"v\" === sharpMode || true === sharpMode) ? SHARPING_CORRECTION * trDirection : 0;\r\n transformations.push(\"translate(\" + ((tr.translateX || 0) + correctionX) + \",\" + ((tr.translateY || 0) + correctionY) + \")\");\r\n if (tr.rotate) {\r\n if (\"rotateX\" in tr) {\r\n rotateX = tr.rotateX\r\n } else {\r\n rotateX = tr.x\r\n }\r\n if (\"rotateY\" in tr) {\r\n rotateY = tr.rotateY\r\n } else {\r\n rotateY = tr.y\r\n }\r\n transformations.push(\"rotate(\" + tr.rotate + \",\" + (rotateX || 0) + \",\" + (rotateY || 0) + \")\")\r\n }\r\n var scaleXDefined = isDefined(tr.scaleX);\r\n var scaleYDefined = isDefined(tr.scaleY);\r\n if (scaleXDefined || scaleYDefined) {\r\n transformations.push(\"scale(\" + (scaleXDefined ? tr.scaleX : 1) + \",\" + (scaleYDefined ? tr.scaleY : 1) + \")\")\r\n }\r\n if (transformations.length) {\r\n this.element.setAttribute(\"transform\", transformations.join(\" \"))\r\n }\r\n },\r\n move: function(x, y, animate, animOptions) {\r\n var obj = {};\r\n isDefined(x) && (obj.translateX = x);\r\n isDefined(y) && (obj.translateY = y);\r\n if (!animate) {\r\n this.attr(obj)\r\n } else {\r\n this.animate(obj, animOptions)\r\n }\r\n return this\r\n },\r\n rotate: function(angle, x, y, animate, animOptions) {\r\n var obj = {\r\n rotate: angle || 0\r\n };\r\n isDefined(x) && (obj.rotateX = x);\r\n isDefined(y) && (obj.rotateY = y);\r\n if (!animate) {\r\n this.attr(obj)\r\n } else {\r\n this.animate(obj, animOptions)\r\n }\r\n return this\r\n },\r\n _getElementBBox: function() {\r\n var elem = this.element;\r\n var bBox;\r\n try {\r\n bBox = elem.getBBox && elem.getBBox()\r\n } catch (e) {}\r\n return bBox || {\r\n x: 0,\r\n y: 0,\r\n width: elem.offsetWidth || 0,\r\n height: elem.offsetHeight || 0\r\n }\r\n },\r\n getBBox: function() {\r\n var transformation = this._settings;\r\n var bBox = this._getElementBBox();\r\n if (transformation.rotate) {\r\n bBox = rotateBBox(bBox, [(\"rotateX\" in transformation ? transformation.rotateX : transformation.x) || 0, (\"rotateY\" in transformation ? transformation.rotateY : transformation.y) || 0], -transformation.rotate)\r\n } else {\r\n bBox = normalizeBBox(bBox)\r\n }\r\n return bBox\r\n },\r\n markup: function() {\r\n return getSvgMarkup(this.element)\r\n },\r\n getOffset: function() {\r\n return this._getJQElement().offset()\r\n },\r\n stopAnimation: function(disableComplete) {\r\n var animation = this.animation;\r\n animation && animation.stop(disableComplete);\r\n return this\r\n },\r\n setTitle: function(text) {\r\n var titleElem = createElement(\"title\");\r\n titleElem.textContent = text || \"\";\r\n this.element.appendChild(titleElem)\r\n },\r\n removeTitle() {\r\n detachTitleElements(this.element)\r\n },\r\n data: function(obj, val) {\r\n var elem = this.element;\r\n var key;\r\n if (void 0 !== val) {\r\n elem[obj] = val\r\n } else {\r\n for (key in obj) {\r\n elem[key] = obj[key]\r\n }\r\n }\r\n return this\r\n },\r\n on: function() {\r\n var args = [this._getJQElement()];\r\n args.push.apply(args, arguments);\r\n eventsEngine.on.apply(eventsEngine, args);\r\n return this\r\n },\r\n off: function() {\r\n var args = [this._getJQElement()];\r\n args.push.apply(args, arguments);\r\n eventsEngine.off.apply(eventsEngine, args);\r\n return this\r\n },\r\n trigger: function() {\r\n var args = [this._getJQElement()];\r\n args.push.apply(args, arguments);\r\n eventsEngine.trigger.apply(eventsEngine, args);\r\n return this\r\n }\r\n};\r\nexport var PathSvgElement = function(renderer, type) {\r\n SvgElement.call(this, renderer, \"path\", type)\r\n};\r\nPathSvgElement.prototype = objectCreate(SvgElement.prototype);\r\nextend(PathSvgElement.prototype, {\r\n constructor: PathSvgElement,\r\n attr: pathAttr,\r\n animate: pathAnimate\r\n});\r\nexport var ArcSvgElement = function(renderer) {\r\n SvgElement.call(this, renderer, \"path\", \"arc\")\r\n};\r\nArcSvgElement.prototype = objectCreate(SvgElement.prototype);\r\nextend(ArcSvgElement.prototype, {\r\n constructor: ArcSvgElement,\r\n attr: arcAttr,\r\n animate: arcAnimate\r\n});\r\nexport var RectSvgElement = function(renderer) {\r\n SvgElement.call(this, renderer, \"rect\")\r\n};\r\nRectSvgElement.prototype = objectCreate(SvgElement.prototype);\r\nextend(RectSvgElement.prototype, {\r\n constructor: RectSvgElement,\r\n attr: rectAttr\r\n});\r\nexport var TextSvgElement = function(renderer) {\r\n SvgElement.call(this, renderer, \"text\");\r\n this.css({\r\n \"white-space\": \"pre\"\r\n })\r\n};\r\nTextSvgElement.prototype = objectCreate(SvgElement.prototype);\r\nextend(TextSvgElement.prototype, {\r\n constructor: TextSvgElement,\r\n attr: textAttr,\r\n css: textCss,\r\n applyEllipsis: applyEllipsis,\r\n setMaxSize: setMaxSize,\r\n restoreText: restoreText,\r\n _getLineHeight() {\r\n return !isNaN(parseFloat(this._styles[KEY_FONT_SIZE])) ? this._styles[KEY_FONT_SIZE] : DEFAULT_FONT_SIZE\r\n }\r\n});\r\n\r\nfunction updateIndexes(items, k) {\r\n var i;\r\n var item;\r\n for (i = k; item = items[i]; ++i) {\r\n item._link.i = i\r\n }\r\n}\r\n\r\nfunction linkItem(target, container) {\r\n var items = container._links;\r\n var key = target._link.after = target._link.after || container._linkAfter;\r\n var i;\r\n var item;\r\n if (key) {\r\n for (i = 0;\r\n (item = items[i]) && item._link.name !== key; ++i) {}\r\n if (item) {\r\n for (++i;\r\n (item = items[i]) && item._link.after === key; ++i) {}\r\n }\r\n } else {\r\n i = items.length\r\n }\r\n items.splice(i, 0, target);\r\n updateIndexes(items, i)\r\n}\r\n\r\nfunction unlinkItem(target) {\r\n var i;\r\n var items = target._link.to._links;\r\n for (i = 0; items[i] !== target; ++i) {}\r\n items.splice(i, 1);\r\n updateIndexes(items, i)\r\n}\r\nexport function Renderer(options) {\r\n this.root = this._createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n version: \"1.1\",\r\n fill: NONE,\r\n stroke: NONE,\r\n \"stroke-width\": 0\r\n }).attr({\r\n class: options.cssClass\r\n }).css({\r\n \"line-height\": \"normal\",\r\n \"-ms-user-select\": NONE,\r\n \"-moz-user-select\": NONE,\r\n \"-webkit-user-select\": NONE,\r\n \"-webkit-tap-highlight-color\": \"rgba(0, 0, 0, 0)\",\r\n display: \"block\",\r\n overflow: \"hidden\"\r\n });\r\n this._init();\r\n this.pathModified = !!options.pathModified;\r\n this._$container = $(options.container);\r\n this.root.append({\r\n element: options.container\r\n });\r\n this.fixPlacement();\r\n this._locker = 0;\r\n this._backed = false\r\n}\r\nRenderer.prototype = {\r\n constructor: Renderer,\r\n _init: function() {\r\n this._defs = this._createElement(\"defs\").append(this.root);\r\n this._animationController = new AnimationController(this.root.element);\r\n this._animation = {\r\n enabled: true,\r\n duration: 1e3,\r\n easing: \"easeOutCubic\"\r\n }\r\n },\r\n fixPlacement: function() {\r\n if (!browser.mozilla) {\r\n return\r\n }\r\n var box = getBoundingClientRect(this._$container.get(0));\r\n var dx = roundValue(box.left % 1, 2);\r\n var dy = roundValue(box.top % 1, 2);\r\n if (browser.mozilla) {\r\n this.root.move(-dx, -dy)\r\n }\r\n },\r\n removePlacementFix: function() {\r\n if (!browser.mozilla) {\r\n return\r\n }\r\n if (browser.mozilla) {\r\n this.root.attr({\r\n transform: null\r\n })\r\n }\r\n },\r\n setOptions: function(options) {\r\n this.rtl = !!options.rtl;\r\n this.encodeHtml = !!options.encodeHtml;\r\n this.updateAnimationOptions(options.animation || {});\r\n this.root.attr({\r\n direction: this.rtl ? \"rtl\" : \"ltr\"\r\n });\r\n return this\r\n },\r\n _createElement: function(tagName, attr, type) {\r\n var elem = new SvgElement(this, tagName, type);\r\n attr && elem.attr(attr);\r\n return elem\r\n },\r\n lock: function() {\r\n if (0 === this._locker) {\r\n this._backed = !this._$container.is(\":visible\");\r\n if (this._backed) {\r\n backupRoot(this.root)\r\n }\r\n }++this._locker;\r\n return this\r\n },\r\n unlock: function() {\r\n --this._locker;\r\n if (0 === this._locker) {\r\n if (this._backed) {\r\n restoreRoot(this.root, this._$container[0]);\r\n this.fixPlacement()\r\n }\r\n this._backed = false\r\n }\r\n return this\r\n },\r\n resize: function(width, height) {\r\n if (width >= 0 && height >= 0) {\r\n this.root.attr({\r\n width: width,\r\n height: height\r\n })\r\n }\r\n return this\r\n },\r\n dispose: function() {\r\n var key;\r\n this.root.dispose();\r\n this._defs.dispose();\r\n this._animationController.dispose();\r\n fixFuncIriCallbacks.removeByRenderer(this);\r\n for (key in this) {\r\n this[key] = null\r\n }\r\n return this\r\n },\r\n animationEnabled: function() {\r\n return !!this._animation.enabled\r\n },\r\n updateAnimationOptions: function(newOptions) {\r\n extend(this._animation, newOptions);\r\n return this\r\n },\r\n stopAllAnimations: function(lock) {\r\n this._animationController[lock ? \"lock\" : \"stop\"]();\r\n return this\r\n },\r\n animateElement: function(element, params, options) {\r\n this._animationController.animateElement(element, params, options);\r\n return this\r\n },\r\n svg: function() {\r\n this.removePlacementFix();\r\n var markup = this.root.markup();\r\n this.fixPlacement();\r\n return markup\r\n },\r\n getRootOffset: function() {\r\n return this.root.getOffset()\r\n },\r\n onEndAnimation: function(endAnimation) {\r\n this._animationController.onEndAnimation(endAnimation)\r\n },\r\n rect: function(x, y, width, height) {\r\n var elem = new RectSvgElement(this);\r\n return elem.attr({\r\n x: x || 0,\r\n y: y || 0,\r\n width: width || 0,\r\n height: height || 0\r\n })\r\n },\r\n simpleRect: function() {\r\n return this._createElement(\"rect\")\r\n },\r\n circle: function(x, y, r) {\r\n return this._createElement(\"circle\", {\r\n cx: x || 0,\r\n cy: y || 0,\r\n r: r || 0\r\n })\r\n },\r\n g: function() {\r\n return this._createElement(\"g\")\r\n },\r\n image: function(x, y, w, h, href, location) {\r\n var image = this._createElement(\"image\", {\r\n x: x || 0,\r\n y: y || 0,\r\n width: w || 0,\r\n height: h || 0,\r\n preserveAspectRatio: preserveAspectRatioMap[normalizeEnum(location)] || NONE\r\n });\r\n image.element.setAttributeNS(\"http://www.w3.org/1999/xlink\", \"href\", href || \"\");\r\n return image\r\n },\r\n path: function(points, type) {\r\n var elem = new PathSvgElement(this, type);\r\n return elem.attr({\r\n points: points || []\r\n })\r\n },\r\n arc: function(x, y, innerRadius, outerRadius, startAngle, endAngle) {\r\n var elem = new ArcSvgElement(this);\r\n return elem.attr({\r\n x: x || 0,\r\n y: y || 0,\r\n innerRadius: innerRadius || 0,\r\n outerRadius: outerRadius || 0,\r\n startAngle: startAngle || 0,\r\n endAngle: endAngle || 0\r\n })\r\n },\r\n text: function(_text, x, y) {\r\n var elem = new TextSvgElement(this);\r\n return elem.attr({\r\n text: _text,\r\n x: x || 0,\r\n y: y || 0\r\n })\r\n },\r\n linearGradient: function(stops) {\r\n var id = getNextDefsSvgId();\r\n var that = this;\r\n var gradient = that._createElement(\"linearGradient\", {\r\n id: id\r\n }).append(that._defs);\r\n gradient.id = id;\r\n stops.forEach(stop => {\r\n that._createElement(\"stop\", {\r\n offset: stop.offset,\r\n \"stop-color\": stop[\"stop-color\"]\r\n }).append(gradient)\r\n });\r\n return gradient\r\n },\r\n pattern: function(color, hatching, _id) {\r\n hatching = hatching || {};\r\n var step = hatching.step || 6;\r\n var stepTo2 = step / 2;\r\n var stepBy15 = 1.5 * step;\r\n var id = _id || getNextDefsSvgId();\r\n var d = \"right\" === normalizeEnum(hatching.direction) ? \"M \" + stepTo2 + \" \" + -stepTo2 + \" L \" + -stepTo2 + \" \" + stepTo2 + \" M 0 \" + step + \" L \" + step + \" 0 M \" + stepBy15 + \" \" + stepTo2 + \" L \" + stepTo2 + \" \" + stepBy15 : \"M 0 0 L \" + step + \" \" + step + \" M \" + -stepTo2 + \" \" + stepTo2 + \" L \" + stepTo2 + \" \" + stepBy15 + \" M \" + stepTo2 + \" \" + -stepTo2 + \" L \" + stepBy15 + \" \" + stepTo2;\r\n var pattern = this._createElement(\"pattern\", {\r\n id: id,\r\n width: step,\r\n height: step,\r\n patternUnits: \"userSpaceOnUse\"\r\n }).append(this._defs);\r\n pattern.id = id;\r\n this.rect(0, 0, step, step).attr({\r\n fill: color,\r\n opacity: hatching.opacity\r\n }).append(pattern);\r\n new PathSvgElement(this).attr({\r\n d: d,\r\n \"stroke-width\": hatching.width || 1,\r\n stroke: color\r\n }).append(pattern);\r\n return pattern\r\n },\r\n _getPointsWithYOffset: function(points, offset) {\r\n return points.map((function(point, index) {\r\n if (index % 2 !== 0) {\r\n return point + offset\r\n }\r\n return point\r\n }))\r\n },\r\n clipShape: function(method, methodArgs) {\r\n var id = getNextDefsSvgId();\r\n var clipPath = this._createElement(\"clipPath\", {\r\n id: id\r\n }).append(this._defs);\r\n var shape = method.apply(this, methodArgs).append(clipPath);\r\n shape.id = id;\r\n shape.remove = function() {\r\n throw \"Not implemented\"\r\n };\r\n shape.dispose = function() {\r\n clipPath.dispose();\r\n clipPath = null;\r\n return this\r\n };\r\n return shape\r\n },\r\n clipRect(x, y, width, height) {\r\n return this.clipShape(this.rect, arguments)\r\n },\r\n clipCircle(x, y, radius) {\r\n return this.clipShape(this.circle, arguments)\r\n },\r\n shadowFilter: function(x, y, width, height, offsetX, offsetY, blur, color, opacity) {\r\n var id = getNextDefsSvgId();\r\n var filter = this._createElement(\"filter\", {\r\n id: id,\r\n x: x || 0,\r\n y: y || 0,\r\n width: width || 0,\r\n height: height || 0\r\n }).append(this._defs);\r\n var gaussianBlur = this._createElement(\"feGaussianBlur\", {\r\n in: \"SourceGraphic\",\r\n result: \"gaussianBlurResult\",\r\n stdDeviation: blur || 0\r\n }).append(filter);\r\n var offset = this._createElement(\"feOffset\", {\r\n in: \"gaussianBlurResult\",\r\n result: \"offsetResult\",\r\n dx: offsetX || 0,\r\n dy: offsetY || 0\r\n }).append(filter);\r\n var flood = this._createElement(\"feFlood\", {\r\n result: \"floodResult\",\r\n \"flood-color\": color || \"\",\r\n \"flood-opacity\": opacity\r\n }).append(filter);\r\n var composite = this._createElement(\"feComposite\", {\r\n in: \"floodResult\",\r\n in2: \"offsetResult\",\r\n operator: \"in\",\r\n result: \"compositeResult\"\r\n }).append(filter);\r\n var finalComposite = this._createElement(\"feComposite\", {\r\n in: \"SourceGraphic\",\r\n in2: \"compositeResult\",\r\n operator: \"over\"\r\n }).append(filter);\r\n filter.id = id;\r\n filter.gaussianBlur = gaussianBlur;\r\n filter.offset = offset;\r\n filter.flood = flood;\r\n filter.composite = composite;\r\n filter.finalComposite = finalComposite;\r\n filter.attr = function(attrs) {\r\n var filterAttrs = {};\r\n var offsetAttrs = {};\r\n var floodAttrs = {};\r\n \"x\" in attrs && (filterAttrs.x = attrs.x);\r\n \"y\" in attrs && (filterAttrs.y = attrs.y);\r\n \"width\" in attrs && (filterAttrs.width = attrs.width);\r\n \"height\" in attrs && (filterAttrs.height = attrs.height);\r\n baseAttr(this, filterAttrs);\r\n \"blur\" in attrs && this.gaussianBlur.attr({\r\n stdDeviation: attrs.blur\r\n });\r\n \"offsetX\" in attrs && (offsetAttrs.dx = attrs.offsetX);\r\n \"offsetY\" in attrs && (offsetAttrs.dy = attrs.offsetY);\r\n this.offset.attr(offsetAttrs);\r\n \"color\" in attrs && (floodAttrs[\"flood-color\"] = attrs.color);\r\n \"opacity\" in attrs && (floodAttrs[\"flood-opacity\"] = attrs.opacity);\r\n this.flood.attr(floodAttrs);\r\n return this\r\n };\r\n return filter\r\n },\r\n brightFilter: function(type, slope) {\r\n var id = getNextDefsSvgId();\r\n var filter = this._createElement(\"filter\", {\r\n id: id\r\n }).append(this._defs);\r\n var componentTransferElement = this._createElement(\"feComponentTransfer\").append(filter);\r\n var attrs = {\r\n type: type,\r\n slope: slope\r\n };\r\n filter.id = id;\r\n this._createElement(\"feFuncR\", attrs).append(componentTransferElement);\r\n this._createElement(\"feFuncG\", attrs).append(componentTransferElement);\r\n this._createElement(\"feFuncB\", attrs).append(componentTransferElement);\r\n return filter\r\n },\r\n getGrayScaleFilter: function() {\r\n if (this._grayScaleFilter) {\r\n return this._grayScaleFilter\r\n }\r\n var id = getNextDefsSvgId();\r\n var filter = this._createElement(\"filter\", {\r\n id: id\r\n }).append(this._defs);\r\n this._createElement(\"feColorMatrix\").attr({\r\n type: \"matrix\",\r\n values: \"0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 0.6 0\"\r\n }).append(filter);\r\n filter.id = id;\r\n this._grayScaleFilter = filter;\r\n return filter\r\n },\r\n initHatching: function() {\r\n var storage = this._hatchingStorage = this._hatchingStorage || {\r\n byHash: {},\r\n baseId: getNextDefsSvgId()\r\n };\r\n var byHash = storage.byHash;\r\n var name;\r\n for (name in byHash) {\r\n byHash[name].pattern.dispose()\r\n }\r\n storage.byHash = {};\r\n storage.refToHash = {};\r\n storage.nextId = 0\r\n },\r\n lockHatching: function(color, hatching, ref) {\r\n var storage = this._hatchingStorage;\r\n var hash = getHatchingHash(color, hatching);\r\n var storageItem;\r\n var pattern;\r\n if (storage.refToHash[ref] !== hash) {\r\n if (ref) {\r\n this.releaseHatching(ref)\r\n }\r\n storageItem = storage.byHash[hash];\r\n if (!storageItem) {\r\n pattern = this.pattern(color, hatching, storage.baseId + \"-hatching-\" + storage.nextId++);\r\n storageItem = storage.byHash[hash] = {\r\n pattern: pattern,\r\n count: 0\r\n };\r\n storage.refToHash[pattern.id] = hash\r\n }++storageItem.count;\r\n ref = storageItem.pattern.id\r\n }\r\n return ref\r\n },\r\n releaseHatching: function(ref) {\r\n var storage = this._hatchingStorage;\r\n var hash = storage.refToHash[ref];\r\n var storageItem = storage.byHash[hash];\r\n if (storageItem && 0 === --storageItem.count) {\r\n storageItem.pattern.dispose();\r\n delete storage.byHash[hash];\r\n delete storage.refToHash[ref]\r\n }\r\n }\r\n};\r\n\r\nfunction getHatchingHash(color, hatching) {\r\n return \"@\" + color + \"::\" + hatching.step + \":\" + hatching.width + \":\" + hatching.opacity + \":\" + hatching.direction\r\n}\r\nvar fixFuncIriCallbacks = function() {\r\n var callbacks = [];\r\n return {\r\n add: function(fn) {\r\n callbacks.push(fn)\r\n },\r\n remove: function(fn) {\r\n callbacks = callbacks.filter((function(el) {\r\n return el !== fn\r\n }))\r\n },\r\n removeByRenderer: function(renderer) {\r\n callbacks = callbacks.filter((function(el) {\r\n return el.renderer !== renderer\r\n }))\r\n },\r\n fire: function() {\r\n callbacks.forEach((function(fn) {\r\n fn()\r\n }))\r\n }\r\n }\r\n}();\r\nexport var refreshPaths = function() {\r\n fixFuncIriCallbacks.fire()\r\n};\r\n","/**\r\n * DevExtreme (esm/viz/core/layout.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n normalizeEnum as _normalizeEnum\r\n} from \"./utils\";\r\nvar _min = Math.min;\r\nvar _max = Math.max;\r\nvar _round = Math.round;\r\nvar ALIGN_START = 0;\r\nvar ALIGN_MIDDLE = 1;\r\nvar ALIGN_END = 2;\r\nvar horizontalAlignmentMap = {\r\n left: ALIGN_START,\r\n center: ALIGN_MIDDLE,\r\n right: ALIGN_END\r\n};\r\nvar verticalAlignmentMap = {\r\n top: ALIGN_START,\r\n center: ALIGN_MIDDLE,\r\n bottom: ALIGN_END\r\n};\r\nvar sideMap = {\r\n horizontal: 0,\r\n vertical: 1\r\n};\r\nvar slicersMap = {};\r\nvar BBOX_CEIL_CORRECTION = 2;\r\nslicersMap[ALIGN_START] = function(a, b, size) {\r\n return [a, _min(b, a + size)]\r\n};\r\nslicersMap[ALIGN_MIDDLE] = function(a, b, size) {\r\n return [_max(a, (a + b - size) / 2), _min(b, (a + b + size) / 2)]\r\n};\r\nslicersMap[ALIGN_END] = function(a, b, size) {\r\n return [_max(a, b - size), b]\r\n};\r\n\r\nfunction pickValue(value, map, defaultValue) {\r\n var val = _normalizeEnum(value);\r\n return val in map ? map[val] : defaultValue\r\n}\r\n\r\nfunction normalizeLayoutOptions(options) {\r\n var side = pickValue(options.side, sideMap, 1);\r\n var alignment = [pickValue(options.horizontalAlignment, horizontalAlignmentMap, ALIGN_MIDDLE), pickValue(options.verticalAlignment, verticalAlignmentMap, ALIGN_START)];\r\n return {\r\n side: side,\r\n primary: bringToEdge(alignment[side]),\r\n secondary: alignment[1 - side],\r\n weak: options.weak,\r\n priority: options.priority || 0,\r\n header: options.header,\r\n position: options.position\r\n }\r\n}\r\n\r\nfunction bringToEdge(primary) {\r\n return primary < 2 ? 0 : 2\r\n}\r\n\r\nfunction getConjugateSide(side) {\r\n return 1 - side\r\n}\r\n\r\nfunction getSlice(alignment, a, b, size) {\r\n return slicersMap[alignment](a, b, size)\r\n}\r\n\r\nfunction getShrink(alignment, size) {\r\n return (alignment > 0 ? -1 : 1) * size\r\n}\r\n\r\nfunction processForward(item, rect, minSize) {\r\n var side = item.side;\r\n var size = item.element.measure([rect[2] - rect[0], rect[3] - rect[1]]);\r\n var minSide = \"indside\" === item.position ? 0 : minSize[side];\r\n var isValid = size[side] < rect[2 + side] - rect[side] - minSide;\r\n if (isValid) {\r\n if (\"inside\" !== item.position) {\r\n rect[item.primary + side] += getShrink(item.primary, size[side])\r\n }\r\n item.size = size\r\n }\r\n return isValid\r\n}\r\n\r\nfunction processRectBackward(item, rect, alignmentRect) {\r\n var primarySide = item.side;\r\n var secondarySide = getConjugateSide(primarySide);\r\n var itemRect = [];\r\n var secondary = getSlice(item.secondary, alignmentRect[secondarySide], alignmentRect[2 + secondarySide], item.size[secondarySide]);\r\n itemRect[primarySide] = _round(itemRect[2 + primarySide] = rect[item.primary + primarySide] + (\"inside\" === item.position ? getShrink(item.primary, item.size[primarySide]) : 0));\r\n itemRect[item.primary + primarySide] = _round(rect[item.primary + primarySide] - getShrink(item.primary, item.size[primarySide]));\r\n if (\"inside\" !== item.position) {\r\n rect[item.primary + primarySide] = itemRect[item.primary + primarySide]\r\n }\r\n itemRect[secondarySide] = _round(secondary[0]);\r\n itemRect[2 + secondarySide] = _round(secondary[1]);\r\n return itemRect\r\n}\r\n\r\nfunction processBackward(item, rect, alignmentRect, fitRect, size, targetRect) {\r\n var itemRect = processRectBackward(item, rect, alignmentRect);\r\n var itemFitRect = processRectBackward(item, fitRect, fitRect);\r\n if (size[item.side] > 0) {\r\n size[item.side] -= item.size[item.side];\r\n targetRect[item.primary + item.side] = itemRect[item.primary + item.side];\r\n item.element.freeSpace()\r\n } else {\r\n item.element.move(itemRect, itemFitRect)\r\n }\r\n}\r\n\r\nfunction Layout() {\r\n this._targets = []\r\n}\r\nLayout.prototype = {\r\n constructor: Layout,\r\n dispose: function() {\r\n this._targets = null\r\n },\r\n add: function(target) {\r\n this._targets.push(target)\r\n },\r\n forward: function(targetRect, minSize) {\r\n var rect = targetRect.slice();\r\n var targets = createTargets(this._targets);\r\n var i;\r\n var ii = targets.length;\r\n var cache = [];\r\n for (i = 0; i < ii; ++i) {\r\n if (processForward(targets[i], rect, minSize)) {\r\n cache.push(targets[i])\r\n } else {\r\n targets[i].element.freeSpace()\r\n }\r\n }\r\n this._cache = cache.reverse();\r\n return rect\r\n },\r\n backward: function(targetRect, alignmentRect) {\r\n var size = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : [0, 0];\r\n var backwardRect = targetRect.slice();\r\n var fitRect = targetRect.slice();\r\n var targets = this._cache;\r\n var targetSide = 0;\r\n var target;\r\n var i;\r\n var ii = targets.length;\r\n for (i = 0; i < ii; ++i) {\r\n target = targets[i];\r\n if (target.side !== targetSide) {\r\n backwardRect = targetRect.slice()\r\n }\r\n processBackward(target, backwardRect, alignmentRect, fitRect, size, targetRect);\r\n targetSide = target.side\r\n }\r\n return size\r\n }\r\n};\r\n\r\nfunction createTargets(targets) {\r\n var i;\r\n var ii = targets.length;\r\n var collection = [];\r\n var layout;\r\n for (i = 0; i < ii; ++i) {\r\n layout = targets[i].layoutOptions();\r\n if (layout) {\r\n layout = normalizeLayoutOptions(layout);\r\n layout.element = targets[i];\r\n collection.push(layout)\r\n }\r\n }\r\n collection.sort((function(a, b) {\r\n return b.side - a.side || a.priority - b.priority\r\n }));\r\n collection = processWeakItems(collection);\r\n return collection\r\n}\r\n\r\nfunction processWeakItems(collection) {\r\n var weakItem = collection.filter((function(item) {\r\n return true === item.weak\r\n }))[0];\r\n var headerItem;\r\n if (weakItem) {\r\n headerItem = collection.filter((function(item) {\r\n return weakItem.primary === item.primary && item.side === weakItem.side && item !== weakItem\r\n }))[0]\r\n }\r\n if (weakItem && headerItem) {\r\n return [makeHeader(headerItem, weakItem)].concat(collection.filter((function(item) {\r\n return !(item === headerItem || item === weakItem)\r\n })))\r\n }\r\n return collection\r\n}\r\n\r\nfunction processBackwardHeaderRect(element, rect) {\r\n var rectCopy = rect.slice();\r\n var itemRect = processRectBackward(element, rectCopy, rectCopy);\r\n itemRect[element.side] = rect[element.side];\r\n itemRect[2 + element.side] = rect[2 + element.side];\r\n return itemRect\r\n}\r\n\r\nfunction makeHeader(header, weakElement) {\r\n var side = header.side;\r\n var primary = header.primary;\r\n var secondary = header.secondary;\r\n return {\r\n side: side,\r\n primary: primary,\r\n secondary: secondary,\r\n priority: 0,\r\n element: {\r\n measure: function(targetSize) {\r\n var result = targetSize.slice();\r\n var weakSize = weakElement.element.measure(targetSize.slice());\r\n targetSize[primary] -= weakSize[primary];\r\n var headerSize = header.element.measure(targetSize.slice());\r\n result[side] = weakSize[side] = headerSize[side] = Math.max(headerSize[side], weakSize[side]);\r\n weakElement.size = weakSize;\r\n header.size = headerSize;\r\n return result\r\n },\r\n move: function(rect, fitRect) {\r\n if (fitRect[2] - fitRect[0] < header.size[0] + weakElement.size[0] - BBOX_CEIL_CORRECTION) {\r\n this.freeSpace();\r\n return\r\n }\r\n var weakRect = processBackwardHeaderRect(weakElement, fitRect);\r\n fitRect[2 + weakElement.primary] = weakRect[weakElement.primary];\r\n var headerFitReact = processBackwardHeaderRect(header, fitRect);\r\n if (fitRect[2 + weakElement.primary] < rect[2 + weakElement.primary] && header.size[header.primary] > rect[2 + header.primary] - rect[header.primary]) {\r\n rect[2 + weakElement.primary] = fitRect[2 + weakElement.primary]\r\n }\r\n var headerRect = processBackwardHeaderRect(header, rect);\r\n if (headerRect[2 + weakElement.primary] > fitRect[2 + weakElement.primary]) {\r\n rect[2 + weakElement.primary] = fitRect[2 + weakElement.primary];\r\n headerRect = processBackwardHeaderRect(header, rect)\r\n }\r\n weakElement.element.move(weakRect);\r\n header.element.move(headerRect, headerFitReact)\r\n },\r\n freeSpace: function() {\r\n header.element.freeSpace();\r\n weakElement.element.freeSpace()\r\n }\r\n }\r\n }\r\n}\r\nexport default Layout;\r\n","/**\r\n * DevExtreme (esm/viz/core/base_widget.utils.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n version\r\n} from \"../../core/version\";\r\nimport {\r\n format as _stringFormat\r\n} from \"../../core/utils/string\";\r\nimport warnings from \"./errors_warnings\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nvar ERROR_MESSAGES = warnings.ERROR_MESSAGES;\r\nexport function createEventTrigger(eventsMap, callbackGetter) {\r\n var triggers = {};\r\n each(eventsMap, (function(name, info) {\r\n if (info.name) {\r\n createEvent(name)\r\n }\r\n }));\r\n var changes;\r\n triggerEvent.change = function(name) {\r\n var eventInfo = eventsMap[name];\r\n if (eventInfo) {\r\n (changes = changes || {})[name] = eventInfo\r\n }\r\n return !!eventInfo\r\n };\r\n triggerEvent.applyChanges = function() {\r\n if (changes) {\r\n each(changes, (function(name, eventInfo) {\r\n createEvent(eventInfo.newName || name)\r\n }));\r\n changes = null\r\n }\r\n };\r\n triggerEvent.dispose = function() {\r\n eventsMap = callbackGetter = triggers = null\r\n };\r\n return triggerEvent;\r\n\r\n function createEvent(name) {\r\n var eventInfo = eventsMap[name];\r\n triggers[eventInfo.name] = callbackGetter(name)\r\n }\r\n\r\n function triggerEvent(name, arg, complete) {\r\n triggers[name](arg);\r\n complete && complete()\r\n }\r\n}\r\nexport var createIncidentOccurred = function(widgetName, eventTrigger) {\r\n return function(id, args) {\r\n eventTrigger(\"incidentOccurred\", {\r\n target: {\r\n id: id,\r\n type: \"E\" === id[0] ? \"error\" : \"warning\",\r\n args: args,\r\n text: _stringFormat.apply(null, [ERROR_MESSAGES[id]].concat(args || [])),\r\n widget: widgetName,\r\n version: version\r\n }\r\n })\r\n }\r\n};\r\nexport function createResizeHandler(callback) {\r\n var timeout;\r\n var handler = function() {\r\n clearTimeout(timeout);\r\n timeout = setTimeout(callback, 100)\r\n };\r\n handler.dispose = function() {\r\n clearTimeout(timeout);\r\n return this\r\n };\r\n return handler\r\n}\r\n","/**\r\n * DevExtreme (esm/viz/core/base_widget.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport $ from \"../../core/renderer\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n getWindow,\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport {\r\n isNumeric,\r\n isFunction,\r\n isDefined,\r\n isObject as _isObject,\r\n type\r\n} from \"../../core/utils/type\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport _windowResizeCallbacks from \"../../core/utils/resize_callbacks\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n BaseThemeManager\r\n} from \"../core/base_theme_manager\";\r\nimport DOMComponent from \"../../core/dom_component\";\r\nimport {\r\n changes,\r\n replaceInherit\r\n} from \"./helpers\";\r\nimport {\r\n parseScalar as _parseScalar\r\n} from \"./utils\";\r\nimport warnings from \"./errors_warnings\";\r\nimport {\r\n Renderer\r\n} from \"./renderers/renderer\";\r\nimport {\r\n getWidth,\r\n getHeight\r\n} from \"../../core/utils/size\";\r\nimport _Layout from \"./layout\";\r\nimport devices from \"../../core/devices\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n when\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n createEventTrigger,\r\n createResizeHandler,\r\n createIncidentOccurred\r\n} from \"./base_widget.utils\";\r\nvar _floor = Math.floor;\r\nvar _log = warnings.log;\r\nvar OPTION_RTL_ENABLED = \"rtlEnabled\";\r\nvar SIZED_ELEMENT_CLASS = \"dx-sized-element\";\r\nvar _option = DOMComponent.prototype.option;\r\n\r\nfunction getTrue() {\r\n return true\r\n}\r\n\r\nfunction getFalse() {\r\n return false\r\n}\r\n\r\nfunction areCanvasesDifferent(canvas1, canvas2) {\r\n return !(canvas1.width === canvas2.width && canvas1.height === canvas2.height && canvas1.left === canvas2.left && canvas1.top === canvas2.top && canvas1.right === canvas2.right && canvas1.bottom === canvas2.bottom)\r\n}\r\n\r\nfunction defaultOnIncidentOccurred(e) {\r\n if (!e.component._eventsStrategy.hasEvent(\"incidentOccurred\")) {\r\n _log.apply(null, [e.target.id].concat(e.target.args || []))\r\n }\r\n}\r\n\r\nfunction pickPositiveValue(values) {\r\n return values.reduce((function(result, value) {\r\n return value > 0 && !result ? value : result\r\n }), 0)\r\n}\r\nvar getEmptyComponent = function() {\r\n var emptyComponentConfig = {\r\n _initTemplates() {},\r\n ctor(element, options) {\r\n this.callBase(element, options);\r\n var sizedElement = domAdapter.createElement(\"div\");\r\n var width = options && isNumeric(options.width) ? options.width + \"px\" : \"100%\";\r\n var height = options && isNumeric(options.height) ? options.height + \"px\" : this._getDefaultSize().height + \"px\";\r\n domAdapter.setStyle(sizedElement, \"width\", width);\r\n domAdapter.setStyle(sizedElement, \"height\", height);\r\n domAdapter.setClass(sizedElement, SIZED_ELEMENT_CLASS);\r\n domAdapter.insertElement(element, sizedElement)\r\n }\r\n };\r\n var EmptyComponent = DOMComponent.inherit(emptyComponentConfig);\r\n var originalInherit = EmptyComponent.inherit;\r\n EmptyComponent.inherit = function(config) {\r\n for (var field in config) {\r\n if (isFunction(config[field]) && \"_\" !== field.substr(0, 1) && \"option\" !== field || \"_dispose\" === field || \"_optionChanged\" === field) {\r\n config[field] = noop\r\n }\r\n }\r\n return originalInherit.call(this, config)\r\n };\r\n return EmptyComponent\r\n};\r\n\r\nfunction callForEach(functions) {\r\n functions.forEach(c => c())\r\n}\r\nvar isServerSide = !hasWindow();\r\n\r\nfunction sizeIsValid(value) {\r\n return isDefined(value) && value > 0\r\n}\r\nvar baseWidget = isServerSide ? getEmptyComponent() : DOMComponent.inherit({\r\n _eventsMap: {\r\n onIncidentOccurred: {\r\n name: \"incidentOccurred\"\r\n },\r\n onDrawn: {\r\n name: \"drawn\"\r\n }\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n onIncidentOccurred: defaultOnIncidentOccurred\r\n })\r\n },\r\n _useLinks: true,\r\n _init: function() {\r\n var that = this;\r\n that._$element.children(\".\" + SIZED_ELEMENT_CLASS).remove();\r\n that.callBase.apply(that, arguments);\r\n that._changesLocker = 0;\r\n that._optionChangedLocker = 0;\r\n that._asyncFirstDrawing = true;\r\n that._changes = changes();\r\n that._suspendChanges();\r\n that._themeManager = that._createThemeManager();\r\n that._themeManager.setCallback((function() {\r\n that._requestChange(that._themeDependentChanges)\r\n }));\r\n that._renderElementAttributes();\r\n that._initRenderer();\r\n var linkTarget = that._useLinks && that._renderer.root;\r\n linkTarget && linkTarget.enableLinks().virtualLink(\"core\").virtualLink(\"peripheral\");\r\n that._renderVisibilityChange();\r\n that._attachVisibilityChangeHandlers();\r\n that._toggleParentsScrollSubscription(this._isVisible());\r\n that._initEventTrigger();\r\n that._incidentOccurred = createIncidentOccurred(that.NAME, that._eventTrigger);\r\n that._layout = new _Layout;\r\n linkTarget && linkTarget.linkAfter(\"core\");\r\n that._initPlugins();\r\n that._initCore();\r\n linkTarget && linkTarget.linkAfter();\r\n that._change(that._initialChanges)\r\n },\r\n _createThemeManager() {\r\n return new BaseThemeManager(this._getThemeManagerOptions())\r\n },\r\n _getThemeManagerOptions() {\r\n return {\r\n themeSection: this._themeSection,\r\n fontFields: this._fontFields\r\n }\r\n },\r\n _initialChanges: [\"LAYOUT\", \"RESIZE_HANDLER\", \"THEME\", \"DISABLED\"],\r\n _initPlugins: function() {\r\n var that = this;\r\n each(that._plugins, (function(_, plugin) {\r\n plugin.init.call(that)\r\n }))\r\n },\r\n _disposePlugins: function() {\r\n var that = this;\r\n each(that._plugins.slice().reverse(), (function(_, plugin) {\r\n plugin.dispose.call(that)\r\n }))\r\n },\r\n _change: function(codes) {\r\n this._changes.add(codes)\r\n },\r\n _suspendChanges: function() {\r\n ++this._changesLocker\r\n },\r\n _resumeChanges: function() {\r\n if (0 === --this._changesLocker && this._changes.count() > 0 && !this._applyingChanges) {\r\n this._renderer.lock();\r\n this._applyingChanges = true;\r\n this._applyChanges();\r\n this._changes.reset();\r\n this._applyingChanges = false;\r\n this._changesApplied();\r\n this._renderer.unlock();\r\n if (this._optionsQueue) {\r\n this._applyQueuedOptions()\r\n }\r\n this.resolveItemsDeferred(this._legend ? [this._legend] : []);\r\n this._optionChangedLocker++;\r\n this._notify();\r\n this._optionChangedLocker--\r\n }\r\n },\r\n resolveItemsDeferred(items) {\r\n this._resolveDeferred(this._getTemplatesItems(items))\r\n },\r\n _collectTemplatesFromItems: items => items.reduce((prev, i) => ({\r\n items: prev.items.concat(i.getTemplatesDef()),\r\n groups: prev.groups.concat(i.getTemplatesGroups())\r\n }), {\r\n items: [],\r\n groups: []\r\n }),\r\n _getTemplatesItems(items) {\r\n var elements = this._collectTemplatesFromItems(items);\r\n var extraItems = this._getExtraTemplatesItems();\r\n return {\r\n items: extraItems.items.concat(elements.items),\r\n groups: extraItems.groups.concat(elements.groups),\r\n launchRequest: [extraItems.launchRequest],\r\n doneRequest: [extraItems.doneRequest]\r\n }\r\n },\r\n _getExtraTemplatesItems: () => ({\r\n items: [],\r\n groups: [],\r\n launchRequest: () => {},\r\n doneRequest: () => {}\r\n }),\r\n _resolveDeferred(_ref) {\r\n var {\r\n items: items,\r\n launchRequest: launchRequest,\r\n doneRequest: doneRequest,\r\n groups: groups\r\n } = _ref;\r\n var that = this;\r\n that._setGroupsVisibility(groups, \"hidden\");\r\n if (that._changesApplying) {\r\n that._changesApplying = false;\r\n callForEach(doneRequest);\r\n return\r\n }\r\n var syncRendering = true;\r\n when.apply(that, items).done(() => {\r\n if (syncRendering) {\r\n that._setGroupsVisibility(groups, \"visible\");\r\n return\r\n }\r\n callForEach(launchRequest);\r\n that._changesApplying = true;\r\n var changes = [\"LAYOUT\", \"FULL_RENDER\"];\r\n if (that._asyncFirstDrawing) {\r\n changes.push(\"FORCE_FIRST_DRAWING\");\r\n that._asyncFirstDrawing = false\r\n } else {\r\n changes.push(\"FORCE_DRAWING\")\r\n }\r\n that._requestChange(changes);\r\n that._setGroupsVisibility(groups, \"visible\")\r\n });\r\n syncRendering = false\r\n },\r\n _setGroupsVisibility(groups, visibility) {\r\n groups.forEach(g => g.attr({\r\n visibility: visibility\r\n }))\r\n },\r\n _applyQueuedOptions: function() {\r\n var queue = this._optionsQueue;\r\n this._optionsQueue = null;\r\n this.beginUpdate();\r\n each(queue, (function(_, action) {\r\n action()\r\n }));\r\n this.endUpdate()\r\n },\r\n _requestChange: function(codes) {\r\n this._suspendChanges();\r\n this._change(codes);\r\n this._resumeChanges()\r\n },\r\n _applyChanges: function() {\r\n var changes = this._changes;\r\n var order = this._totalChangesOrder;\r\n var i;\r\n var ii = order.length;\r\n for (i = 0; i < ii; ++i) {\r\n if (changes.has(order[i])) {\r\n this[\"_change_\" + order[i]]()\r\n }\r\n }\r\n },\r\n _optionChangesOrder: [\"EVENTS\", \"THEME\", \"RENDERER\", \"RESIZE_HANDLER\"],\r\n _layoutChangesOrder: [\"ELEMENT_ATTR\", \"CONTAINER_SIZE\", \"LAYOUT\"],\r\n _customChangesOrder: [\"DISABLED\"],\r\n _change_EVENTS: function() {\r\n this._eventTrigger.applyChanges()\r\n },\r\n _change_THEME: function() {\r\n this._setThemeAndRtl()\r\n },\r\n _change_RENDERER: function() {\r\n this._setRendererOptions()\r\n },\r\n _change_RESIZE_HANDLER: function() {\r\n this._setupResizeHandler()\r\n },\r\n _change_ELEMENT_ATTR: function() {\r\n this._renderElementAttributes();\r\n this._change([\"CONTAINER_SIZE\"])\r\n },\r\n _change_CONTAINER_SIZE: function() {\r\n this._updateSize()\r\n },\r\n _change_LAYOUT: function() {\r\n this._setContentSize()\r\n },\r\n _change_DISABLED: function() {\r\n var renderer = this._renderer;\r\n var root = renderer.root;\r\n if (this.option(\"disabled\")) {\r\n this._initDisabledState = root.attr(\"pointer-events\");\r\n root.attr({\r\n \"pointer-events\": \"none\",\r\n filter: renderer.getGrayScaleFilter().id\r\n })\r\n } else if (\"none\" === root.attr(\"pointer-events\")) {\r\n root.attr({\r\n \"pointer-events\": isDefined(this._initDisabledState) ? this._initDisabledState : null,\r\n filter: null\r\n })\r\n }\r\n },\r\n _themeDependentChanges: [\"RENDERER\"],\r\n _initRenderer: function() {\r\n this._canvas = this._calculateCanvas();\r\n this._renderer = new Renderer({\r\n cssClass: this._rootClassPrefix + \" \" + this._rootClass,\r\n pathModified: this.option(\"pathModified\"),\r\n container: this._$element[0]\r\n });\r\n this._renderer.resize(this._canvas.width, this._canvas.height)\r\n },\r\n _disposeRenderer: function() {\r\n this._renderer.dispose()\r\n },\r\n _getAnimationOptions: noop,\r\n render: function() {\r\n this._requestChange([\"CONTAINER_SIZE\"]);\r\n var visible = this._isVisible();\r\n this._toggleParentsScrollSubscription(visible);\r\n !visible && this._stopCurrentHandling()\r\n },\r\n _toggleParentsScrollSubscription: function(subscribe) {\r\n var $parents = $(this._renderer.root.element).parents();\r\n if (\"generic\" === devices.real().platform) {\r\n $parents = $parents.add(getWindow())\r\n }\r\n this._proxiedTargetParentsScrollHandler = this._proxiedTargetParentsScrollHandler || function() {\r\n this._stopCurrentHandling()\r\n }.bind(this);\r\n eventsEngine.off($().add(this._$prevRootParents), \"scroll.viz_widgets\", this._proxiedTargetParentsScrollHandler);\r\n if (subscribe) {\r\n eventsEngine.on($parents, \"scroll.viz_widgets\", this._proxiedTargetParentsScrollHandler);\r\n this._$prevRootParents = $parents\r\n }\r\n },\r\n _stopCurrentHandling: noop,\r\n _dispose: function() {\r\n var that = this;\r\n that.callBase.apply(that, arguments);\r\n that._toggleParentsScrollSubscription(false);\r\n that._removeResizeHandler();\r\n that._layout.dispose();\r\n that._eventTrigger.dispose();\r\n that._disposeCore();\r\n that._disposePlugins();\r\n that._disposeRenderer();\r\n that._themeManager.dispose();\r\n that._themeManager = that._renderer = that._eventTrigger = null\r\n },\r\n _initEventTrigger: function() {\r\n var that = this;\r\n that._eventTrigger = createEventTrigger(that._eventsMap, (function(name) {\r\n return that._createActionByOption(name)\r\n }))\r\n },\r\n _calculateCanvas: function() {\r\n var that = this;\r\n var size = that.option(\"size\") || {};\r\n var margin = that.option(\"margin\") || {};\r\n var defaultCanvas = that._getDefaultSize() || {};\r\n var getSizeOfSide = (size, side, getter) => {\r\n if (sizeIsValid(size[side]) || !hasWindow()) {\r\n return 0\r\n }\r\n var elementSize = getter(that._$element);\r\n return elementSize <= 1 ? 0 : elementSize\r\n };\r\n var elementWidth = getSizeOfSide(size, \"width\", x => getWidth(x));\r\n var elementHeight = getSizeOfSide(size, \"height\", x => getHeight(x));\r\n var canvas = {\r\n width: size.width <= 0 ? 0 : _floor(pickPositiveValue([size.width, elementWidth, defaultCanvas.width])),\r\n height: size.height <= 0 ? 0 : _floor(pickPositiveValue([size.height, elementHeight, defaultCanvas.height])),\r\n left: pickPositiveValue([margin.left, defaultCanvas.left]),\r\n top: pickPositiveValue([margin.top, defaultCanvas.top]),\r\n right: pickPositiveValue([margin.right, defaultCanvas.right]),\r\n bottom: pickPositiveValue([margin.bottom, defaultCanvas.bottom])\r\n };\r\n if (canvas.width - canvas.left - canvas.right <= 0 || canvas.height - canvas.top - canvas.bottom <= 0) {\r\n canvas = {\r\n width: 0,\r\n height: 0\r\n }\r\n }\r\n return canvas\r\n },\r\n _updateSize: function() {\r\n var canvas = this._calculateCanvas();\r\n this._renderer.fixPlacement();\r\n if (areCanvasesDifferent(this._canvas, canvas) || this.__forceRender) {\r\n this._canvas = canvas;\r\n this._recreateSizeDependentObjects(true);\r\n this._renderer.resize(canvas.width, canvas.height);\r\n this._change([\"LAYOUT\"])\r\n }\r\n },\r\n _recreateSizeDependentObjects: noop,\r\n _getMinSize: function() {\r\n return [0, 0]\r\n },\r\n _getAlignmentRect: noop,\r\n _setContentSize: function() {\r\n var canvas = this._canvas;\r\n var layout = this._layout;\r\n var rect = canvas.width > 0 && canvas.height > 0 ? [canvas.left, canvas.top, canvas.width - canvas.right, canvas.height - canvas.bottom] : [0, 0, 0, 0];\r\n rect = layout.forward(rect, this._getMinSize());\r\n var nextRect = this._applySize(rect) || rect;\r\n layout.backward(nextRect, this._getAlignmentRect() || nextRect)\r\n },\r\n _getOption: function(name, isScalar) {\r\n var theme = this._themeManager.theme(name);\r\n var option = this.option(name);\r\n return isScalar ? void 0 !== option ? option : theme : extend(true, {}, theme, option)\r\n },\r\n _setupResizeHandler: function() {\r\n var that = this;\r\n var redrawOnResize = _parseScalar(this._getOption(\"redrawOnResize\", true), true);\r\n if (that._resizeHandler) {\r\n that._removeResizeHandler()\r\n }\r\n that._resizeHandler = createResizeHandler((function() {\r\n if (redrawOnResize) {\r\n that._requestChange([\"CONTAINER_SIZE\"])\r\n } else {\r\n that._renderer.fixPlacement()\r\n }\r\n }));\r\n _windowResizeCallbacks.add(that._resizeHandler)\r\n },\r\n _removeResizeHandler: function() {\r\n if (this._resizeHandler) {\r\n _windowResizeCallbacks.remove(this._resizeHandler);\r\n this._resizeHandler.dispose();\r\n this._resizeHandler = null\r\n }\r\n },\r\n _onBeginUpdate: noop,\r\n beginUpdate: function() {\r\n var that = this;\r\n if (that._initialized && that._isUpdateAllowed()) {\r\n that._onBeginUpdate();\r\n that._suspendChanges()\r\n }\r\n that.callBase.apply(that, arguments);\r\n return that\r\n },\r\n endUpdate: function() {\r\n this.callBase();\r\n this._isUpdateAllowed() && this._resumeChanges();\r\n return this\r\n },\r\n option: function(name) {\r\n var that = this;\r\n if (that._initialized && that._applyingChanges && (arguments.length > 1 || _isObject(name))) {\r\n that._optionsQueue = that._optionsQueue || [];\r\n that._optionsQueue.push(that._getActionForUpdating(arguments))\r\n } else {\r\n return _option.apply(that, arguments)\r\n }\r\n },\r\n _getActionForUpdating: function(args) {\r\n var that = this;\r\n return function() {\r\n _option.apply(that, args)\r\n }\r\n },\r\n _clean: noop,\r\n _render: noop,\r\n _optionChanged: function(arg) {\r\n var that = this;\r\n if (that._optionChangedLocker) {\r\n return\r\n }\r\n var partialChanges = that.getPartialChangeOptionsName(arg);\r\n var changes = [];\r\n if (partialChanges.length > 0) {\r\n partialChanges.forEach(pc => changes.push(that._partialOptionChangesMap[pc]))\r\n } else {\r\n changes.push(that._optionChangesMap[arg.name])\r\n }\r\n changes = changes.filter(c => !!c);\r\n if (that._eventTrigger.change(arg.name)) {\r\n that._change([\"EVENTS\"])\r\n } else if (changes.length > 0) {\r\n that._change(changes)\r\n } else {\r\n that.callBase.apply(that, arguments)\r\n }\r\n },\r\n _notify: noop,\r\n _changesApplied: noop,\r\n _optionChangesMap: {\r\n size: \"CONTAINER_SIZE\",\r\n margin: \"CONTAINER_SIZE\",\r\n redrawOnResize: \"RESIZE_HANDLER\",\r\n theme: \"THEME\",\r\n rtlEnabled: \"THEME\",\r\n encodeHtml: \"THEME\",\r\n elementAttr: \"ELEMENT_ATTR\",\r\n disabled: \"DISABLED\"\r\n },\r\n _partialOptionChangesMap: {},\r\n _partialOptionChangesPath: {},\r\n getPartialChangeOptionsName: function(changedOption) {\r\n var that = this;\r\n var fullName = changedOption.fullName;\r\n var sections = fullName.split(/[.]/);\r\n var name = changedOption.name;\r\n var value = changedOption.value;\r\n var options = this._partialOptionChangesPath[name];\r\n var partialChangeOptionsName = [];\r\n if (options) {\r\n if (true === options) {\r\n partialChangeOptionsName.push(name)\r\n } else {\r\n options.forEach(op => {\r\n fullName.indexOf(op) >= 0 && partialChangeOptionsName.push(op)\r\n });\r\n if (1 === sections.length) {\r\n if (\"object\" === type(value)) {\r\n that._addOptionsNameForPartialUpdate(value, options, partialChangeOptionsName)\r\n } else if (\"array\" === type(value)) {\r\n if (value.length > 0 && value.every(item => that._checkOptionsForPartialUpdate(item, options))) {\r\n value.forEach(item => that._addOptionsNameForPartialUpdate(item, options, partialChangeOptionsName))\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return partialChangeOptionsName.filter((value, index, self) => self.indexOf(value) === index)\r\n },\r\n _checkOptionsForPartialUpdate: function(optionObject, options) {\r\n return !Object.keys(optionObject).some(key => -1 === options.indexOf(key))\r\n },\r\n _addOptionsNameForPartialUpdate: function(optionObject, options, partialChangeOptionsName) {\r\n var optionKeys = Object.keys(optionObject);\r\n if (this._checkOptionsForPartialUpdate(optionObject, options)) {\r\n optionKeys.forEach(key => options.indexOf(key) > -1 && partialChangeOptionsName.push(key))\r\n }\r\n },\r\n _visibilityChanged: function() {\r\n this.render()\r\n },\r\n _setThemeAndRtl: function() {\r\n this._themeManager.setTheme(this.option(\"theme\"), this.option(OPTION_RTL_ENABLED))\r\n },\r\n _getRendererOptions: function() {\r\n return {\r\n rtl: this.option(OPTION_RTL_ENABLED),\r\n encodeHtml: this.option(\"encodeHtml\"),\r\n animation: this._getAnimationOptions()\r\n }\r\n },\r\n _setRendererOptions: function() {\r\n this._renderer.setOptions(this._getRendererOptions())\r\n },\r\n svg: function() {\r\n return this._renderer.svg()\r\n },\r\n getSize: function() {\r\n var canvas = this._canvas || {};\r\n return {\r\n width: canvas.width,\r\n height: canvas.height\r\n }\r\n },\r\n isReady: getFalse,\r\n _dataIsReady: getTrue,\r\n _resetIsReady: function() {\r\n this.isReady = getFalse\r\n },\r\n _drawn: function() {\r\n var that = this;\r\n that.isReady = getFalse;\r\n if (that._dataIsReady()) {\r\n that._renderer.onEndAnimation((function() {\r\n that.isReady = getTrue\r\n }))\r\n }\r\n that._eventTrigger(\"drawn\", {})\r\n }\r\n});\r\nexport default baseWidget;\r\nreplaceInherit(baseWidget);\r\n","/**\r\n * DevExtreme (esm/viz/core/export.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n getWindow\r\n} from \"../../core/utils/window\";\r\nimport {\r\n patchFontOptions\r\n} from \"./utils\";\r\nimport {\r\n HIDDEN_FOR_EXPORT\r\n} from \"../../core/utils/svg\";\r\nimport {\r\n export as _export,\r\n image as imageExporter,\r\n svg as svgExporter,\r\n pdf as pdfExporter\r\n} from \"../../exporter\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n getTheme\r\n} from \"../themes\";\r\nimport {\r\n start as hoverEventStart,\r\n end as hoverEventEnd\r\n} from \"../../events/hover\";\r\nimport pointerEvents from \"../../events/pointer\";\r\nimport {\r\n logger\r\n} from \"../../core/utils/console\";\r\nimport {\r\n getWidth\r\n} from \"../../core/utils/size\";\r\nvar pointerActions = [pointerEvents.down, pointerEvents.move].join(\" \");\r\nvar BUTTON_SIZE = 35;\r\nvar ICON_COORDS = [\r\n [9, 12, 26, 12, 26, 14, 9, 14],\r\n [9, 17, 26, 17, 26, 19, 9, 19],\r\n [9, 22, 26, 22, 26, 24, 9, 24]\r\n];\r\nvar LIST_PADDING_TOP = 4;\r\nvar LIST_WIDTH = 120;\r\nvar VERTICAL_TEXT_MARGIN = 8;\r\nvar HORIZONTAL_TEXT_MARGIN = 15;\r\nvar MENU_ITEM_HEIGHT = 30;\r\nvar LIST_STROKE_WIDTH = 1;\r\nvar MARGIN = 10;\r\nvar SHADOW_OFFSET = 2;\r\nvar SHADOW_BLUR = 3;\r\nvar DEFAULT_EXPORT_FORMAT = \"PNG\";\r\nvar ALLOWED_IMAGE_FORMATS = [DEFAULT_EXPORT_FORMAT, \"JPEG\", \"GIF\"];\r\nvar ALLOWED_EXTRA_FORMATS = [\"PDF\", \"SVG\"];\r\nvar EXPORT_CSS_CLASS = \"dx-export-menu\";\r\nvar A4WidthCm = \"21cm\";\r\nvar EXPORT_DATA_KEY = \"export-element-type\";\r\nvar FORMAT_DATA_KEY = \"export-element-format\";\r\nvar GET_COLOR_REGEX = /data-backgroundcolor=\"([^\"]*)\"/;\r\n\r\nfunction getValidFormats() {\r\n var imageFormats = imageExporter.testFormats(ALLOWED_IMAGE_FORMATS);\r\n return {\r\n unsupported: imageFormats.unsupported,\r\n supported: imageFormats.supported.concat(ALLOWED_EXTRA_FORMATS)\r\n }\r\n}\r\n\r\nfunction validateFormat(format, incidentOccurred, validFormats) {\r\n validFormats = validFormats || getValidFormats();\r\n format = String(format).toUpperCase();\r\n if (-1 !== validFormats.supported.indexOf(format)) {\r\n return format\r\n }\r\n if (-1 !== validFormats.unsupported.indexOf(format)) {\r\n incidentOccurred && incidentOccurred(\"W2108\", [format])\r\n }\r\n}\r\n\r\nfunction getCreatorFunc(format) {\r\n if (\"SVG\" === format) {\r\n return svgExporter.getData\r\n } else if (\"PDF\" === format) {\r\n return pdfExporter.getData\r\n } else {\r\n return imageExporter.getData\r\n }\r\n}\r\n\r\nfunction print(imageSrc, options) {\r\n var document = getWindow().document;\r\n var iFrame = document.createElement(\"iframe\");\r\n iFrame.onload = setPrint(imageSrc, options);\r\n iFrame.style.position = \"fixed\";\r\n iFrame.style.width = \"0\";\r\n iFrame.style.height = \"0\";\r\n iFrame.style.right = \"0\";\r\n iFrame.style.bottom = \"0\";\r\n document.body.appendChild(iFrame)\r\n}\r\n\r\nfunction calculatePrintPageWidth(iFrameBody) {\r\n iFrameBody.style.width = A4WidthCm;\r\n var width = getWidth(iFrameBody);\r\n iFrameBody.style.width = \"\";\r\n return width\r\n}\r\n\r\nfunction setPrint(imageSrc, options) {\r\n return function() {\r\n var window = this.contentWindow;\r\n var img = window.document.createElement(\"img\");\r\n window.document.body.appendChild(img);\r\n var widthRatio = calculatePrintPageWidth(window.document.body) / options.width;\r\n if (widthRatio < 1) {\r\n window.document.body.style.transform = \"scale(\".concat(widthRatio, \")\");\r\n window.document.body.style[\"transform-origin\"] = \"0 0\"\r\n }\r\n var removeFrame = () => {\r\n this.parentElement.removeChild(this)\r\n };\r\n img.addEventListener(\"load\", () => {\r\n window.focus();\r\n window.print()\r\n });\r\n img.addEventListener(\"error\", removeFrame);\r\n window.addEventListener(\"afterprint\", () => {\r\n setTimeout(removeFrame, 0)\r\n });\r\n img.src = imageSrc\r\n }\r\n}\r\n\r\nfunction getItemAttributes(options, type, itemIndex) {\r\n var x = BUTTON_SIZE - LIST_WIDTH;\r\n var y = BUTTON_SIZE + LIST_PADDING_TOP + LIST_STROKE_WIDTH + itemIndex * MENU_ITEM_HEIGHT;\r\n var attr = {\r\n rect: {\r\n width: LIST_WIDTH - 2 * LIST_STROKE_WIDTH,\r\n height: MENU_ITEM_HEIGHT,\r\n x: x + LIST_STROKE_WIDTH,\r\n y: y\r\n },\r\n text: {\r\n x: x + (options.rtl ? LIST_WIDTH - HORIZONTAL_TEXT_MARGIN : HORIZONTAL_TEXT_MARGIN),\r\n y: y + MENU_ITEM_HEIGHT - VERTICAL_TEXT_MARGIN\r\n }\r\n };\r\n if (\"printing\" === type) {\r\n attr.separator = {\r\n stroke: options.button.default.borderColor,\r\n \"stroke-width\": LIST_STROKE_WIDTH,\r\n cursor: \"pointer\",\r\n sharp: \"v\",\r\n d: \"M \" + x + \" \" + (y + MENU_ITEM_HEIGHT - LIST_STROKE_WIDTH) + \" L \" + (x + LIST_WIDTH) + \" \" + (y + MENU_ITEM_HEIGHT - LIST_STROKE_WIDTH)\r\n }\r\n }\r\n return attr\r\n}\r\n\r\nfunction createMenuItem(renderer, options, settings) {\r\n var itemData = {};\r\n var type = settings.type;\r\n var format = settings.format;\r\n var attr = getItemAttributes(options, type, settings.itemIndex);\r\n var fontStyle = patchFontOptions(options.font);\r\n fontStyle[\"pointer-events\"] = \"none\";\r\n var menuItem = renderer.g().attr({\r\n class: EXPORT_CSS_CLASS + \"-list-item\"\r\n });\r\n itemData[EXPORT_DATA_KEY] = type;\r\n if (format) {\r\n itemData[FORMAT_DATA_KEY] = format\r\n }\r\n var rect = renderer.rect();\r\n rect.attr(attr.rect).css({\r\n cursor: \"pointer\",\r\n \"pointer-events\": \"all\"\r\n }).data(itemData);\r\n rect.on(hoverEventStart + \".export\", () => rect.attr({\r\n fill: options.button.hover.backgroundColor\r\n })).on(hoverEventEnd + \".export\", () => rect.attr({\r\n fill: null\r\n }));\r\n rect.append(menuItem);\r\n var text = renderer.text(settings.text).css(fontStyle).attr(attr.text).append(menuItem);\r\n if (\"printing\" === type) {\r\n renderer.path(null, \"line\").attr(attr.separator).append(menuItem)\r\n }\r\n return {\r\n g: menuItem,\r\n rect: rect,\r\n resetState: () => rect.attr({\r\n fill: null\r\n }),\r\n fixPosition: () => {\r\n var textBBox = text.getBBox();\r\n text.move(attr.text.x - textBBox.x - (options.rtl ? textBBox.width : 0))\r\n }\r\n }\r\n}\r\n\r\nfunction createMenuItems(renderer, options) {\r\n var items = [];\r\n if (options.printingEnabled) {\r\n items.push(createMenuItem(renderer, options, {\r\n type: \"printing\",\r\n text: messageLocalization.format(\"vizExport-printingButtonText\"),\r\n itemIndex: items.length\r\n }))\r\n }\r\n items = options.formats.reduce((r, format) => {\r\n r.push(createMenuItem(renderer, options, {\r\n type: \"exporting\",\r\n text: messageLocalization.getFormatter(\"vizExport-exportButtonText\")(format),\r\n format: format,\r\n itemIndex: r.length\r\n }));\r\n return r\r\n }, items);\r\n return items\r\n}\r\n\r\nfunction getBackgroundColorFromMarkup(markup) {\r\n var parsedMarkup = GET_COLOR_REGEX.exec(markup);\r\n return null === parsedMarkup || void 0 === parsedMarkup ? void 0 : parsedMarkup[1]\r\n}\r\nexport var exportFromMarkup = function(markup, options) {\r\n options.format = validateFormat(options.format) || DEFAULT_EXPORT_FORMAT;\r\n options.fileName = options.fileName || \"file\";\r\n options.exportingAction = options.onExporting;\r\n options.exportedAction = options.onExported;\r\n options.fileSavingAction = options.onFileSaving;\r\n options.margin = isDefined(options.margin) ? options.margin : MARGIN;\r\n options.backgroundColor = isDefined(options.backgroundColor) ? options.backgroundColor : getBackgroundColorFromMarkup(markup) || getTheme().backgroundColor;\r\n _export(markup, options, getCreatorFunc(options.format))\r\n};\r\nexport var getMarkup = widgets => combineMarkups(widgets).markup;\r\nexport var exportWidgets = function(widgets, options) {\r\n options = options || {};\r\n var markupInfo = combineMarkups(widgets, {\r\n gridLayout: options.gridLayout,\r\n verticalAlignment: options.verticalAlignment,\r\n horizontalAlignment: options.horizontalAlignment\r\n });\r\n options.width = markupInfo.width;\r\n options.height = markupInfo.height;\r\n exportFromMarkup(markupInfo.markup, options)\r\n};\r\nexport var combineMarkups = function(widgets) {\r\n var options = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\r\n if (!Array.isArray(widgets)) {\r\n widgets = [\r\n [widgets]\r\n ]\r\n } else if (!Array.isArray(widgets[0])) {\r\n widgets = widgets.map(item => [item])\r\n }\r\n var compactView = !options.gridLayout;\r\n var exportItems = widgets.reduce((r, row, rowIndex) => {\r\n var rowInfo = row.reduce((r, item, colIndex) => {\r\n var size = item.getSize();\r\n var backgroundColor = item.option(\"backgroundColor\") || getTheme(item.option(\"theme\")).backgroundColor;\r\n backgroundColor && -1 === r.backgroundColors.indexOf(backgroundColor) && r.backgroundColors.push(backgroundColor);\r\n r.hOffset = r.width;\r\n r.width += size.width;\r\n r.height = Math.max(r.height, size.height);\r\n r.itemWidth = Math.max(r.itemWidth, size.width);\r\n r.items.push({\r\n markup: item.svg(),\r\n width: size.width,\r\n height: size.height,\r\n c: colIndex,\r\n r: rowIndex,\r\n hOffset: r.hOffset\r\n });\r\n return r\r\n }, {\r\n items: [],\r\n height: 0,\r\n itemWidth: 0,\r\n hOffset: 0,\r\n width: 0,\r\n backgroundColors: r.backgroundColors\r\n });\r\n r.rowOffsets.push(r.totalHeight);\r\n r.rowHeights.push(rowInfo.height);\r\n r.totalHeight += rowInfo.height;\r\n r.items = r.items.concat(rowInfo.items);\r\n r.itemWidth = Math.max(r.itemWidth, rowInfo.itemWidth);\r\n r.maxItemLen = Math.max(r.maxItemLen, rowInfo.items.length);\r\n r.totalWidth = compactView ? Math.max(r.totalWidth, rowInfo.width) : r.maxItemLen * r.itemWidth;\r\n return r\r\n }, {\r\n items: [],\r\n rowOffsets: [],\r\n rowHeights: [],\r\n itemWidth: 0,\r\n totalHeight: 0,\r\n maxItemLen: 0,\r\n totalWidth: 0,\r\n backgroundColors: []\r\n });\r\n var backgroundColor = 'data-backgroundcolor=\"'.concat(1 === exportItems.backgroundColors.length ? exportItems.backgroundColors[0] : \"\", '\" ');\r\n var getVOffset = item => {\r\n var align = options.verticalAlignment;\r\n var dy = exportItems.rowHeights[item.r] - item.height;\r\n return exportItems.rowOffsets[item.r] + (\"bottom\" === align ? dy : \"center\" === align ? dy / 2 : 0)\r\n };\r\n var getHOffset = item => {\r\n if (compactView) {\r\n return item.hOffset\r\n }\r\n var align = options.horizontalAlignment;\r\n var colWidth = exportItems.itemWidth;\r\n var dx = colWidth - item.width;\r\n return item.c * colWidth + (\"right\" === align ? dx : \"center\" === align ? dx / 2 : 0)\r\n };\r\n var totalHeight = exportItems.totalHeight;\r\n var totalWidth = exportItems.totalWidth;\r\n return {\r\n markup: \"' + exportItems.items.map(item => '').concat(item.markup, \"\")).join(\"\") + \"\",\r\n width: totalWidth,\r\n height: totalHeight\r\n }\r\n};\r\nexport var ExportMenu = function(params) {\r\n var renderer = this._renderer = params.renderer;\r\n this._incidentOccurred = params.incidentOccurred;\r\n this._exportTo = params.exportTo;\r\n this._print = params.print;\r\n this._shadow = renderer.shadowFilter(\"-50%\", \"-50%\", \"200%\", \"200%\", SHADOW_OFFSET, 6, SHADOW_BLUR);\r\n this._shadow.attr({\r\n opacity: .8\r\n });\r\n this._group = renderer.g().attr({\r\n class: EXPORT_CSS_CLASS,\r\n [HIDDEN_FOR_EXPORT]: true\r\n }).linkOn(renderer.root, {\r\n name: \"export-menu\",\r\n after: \"peripheral\"\r\n });\r\n this._buttonGroup = renderer.g().attr({\r\n class: EXPORT_CSS_CLASS + \"-button\"\r\n }).append(this._group);\r\n this._listGroup = renderer.g().attr({\r\n class: EXPORT_CSS_CLASS + \"-list\"\r\n }).append(this._group);\r\n this._overlay = renderer.rect(-LIST_WIDTH + BUTTON_SIZE, BUTTON_SIZE + LIST_PADDING_TOP, LIST_WIDTH, 0);\r\n this._overlay.attr({\r\n \"stroke-width\": LIST_STROKE_WIDTH,\r\n cursor: \"pointer\",\r\n rx: 4,\r\n ry: 4,\r\n filter: this._shadow.id\r\n });\r\n this._overlay.data({\r\n \"export-element-type\": \"list\"\r\n });\r\n this.validFormats = getValidFormats();\r\n this._subscribeEvents()\r\n};\r\nextend(ExportMenu.prototype, {\r\n getLayoutOptions() {\r\n if (this._hiddenDueToLayout) {\r\n return {\r\n width: 0,\r\n height: 0,\r\n cutSide: \"vertical\",\r\n cutLayoutSide: \"top\"\r\n }\r\n }\r\n var bBox = this._buttonGroup.getBBox();\r\n bBox.cutSide = \"vertical\";\r\n bBox.cutLayoutSide = \"top\";\r\n bBox.height += MARGIN;\r\n bBox.position = {\r\n vertical: \"top\",\r\n horizontal: \"right\"\r\n };\r\n bBox.verticalAlignment = \"top\";\r\n bBox.horizontalAlignment = \"right\";\r\n return bBox\r\n },\r\n shift(_, y) {\r\n this._group.attr({\r\n translateY: this._group.attr(\"translateY\") + y\r\n })\r\n },\r\n draw(width, height, canvas) {\r\n this._group.move(width - BUTTON_SIZE - SHADOW_OFFSET - SHADOW_BLUR + canvas.left, Math.floor(height / 2 - BUTTON_SIZE / 2));\r\n var layoutOptions = this.getLayoutOptions();\r\n if (layoutOptions.width > width || layoutOptions.height > height) {\r\n this.freeSpace()\r\n }\r\n return this\r\n },\r\n show() {\r\n this._group.linkAppend()\r\n },\r\n hide() {\r\n this._group.linkRemove()\r\n },\r\n setOptions(options) {\r\n this._options = options;\r\n if (options.formats) {\r\n options.formats = options.formats.reduce((r, format) => {\r\n format = validateFormat(format, this._incidentOccurred, this.validFormats);\r\n format && r.push(format);\r\n return r\r\n }, [])\r\n } else {\r\n options.formats = this.validFormats.supported.slice()\r\n }\r\n options.printingEnabled = void 0 === options.printingEnabled ? true : options.printingEnabled;\r\n if (options.enabled && (options.formats.length || options.printingEnabled)) {\r\n this.show();\r\n this._updateButton();\r\n this._updateList();\r\n this._hideList()\r\n } else {\r\n this.hide()\r\n }\r\n },\r\n dispose() {\r\n this._unsubscribeEvents();\r\n this._group.linkRemove().linkOff();\r\n this._group.dispose();\r\n this._shadow.dispose()\r\n },\r\n layoutOptions() {\r\n return this._options.enabled && {\r\n horizontalAlignment: \"right\",\r\n verticalAlignment: \"top\",\r\n weak: true\r\n }\r\n },\r\n measure() {\r\n this._fillSpace();\r\n var margin = this._options.button.margin;\r\n return [BUTTON_SIZE + margin.left + margin.right, BUTTON_SIZE + margin.top + margin.bottom]\r\n },\r\n move(rect) {\r\n var margin = this._options.button.margin;\r\n this._group.attr({\r\n translateX: Math.round(rect[0]) + margin.left,\r\n translateY: Math.round(rect[1]) + margin.top\r\n })\r\n },\r\n _fillSpace() {\r\n this._hiddenDueToLayout = false;\r\n this.show()\r\n },\r\n freeSpace() {\r\n this._incidentOccurred(\"W2107\");\r\n this._hiddenDueToLayout = true;\r\n this.hide()\r\n },\r\n _hideList() {\r\n this._listGroup.remove();\r\n this._listShown = false;\r\n this._setButtonState(\"default\");\r\n this._menuItems.forEach(item => item.resetState())\r\n },\r\n _showList() {\r\n this._listGroup.append(this._group);\r\n this._listShown = true;\r\n this._menuItems.forEach(item => item.fixPosition())\r\n },\r\n _setButtonState(state) {\r\n var style = this._options.button[state];\r\n this._button.attr({\r\n stroke: style.borderColor,\r\n fill: style.backgroundColor\r\n });\r\n this._icon.attr({\r\n fill: style.color\r\n })\r\n },\r\n _subscribeEvents() {\r\n this._renderer.root.on(pointerEvents.up + \".export\", e => {\r\n var elementType = e.target[EXPORT_DATA_KEY];\r\n if (!elementType) {\r\n if (this._button) {\r\n this._hideList()\r\n }\r\n return\r\n }\r\n if (\"button\" === elementType) {\r\n if (this._listShown) {\r\n this._setButtonState(\"default\");\r\n this._hideList()\r\n } else {\r\n this._setButtonState(\"focus\");\r\n this._showList()\r\n }\r\n } else if (\"printing\" === elementType) {\r\n this._print();\r\n this._hideList()\r\n } else if (\"exporting\" === elementType) {\r\n this._exportTo(e.target[FORMAT_DATA_KEY]);\r\n this._hideList()\r\n }\r\n });\r\n this._listGroup.on(pointerActions, e => e.stopPropagation());\r\n this._buttonGroup.on(pointerEvents.enter, () => this._setButtonState(\"hover\"));\r\n this._buttonGroup.on(pointerEvents.leave, () => this._setButtonState(this._listShown ? \"focus\" : \"default\"));\r\n this._buttonGroup.on(pointerEvents.down + \".export\", () => this._setButtonState(\"active\"))\r\n },\r\n _unsubscribeEvents() {\r\n this._renderer.root.off(\".export\");\r\n this._listGroup.off();\r\n this._buttonGroup.off()\r\n },\r\n _updateButton() {\r\n var renderer = this._renderer;\r\n var options = this._options;\r\n var exportData = {\r\n \"export-element-type\": \"button\"\r\n };\r\n if (!this._button) {\r\n this._button = renderer.rect(0, 0, BUTTON_SIZE, BUTTON_SIZE).append(this._buttonGroup);\r\n this._button.attr({\r\n rx: 4,\r\n ry: 4,\r\n fill: options.button.default.backgroundColor,\r\n stroke: options.button.default.borderColor,\r\n \"stroke-width\": 1,\r\n cursor: \"pointer\"\r\n });\r\n this._button.data(exportData);\r\n this._icon = renderer.path(ICON_COORDS).append(this._buttonGroup);\r\n this._icon.attr({\r\n fill: options.button.default.color,\r\n cursor: \"pointer\"\r\n });\r\n this._icon.data(exportData);\r\n this._buttonGroup.setTitle(messageLocalization.format(\"vizExport-titleMenuText\"))\r\n }\r\n },\r\n _updateList() {\r\n var options = this._options;\r\n var buttonDefault = options.button.default;\r\n var listGroup = this._listGroup;\r\n var items = createMenuItems(this._renderer, options);\r\n this._shadow.attr({\r\n color: options.shadowColor\r\n });\r\n this._overlay.attr({\r\n height: items.length * MENU_ITEM_HEIGHT + 2 * LIST_STROKE_WIDTH,\r\n fill: buttonDefault.backgroundColor,\r\n stroke: buttonDefault.borderColor\r\n });\r\n listGroup.clear();\r\n this._overlay.append(listGroup);\r\n items.forEach(item => item.g.append(listGroup));\r\n this._menuItems = items\r\n }\r\n});\r\n\r\nfunction getExportOptions(widget, exportOptions, fileName, format) {\r\n if (format || exportOptions.format) {\r\n format = validateFormat(format || exportOptions.format, widget._incidentOccurred)\r\n }\r\n var {\r\n width: width,\r\n height: height\r\n } = widget.getSize();\r\n return {\r\n format: format || DEFAULT_EXPORT_FORMAT,\r\n fileName: fileName || exportOptions.fileName || \"file\",\r\n proxyUrl: exportOptions.proxyUrl,\r\n backgroundColor: exportOptions.backgroundColor,\r\n width: width,\r\n height: height,\r\n margin: exportOptions.margin,\r\n svgToCanvas: exportOptions.svgToCanvas,\r\n forceProxy: exportOptions.forceProxy,\r\n exportingAction: widget._createActionByOption(\"onExporting\"),\r\n exportedAction: widget._createActionByOption(\"onExported\"),\r\n fileSavingAction: widget._createActionByOption(\"onFileSaving\")\r\n }\r\n}\r\nexport var plugin = {\r\n name: \"export\",\r\n init() {\r\n this._exportMenu = new ExportMenu({\r\n renderer: this._renderer,\r\n incidentOccurred: this._incidentOccurred,\r\n print: () => this.print(),\r\n exportTo: format => this.exportTo(void 0, format)\r\n });\r\n this._layout.add(this._exportMenu)\r\n },\r\n dispose() {\r\n this._exportMenu.dispose()\r\n },\r\n members: {\r\n _getExportMenuOptions() {\r\n return extend({}, this._getOption(\"export\"), {\r\n rtl: this._getOption(\"rtlEnabled\", true)\r\n })\r\n },\r\n _disablePointerEvents() {\r\n var pointerEventsValue = this._renderer.root.attr(\"pointer-events\");\r\n this._renderer.root.attr({\r\n \"pointer-events\": \"none\"\r\n });\r\n return pointerEventsValue\r\n },\r\n exportTo(fileName, format) {\r\n var menu = this._exportMenu;\r\n var options = getExportOptions(this, this._getOption(\"export\") || {}, fileName, format);\r\n menu && menu.hide();\r\n var pointerEventsValue = this._disablePointerEvents();\r\n var promise = _export(this._renderer.root.element, options, getCreatorFunc(options.format)).fail(logger.error).always(() => {\r\n this._renderer.root.attr({\r\n \"pointer-events\": pointerEventsValue\r\n })\r\n });\r\n menu && menu.show();\r\n return promise\r\n },\r\n print() {\r\n var menu = this._exportMenu;\r\n var options = getExportOptions(this, this._getOption(\"export\") || {});\r\n options.exportingAction = null;\r\n options.exportedAction = null;\r\n options.margin = 0;\r\n options.format = \"PNG\";\r\n options.forceProxy = true;\r\n options.fileSavingAction = eventArgs => {\r\n print(\"data:image/png;base64,\".concat(eventArgs.data), {\r\n width: options.width,\r\n __test: options.__test\r\n });\r\n eventArgs.cancel = true\r\n };\r\n var pointerEventsValue = this._disablePointerEvents();\r\n menu && menu.hide();\r\n var promise = _export(this._renderer.root.element, options, getCreatorFunc(options.format)).fail(logger.error).always(() => {\r\n this._renderer.root.attr({\r\n \"pointer-events\": pointerEventsValue\r\n })\r\n });\r\n menu && menu.show();\r\n return promise\r\n }\r\n },\r\n customize(constructor) {\r\n var proto = constructor.prototype;\r\n constructor.addChange({\r\n code: \"EXPORT\",\r\n handler() {\r\n this._exportMenu.setOptions(this._getExportMenuOptions());\r\n this._change([\"LAYOUT\"])\r\n },\r\n isThemeDependent: true,\r\n isOptionChange: true,\r\n option: \"export\"\r\n });\r\n proto._optionChangesMap.onExporting = \"EXPORT\";\r\n proto._optionChangesMap.onExported = \"EXPORT\";\r\n proto._optionChangesMap.onFileSaving = \"EXPORT\"\r\n },\r\n fontFields: [\"export.font\"]\r\n};\r\n","/**\r\n * DevExtreme (esm/viz/core/layout_element.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nvar _round = Math.round;\r\nimport {\r\n clone\r\n} from \"../../core/utils/object\";\r\nvar defaultOffset = {\r\n horizontal: 0,\r\n vertical: 0\r\n};\r\nvar alignFactors = {\r\n center: .5,\r\n right: 1,\r\n bottom: 1,\r\n left: 0,\r\n top: 0\r\n};\r\n\r\nfunction LayoutElement(options) {\r\n this._options = options\r\n}\r\nLayoutElement.prototype = {\r\n constructor: LayoutElement,\r\n position: function(options) {\r\n var ofBBox = options.of.getLayoutOptions();\r\n var myBBox = this.getLayoutOptions();\r\n var at = options.at;\r\n var my = options.my;\r\n var offset = options.offset || defaultOffset;\r\n var shiftX = -alignFactors[my.horizontal] * myBBox.width + ofBBox.x + alignFactors[at.horizontal] * ofBBox.width + parseInt(offset.horizontal);\r\n var shiftY = -alignFactors[my.vertical] * myBBox.height + ofBBox.y + alignFactors[at.vertical] * ofBBox.height + parseInt(offset.vertical);\r\n this.shift(_round(shiftX), _round(shiftY))\r\n },\r\n getLayoutOptions: noop\r\n};\r\n\r\nfunction WrapperLayoutElement(renderElement, bBox) {\r\n this._renderElement = renderElement;\r\n this._cacheBBox = bBox\r\n}\r\nvar wrapperLayoutElementPrototype = WrapperLayoutElement.prototype = clone(LayoutElement.prototype);\r\nwrapperLayoutElementPrototype.constructor = WrapperLayoutElement;\r\nwrapperLayoutElementPrototype.getLayoutOptions = function() {\r\n return this._cacheBBox || this._renderElement.getBBox()\r\n};\r\nwrapperLayoutElementPrototype.shift = function(shiftX, shiftY) {\r\n var bBox = this.getLayoutOptions();\r\n this._renderElement.move(_round(shiftX - bBox.x), _round(shiftY - bBox.y))\r\n};\r\nexport {\r\n LayoutElement,\r\n WrapperLayoutElement\r\n};\r\n","/**\r\n * DevExtreme (esm/viz/core/title.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n isString as _isString\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n patchFontOptions as _patchFontOptions,\r\n enumParser\r\n} from \"./utils\";\r\nimport {\r\n LayoutElement\r\n} from \"./layout_element\";\r\nvar _Number = Number;\r\nvar parseHorizontalAlignment = enumParser([\"left\", \"center\", \"right\"]);\r\nvar parseVerticalAlignment = enumParser([\"top\", \"bottom\"]);\r\nvar DEFAULT_MARGIN = 10;\r\n\r\nfunction hasText(text) {\r\n return !!(text && String(text).length > 0)\r\n}\r\n\r\nfunction processTitleLength(elem, text, width, options, placeholderSize) {\r\n if (elem.attr({\r\n text: text\r\n }).setMaxSize(width, placeholderSize, options).textChanged) {\r\n elem.setTitle(text)\r\n }\r\n}\r\n\r\nfunction pickMarginValue(value) {\r\n return value >= 0 ? _Number(value) : DEFAULT_MARGIN\r\n}\r\n\r\nfunction validateMargin(margin) {\r\n var result;\r\n if (margin >= 0) {\r\n result = {\r\n left: _Number(margin),\r\n top: _Number(margin),\r\n right: _Number(margin),\r\n bottom: _Number(margin)\r\n }\r\n } else {\r\n margin = margin || {};\r\n result = {\r\n left: pickMarginValue(margin.left),\r\n top: pickMarginValue(margin.top),\r\n right: pickMarginValue(margin.right),\r\n bottom: pickMarginValue(margin.bottom)\r\n }\r\n }\r\n return result\r\n}\r\n\r\nfunction checkRect(rect, boundingRect) {\r\n return rect[2] - rect[0] < boundingRect.width || rect[3] - rect[1] < boundingRect.height\r\n}\r\nexport var Title = function(params) {\r\n this._params = params;\r\n this._group = params.renderer.g().attr({\r\n class: params.cssClass\r\n }).linkOn(params.root || params.renderer.root, \"title\");\r\n this._hasText = false\r\n};\r\nextend(Title.prototype, LayoutElement.prototype, {\r\n dispose: function() {\r\n this._group.linkRemove();\r\n this._group.linkOff();\r\n if (this._titleElement) {\r\n this._clipRect.dispose();\r\n this._titleElement = this._subtitleElement = this._clipRect = null\r\n }\r\n this._params = this._group = this._options = null\r\n },\r\n _updateOptions: function(options) {\r\n this._options = options;\r\n this._options.horizontalAlignment = parseHorizontalAlignment(options.horizontalAlignment, \"center\");\r\n this._options.verticalAlignment = parseVerticalAlignment(options.verticalAlignment, \"top\");\r\n this._options.margin = validateMargin(options.margin)\r\n },\r\n _updateStructure: function() {\r\n var renderer = this._params.renderer;\r\n var group = this._group;\r\n var options = this._options;\r\n var align = options.horizontalAlignment;\r\n if (!this._titleElement) {\r\n this._titleElement = renderer.text().append(group);\r\n this._subtitleElement = renderer.text();\r\n this._clipRect = renderer.clipRect();\r\n group.attr({\r\n \"clip-path\": this._clipRect.id\r\n })\r\n }\r\n this._titleElement.attr({\r\n align: align,\r\n class: options.cssClass\r\n });\r\n this._subtitleElement.attr({\r\n align: align,\r\n class: options.subtitle.cssClass\r\n });\r\n group.linkAppend();\r\n hasText(options.subtitle.text) ? this._subtitleElement.append(group) : this._subtitleElement.remove()\r\n },\r\n _updateTexts: function() {\r\n var options = this._options;\r\n var subtitleOptions = options.subtitle;\r\n var titleElement = this._titleElement;\r\n var subtitleElement = this._subtitleElement;\r\n var titleBox;\r\n titleElement.attr({\r\n text: \"A\",\r\n y: 0\r\n }).css(_patchFontOptions(options.font));\r\n titleBox = titleElement.getBBox();\r\n this._baseLineCorrection = titleBox.height + titleBox.y;\r\n titleElement.attr({\r\n text: options.text\r\n });\r\n titleBox = titleElement.getBBox();\r\n var y = -titleBox.y;\r\n titleElement.attr({\r\n y: y\r\n });\r\n if (hasText(subtitleOptions.text)) {\r\n subtitleElement.attr({\r\n text: subtitleOptions.text,\r\n y: 0\r\n }).css(_patchFontOptions(subtitleOptions.font))\r\n }\r\n },\r\n _shiftSubtitle() {\r\n var titleBox = this._titleElement.getBBox();\r\n var element = this._subtitleElement;\r\n var offset = this._options.subtitle.offset;\r\n element.move(0, titleBox.y + titleBox.height - element.getBBox().y - offset)\r\n },\r\n _updateBoundingRectAlignment: function() {\r\n var boundingRect = this._boundingRect;\r\n var options = this._options;\r\n boundingRect.verticalAlignment = options.verticalAlignment;\r\n boundingRect.horizontalAlignment = options.horizontalAlignment;\r\n boundingRect.cutLayoutSide = options.verticalAlignment;\r\n boundingRect.cutSide = \"vertical\";\r\n boundingRect.position = {\r\n horizontal: options.horizontalAlignment,\r\n vertical: options.verticalAlignment\r\n }\r\n },\r\n hasText: function() {\r\n return this._hasText\r\n },\r\n update: function(themeOptions, userOptions) {\r\n var options = extend(true, {}, themeOptions, processTitleOptions(userOptions));\r\n var _hasText = hasText(options.text);\r\n var isLayoutChanged = _hasText || _hasText !== this._hasText;\r\n this._baseLineCorrection = 0;\r\n this._updateOptions(options);\r\n this._boundingRect = {};\r\n if (_hasText) {\r\n this._updateStructure();\r\n this._updateTexts()\r\n } else {\r\n this._group.linkRemove()\r\n }\r\n this._updateBoundingRect();\r\n this._updateBoundingRectAlignment();\r\n this._hasText = _hasText;\r\n return isLayoutChanged\r\n },\r\n draw: function(width, height) {\r\n if (this._hasText) {\r\n this._group.linkAppend();\r\n this._correctTitleLength(width);\r\n if (this._group.getBBox().height > height) {\r\n this.freeSpace()\r\n }\r\n }\r\n return this\r\n },\r\n _correctTitleLength: function(width) {\r\n var options = this._options;\r\n var margin = options.margin;\r\n var maxWidth = width - margin.left - margin.right;\r\n var placeholderSize = options.placeholderSize;\r\n processTitleLength(this._titleElement, options.text, maxWidth, options, placeholderSize);\r\n if (this._subtitleElement) {\r\n if (_Number(placeholderSize) > 0) {\r\n placeholderSize -= this._titleElement.getBBox().height\r\n }\r\n processTitleLength(this._subtitleElement, options.subtitle.text, maxWidth, options.subtitle, placeholderSize);\r\n this._shiftSubtitle()\r\n }\r\n this._updateBoundingRect();\r\n var {\r\n x: x,\r\n y: y,\r\n height: height\r\n } = this.getCorrectedLayoutOptions();\r\n this._clipRect.attr({\r\n x: x,\r\n y: y,\r\n width: width,\r\n height: height\r\n })\r\n },\r\n getLayoutOptions: function() {\r\n return this._boundingRect || null\r\n },\r\n shift: function(x, y) {\r\n var box = this.getLayoutOptions();\r\n this._group.move(x - box.x, y - box.y);\r\n return this\r\n },\r\n _updateBoundingRect: function() {\r\n var options = this._options;\r\n var margin = options.margin;\r\n var boundingRect = this._boundingRect;\r\n var box = this._hasText ? this._group.getBBox() : {\r\n width: 0,\r\n height: 0,\r\n x: 0,\r\n y: 0,\r\n isEmpty: true\r\n };\r\n if (!box.isEmpty) {\r\n box.height += margin.top + margin.bottom - this._baseLineCorrection;\r\n box.width += margin.left + margin.right;\r\n box.x -= margin.left;\r\n box.y += this._baseLineCorrection - margin.top\r\n }\r\n if (options.placeholderSize > 0) {\r\n box.height = options.placeholderSize\r\n }\r\n boundingRect.height = box.height;\r\n boundingRect.width = box.width;\r\n boundingRect.x = box.x;\r\n boundingRect.y = box.y\r\n },\r\n getCorrectedLayoutOptions() {\r\n var srcBox = this.getLayoutOptions();\r\n var correction = this._baseLineCorrection;\r\n return extend({}, srcBox, {\r\n y: srcBox.y - correction,\r\n height: srcBox.height + correction\r\n })\r\n },\r\n layoutOptions: function() {\r\n if (!this._hasText) {\r\n return null\r\n }\r\n return {\r\n horizontalAlignment: this._boundingRect.horizontalAlignment,\r\n verticalAlignment: this._boundingRect.verticalAlignment,\r\n priority: 0\r\n }\r\n },\r\n measure: function(size) {\r\n this.draw(size[0], size[1]);\r\n return [this._boundingRect.width, this._boundingRect.height]\r\n },\r\n move: function(rect, fitRect) {\r\n var boundingRect = this._boundingRect;\r\n if (checkRect(rect, boundingRect)) {\r\n this.shift(fitRect[0], fitRect[1])\r\n } else {\r\n this.shift(Math.round(rect[0]), Math.round(rect[1]))\r\n }\r\n },\r\n freeSpace: function() {\r\n this._params.incidentOccurred(\"W2103\");\r\n this._group.linkRemove();\r\n this._boundingRect.width = this._boundingRect.height = 0\r\n },\r\n getOptions: function() {\r\n return this._options\r\n },\r\n changeLink: function(root) {\r\n this._group.linkRemove();\r\n this._group.linkOn(root, \"title\")\r\n }\r\n});\r\n\r\nfunction processTitleOptions(options) {\r\n var newOptions = _isString(options) ? {\r\n text: options\r\n } : options || {};\r\n newOptions.subtitle = _isString(newOptions.subtitle) ? {\r\n text: newOptions.subtitle\r\n } : newOptions.subtitle || {};\r\n return newOptions\r\n}\r\nexport var plugin = {\r\n name: \"title\",\r\n init: function() {\r\n this._title = new Title({\r\n renderer: this._renderer,\r\n cssClass: this._rootClassPrefix + \"-title\",\r\n incidentOccurred: this._incidentOccurred\r\n });\r\n this._layout.add(this._title)\r\n },\r\n dispose: function() {\r\n this._title.dispose();\r\n this._title = null\r\n },\r\n customize: function(constructor) {\r\n constructor.addChange({\r\n code: \"TITLE\",\r\n handler: function() {\r\n if (this._title.update(this._themeManager.theme(\"title\"), this.option(\"title\"))) {\r\n this._change([\"LAYOUT\"])\r\n }\r\n },\r\n isThemeDependent: true,\r\n option: \"title\",\r\n isOptionChange: true\r\n })\r\n },\r\n fontFields: [\"title.font\", \"title.subtitle.font\"]\r\n};\r\n","/**\r\n * DevExtreme (esm/viz/core/loading_indicator.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n patchFontOptions as _patchFontOptions\r\n} from \"./utils\";\r\nvar STATE_HIDDEN = 0;\r\nvar STATE_SHOWN = 1;\r\nvar ANIMATION_EASING = \"linear\";\r\nvar ANIMATION_DURATION = 400;\r\nvar LOADING_INDICATOR_READY = \"loadingIndicatorReady\";\r\nexport var LoadingIndicator = function(parameters) {\r\n var renderer = parameters.renderer;\r\n this._group = renderer.g().attr({\r\n class: \"dx-loading-indicator\"\r\n }).linkOn(renderer.root, {\r\n name: \"loading-indicator\",\r\n after: \"peripheral\"\r\n });\r\n this._rect = renderer.rect().attr({\r\n opacity: 0\r\n }).append(this._group);\r\n this._text = renderer.text().attr({\r\n align: \"center\"\r\n }).append(this._group);\r\n this._createStates(parameters.eventTrigger, this._group, renderer.root, parameters.notify)\r\n};\r\nLoadingIndicator.prototype = {\r\n constructor: LoadingIndicator,\r\n _createStates: function(eventTrigger, group, root, notify) {\r\n this._states = [{\r\n opacity: 0,\r\n start: function() {\r\n notify(false)\r\n },\r\n complete: function() {\r\n group.linkRemove();\r\n root.css({\r\n \"pointer-events\": \"\"\r\n });\r\n eventTrigger(LOADING_INDICATOR_READY)\r\n }\r\n }, {\r\n opacity: .85,\r\n start: function() {\r\n group.linkAppend();\r\n root.css({\r\n \"pointer-events\": \"none\"\r\n });\r\n notify(true)\r\n },\r\n complete: function() {\r\n eventTrigger(LOADING_INDICATOR_READY)\r\n }\r\n }];\r\n this._state = STATE_HIDDEN\r\n },\r\n setSize: function(size) {\r\n var width = size.width;\r\n var height = size.height;\r\n this._rect.attr({\r\n width: width,\r\n height: height\r\n });\r\n this._text.attr({\r\n x: width / 2,\r\n y: height / 2\r\n })\r\n },\r\n setOptions: function(options) {\r\n this._rect.attr({\r\n fill: options.backgroundColor\r\n });\r\n this._text.css(_patchFontOptions(options.font)).attr({\r\n text: options.text,\r\n class: options.cssClass\r\n });\r\n this[options.show ? \"show\" : \"hide\"]()\r\n },\r\n dispose: function() {\r\n this._group.linkRemove().linkOff();\r\n this._group = this._rect = this._text = this._states = null\r\n },\r\n _transit: function(stateId) {\r\n var state;\r\n if (this._state !== stateId) {\r\n this._state = stateId;\r\n this._isHiding = false;\r\n state = this._states[stateId];\r\n this._rect.stopAnimation().animate({\r\n opacity: state.opacity\r\n }, {\r\n complete: state.complete,\r\n easing: ANIMATION_EASING,\r\n duration: ANIMATION_DURATION,\r\n unstoppable: true\r\n });\r\n this._noHiding = true;\r\n state.start();\r\n this._noHiding = false\r\n }\r\n },\r\n show: function() {\r\n this._transit(STATE_SHOWN)\r\n },\r\n hide: function() {\r\n this._transit(STATE_HIDDEN)\r\n },\r\n scheduleHiding: function() {\r\n if (!this._noHiding) {\r\n this._isHiding = true\r\n }\r\n },\r\n fulfillHiding: function() {\r\n if (this._isHiding) {\r\n this.hide()\r\n }\r\n }\r\n};\r\nexport var plugin = {\r\n name: \"loading_indicator\",\r\n init: function() {\r\n var that = this;\r\n that._loadingIndicator = new LoadingIndicator({\r\n eventTrigger: that._eventTrigger,\r\n renderer: that._renderer,\r\n notify: function(state) {\r\n that._skipLoadingIndicatorOptions = true;\r\n that.option(\"loadingIndicator\", {\r\n show: state\r\n });\r\n that._skipLoadingIndicatorOptions = false;\r\n if (state) {\r\n that._stopCurrentHandling()\r\n }\r\n }\r\n });\r\n that._scheduleLoadingIndicatorHiding()\r\n },\r\n dispose: function() {\r\n this._loadingIndicator.dispose();\r\n this._loadingIndicator = null\r\n },\r\n members: {\r\n _scheduleLoadingIndicatorHiding: function() {\r\n this._loadingIndicator.scheduleHiding()\r\n },\r\n _fulfillLoadingIndicatorHiding: function() {\r\n this._loadingIndicator.fulfillHiding()\r\n },\r\n showLoadingIndicator: function() {\r\n this._loadingIndicator.show()\r\n },\r\n hideLoadingIndicator: function() {\r\n this._loadingIndicator.hide()\r\n },\r\n _onBeginUpdate: function() {\r\n if (!this._optionChangedLocker) {\r\n this._scheduleLoadingIndicatorHiding()\r\n }\r\n }\r\n },\r\n extenders: {\r\n _dataSourceLoadingChangedHandler(isLoading) {\r\n if (isLoading && (this._options.silent(\"loadingIndicator\") || {}).enabled) {\r\n this._loadingIndicator.show()\r\n }\r\n },\r\n _setContentSize() {\r\n this._loadingIndicator.setSize(this._canvas)\r\n },\r\n endUpdate() {\r\n if (this._initialized && this._dataIsReady()) {\r\n this._fulfillLoadingIndicatorHiding()\r\n }\r\n }\r\n },\r\n customize: function(constructor) {\r\n var proto = constructor.prototype;\r\n if (proto._dataSourceChangedHandler) {\r\n var _dataSourceChangedHandler = proto._dataSourceChangedHandler;\r\n proto._dataSourceChangedHandler = function() {\r\n this._scheduleLoadingIndicatorHiding();\r\n _dataSourceChangedHandler.apply(this, arguments)\r\n }\r\n }\r\n constructor.addChange({\r\n code: \"LOADING_INDICATOR\",\r\n handler: function() {\r\n if (!this._skipLoadingIndicatorOptions) {\r\n this._loadingIndicator.setOptions(this._getOption(\"loadingIndicator\"))\r\n }\r\n this._scheduleLoadingIndicatorHiding()\r\n },\r\n isThemeDependent: true,\r\n option: \"loadingIndicator\",\r\n isOptionChange: true\r\n });\r\n proto._eventsMap.onLoadingIndicatorReady = {\r\n name: \"loadingIndicatorReady\"\r\n };\r\n var _drawn = proto._drawn;\r\n proto._drawn = function() {\r\n _drawn.apply(this, arguments);\r\n if (this._dataIsReady()) {\r\n this._fulfillLoadingIndicatorHiding()\r\n }\r\n }\r\n },\r\n fontFields: [\"loadingIndicator.font\"]\r\n};\r\n","/**\r\n * DevExtreme (esm/viz/core/data_source.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport DataHelperMixin from \"../../data_helper\";\r\nvar postCtor = DataHelperMixin.postCtor;\r\nvar name;\r\nvar members = {\r\n _dataSourceLoadErrorHandler: function() {\r\n this._dataSourceChangedHandler()\r\n },\r\n _dataSourceOptions: function() {\r\n return {\r\n paginate: false\r\n }\r\n },\r\n _updateDataSource: function() {\r\n this._refreshDataSource();\r\n if (!this.option(\"dataSource\")) {\r\n this._dataSourceChangedHandler()\r\n }\r\n },\r\n _dataIsLoaded: function() {\r\n return !this._dataSource || this._dataSource.isLoaded()\r\n },\r\n _dataSourceItems: function() {\r\n return this._dataSource && this._dataSource.items()\r\n }\r\n};\r\nfor (name in DataHelperMixin) {\r\n if (\"postCtor\" === name) {\r\n continue\r\n }\r\n members[name] = DataHelperMixin[name]\r\n}\r\nexport var plugin = {\r\n name: \"data_source\",\r\n init: function() {\r\n postCtor.call(this)\r\n },\r\n dispose: noop,\r\n members: members\r\n};\r\n","/**\r\n * DevExtreme (esm/viz/range_selector/range_selector.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport registerComponent from \"../../core/component_registrator\";\r\nimport {\r\n isDefined as _isDefined,\r\n isNumeric as _isNumber,\r\n isDate as _isDate,\r\n type as _type,\r\n isPlainObject\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n patchFontOptions,\r\n normalizeEnum as _normalizeEnum,\r\n getVizRangeObject as parseValue,\r\n convertVisualRangeObject,\r\n getCategoriesInfo,\r\n getLog,\r\n rangesAreEqual\r\n} from \"../core/utils\";\r\nimport dateUtils from \"../../core/utils/date\";\r\nimport {\r\n adjust\r\n} from \"../../core/utils/math\";\r\nimport {\r\n Range\r\n} from \"../translators/range\";\r\nimport {\r\n Axis\r\n} from \"../axes/base_axis\";\r\nimport {\r\n correctValueType,\r\n getParser\r\n} from \"../components/parse_utils\";\r\nimport formatHelper from \"../../format_helper\";\r\nimport {\r\n consts,\r\n formatValue,\r\n HEIGHT_COMPACT_MODE\r\n} from \"./common\";\r\nimport {\r\n SlidersController\r\n} from \"./sliders_controller\";\r\nimport {\r\n Tracker\r\n} from \"./tracker\";\r\nimport {\r\n RangeView\r\n} from \"./range_view\";\r\nimport {\r\n SeriesDataSource\r\n} from \"./series_data_source\";\r\nimport {\r\n tickGenerator\r\n} from \"../axes/tick_generator\";\r\nimport constants from \"../axes/axes_constants\";\r\nimport baseWidgetModule from \"../core/base_widget\";\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 ? consts.emptySliderMarkerText : formatValue(value, sliderMarkerOptions);\r\n var textBBox = getTextBBox(renderer, formattedText, sliderMarkerOptions.font);\r\n return _ceil(textBBox.height) + 2 * sliderMarkerOptions.paddingTopBottom + consts.pointerSize\r\n}\r\n\r\nfunction calculateScaleLabelHalfWidth(renderer, value, scaleOptions, tickIntervalsInfo) {\r\n var formattedText = 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 = _isDefined(scale.startValue) ? ticks[0] : void 0;\r\n endTickValue = _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 = _type(firstValue);\r\n var typeSecondValue = _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 = dateUtils.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 && !_isNumber(logarithmBase)) {\r\n options.logarithmBase = defaultLogarithmBase;\r\n incidentOccurred(\"E2104\")\r\n } else if (options.type !== LOGARITHMIC) {\r\n options.logarithmBase = void 0\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 = 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 = dateUtils.getDateUnitInterval(minorTickInterval);\r\n var majorUnit = dateUtils.getDateUnitInterval(tickInterval);\r\n var idx = dateUtils.dateUnitIntervals.indexOf(interval);\r\n if (withCorrection && interval === majorUnit && idx > 0) {\r\n interval = dateUtils.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 if (isDateType) {\r\n tickInterval = dateUtils.getNextDateUnit(tickInterval)\r\n } else {\r\n tickInterval += minorTickInterval\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 = dateUtils.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 = _isDefined(range.minVisible) ? range.minVisible : range.min;\r\n var max = _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 = 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: _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;\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({\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 || startValue && endValue && [startValue, endValue];\r\n categories = categories || [];\r\n scaleOptions._categoriesInfo = categoriesInfo = 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 (_isDefined(startValue) && _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 if (_isDefined(startValue) || _isDefined(endValue)) {\r\n minValue = startValue;\r\n maxValue = endValue\r\n } else if (categoriesInfo) {\r\n minValue = categoriesInfo.start;\r\n maxValue = categoriesInfo.end\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 !_isDefined(start) || !_isDefined(end)\r\n}\r\n\r\nfunction getTextBBox(renderer, text, fontOptions) {\r\n var textElement = renderer.text(text, INVISIBLE_POS, INVISIBLE_POS).css(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 (!_isDefined(tickInterval) || tickInterval.years || tickInterval.months >= 6 || screenDelta / SEMIDISCRETE_GRID_SPACING_FACTOR < _ceil((max - min) / dateUtils.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 && -1 === scaleOptions.type.indexOf(DISCRETE), 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 (-1 === scaleOptions.type.indexOf(DISCRETE)) {\r\n isEmptyInterval = _isDate(scaleOptions.startValue) && _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 && (!_isDefined(scaleOptions.label.format) || scaleOptions.type === SEMIDISCRETE && scaleOptions.minorTickInterval !== scaleOptions.tickInterval)) {\r\n if (scaleOptions.type === DISCRETE) {\r\n scaleOptions.label.format = formatHelper.getDateFormatByTicks(tickIntervalsInfo.ticks)\r\n } else if (!scaleOptions.marker.visible) {\r\n scaleOptions.label.format = formatHelper.getDateFormatByTickInterval(scaleOptions.startValue, scaleOptions.endValue, scaleOptions.tickInterval)\r\n } else {\r\n scaleOptions.label.format = dateUtils.getDateFormatByTickInterval(scaleOptions.tickInterval)\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 = correctValueType(_normalizeEnum(scaleOption.valueType));\r\n var validateStartEndValues = function(field, parser) {\r\n var messageToIncidentOccurred = field === START_VALUE ? \"start\" : \"end\";\r\n if (_isDefined(scaleOption[field])) {\r\n parsedValue = parser(scaleOption[field]);\r\n if (_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 = 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 |= _isDefined(scaleOption.tickInterval) && !_isDefined(scaleOption.axisDivisionFactor);\r\n scaleOption.axisDivisionFactor = _isDefined(scaleOption.axisDivisionFactor) ? scaleOption.axisDivisionFactor : DEFAULT_AXIS_DIVISION_FACTOR;\r\n scaleOption.minorAxisDivisionFactor = _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 (_isDefined(value)) {\r\n value = isDate ? dateUtils.correctDateWithUnitBeginning(new Date(value), interval, null, firstDayOfWeek) : adjust(_floor(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 (!_isDefined(min) || !_isDefined(max)) {\r\n return res\r\n }\r\n res.intervals = dateUtils.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 = dateUtils.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(adjust(getLog(tail, 10)))) : 0\r\n}\r\nvar dxRangeSelector = baseWidgetModule.inherit({\r\n _toggleParentsScrollSubscription() {},\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 labelsAxesGroup = renderer.g().attr({\r\n class: \"dxrs-scale-elements\",\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 labelsAxesGroup: labelsAxesGroup,\r\n updateSelectedRange: function(range, e) {\r\n that.setValue(convertVisualRangeObject(range), e)\r\n },\r\n incidentOccurred: that._incidentOccurred\r\n });\r\n that._rangeView = new RangeView({\r\n renderer: renderer,\r\n root: rangeViewGroup,\r\n translator: that._axis.getTranslator()\r\n });\r\n that._slidersController = new 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, convertVisualRangeObject(range, isPlainObject(that._options.silent(VALUE))))\r\n }\r\n that._eventTrigger(VALUE_CHANGED, {\r\n value: convertVisualRangeObject(range),\r\n previousValue: 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({\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() {\r\n var options = this._options.silent();\r\n var axis = this._axis;\r\n if (options.dataSource) {\r\n var selectedRangeUpdateMode = this.option(\"selectedRangeUpdateMode\");\r\n var value = this.getValue();\r\n var valueIsReady = _isDefined(value[0]) && _isDefined(value[1]);\r\n if (_isDefined(selectedRangeUpdateMode)) {\r\n selectedRangeUpdateMode = _normalizeEnum(selectedRangeUpdateMode);\r\n this.__skipAnimation = true\r\n } else if (valueIsReady && !this._dataSourceIsAsync) {\r\n selectedRangeUpdateMode = RESET\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 if (rangesInfo.endValue) {\r\n selectedRangeUpdateMode = SHIFT\r\n } else {\r\n selectedRangeUpdateMode = KEEP\r\n }\r\n }\r\n if (selectedRangeUpdateMode === RESET) {\r\n options[VALUE] = null\r\n } else if (selectedRangeUpdateMode === SHIFT && valueIsReady) {\r\n var _value = this.getValue();\r\n this.__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 if (selectedRangeUpdateMode === KEEP) {\r\n this.__skipAnimation = true\r\n }\r\n }\r\n this._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 value = this._options.silent(VALUE);\r\n this._slidersController.setSelectedRange(value && parseValue(value))\r\n },\r\n _change_VALUE: function() {\r\n var option = this._rangeOption;\r\n this._dataSourceIsAsync = !this._dataIsReady();\r\n if (option) {\r\n this._options.silent(VALUE, option);\r\n this.setValue(option)\r\n }\r\n },\r\n _validateRange: function(start, end) {\r\n var translator = this._axis.getTranslator();\r\n if (_isDefined(start) && !translator.isValid(start) || _isDefined(end) && !translator.isValid(end)) {\r\n this._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 renderer = this._renderer;\r\n var rect = this._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 (this.__isResizing || this.__skipAnimation) {\r\n currentAnimationEnabled = renderer.animationEnabled();\r\n renderer.updateAnimationOptions({\r\n enabled: false\r\n })\r\n }\r\n this._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 this._axis.getTranslator().update(new Range, canvas, {\r\n isHorizontal: true\r\n });\r\n this._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 (this.__isResizing || this.__skipAnimation) {\r\n renderer.updateAnimationOptions({\r\n enabled: currentAnimationEnabled\r\n })\r\n }\r\n this._drawn()\r\n },\r\n _dataSourceChangedHandler: function() {\r\n this._setValueByDataSource();\r\n this._requestChange([\"MOSTLY_TOTAL\"])\r\n },\r\n _completeSeriesDataSourceCreation(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(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 chartOptions = this.option(\"chart\");\r\n var seriesDataSource = this._createSeriesDataSource(chartOptions);\r\n var isCompactMode = !(seriesDataSource && seriesDataSource.isShowChart() || this.option(\"background.image.url\"));\r\n var scaleOptions = prepareScaleOptions(this._getOption(\"scale\"), seriesDataSource && seriesDataSource.getCalculatedValueType(), this._incidentOccurred, this._getOption(\"containerBackgroundColor\", true));\r\n seriesDataSource && this._completeSeriesDataSourceCreation(scaleOptions, seriesDataSource);\r\n var argTranslatorRange = calculateTranslatorRange(seriesDataSource, scaleOptions);\r\n var tickIntervalsInfo = updateTickIntervals(scaleOptions, canvas.width, this._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, this._incidentOccurred)\r\n }\r\n updateScaleOptions(scaleOptions, seriesDataSource, argTranslatorRange, tickIntervalsInfo, getDateMarkerVisibilityChecker(canvas.width));\r\n updateTranslatorRangeInterval(argTranslatorRange, scaleOptions);\r\n var sliderMarkerOptions = this._prepareSliderMarkersOptions(scaleOptions, canvas.width, tickIntervalsInfo, argTranslatorRange);\r\n var indents = calculateIndents(this._renderer, scaleOptions, sliderMarkerOptions, this.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(this._renderer, scaleOptions, showScaleMarkers(scaleOptions), tickIntervalsInfo) : HEIGHT_COMPACT_MODE, 0),\r\n right: 0,\r\n bottom: 0\r\n };\r\n this._axis.update(scaleOptions, isCompactMode, rangeContainerCanvas, argTranslatorRange, seriesDataSource);\r\n scaleOptions.minorTickInterval = scaleOptions.isEmpty ? 0 : scaleOptions.minorTickInterval;\r\n this._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 behavior = this._getOption(\"behavior\");\r\n var shutterOptions = this._getOption(\"shutter\");\r\n var isNotSemiDiscrete = scaleOptions.type !== SEMIDISCRETE;\r\n shutterOptions.color = shutterOptions.color || this._getOption(CONTAINER_BACKGROUND_COLOR, true);\r\n this._rangeView.update(this.option(\"background\"), this._themeManager.theme(\"background\"), canvas, isCompactMode, behavior.animationEnabled && this._renderer.animationEnabled(), seriesDataSource);\r\n this._isUpdating = true;\r\n this._slidersController.update([canvas.top, canvas.top + canvas.height], behavior, isCompactMode, this._getOption(\"sliderHandle\"), sliderMarkerOptions, shutterOptions, {\r\n minRange: isNotSemiDiscrete ? this.option(\"scale.minRange\") : void 0,\r\n maxRange: isNotSemiDiscrete ? this.option(\"scale.maxRange\") : void 0\r\n }, this._axis.getFullTicks(), this._getOption(\"selectedRangeColor\", true));\r\n this._requestChange([\"SLIDER_SELECTION\"]);\r\n this._isUpdating = false;\r\n this._tracker.update(!this._axis.getTranslator().getBusinessRange().isEmpty(), behavior)\r\n },\r\n _createSeriesDataSource: function(chartOptions) {\r\n var seriesDataSource;\r\n var dataSource = this._dataSourceItems();\r\n var scaleOptions = this._getOption(\"scale\");\r\n var valueType = scaleOptions.valueType || calculateValueType(scaleOptions.startValue, scaleOptions.endValue);\r\n var valueAxis = new Axis({\r\n renderer: this._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: this._getOption(\"chart\").valueAxis.categoriesSortingMethod\r\n });\r\n if (dataSource || chartOptions && chartOptions.series) {\r\n chartOptions = extend({}, chartOptions, {\r\n theme: this.option(\"theme\")\r\n });\r\n seriesDataSource = new SeriesDataSource({\r\n renderer: this._renderer,\r\n dataSource: dataSource,\r\n valueType: _normalizeEnum(valueType),\r\n axisType: scaleOptions.type,\r\n chart: chartOptions,\r\n dataSourceField: this.option(\"dataSourceField\"),\r\n incidentOccurred: this._incidentOccurred,\r\n categories: scaleOptions.categories,\r\n argumentAxis: this._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 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 = this._getOption(SLIDER_MARKER);\r\n var doNotSnap = !this._getOption(\"behavior\").snapToTicks;\r\n var isTypeDiscrete = scaleOptions.type === DISCRETE;\r\n var isValueTypeDatetime = scaleOptions.valueType === DATETIME;\r\n sliderMarkerOptions.borderColor = this._getOption(CONTAINER_BACKGROUND_COLOR, true);\r\n if (!sliderMarkerOptions.format && !argRange.isEmpty()) {\r\n if (doNotSnap && _isNumber(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 (_isDefined(minorTickInterval) && 0 !== minorTickInterval) {\r\n interval = getMinorTickIntervalUnit(tickInterval, minorTickInterval, doNotSnap)\r\n }\r\n if (!scaleOptions.marker.visible) {\r\n if (_isDefined(startValue) && _isDefined(endValue)) {\r\n sliderMarkerOptions.format = formatHelper.getDateFormatByTickInterval(startValue, endValue, interval)\r\n }\r\n } else {\r\n sliderMarkerOptions.format = dateUtils.getDateFormatByTickInterval(interval)\r\n }\r\n }\r\n if (isValueTypeDatetime && isTypeDiscrete && tickIntervalsInfo.ticks.length) {\r\n sliderMarkerOptions.format = formatHelper.getDateFormatByTicks(tickIntervalsInfo.ticks)\r\n }\r\n }\r\n return sliderMarkerOptions\r\n },\r\n getValue: function() {\r\n return convertVisualRangeObject(this._slidersController.getSelectedRange())\r\n },\r\n setValue: function(value, e) {\r\n var visualRange = parseValue(value);\r\n if (!this._isUpdating && value) {\r\n this._validateRange(visualRange.startValue, visualRange.endValue);\r\n !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\neach([\"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 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 ? dateUtils.addInterval(range.startValue, scaleOptions.minRange) : void 0;\r\n var maxRange = scaleOptions.maxRange ? dateUtils.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 && constants.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 this._axis = new Axis({\r\n renderer: params.renderer,\r\n axesContainerGroup: params.root,\r\n scaleBreaksGroup: params.scaleBreaksGroup,\r\n labelsAxesGroup: params.labelsAxesGroup,\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() {}\r\n });\r\n this._updateSelectedRangeCallback = params.updateSelectedRange;\r\n this._axis.getAxisSharpDirection = this._axis.getSharpDirectionByCoords = getShiftDirection;\r\n this._axis.getTickStartPositionShift = getTickStartPositionShift;\r\n this._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(value) {\r\n var {\r\n startValue: startValue,\r\n endValue: endValue\r\n } = this._axis.visualRange();\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() {\r\n return this._axis.getOptions() || {}\r\n }\r\n};\r\n[\"setMarginOptions\", \"getFullTicks\", \"updateCanvas\", \"updateOptions\", \"getAggregationInfo\", \"getTranslator\", \"getVisualRangeLength\", \"getVisibleArea\", \"getMarginOptions\", \"getVisualRangeCenter\"].forEach(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\nregisterComponent(\"dxRangeSelector\", dxRangeSelector);\r\nexport default dxRangeSelector;\r\nimport {\r\n plugin as exportPlugin\r\n} from \"../core/export\";\r\nimport {\r\n plugin as titlePlugin\r\n} from \"../core/title\";\r\nimport {\r\n plugin as LoadingIndicatorPlugin\r\n} from \"../core/loading_indicator\";\r\nimport {\r\n plugin as dataSourcePlugin\r\n} from \"../core/data_source\";\r\ndxRangeSelector.addPlugin(exportPlugin);\r\ndxRangeSelector.addPlugin(titlePlugin);\r\ndxRangeSelector.addPlugin(LoadingIndicatorPlugin);\r\ndxRangeSelector.addPlugin(dataSourcePlugin);\r\n","/**\r\n * DevExtreme (esm/viz/range_selector.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport RangeSelector from \"./range_selector/range_selector\";\r\nexport default RangeSelector;\r\n","/**\r\n * DevExtreme (esm/exporter/file_saver.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport $ from \"../core/renderer\";\r\nimport domAdapter from \"../core/dom_adapter\";\r\nimport {\r\n getWindow,\r\n getNavigator\r\n} from \"../core/utils/window\";\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport errors from \"../ui/widget/ui.errors\";\r\nimport {\r\n isDefined,\r\n isFunction\r\n} from \"../core/utils/type\";\r\nimport {\r\n logger\r\n} from \"../core/utils/console\";\r\nvar window = getWindow();\r\nvar navigator = getNavigator();\r\nvar FILE_EXTESIONS = {\r\n EXCEL: \"xlsx\",\r\n CSS: \"css\",\r\n PNG: \"png\",\r\n JPEG: \"jpeg\",\r\n GIF: \"gif\",\r\n SVG: \"svg\",\r\n PDF: \"pdf\"\r\n};\r\nexport var MIME_TYPES = {\r\n CSS: \"text/css\",\r\n EXCEL: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\r\n PNG: \"image/png\",\r\n JPEG: \"image/jpeg\",\r\n GIF: \"image/gif\",\r\n SVG: \"image/svg+xml\",\r\n PDF: \"application/pdf\"\r\n};\r\nexport var fileSaver = {\r\n _revokeObjectURLTimeout: 3e4,\r\n _getDataUri: function(format, data) {\r\n var mimeType = this._getMimeType(format);\r\n return \"data:\".concat(mimeType, \";base64,\").concat(data)\r\n },\r\n _getMimeType: function(format) {\r\n return MIME_TYPES[format] || \"application/octet-stream\"\r\n },\r\n _linkDownloader: function(fileName, href) {\r\n var exportLinkElement = domAdapter.createElement(\"a\");\r\n exportLinkElement.download = fileName;\r\n exportLinkElement.href = href;\r\n exportLinkElement.target = \"_blank\";\r\n return exportLinkElement\r\n },\r\n _formDownloader: function(proxyUrl, fileName, contentType, data) {\r\n var formAttributes = {\r\n method: \"post\",\r\n action: proxyUrl,\r\n enctype: \"multipart/form-data\"\r\n };\r\n var exportForm = $(\"
\").css({\r\n display: \"none\"\r\n }).attr(formAttributes);\r\n\r\n function setAttributes(element, attributes) {\r\n for (var key in attributes) {\r\n element.setAttribute(key, attributes[key])\r\n }\r\n return element\r\n }\r\n exportForm.append(setAttributes(domAdapter.createElement(\"input\"), {\r\n type: \"hidden\",\r\n name: \"fileName\",\r\n value: fileName\r\n }));\r\n exportForm.append(setAttributes(domAdapter.createElement(\"input\"), {\r\n type: \"hidden\",\r\n name: \"contentType\",\r\n value: contentType\r\n }));\r\n exportForm.append(setAttributes(domAdapter.createElement(\"input\"), {\r\n type: \"hidden\",\r\n name: \"data\",\r\n value: data\r\n }));\r\n exportForm.appendTo(\"body\");\r\n eventsEngine.trigger(exportForm, \"submit\");\r\n if (eventsEngine.trigger(exportForm, \"submit\")) {\r\n exportForm.remove()\r\n }\r\n },\r\n _saveByProxy: function(proxyUrl, fileName, format, data) {\r\n var contentType = this._getMimeType(format);\r\n return this._formDownloader(proxyUrl, fileName, contentType, data)\r\n },\r\n _winJSBlobSave: function(blob, fileName, format) {\r\n var savePicker = new Windows.Storage.Pickers.FileSavePicker;\r\n savePicker.suggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.documentsLibrary;\r\n var fileExtension = FILE_EXTESIONS[format];\r\n if (fileExtension) {\r\n var mimeType = this._getMimeType(format);\r\n savePicker.fileTypeChoices.insert(mimeType, [\".\" + fileExtension])\r\n }\r\n savePicker.suggestedFileName = fileName;\r\n savePicker.pickSaveFileAsync().then((function(file) {\r\n if (file) {\r\n file.openAsync(Windows.Storage.FileAccessMode.readWrite).then((function(outputStream) {\r\n var inputStream = blob.msDetachStream();\r\n Windows.Storage.Streams.RandomAccessStream.copyAsync(inputStream, outputStream).then((function() {\r\n outputStream.flushAsync().done((function() {\r\n inputStream.close();\r\n outputStream.close()\r\n }))\r\n }))\r\n }))\r\n }\r\n }))\r\n },\r\n _click: function(link) {\r\n try {\r\n link.dispatchEvent(new MouseEvent(\"click\", {\r\n cancelable: true\r\n }))\r\n } catch (e) {\r\n var event = domAdapter.getDocument().createEvent(\"MouseEvents\");\r\n event.initMouseEvent(\"click\", true, true, window, 0, 0, 0, 80, 20, false, false, false, false, 0, null);\r\n link.dispatchEvent(event)\r\n }\r\n },\r\n _saveBlobAs: function(fileName, format, data) {\r\n this._blobSaved = false;\r\n if (isDefined(navigator.msSaveOrOpenBlob)) {\r\n navigator.msSaveOrOpenBlob(data, fileName);\r\n this._blobSaved = true\r\n } else if (isDefined(window.WinJS)) {\r\n this._winJSBlobSave(data, fileName, format);\r\n this._blobSaved = true\r\n } else {\r\n var URL = window.URL || window.webkitURL || window.mozURL || window.msURL || window.oURL;\r\n if (isDefined(URL)) {\r\n var objectURL = URL.createObjectURL(data);\r\n var downloadLink = this._linkDownloader(fileName, objectURL);\r\n setTimeout(() => {\r\n URL.revokeObjectURL(objectURL);\r\n this._objectUrlRevoked = true\r\n }, this._revokeObjectURLTimeout);\r\n this._click(downloadLink)\r\n } else {\r\n logger.warn(\"window.URL || window.webkitURL || window.mozURL || window.msURL || window.oURL is not defined\")\r\n }\r\n }\r\n },\r\n saveAs: function(fileName, format, data, proxyURL, forceProxy) {\r\n var fileExtension = FILE_EXTESIONS[format];\r\n if (fileExtension) {\r\n fileName += \".\" + fileExtension\r\n }\r\n if (isDefined(proxyURL)) {\r\n errors.log(\"W0001\", \"Export\", \"proxyURL\", \"19.2\", \"This option is no longer required\")\r\n }\r\n if (forceProxy) {\r\n this._saveByProxy(proxyURL, fileName, format, data)\r\n } else if (isFunction(window.Blob)) {\r\n this._saveBlobAs(fileName, format, data)\r\n } else if (isDefined(proxyURL) && !isDefined(navigator.userAgent.match(/iPad/i))) {\r\n this._saveByProxy(proxyURL, fileName, format, data)\r\n } else {\r\n if (!isDefined(navigator.userAgent.match(/iPad/i))) {\r\n errors.log(\"E1034\")\r\n }\r\n var downloadLink = this._linkDownloader(fileName, this._getDataUri(format, data));\r\n this._click(downloadLink)\r\n }\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/localization/language_codes.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport localizationCoreUtils from \"./core\";\r\nvar LANGUAGE_CODES = {\r\n ar: 1,\r\n bg: 2,\r\n ca: 3,\r\n \"zh-Hans\": 4,\r\n cs: 5,\r\n da: 6,\r\n de: 7,\r\n el: 8,\r\n en: 9,\r\n es: 10,\r\n fi: 11,\r\n fr: 12,\r\n he: 13,\r\n hu: 14,\r\n is: 15,\r\n it: 16,\r\n ja: 17,\r\n ko: 18,\r\n nl: 19,\r\n no: 20,\r\n pl: 21,\r\n pt: 22,\r\n rm: 23,\r\n ro: 24,\r\n ru: 25,\r\n hr: 26,\r\n sk: 27,\r\n sq: 28,\r\n sv: 29,\r\n th: 30,\r\n tr: 31,\r\n ur: 32,\r\n id: 33,\r\n uk: 34,\r\n be: 35,\r\n sl: 36,\r\n et: 37,\r\n lv: 38,\r\n lt: 39,\r\n tg: 40,\r\n fa: 41,\r\n vi: 42,\r\n hy: 43,\r\n az: 44,\r\n eu: 45,\r\n hsb: 46,\r\n mk: 47,\r\n tn: 50,\r\n xh: 52,\r\n zu: 53,\r\n af: 54,\r\n ka: 55,\r\n fo: 56,\r\n hi: 57,\r\n mt: 58,\r\n se: 59,\r\n ga: 60,\r\n ms: 62,\r\n kk: 63,\r\n ky: 64,\r\n sw: 65,\r\n tk: 66,\r\n uz: 67,\r\n tt: 68,\r\n bn: 69,\r\n pa: 70,\r\n gu: 71,\r\n or: 72,\r\n ta: 73,\r\n te: 74,\r\n kn: 75,\r\n ml: 76,\r\n as: 77,\r\n mr: 78,\r\n sa: 79,\r\n mn: 80,\r\n bo: 81,\r\n cy: 82,\r\n km: 83,\r\n lo: 84,\r\n gl: 86,\r\n kok: 87,\r\n syr: 90,\r\n si: 91,\r\n iu: 93,\r\n am: 94,\r\n tzm: 95,\r\n ne: 97,\r\n fy: 98,\r\n ps: 99,\r\n fil: 100,\r\n dv: 101,\r\n ha: 104,\r\n yo: 106,\r\n quz: 107,\r\n nso: 108,\r\n ba: 109,\r\n lb: 110,\r\n kl: 111,\r\n ig: 112,\r\n ii: 120,\r\n arn: 122,\r\n moh: 124,\r\n br: 126,\r\n ug: 128,\r\n mi: 129,\r\n oc: 130,\r\n co: 131,\r\n gsw: 132,\r\n sah: 133,\r\n qut: 134,\r\n rw: 135,\r\n wo: 136,\r\n prs: 140,\r\n gd: 145,\r\n \"ar-SA\": 1025,\r\n \"bg-BG\": 1026,\r\n \"ca-ES\": 1027,\r\n \"zh-TW\": 1028,\r\n \"cs-CZ\": 1029,\r\n \"da-DK\": 1030,\r\n \"de-DE\": 1031,\r\n \"el-GR\": 1032,\r\n \"en-US\": 1033,\r\n \"fi-FI\": 1035,\r\n \"fr-FR\": 1036,\r\n \"he-IL\": 1037,\r\n \"hu-HU\": 1038,\r\n \"is-IS\": 1039,\r\n \"it-IT\": 1040,\r\n \"ja-JP\": 1041,\r\n \"ko-KR\": 1042,\r\n \"nl-NL\": 1043,\r\n \"nb-NO\": 1044,\r\n \"pl-PL\": 1045,\r\n \"pt-BR\": 1046,\r\n \"rm-CH\": 1047,\r\n \"ro-RO\": 1048,\r\n \"ru-RU\": 1049,\r\n \"hr-HR\": 1050,\r\n \"sk-SK\": 1051,\r\n \"sq-AL\": 1052,\r\n \"sv-SE\": 1053,\r\n \"th-TH\": 1054,\r\n \"tr-TR\": 1055,\r\n \"ur-PK\": 1056,\r\n \"id-ID\": 1057,\r\n \"uk-UA\": 1058,\r\n \"be-BY\": 1059,\r\n \"sl-SI\": 1060,\r\n \"et-EE\": 1061,\r\n \"lv-LV\": 1062,\r\n \"lt-LT\": 1063,\r\n \"tg-Cyrl-TJ\": 1064,\r\n \"fa-IR\": 1065,\r\n \"vi-VN\": 1066,\r\n \"hy-AM\": 1067,\r\n \"az-Latn-AZ\": 1068,\r\n \"eu-ES\": 1069,\r\n \"hsb-DE\": 1070,\r\n \"mk-MK\": 1071,\r\n \"tn-ZA\": 1074,\r\n \"xh-ZA\": 1076,\r\n \"zu-ZA\": 1077,\r\n \"af-ZA\": 1078,\r\n \"ka-GE\": 1079,\r\n \"fo-FO\": 1080,\r\n \"hi-IN\": 1081,\r\n \"mt-MT\": 1082,\r\n \"se-NO\": 1083,\r\n \"ms-MY\": 1086,\r\n \"kk-KZ\": 1087,\r\n \"ky-KG\": 1088,\r\n \"sw-KE\": 1089,\r\n \"tk-TM\": 1090,\r\n \"uz-Latn-UZ\": 1091,\r\n \"tt-RU\": 1092,\r\n \"bn-IN\": 1093,\r\n \"pa-IN\": 1094,\r\n \"gu-IN\": 1095,\r\n \"or-IN\": 1096,\r\n \"ta-IN\": 1097,\r\n \"te-IN\": 1098,\r\n \"kn-IN\": 1099,\r\n \"ml-IN\": 1100,\r\n \"as-IN\": 1101,\r\n \"mr-IN\": 1102,\r\n \"sa-IN\": 1103,\r\n \"mn-MN\": 1104,\r\n \"bo-CN\": 1105,\r\n \"cy-GB\": 1106,\r\n \"km-KH\": 1107,\r\n \"lo-LA\": 1108,\r\n \"gl-ES\": 1110,\r\n \"kok-IN\": 1111,\r\n \"syr-SY\": 1114,\r\n \"si-LK\": 1115,\r\n \"iu-Cans-CA\": 1117,\r\n \"am-ET\": 1118,\r\n \"ne-NP\": 1121,\r\n \"fy-NL\": 1122,\r\n \"ps-AF\": 1123,\r\n \"fil-PH\": 1124,\r\n \"dv-MV\": 1125,\r\n \"ha-Latn-NG\": 1128,\r\n \"yo-NG\": 1130,\r\n \"quz-BO\": 1131,\r\n \"nso-ZA\": 1132,\r\n \"ba-RU\": 1133,\r\n \"lb-LU\": 1134,\r\n \"kl-GL\": 1135,\r\n \"ig-NG\": 1136,\r\n \"ii-CN\": 1144,\r\n \"arn-CL\": 1146,\r\n \"moh-CA\": 1148,\r\n \"br-FR\": 1150,\r\n \"ug-CN\": 1152,\r\n \"mi-NZ\": 1153,\r\n \"oc-FR\": 1154,\r\n \"co-FR\": 1155,\r\n \"gsw-FR\": 1156,\r\n \"sah-RU\": 1157,\r\n \"qut-GT\": 1158,\r\n \"rw-RW\": 1159,\r\n \"wo-SN\": 1160,\r\n \"prs-AF\": 1164,\r\n \"gd-GB\": 1169,\r\n \"ar-IQ\": 2049,\r\n \"zh-CN\": 2052,\r\n \"de-CH\": 2055,\r\n \"en-GB\": 2057,\r\n \"es-MX\": 2058,\r\n \"fr-BE\": 2060,\r\n \"it-CH\": 2064,\r\n \"nl-BE\": 2067,\r\n \"nn-NO\": 2068,\r\n \"pt-PT\": 2070,\r\n \"sr-Latn-CS\": 2074,\r\n \"sv-FI\": 2077,\r\n \"az-Cyrl-AZ\": 2092,\r\n \"dsb-DE\": 2094,\r\n \"se-SE\": 2107,\r\n \"ga-IE\": 2108,\r\n \"ms-BN\": 2110,\r\n \"uz-Cyrl-UZ\": 2115,\r\n \"bn-BD\": 2117,\r\n \"mn-Mong-CN\": 2128,\r\n \"iu-Latn-CA\": 2141,\r\n \"tzm-Latn-DZ\": 2143,\r\n \"quz-EC\": 2155,\r\n \"ar-EG\": 3073,\r\n \"zh-HK\": 3076,\r\n \"de-AT\": 3079,\r\n \"en-AU\": 3081,\r\n \"es-ES\": 3082,\r\n \"fr-CA\": 3084,\r\n \"sr-Cyrl-CS\": 3098,\r\n \"se-FI\": 3131,\r\n \"quz-PE\": 3179,\r\n \"ar-LY\": 4097,\r\n \"zh-SG\": 4100,\r\n \"de-LU\": 4103,\r\n \"en-CA\": 4105,\r\n \"es-GT\": 4106,\r\n \"fr-CH\": 4108,\r\n \"hr-BA\": 4122,\r\n \"smj-NO\": 4155,\r\n \"ar-DZ\": 5121,\r\n \"zh-MO\": 5124,\r\n \"de-LI\": 5127,\r\n \"en-NZ\": 5129,\r\n \"es-CR\": 5130,\r\n \"fr-LU\": 5132,\r\n \"bs-Latn-BA\": 5146,\r\n \"smj-SE\": 5179,\r\n \"ar-MA\": 6145,\r\n \"en-IE\": 6153,\r\n \"es-PA\": 6154,\r\n \"fr-MC\": 6156,\r\n \"sr-Latn-BA\": 6170,\r\n \"sma-NO\": 6203,\r\n \"ar-TN\": 7169,\r\n \"en-ZA\": 7177,\r\n \"es-DO\": 7178,\r\n \"sr-Cyrl-BA\": 7194,\r\n \"sma-SE\": 7227,\r\n \"ar-OM\": 8193,\r\n \"en-JM\": 8201,\r\n \"es-VE\": 8202,\r\n \"bs-Cyrl-BA\": 8218,\r\n \"sms-FI\": 8251,\r\n \"ar-YE\": 9217,\r\n \"en-029\": 9225,\r\n \"es-CO\": 9226,\r\n \"sr-Latn-RS\": 9242,\r\n \"smn-FI\": 9275,\r\n \"ar-SY\": 10241,\r\n \"en-BZ\": 10249,\r\n \"es-PE\": 10250,\r\n \"sr-Cyrl-RS\": 10266,\r\n \"ar-JO\": 11265,\r\n \"en-TT\": 11273,\r\n \"es-AR\": 11274,\r\n \"sr-Latn-ME\": 11290,\r\n \"ar-LB\": 12289,\r\n \"en-ZW\": 12297,\r\n \"es-EC\": 12298,\r\n \"sr-Cyrl-ME\": 12314,\r\n \"ar-KW\": 13313,\r\n \"en-PH\": 13321,\r\n \"es-CL\": 13322,\r\n \"ar-AE\": 14337,\r\n \"es-UY\": 14346,\r\n \"ar-BH\": 15361,\r\n \"es-PY\": 15370,\r\n \"ar-QA\": 16385,\r\n \"en-IN\": 16393,\r\n \"es-BO\": 16394,\r\n \"en-MY\": 17417,\r\n \"es-SV\": 17418,\r\n \"en-SG\": 18441,\r\n \"es-HN\": 18442,\r\n \"es-NI\": 19466,\r\n \"es-PR\": 20490,\r\n \"es-US\": 21514,\r\n \"bs-Cyrl\": 25626,\r\n \"bs-Latn\": 26650,\r\n \"sr-Cyrl\": 27674,\r\n \"sr-Latn\": 28698,\r\n smn: 28731,\r\n \"az-Cyrl\": 29740,\r\n sms: 29755,\r\n zh: 30724,\r\n nn: 30740,\r\n bs: 30746,\r\n \"az-Latn\": 30764,\r\n sma: 30779,\r\n \"uz-Cyrl\": 30787,\r\n \"mn-Cyrl\": 30800,\r\n \"iu-Cans\": 30813,\r\n \"zh-Hant\": 31748,\r\n nb: 31764,\r\n sr: 31770,\r\n \"tg-Cyrl\": 31784,\r\n dsb: 31790,\r\n smj: 31803,\r\n \"uz-Latn\": 31811,\r\n \"mn-Mong\": 31824,\r\n \"iu-Latn\": 31837,\r\n \"tzm-Latn\": 31839,\r\n \"ha-Latn\": 31848\r\n};\r\nexport function getLanguageId() {\r\n return LANGUAGE_CODES[localizationCoreUtils.locale()]\r\n}\r\n","/**\r\n * DevExtreme (esm/exporter/excel_format_converter.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n format as stringFormat\r\n} from \"../core/utils/string\";\r\nimport numberFormatter from \"../localization/number\";\r\nimport dateLocalization from \"../localization/date\";\r\nimport {\r\n isDefined,\r\n isString\r\n} from \"../core/utils/type\";\r\nimport {\r\n getFormat\r\n} from \"../localization/ldml/date.format\";\r\nimport {\r\n getLanguageId\r\n} from \"../localization/language_codes\";\r\nimport \"../localization/currency\";\r\nvar ARABIC_ZERO_CODE = 1632;\r\nvar DEFINED_NUMBER_FORMTATS = {\r\n thousands: \"#,##0{0},"K"\",\r\n millions: \"#,##0{0},,"M"\",\r\n billions: \"#,##0{0},,,"B"\",\r\n trillions: \"#,##0{0},,,,"T"\",\r\n percent: \"0{0}%\",\r\n decimal: \"#{0}\",\r\n fixedpoint: \"#,##0{0}\",\r\n exponential: \"0{0}E+00\",\r\n currency: \" \"\r\n};\r\nvar PERIOD_REGEXP = /a+/g;\r\nvar DAY_REGEXP = /E/g;\r\nvar DO_REGEXP = /dE+/g;\r\nvar STANDALONE_MONTH_REGEXP = /L/g;\r\nvar HOUR_REGEXP = /h/g;\r\nvar ANY_REGEXP = /./g;\r\nvar excelFormatConverter = {\r\n _applyPrecision: function(format, precision) {\r\n var result;\r\n var i;\r\n if (precision > 0) {\r\n result = \"decimal\" !== format ? \".\" : \"\";\r\n for (i = 0; i < precision; i++) {\r\n result += \"0\"\r\n }\r\n return result\r\n }\r\n return \"\"\r\n },\r\n _hasArabicDigits: function(text) {\r\n var code;\r\n for (var i = 0; i < text.length; i++) {\r\n code = text.charCodeAt(i);\r\n if (code >= ARABIC_ZERO_CODE && code < ARABIC_ZERO_CODE + 10) {\r\n return true\r\n }\r\n }\r\n return false\r\n },\r\n _convertDateFormatToOpenXml: function(format) {\r\n return format.split(\"/\").join(\"\\\\/\").split(\"'\").map((function(datePart, index) {\r\n if (index % 2 === 0) {\r\n return datePart.replace(PERIOD_REGEXP, \"AM/PM\").replace(DO_REGEXP, \"d\").replace(DAY_REGEXP, \"d\").replace(STANDALONE_MONTH_REGEXP, \"M\").replace(HOUR_REGEXP, \"H\").split(\"[\").join(\"\\\\[\").split(\"]\").join(\"\\\\]\")\r\n }\r\n if (datePart) {\r\n return datePart.replace(ANY_REGEXP, \"\\\\$&\")\r\n }\r\n return \"'\"\r\n })).join(\"\")\r\n },\r\n _convertDateFormat: function(format) {\r\n var formattedValue = (dateLocalization.format(new Date(2009, 8, 8, 6, 5, 4), format) || \"\").toString();\r\n var result = getFormat(value => dateLocalization.format(value, format));\r\n if (result) {\r\n result = this._convertDateFormatToOpenXml(result);\r\n result = this._getLanguageInfo(formattedValue) + result\r\n }\r\n return result\r\n },\r\n _getLanguageInfo: function(defaultPattern) {\r\n var languageID = getLanguageId();\r\n var languageIDStr = languageID ? languageID.toString(16) : \"\";\r\n var languageInfo = \"\";\r\n if (this._hasArabicDigits(defaultPattern)) {\r\n while (languageIDStr.length < 3) {\r\n languageIDStr = \"0\" + languageIDStr\r\n }\r\n languageInfo = \"[$-2010\" + languageIDStr + \"]\"\r\n } else if (languageIDStr) {\r\n languageInfo = \"[$-\" + languageIDStr + \"]\"\r\n }\r\n return languageInfo\r\n },\r\n _convertNumberFormat: function(format, precision, currency) {\r\n var result;\r\n var excelFormat;\r\n if (\"currency\" === format) {\r\n excelFormat = numberFormatter.getOpenXmlCurrencyFormat(currency)\r\n } else {\r\n excelFormat = DEFINED_NUMBER_FORMTATS[format.toLowerCase()]\r\n }\r\n if (excelFormat) {\r\n result = stringFormat(excelFormat, this._applyPrecision(format, precision))\r\n }\r\n return result\r\n },\r\n convertFormat: function(format, precision, type, currency) {\r\n if (isDefined(format)) {\r\n if (\"date\" === type) {\r\n return excelFormatConverter._convertDateFormat(format)\r\n } else if (isString(format) && DEFINED_NUMBER_FORMTATS[format.toLowerCase()]) {\r\n return excelFormatConverter._convertNumberFormat(format, precision, currency)\r\n }\r\n }\r\n }\r\n};\r\nexport default excelFormatConverter;\r\n","/**\r\n * DevExtreme (esm/exporter/excel/excel.tag_helper.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nvar tagHelper = {\r\n toXml: function(tagName, attributes, content) {\r\n var result = [\"<\", tagName];\r\n for (var attributeName in attributes) {\r\n var attributeValue = attributes[attributeName];\r\n if (isDefined(attributeValue)) {\r\n result.push(\" \", attributeName, '=\"', attributeValue, '\"')\r\n }\r\n }\r\n if (isDefined(content) && \"\" !== content) {\r\n result.push(\">\", content, \"\")\r\n } else {\r\n result.push(\" />\")\r\n }\r\n return result.join(\"\")\r\n }\r\n};\r\nexport default tagHelper;\r\n","/**\r\n * DevExtreme (esm/exporter/excel/excel.cell_alignment_helper.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport tagHelper from \"./excel.tag_helper\";\r\nvar cellAlignmentHelper = {\r\n tryCreateTag: function(sourceObj) {\r\n var result = null;\r\n if (isDefined(sourceObj)) {\r\n result = {\r\n vertical: sourceObj.vertical,\r\n wrapText: sourceObj.wrapText,\r\n horizontal: sourceObj.horizontal\r\n };\r\n if (cellAlignmentHelper.isEmpty(result)) {\r\n result = null\r\n }\r\n }\r\n return result\r\n },\r\n copy: function(source) {\r\n var result = null;\r\n if (isDefined(source)) {\r\n result = {};\r\n if (void 0 !== source.horizontal) {\r\n result.horizontal = source.horizontal\r\n }\r\n if (void 0 !== source.vertical) {\r\n result.vertical = source.vertical\r\n }\r\n if (void 0 !== source.wrapText) {\r\n result.wrapText = source.wrapText\r\n }\r\n }\r\n return result\r\n },\r\n areEqual: function(leftTag, rightTag) {\r\n return cellAlignmentHelper.isEmpty(leftTag) && cellAlignmentHelper.isEmpty(rightTag) || isDefined(leftTag) && isDefined(rightTag) && leftTag.vertical === rightTag.vertical && leftTag.wrapText === rightTag.wrapText && leftTag.horizontal === rightTag.horizontal\r\n },\r\n isEmpty: function(tag) {\r\n return !isDefined(tag) || !isDefined(tag.vertical) && !isDefined(tag.wrapText) && !isDefined(tag.horizontal)\r\n },\r\n toXml: function(tag) {\r\n return tagHelper.toXml(\"alignment\", {\r\n vertical: tag.vertical,\r\n wrapText: isDefined(tag.wrapText) ? Number(tag.wrapText) : void 0,\r\n horizontal: tag.horizontal\r\n })\r\n }\r\n};\r\nexport default cellAlignmentHelper;\r\n","/**\r\n * DevExtreme (esm/exporter/excel/excel.color_helper.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport tagHelper from \"./excel.tag_helper\";\r\nvar colorHelper = {\r\n _tryConvertColor: function(source) {\r\n if (\"string\" !== typeof source) {\r\n return source\r\n }\r\n var result;\r\n if (source.length > 0 && \"#\" === source[0]) {\r\n var colorCode = source.substr(1, source.length);\r\n if (6 === colorCode.length) {\r\n result = \"FF\" + colorCode\r\n } else if (8 === colorCode.length) {\r\n result = colorCode[6] + colorCode[7] + colorCode.substr(0, 6)\r\n } else {\r\n result = colorCode\r\n }\r\n } else {\r\n result = source\r\n }\r\n return result\r\n },\r\n tryCreateTag: function(sourceObj) {\r\n var result = null;\r\n if (isDefined(sourceObj)) {\r\n if (\"string\" === typeof sourceObj) {\r\n result = {\r\n rgb: this._tryConvertColor(sourceObj)\r\n }\r\n } else {\r\n result = {\r\n rgb: this._tryConvertColor(sourceObj.rgb),\r\n theme: sourceObj.theme\r\n }\r\n }\r\n if (colorHelper.isEmpty(result)) {\r\n result = null\r\n }\r\n }\r\n return result\r\n },\r\n copy: function(source) {\r\n var result = null;\r\n if (isDefined(source)) {\r\n if (\"string\" === typeof source) {\r\n result = source\r\n } else {\r\n result = {};\r\n if (void 0 !== source.rgb) {\r\n result.rgb = source.rgb\r\n }\r\n if (void 0 !== source.theme) {\r\n result.theme = source.theme\r\n }\r\n }\r\n }\r\n return result\r\n },\r\n isEmpty: function(tag) {\r\n return !isDefined(tag) || !isDefined(tag.rgb) && !isDefined(tag.theme)\r\n },\r\n areEqual: function(leftTag, rightTag) {\r\n return colorHelper.isEmpty(leftTag) && colorHelper.isEmpty(rightTag) || isDefined(leftTag) && isDefined(rightTag) && leftTag.rgb === rightTag.rgb && leftTag.theme === rightTag.theme\r\n },\r\n toXml: function(tagName, tag) {\r\n return tagHelper.toXml(tagName, {\r\n rgb: tag.rgb,\r\n theme: tag.theme\r\n })\r\n }\r\n};\r\nexport default colorHelper;\r\n","/**\r\n * DevExtreme (esm/exporter/excel/excel.pattern_fill_helper.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport tagHelper from \"./excel.tag_helper\";\r\nimport colorHelper from \"./excel.color_helper\";\r\nvar patternFillHelper = {\r\n tryCreateTag: function(sourceObj) {\r\n var result = null;\r\n if (isDefined(sourceObj)) {\r\n result = {\r\n patternType: sourceObj.patternType,\r\n backgroundColor: colorHelper.tryCreateTag(sourceObj.backgroundColor),\r\n foregroundColor: colorHelper.tryCreateTag(sourceObj.foregroundColor)\r\n };\r\n if (patternFillHelper.isEmpty(result)) {\r\n result = null\r\n }\r\n }\r\n return result\r\n },\r\n copy: function(source) {\r\n var result = null;\r\n if (isDefined(source)) {\r\n result = {};\r\n if (void 0 !== source.patternType) {\r\n result.patternType = source.patternType\r\n }\r\n if (void 0 !== source.backgroundColor) {\r\n result.backgroundColor = colorHelper.copy(source.backgroundColor)\r\n }\r\n if (void 0 !== source.foregroundColor) {\r\n result.foregroundColor = colorHelper.copy(source.foregroundColor)\r\n }\r\n }\r\n return result\r\n },\r\n areEqual: function(leftTag, rightTag) {\r\n return patternFillHelper.isEmpty(leftTag) && patternFillHelper.isEmpty(rightTag) || isDefined(leftTag) && isDefined(rightTag) && leftTag.patternType === rightTag.patternType && colorHelper.areEqual(leftTag.backgroundColor, rightTag.backgroundColor) && colorHelper.areEqual(leftTag.foregroundColor, rightTag.foregroundColor)\r\n },\r\n isEmpty: function(tag) {\r\n return !isDefined(tag) || !isDefined(tag.patternType)\r\n },\r\n toXml: function(tag) {\r\n var content = [isDefined(tag.foregroundColor) ? colorHelper.toXml(\"fgColor\", tag.foregroundColor) : \"\", isDefined(tag.backgroundColor) ? colorHelper.toXml(\"bgColor\", tag.backgroundColor) : \"\"].join(\"\");\r\n return tagHelper.toXml(\"patternFill\", {\r\n patternType: tag.patternType\r\n }, content)\r\n }\r\n};\r\nexport default patternFillHelper;\r\n","/**\r\n * DevExtreme (esm/exporter/excel/excel.fill_helper.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport tagHelper from \"./excel.tag_helper\";\r\nimport patternFillHelper from \"./excel.pattern_fill_helper\";\r\nvar fillHelper = {\r\n tryCreateTag: function(sourceObj) {\r\n var result = null;\r\n if (isDefined(sourceObj)) {\r\n result = {\r\n patternFill: patternFillHelper.tryCreateTag(sourceObj.patternFill)\r\n };\r\n if (fillHelper.isEmpty(result)) {\r\n result = null\r\n }\r\n }\r\n return result\r\n },\r\n tryCreateFillFromSimpleFormat: function() {\r\n var {\r\n backgroundColor: backgroundColor,\r\n fillPatternType: fillPatternType,\r\n fillPatternColor: fillPatternColor\r\n } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\r\n if (isDefined(backgroundColor) && !(isDefined(fillPatternType) && isDefined(fillPatternColor))) {\r\n return {\r\n patternFill: {\r\n patternType: \"solid\",\r\n foregroundColor: {\r\n rgb: backgroundColor\r\n }\r\n }\r\n }\r\n } else if (isDefined(fillPatternType) && isDefined(fillPatternColor)) {\r\n return {\r\n patternFill: {\r\n patternType: fillPatternType,\r\n foregroundColor: {\r\n rgb: fillPatternColor\r\n },\r\n backgroundColor: {\r\n rgb: backgroundColor\r\n }\r\n }\r\n }\r\n }\r\n },\r\n copySimpleFormat: function(source, target) {\r\n if (void 0 !== source.backgroundColor) {\r\n target.backgroundColor = source.backgroundColor\r\n }\r\n if (void 0 !== source.fillPatternType) {\r\n target.fillPatternType = source.fillPatternType\r\n }\r\n if (void 0 !== source.fillPatternColor) {\r\n target.fillPatternColor = source.fillPatternColor\r\n }\r\n },\r\n copy: function(source) {\r\n var result = null;\r\n if (isDefined(source)) {\r\n result = {};\r\n if (void 0 !== source.patternFill) {\r\n result.patternFill = patternFillHelper.copy(source.patternFill)\r\n }\r\n }\r\n return result\r\n },\r\n areEqual: function(leftTag, rightTag) {\r\n return fillHelper.isEmpty(leftTag) && fillHelper.isEmpty(rightTag) || isDefined(leftTag) && isDefined(rightTag) && patternFillHelper.areEqual(leftTag.patternFill, rightTag.patternFill)\r\n },\r\n isEmpty: function(tag) {\r\n return !isDefined(tag) || patternFillHelper.isEmpty(tag.patternFill)\r\n },\r\n toXml: function(tag) {\r\n return tagHelper.toXml(\"fill\", {}, patternFillHelper.toXml(tag.patternFill))\r\n }\r\n};\r\nexport default fillHelper;\r\n","/**\r\n * DevExtreme (esm/exporter/excel/excel.font_helper.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport tagHelper from \"./excel.tag_helper\";\r\nimport colorHelper from \"./excel.color_helper\";\r\nvar fontHelper = {\r\n tryCreateTag: function(sourceObj) {\r\n var result = null;\r\n if (isDefined(sourceObj)) {\r\n result = {\r\n size: sourceObj.size,\r\n name: sourceObj.name,\r\n family: sourceObj.family,\r\n scheme: sourceObj.scheme,\r\n bold: sourceObj.bold,\r\n italic: sourceObj.italic,\r\n underline: sourceObj.underline,\r\n color: colorHelper.tryCreateTag(sourceObj.color)\r\n };\r\n if (fontHelper.isEmpty(result)) {\r\n result = null\r\n }\r\n }\r\n return result\r\n },\r\n copy: function(source) {\r\n var result = null;\r\n if (isDefined(source)) {\r\n result = {};\r\n if (void 0 !== source.size) {\r\n result.size = source.size\r\n }\r\n if (void 0 !== source.name) {\r\n result.name = source.name\r\n }\r\n if (void 0 !== source.family) {\r\n result.family = source.family\r\n }\r\n if (void 0 !== source.scheme) {\r\n result.scheme = source.scheme\r\n }\r\n if (void 0 !== source.bold) {\r\n result.bold = source.bold\r\n }\r\n if (void 0 !== source.italic) {\r\n result.italic = source.italic\r\n }\r\n if (void 0 !== source.underline) {\r\n result.underline = source.underline\r\n }\r\n if (void 0 !== source.color) {\r\n result.color = colorHelper.copy(source.color)\r\n }\r\n }\r\n return result\r\n },\r\n areEqual: function(leftTag, rightTag) {\r\n return fontHelper.isEmpty(leftTag) && fontHelper.isEmpty(rightTag) || isDefined(leftTag) && isDefined(rightTag) && leftTag.size === rightTag.size && leftTag.name === rightTag.name && leftTag.family === rightTag.family && leftTag.scheme === rightTag.scheme && (leftTag.bold === rightTag.bold || !leftTag.bold === !rightTag.bold) && (leftTag.italic === rightTag.italic || !leftTag.italic === !rightTag.italic) && leftTag.underline === rightTag.underline && colorHelper.areEqual(leftTag.color, rightTag.color)\r\n },\r\n isEmpty: function(tag) {\r\n return !isDefined(tag) || !isDefined(tag.size) && !isDefined(tag.name) && !isDefined(tag.family) && !isDefined(tag.scheme) && (!isDefined(tag.bold) || !tag.bold) && (!isDefined(tag.italic) || !tag.italic) && !isDefined(tag.underline) && colorHelper.isEmpty(tag.color)\r\n },\r\n toXml: function(tag) {\r\n var content = [isDefined(tag.bold) && tag.bold ? tagHelper.toXml(\"b\", {}) : \"\", isDefined(tag.size) ? tagHelper.toXml(\"sz\", {\r\n val: tag.size\r\n }) : \"\", isDefined(tag.color) ? colorHelper.toXml(\"color\", tag.color) : \"\", isDefined(tag.name) ? tagHelper.toXml(\"name\", {\r\n val: tag.name\r\n }) : \"\", isDefined(tag.family) ? tagHelper.toXml(\"family\", {\r\n val: tag.family\r\n }) : \"\", isDefined(tag.scheme) ? tagHelper.toXml(\"scheme\", {\r\n val: tag.scheme\r\n }) : \"\", isDefined(tag.italic) && tag.italic ? tagHelper.toXml(\"i\", {}) : \"\", isDefined(tag.underline) ? tagHelper.toXml(\"u\", {\r\n val: tag.underline\r\n }) : \"\"].join(\"\");\r\n return tagHelper.toXml(\"font\", {}, content)\r\n }\r\n};\r\nexport default fontHelper;\r\n","/**\r\n * DevExtreme (esm/exporter/excel/excel.cell_format_helper.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport tagHelper from \"./excel.tag_helper\";\r\nimport cellAlignmentHelper from \"./excel.cell_alignment_helper\";\r\nimport fillHelper from \"./excel.fill_helper\";\r\nimport fontHelper from \"./excel.font_helper\";\r\nvar cellFormatHelper = {\r\n tryCreateTag: function(sourceObj, sharedItemsContainer) {\r\n var result = null;\r\n if (isDefined(sourceObj)) {\r\n var numberFormatId;\r\n if (\"number\" === typeof sourceObj.numberFormat) {\r\n numberFormatId = sourceObj.numberFormat\r\n } else {\r\n numberFormatId = sharedItemsContainer.registerNumberFormat(sourceObj.numberFormat)\r\n }\r\n var fill = sourceObj.fill;\r\n if (!isDefined(fill)) {\r\n fill = fillHelper.tryCreateFillFromSimpleFormat(sourceObj)\r\n }\r\n result = {\r\n numberFormatId: numberFormatId,\r\n alignment: cellAlignmentHelper.tryCreateTag(sourceObj.alignment),\r\n fontId: sharedItemsContainer.registerFont(sourceObj.font),\r\n fillId: sharedItemsContainer.registerFill(fill)\r\n };\r\n if (cellFormatHelper.isEmpty(result)) {\r\n result = null\r\n }\r\n }\r\n return result\r\n },\r\n copy: function(source) {\r\n var result;\r\n if (null === source) {\r\n result = null\r\n } else if (isDefined(source)) {\r\n result = {};\r\n if (void 0 !== source.numberFormat) {\r\n result.numberFormat = source.numberFormat\r\n }\r\n if (void 0 !== source.fill) {\r\n result.fill = fillHelper.copy(source.fill)\r\n } else {\r\n fillHelper.copySimpleFormat(source, result)\r\n }\r\n if (void 0 !== source.alignment) {\r\n result.alignment = cellAlignmentHelper.copy(source.alignment)\r\n }\r\n if (void 0 !== source.font) {\r\n result.font = fontHelper.copy(source.font)\r\n }\r\n }\r\n return result\r\n },\r\n areEqual: function(leftTag, rightTag) {\r\n return cellFormatHelper.isEmpty(leftTag) && cellFormatHelper.isEmpty(rightTag) || isDefined(leftTag) && isDefined(rightTag) && leftTag.fontId === rightTag.fontId && leftTag.numberFormatId === rightTag.numberFormatId && leftTag.fillId === rightTag.fillId && cellAlignmentHelper.areEqual(leftTag.alignment, rightTag.alignment)\r\n },\r\n isEmpty: function(tag) {\r\n return !isDefined(tag) || !isDefined(tag.fontId) && !isDefined(tag.numberFormatId) && !isDefined(tag.fillId) && cellAlignmentHelper.isEmpty(tag.alignment)\r\n },\r\n toXml: function(tag) {\r\n var isAlignmentEmpty = cellAlignmentHelper.isEmpty(tag.alignment);\r\n var applyNumberFormat;\r\n if (isDefined(tag.numberFormatId)) {\r\n applyNumberFormat = tag.numberFormatId > 0 ? 1 : 0\r\n }\r\n return tagHelper.toXml(\"xf\", {\r\n xfId: 0,\r\n applyAlignment: isAlignmentEmpty ? null : 1,\r\n fontId: tag.fontId,\r\n applyNumberFormat: applyNumberFormat,\r\n fillId: tag.fillId,\r\n numFmtId: tag.numberFormatId\r\n }, isAlignmentEmpty ? null : cellAlignmentHelper.toXml(tag.alignment))\r\n }\r\n};\r\nexport default cellFormatHelper;\r\n","/**\r\n * DevExtreme (esm/exporter/excel/excel.number_format_helper.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport tagHelper from \"./excel.tag_helper\";\r\nvar numberFormatHelper = {\r\n ID_PROPERTY_NAME: \"id\",\r\n tryCreateTag: function(sourceObj) {\r\n var result = null;\r\n if (\"string\" === typeof sourceObj) {\r\n result = {\r\n formatCode: sourceObj\r\n };\r\n if (numberFormatHelper.isEmpty(result)) {\r\n result = null\r\n }\r\n }\r\n return result\r\n },\r\n areEqual: function(leftTag, rightTag) {\r\n return numberFormatHelper.isEmpty(leftTag) && numberFormatHelper.isEmpty(rightTag) || isDefined(leftTag) && isDefined(rightTag) && leftTag.formatCode === rightTag.formatCode\r\n },\r\n isEmpty: function(tag) {\r\n return !isDefined(tag) || !isDefined(tag.formatCode) || \"\" === tag.formatCode\r\n },\r\n toXml: function(tag) {\r\n return tagHelper.toXml(\"numFmt\", {\r\n numFmtId: tag[numberFormatHelper.ID_PROPERTY_NAME],\r\n formatCode: tag.formatCode\r\n })\r\n }\r\n};\r\nexport default numberFormatHelper;\r\n","/**\r\n * DevExtreme (esm/exporter/excel/excel.file.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport tagHelper from \"./excel.tag_helper\";\r\nimport cellFormatHelper from \"./excel.cell_format_helper\";\r\nimport fillHelper from \"./excel.fill_helper\";\r\nimport fontHelper from \"./excel.font_helper\";\r\nimport numberFormatHelper from \"./excel.number_format_helper\";\r\nexport default class ExcelFile {\r\n constructor() {\r\n this._cellFormatTags = [];\r\n this._fillTags = [];\r\n this._fontTags = [];\r\n this._numberFormatTags = [];\r\n this._fillTags.push(fillHelper.tryCreateTag({\r\n patternFill: {\r\n patternType: \"none\"\r\n }\r\n }))\r\n }\r\n registerCellFormat(cellFormat) {\r\n var result;\r\n var cellFormatTag = cellFormatHelper.tryCreateTag(cellFormat, {\r\n registerFill: this.registerFill.bind(this),\r\n registerFont: this.registerFont.bind(this),\r\n registerNumberFormat: this.registerNumberFormat.bind(this)\r\n });\r\n if (isDefined(cellFormatTag)) {\r\n for (var i = 0; i < this._cellFormatTags.length; i++) {\r\n if (cellFormatHelper.areEqual(this._cellFormatTags[i], cellFormatTag)) {\r\n result = i;\r\n break\r\n }\r\n }\r\n if (void 0 === result) {\r\n result = this._cellFormatTags.push(cellFormatTag) - 1\r\n }\r\n }\r\n return result\r\n }\r\n static copyCellFormat(source) {\r\n return cellFormatHelper.copy(source)\r\n }\r\n generateCellFormatsXml() {\r\n var cellFormatTagsAsXmlStringsArray = this._cellFormatTags.map(tag => cellFormatHelper.toXml(tag));\r\n return tagHelper.toXml(\"cellXfs\", {\r\n count: cellFormatTagsAsXmlStringsArray.length\r\n }, cellFormatTagsAsXmlStringsArray.join(\"\"))\r\n }\r\n registerFill(fill) {\r\n var result;\r\n var fillTag = fillHelper.tryCreateTag(fill);\r\n if (isDefined(fillTag)) {\r\n for (var i = 0; i < this._fillTags.length; i++) {\r\n if (fillHelper.areEqual(this._fillTags[i], fillTag)) {\r\n result = i;\r\n break\r\n }\r\n }\r\n if (void 0 === result) {\r\n if (this._fillTags.length < 2) {\r\n this._fillTags.push(fillHelper.tryCreateTag({\r\n patternFill: {\r\n patternType: \"Gray125\"\r\n }\r\n }))\r\n }\r\n result = this._fillTags.push(fillTag) - 1\r\n }\r\n }\r\n return result\r\n }\r\n generateFillsXml() {\r\n var tagsAsXmlStringsArray = this._fillTags.map(tag => fillHelper.toXml(tag));\r\n return tagHelper.toXml(\"fills\", {\r\n count: tagsAsXmlStringsArray.length\r\n }, tagsAsXmlStringsArray.join(\"\"))\r\n }\r\n registerFont(font) {\r\n var result;\r\n var fontTag = fontHelper.tryCreateTag(font);\r\n if (isDefined(fontTag)) {\r\n for (var i = 0; i < this._fontTags.length; i++) {\r\n if (fontHelper.areEqual(this._fontTags[i], fontTag)) {\r\n result = i;\r\n break\r\n }\r\n }\r\n if (void 0 === result) {\r\n result = this._fontTags.push(fontTag) - 1\r\n }\r\n }\r\n return result\r\n }\r\n generateFontsXml() {\r\n var xmlStringsArray = this._fontTags.map(tag => fontHelper.toXml(tag));\r\n return tagHelper.toXml(\"fonts\", {\r\n count: xmlStringsArray.length\r\n }, xmlStringsArray.join(\"\"))\r\n }\r\n _convertNumberFormatIndexToId(index) {\r\n return 165 + index\r\n }\r\n registerNumberFormat(numberFormat) {\r\n var result;\r\n var tag = numberFormatHelper.tryCreateTag(numberFormat);\r\n if (isDefined(tag)) {\r\n for (var i = 0; i < this._numberFormatTags.length; i++) {\r\n if (numberFormatHelper.areEqual(this._numberFormatTags[i], tag)) {\r\n result = this._numberFormatTags[i][numberFormatHelper.ID_PROPERTY_NAME];\r\n break\r\n }\r\n }\r\n if (void 0 === result) {\r\n tag[numberFormatHelper.ID_PROPERTY_NAME] = this._convertNumberFormatIndexToId(this._numberFormatTags.length);\r\n result = tag[numberFormatHelper.ID_PROPERTY_NAME];\r\n this._numberFormatTags.push(tag)\r\n }\r\n }\r\n return result\r\n }\r\n generateNumberFormatsXml() {\r\n if (this._numberFormatTags.length > 0) {\r\n var xmlStringsArray = this._numberFormatTags.map(tag => numberFormatHelper.toXml(tag));\r\n return tagHelper.toXml(\"numFmts\", {\r\n count: xmlStringsArray.length\r\n }, xmlStringsArray.join(\"\"))\r\n } else {\r\n return \"\"\r\n }\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/exporter/excel_creator.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport Class from \"../core/class\";\r\nimport {\r\n getWindow\r\n} from \"../core/utils/window\";\r\nimport {\r\n isDefined,\r\n isString,\r\n isDate,\r\n isBoolean,\r\n isObject,\r\n isFunction\r\n} from \"../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport errors from \"../ui/widget/ui.errors\";\r\nimport {\r\n encodeHtml\r\n} from \"../core/utils/string\";\r\nimport JSZip from \"jszip\";\r\nimport {\r\n MIME_TYPES\r\n} from \"./file_saver\";\r\nimport excelFormatConverter from \"./excel_format_converter\";\r\nimport ExcelFile from \"./excel/excel.file\";\r\nimport {\r\n Deferred\r\n} from \"../core/utils/deferred\";\r\nvar XML_TAG = '';\r\nvar GROUP_SHEET_PR_XML = '';\r\nvar SINGLE_SHEET_PR_XML = \"\";\r\nvar BASE_STYLE_XML2 = '';\r\nvar OPEN_XML_FORMAT_URL = \"http://schemas.openxmlformats.org\";\r\nvar RELATIONSHIP_PART_NAME = \"rels\";\r\nvar XL_FOLDER_NAME = \"xl\";\r\nvar WORKBOOK_FILE_NAME = \"workbook.xml\";\r\nvar CONTENTTYPES_FILE_NAME = \"[Content_Types].xml\";\r\nvar SHAREDSTRING_FILE_NAME = \"sharedStrings.xml\";\r\nvar STYLE_FILE_NAME = \"styles.xml\";\r\nvar WORKSHEETS_FOLDER = \"worksheets\";\r\nvar WORKSHEET_FILE_NAME = \"sheet1.xml\";\r\nvar WORKSHEET_HEADER_XML = '';\r\nvar VALID_TYPES = {\r\n boolean: \"b\",\r\n date: \"d\",\r\n number: \"n\",\r\n string: \"s\"\r\n};\r\nvar EXCEL_START_TIME = Date.UTC(1899, 11, 30);\r\nvar DAYS_COUNT_BEFORE_29_FEB_1900 = 60;\r\nvar MAX_DIGIT_WIDTH_IN_PIXELS = 7;\r\nvar UNSUPPORTED_FORMAT_MAPPING = {\r\n quarter: \"shortDate\",\r\n quarterAndYear: \"shortDate\",\r\n minute: \"longTime\",\r\n millisecond: \"longTime\"\r\n};\r\nexport var ExcelCreator = Class.inherit({\r\n _getXMLTag: function(tagName, attributes, content) {\r\n var result = \"<\" + tagName;\r\n var i;\r\n var length = attributes.length;\r\n var attr;\r\n for (i = 0; i < length; i++) {\r\n attr = attributes[i];\r\n if (void 0 !== attr.value) {\r\n result = result + \" \" + attr.name + '=\"' + attr.value + '\"'\r\n }\r\n }\r\n return isDefined(content) ? result + \">\" + content + \"\" : result + \" />\"\r\n },\r\n _convertToExcelCellRef: function(zeroBasedRowIndex, zeroBasedCellIndex) {\r\n var columnName = \"\";\r\n var charCode;\r\n var isCellIndexFound;\r\n while (!isCellIndexFound) {\r\n charCode = 65 + (zeroBasedCellIndex >= 26 ? zeroBasedCellIndex % 26 : Math.ceil(zeroBasedCellIndex));\r\n columnName = String.fromCharCode(charCode) + columnName;\r\n if (zeroBasedCellIndex >= 26) {\r\n zeroBasedCellIndex = Math.floor(zeroBasedCellIndex / 26) - 1\r\n } else {\r\n isCellIndexFound = true\r\n }\r\n }\r\n return columnName + (zeroBasedRowIndex + 1)\r\n },\r\n _convertToExcelCellRefAndTrackMaxIndex: function(rowIndex, cellIndex) {\r\n if (this._maxRowIndex < Number(rowIndex)) {\r\n this._maxRowIndex = Number(rowIndex)\r\n }\r\n if (this._maxColumnIndex < Number(cellIndex)) {\r\n this._maxColumnIndex = Number(cellIndex)\r\n }\r\n return this._convertToExcelCellRef(rowIndex, cellIndex)\r\n },\r\n _getDataType: function(dataType) {\r\n return VALID_TYPES[dataType] || VALID_TYPES.string\r\n },\r\n _tryGetExcelCellDataType: function(object) {\r\n if (isDefined(object)) {\r\n if (\"number\" === typeof object) {\r\n if (isFinite(object)) {\r\n return VALID_TYPES.number\r\n } else {\r\n return VALID_TYPES.string\r\n }\r\n } else if (isString(object)) {\r\n return VALID_TYPES.string\r\n } else if (isDate(object)) {\r\n return VALID_TYPES.number\r\n } else if (isBoolean(object)) {\r\n return VALID_TYPES.boolean\r\n }\r\n }\r\n },\r\n _formatObjectConverter: function(format, dataType) {\r\n var result = {\r\n format: format,\r\n precision: format && format.precision,\r\n dataType: dataType\r\n };\r\n if (isObject(format)) {\r\n return extend(result, format, {\r\n format: format.formatter || format.type,\r\n currency: format.currency\r\n })\r\n }\r\n return result\r\n },\r\n _tryConvertToExcelNumberFormat: function(format, dataType) {\r\n var newFormat = this._formatObjectConverter(format, dataType);\r\n format = newFormat.format;\r\n var currency = newFormat.currency;\r\n dataType = newFormat.dataType;\r\n if (isDefined(format) && \"date\" === dataType) {\r\n format = UNSUPPORTED_FORMAT_MAPPING[format && format.type || format] || format\r\n }\r\n return excelFormatConverter.convertFormat(format, newFormat.precision, dataType, currency)\r\n },\r\n _appendString: function(value) {\r\n if (isDefined(value)) {\r\n value = String(value);\r\n if (value.length) {\r\n value = encodeHtml(value);\r\n if (void 0 === this._stringHash[value]) {\r\n this._stringHash[value] = this._stringArray.length;\r\n this._stringArray.push(value)\r\n }\r\n return this._stringHash[value]\r\n }\r\n }\r\n },\r\n _tryGetExcelDateValue: function(date) {\r\n var days;\r\n var totalTime;\r\n if (isDate(date)) {\r\n days = Math.floor((Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()) - EXCEL_START_TIME) / 864e5);\r\n if (days < DAYS_COUNT_BEFORE_29_FEB_1900) {\r\n days--\r\n }\r\n totalTime = (3600 * date.getHours() + 60 * date.getMinutes() + date.getSeconds()) / 86400;\r\n return days + totalTime\r\n }\r\n },\r\n _prepareValue: function(rowIndex, cellIndex) {\r\n var dataProvider = this._dataProvider;\r\n var {\r\n cellSourceData: cellSourceData\r\n } = dataProvider.getCellData(rowIndex, cellIndex) || {};\r\n var {\r\n value: value\r\n } = dataProvider.getCellData(rowIndex, cellIndex) || {};\r\n var sourceValue;\r\n var type = this._getDataType(dataProvider.getCellType(rowIndex, cellIndex));\r\n if (type === VALID_TYPES.date && !isDate(value)) {\r\n type = VALID_TYPES.string\r\n }\r\n switch (type) {\r\n case VALID_TYPES.string:\r\n sourceValue = value;\r\n value = this._appendString(value);\r\n break;\r\n case VALID_TYPES.date:\r\n sourceValue = value;\r\n value = this._tryGetExcelDateValue(value);\r\n type = VALID_TYPES.number\r\n }\r\n return {\r\n value: value,\r\n type: type,\r\n sourceValue: sourceValue,\r\n cellSourceData: cellSourceData\r\n }\r\n },\r\n _callCustomizeExcelCell: function(_ref) {\r\n var {\r\n dataProvider: dataProvider,\r\n value: value,\r\n style: style,\r\n sourceData: sourceData\r\n } = _ref;\r\n var styleCopy = ExcelFile.copyCellFormat(style);\r\n var args = {\r\n value: value,\r\n numberFormat: styleCopy.numberFormat,\r\n clearStyle: function() {\r\n this.horizontalAlignment = null;\r\n this.verticalAlignment = null;\r\n this.wrapTextEnabled = null;\r\n this.font = null;\r\n this.numberFormat = null\r\n }\r\n };\r\n if (isDefined(styleCopy)) {\r\n if (isDefined(styleCopy.alignment)) {\r\n args.horizontalAlignment = styleCopy.alignment.horizontal;\r\n args.verticalAlignment = styleCopy.alignment.vertical;\r\n args.wrapTextEnabled = styleCopy.alignment.wrapText\r\n }\r\n args.backgroundColor = styleCopy.backgroundColor;\r\n args.fillPatternType = styleCopy.fillPatternType;\r\n args.fillPatternColor = styleCopy.fillPatternColor;\r\n args.font = styleCopy.font\r\n }\r\n dataProvider.customizeExcelCell(args, sourceData);\r\n var newStyle = styleCopy || {};\r\n newStyle.font = args.font;\r\n newStyle.alignment = newStyle.alignment || {};\r\n newStyle.alignment.horizontal = args.horizontalAlignment;\r\n newStyle.alignment.vertical = args.verticalAlignment;\r\n newStyle.alignment.wrapText = args.wrapTextEnabled;\r\n newStyle.backgroundColor = args.backgroundColor;\r\n newStyle.fillPatternType = args.fillPatternType;\r\n newStyle.fillPatternColor = args.fillPatternColor;\r\n newStyle.numberFormat = args.numberFormat;\r\n return {\r\n value: args.value,\r\n style: newStyle\r\n }\r\n },\r\n _getDataArray: function() {\r\n var rowIndex;\r\n var cellIndex;\r\n var cellsArray;\r\n var cellData;\r\n var result = [];\r\n var dataProvider = this._dataProvider;\r\n var rowsLength = dataProvider.getRowsCount();\r\n var columns = dataProvider.getColumns();\r\n var cellsLength;\r\n for (rowIndex = 0; rowIndex < rowsLength; rowIndex++) {\r\n cellsArray = [];\r\n cellsLength = columns.length;\r\n for (cellIndex = 0; cellIndex !== cellsLength; cellIndex++) {\r\n cellData = this._prepareValue(rowIndex, cellIndex);\r\n var styleArrayIndex = dataProvider.getStyleId(rowIndex, cellIndex);\r\n var cellStyleId = this._styleArrayIndexToCellStyleIdMap[styleArrayIndex];\r\n if (dataProvider.hasCustomizeExcelCell && dataProvider.hasCustomizeExcelCell()) {\r\n var value = cellData.sourceValue || cellData.value;\r\n var modifiedExcelCell = this._callCustomizeExcelCell({\r\n dataProvider: dataProvider,\r\n value: value,\r\n style: this._styleArray[styleArrayIndex],\r\n sourceData: cellData.cellSourceData\r\n });\r\n if (modifiedExcelCell.value !== value) {\r\n if (typeof modifiedExcelCell.value !== typeof value || \"number\" === typeof modifiedExcelCell.value && !isFinite(modifiedExcelCell.value)) {\r\n var cellDataType = this._tryGetExcelCellDataType(modifiedExcelCell.value);\r\n if (isDefined(cellDataType)) {\r\n cellData.type = cellDataType\r\n }\r\n }\r\n switch (cellData.type) {\r\n case VALID_TYPES.string:\r\n cellData.value = this._appendString(modifiedExcelCell.value);\r\n break;\r\n case VALID_TYPES.date:\r\n cellData.value = modifiedExcelCell.value;\r\n break;\r\n case VALID_TYPES.number:\r\n var newValue = modifiedExcelCell.value;\r\n var excelDateValue = this._tryGetExcelDateValue(newValue);\r\n if (isDefined(excelDateValue)) {\r\n newValue = excelDateValue\r\n }\r\n cellData.value = newValue;\r\n break;\r\n default:\r\n cellData.value = modifiedExcelCell.value\r\n }\r\n }\r\n cellStyleId = this._excelFile.registerCellFormat(modifiedExcelCell.style)\r\n }\r\n cellsArray.push({\r\n style: cellStyleId,\r\n value: cellData.value,\r\n type: cellData.type\r\n })\r\n }\r\n if (!this._needSheetPr && dataProvider.getGroupLevel(rowIndex) > 0) {\r\n this._needSheetPr = true\r\n }\r\n result.push(cellsArray)\r\n }\r\n return result\r\n },\r\n _calculateWidth: function(pixelsWidth) {\r\n pixelsWidth = parseInt(pixelsWidth, 10);\r\n if (!pixelsWidth || pixelsWidth < 5) {\r\n pixelsWidth = 100\r\n }\r\n return Math.min(255, Math.floor((pixelsWidth - 5) / MAX_DIGIT_WIDTH_IN_PIXELS * 100 + .5) / 100)\r\n },\r\n _prepareStyleData: function() {\r\n var that = this;\r\n var styles = that._dataProvider.getStyles();\r\n that._dataProvider.getColumns().forEach((function(column) {\r\n that._colsArray.push(that._calculateWidth(column.width))\r\n }));\r\n var fonts = [{\r\n size: 11,\r\n color: {\r\n theme: 1\r\n },\r\n name: \"Calibri\",\r\n family: 2,\r\n scheme: \"minor\",\r\n bold: false\r\n }, {\r\n size: 11,\r\n color: {\r\n theme: 1\r\n },\r\n name: \"Calibri\",\r\n family: 2,\r\n scheme: \"minor\",\r\n bold: true\r\n }];\r\n this._excelFile.registerFont(fonts[0]);\r\n this._excelFile.registerFont(fonts[1]);\r\n styles.forEach((function(style) {\r\n var numberFormat = that._tryConvertToExcelNumberFormat(style.format, style.dataType);\r\n if (!isDefined(numberFormat)) {\r\n numberFormat = 0\r\n }\r\n that._styleArray.push({\r\n font: fonts[Number(!!style.bold)],\r\n numberFormat: numberFormat,\r\n alignment: {\r\n vertical: \"top\",\r\n wrapText: !!style.wrapText,\r\n horizontal: style.alignment || \"left\"\r\n }\r\n })\r\n }));\r\n that._styleArrayIndexToCellStyleIdMap = that._styleArray.map(item => this._excelFile.registerCellFormat(item))\r\n },\r\n _prepareCellData: function() {\r\n this._cellsArray = this._getDataArray()\r\n },\r\n _createXMLRelationships: function(xmlRelationships) {\r\n return this._getXMLTag(\"Relationships\", [{\r\n name: \"xmlns\",\r\n value: OPEN_XML_FORMAT_URL + \"/package/2006/relationships\"\r\n }], xmlRelationships)\r\n },\r\n _createXMLRelationship: function(id, type, target) {\r\n return this._getXMLTag(\"Relationship\", [{\r\n name: \"Id\",\r\n value: \"rId\" + id\r\n }, {\r\n name: \"Type\",\r\n value: OPEN_XML_FORMAT_URL + \"/officeDocument/2006/relationships/\" + type\r\n }, {\r\n name: \"Target\",\r\n value: target\r\n }])\r\n },\r\n _getWorkbookContent: function() {\r\n return XML_TAG + this._getXMLTag(\"workbook\", [{\r\n name: \"xmlns:r\",\r\n value: OPEN_XML_FORMAT_URL + \"/officeDocument/2006/relationships\"\r\n }, {\r\n name: \"xmlns\",\r\n value: OPEN_XML_FORMAT_URL + \"/spreadsheetml/2006/main\"\r\n }], 'Sheet!$1:$1')\r\n },\r\n _getContentTypesContent: function() {\r\n return XML_TAG + ''\r\n },\r\n _generateStylesXML: function() {\r\n var folder = this._zip.folder(XL_FOLDER_NAME);\r\n var XML = \"\";\r\n XML += this._excelFile.generateNumberFormatsXml();\r\n XML += this._excelFile.generateFontsXml();\r\n XML += this._excelFile.generateFillsXml();\r\n XML += BASE_STYLE_XML2;\r\n XML += this._excelFile.generateCellFormatsXml();\r\n XML += this._getXMLTag(\"cellStyles\", [{\r\n name: \"count\",\r\n value: 1\r\n }], this._getXMLTag(\"cellStyle\", [{\r\n name: \"name\",\r\n value: \"Normal\"\r\n }, {\r\n name: \"xfId\",\r\n value: 0\r\n }, {\r\n name: \"builtinId\",\r\n value: 0\r\n }]));\r\n XML = XML_TAG + this._getXMLTag(\"styleSheet\", [{\r\n name: \"xmlns\",\r\n value: OPEN_XML_FORMAT_URL + \"/spreadsheetml/2006/main\"\r\n }], XML);\r\n folder.file(STYLE_FILE_NAME, XML);\r\n this._styleArray = []\r\n },\r\n _generateStringsXML: function() {\r\n var folder = this._zip.folder(XL_FOLDER_NAME);\r\n var stringIndex;\r\n var stringsLength = this._stringArray.length;\r\n var sharedStringXml = XML_TAG;\r\n for (stringIndex = 0; stringIndex < stringsLength; stringIndex++) {\r\n this._stringArray[stringIndex] = this._getXMLTag(\"si\", [], this._getXMLTag(\"t\", [], this._stringArray[stringIndex]))\r\n }\r\n sharedStringXml += this._getXMLTag(\"sst\", [{\r\n name: \"xmlns\",\r\n value: OPEN_XML_FORMAT_URL + \"/spreadsheetml/2006/main\"\r\n }, {\r\n name: \"count\",\r\n value: this._stringArray.length\r\n }, {\r\n name: \"uniqueCount\",\r\n value: this._stringArray.length\r\n }], this._stringArray.join(\"\"));\r\n folder.file(SHAREDSTRING_FILE_NAME, sharedStringXml);\r\n this._stringArray = []\r\n },\r\n _getPaneXML: function() {\r\n var attributes = [{\r\n name: \"activePane\",\r\n value: \"bottomLeft\"\r\n }, {\r\n name: \"state\",\r\n value: \"frozen\"\r\n }];\r\n var frozenArea = this._dataProvider.getFrozenArea();\r\n if (!(frozenArea.x || frozenArea.y)) {\r\n return \"\"\r\n }\r\n if (frozenArea.x) {\r\n attributes.push({\r\n name: \"xSplit\",\r\n value: frozenArea.x\r\n })\r\n }\r\n if (frozenArea.y) {\r\n attributes.push({\r\n name: \"ySplit\",\r\n value: frozenArea.y\r\n })\r\n }\r\n attributes.push({\r\n name: \"topLeftCell\",\r\n value: this._convertToExcelCellRefAndTrackMaxIndex(frozenArea.y, frozenArea.x)\r\n });\r\n return this._getXMLTag(\"pane\", attributes)\r\n },\r\n _getAutoFilterXML: function(maxCellIndex) {\r\n if (this._options.autoFilterEnabled) {\r\n return ''\r\n }\r\n return \"\"\r\n },\r\n _getIgnoredErrorsXML: function(maxCellIndex) {\r\n if (this._options.ignoreErrors) {\r\n return ''\r\n }\r\n return \"\"\r\n },\r\n _generateWorksheetXML: function() {\r\n var colIndex;\r\n var rowIndex;\r\n var cellData;\r\n var xmlCells;\r\n var xmlRows = [];\r\n var rowsLength = this._cellsArray.length;\r\n var cellsLength;\r\n var colsLength = this._colsArray.length;\r\n var rSpans = \"1:\" + colsLength;\r\n var headerRowCount = this._dataProvider.getHeaderRowCount ? this._dataProvider.getHeaderRowCount() : 1;\r\n var xmlResult = [WORKSHEET_HEADER_XML];\r\n xmlResult.push(this._needSheetPr ? GROUP_SHEET_PR_XML : SINGLE_SHEET_PR_XML);\r\n xmlResult.push('');\r\n xmlResult.push(\"');\r\n xmlResult.push(this._getPaneXML());\r\n xmlResult.push(\"\");\r\n xmlResult.push(' 0 ? this._dataProvider.getGroupLevel(0) : 0) + '\"');\r\n xmlResult.push(' x14ac:dyDescent=\"0.25\"/>');\r\n for (colIndex = 0; colIndex < colsLength; colIndex++) {\r\n this._colsArray[colIndex] = this._getXMLTag(\"col\", [{\r\n name: \"width\",\r\n value: this._colsArray[colIndex]\r\n }, {\r\n name: \"min\",\r\n value: Number(colIndex) + 1\r\n }, {\r\n name: \"max\",\r\n value: Number(colIndex) + 1\r\n }, {\r\n name: \"customWidth\",\r\n value: 1\r\n }])\r\n }\r\n xmlResult.push(this._getXMLTag(\"cols\", [], this._colsArray.join(\"\")) + \"\");\r\n for (rowIndex = 0; rowIndex < rowsLength; rowIndex++) {\r\n xmlCells = [];\r\n cellsLength = this._cellsArray[rowIndex].length;\r\n for (colIndex = 0; colIndex < cellsLength; colIndex++) {\r\n rowIndex = Number(rowIndex);\r\n cellData = this._cellsArray[rowIndex][colIndex];\r\n xmlCells.push(this._getXMLTag(\"c\", [{\r\n name: \"r\",\r\n value: this._convertToExcelCellRefAndTrackMaxIndex(rowIndex, colIndex)\r\n }, {\r\n name: \"s\",\r\n value: cellData.style\r\n }, {\r\n name: \"t\",\r\n value: cellData.type\r\n }], isDefined(cellData.value) ? this._getXMLTag(\"v\", [], cellData.value) : null))\r\n }\r\n xmlRows.push(this._getXMLTag(\"row\", [{\r\n name: \"r\",\r\n value: Number(rowIndex) + 1\r\n }, {\r\n name: \"spans\",\r\n value: rSpans\r\n }, {\r\n name: \"outlineLevel\",\r\n value: rowIndex >= headerRowCount ? this._dataProvider.getGroupLevel(rowIndex) : 0\r\n }, {\r\n name: \"x14ac:dyDescent\",\r\n value: \"0.25\"\r\n }], xmlCells.join(\"\")));\r\n this._cellsArray[rowIndex] = null;\r\n if (xmlRows.length > 1e4) {\r\n xmlResult.push(xmlRows.join(\"\"));\r\n xmlRows = []\r\n }\r\n }\r\n xmlResult.push(xmlRows.join(\"\"));\r\n xmlRows = [];\r\n var rightBottomCellRef = this._convertToExcelCellRef(this._maxRowIndex, this._maxColumnIndex);\r\n xmlResult.push(\"\" + this._getAutoFilterXML(rightBottomCellRef) + this._generateMergingXML() + this._getIgnoredErrorsXML(rightBottomCellRef) + \"\");\r\n this._zip.folder(XL_FOLDER_NAME).folder(WORKSHEETS_FOLDER).file(WORKSHEET_FILE_NAME, xmlResult.join(\"\"));\r\n this._colsArray = [];\r\n this._cellsArray = [];\r\n xmlResult = []\r\n },\r\n _generateMergingXML: function() {\r\n var k;\r\n var l;\r\n var cellIndex;\r\n var rowIndex;\r\n var rowsLength = isDefined(this._dataProvider.getHeaderRowCount) ? this._dataProvider.getHeaderRowCount() : this._dataProvider.getRowsCount();\r\n var columnsLength = this._dataProvider.getColumns().length;\r\n var usedArea = [];\r\n var mergeArray = [];\r\n var mergeIndex;\r\n var mergeXML = \"\";\r\n for (rowIndex = 0; rowIndex < rowsLength; rowIndex++) {\r\n for (cellIndex = 0; cellIndex !== columnsLength; cellIndex++) {\r\n if (!isDefined(usedArea[rowIndex]) || !isDefined(usedArea[rowIndex][cellIndex])) {\r\n var cellMerge = this._dataProvider.getCellMerging(rowIndex, cellIndex);\r\n if (cellMerge.colspan || cellMerge.rowspan) {\r\n mergeArray.push({\r\n start: this._convertToExcelCellRefAndTrackMaxIndex(rowIndex, cellIndex),\r\n end: this._convertToExcelCellRefAndTrackMaxIndex(rowIndex + (cellMerge.rowspan || 0), cellIndex + (cellMerge.colspan || 0))\r\n });\r\n for (k = rowIndex; k <= rowIndex + cellMerge.rowspan || 0; k++) {\r\n for (l = cellIndex; l <= cellIndex + cellMerge.colspan || 0; l++) {\r\n if (!isDefined(usedArea[k])) {\r\n usedArea[k] = []\r\n }\r\n usedArea[k][l] = true\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n var mergeArrayLength = mergeArray.length;\r\n for (mergeIndex = 0; mergeIndex < mergeArrayLength; mergeIndex++) {\r\n mergeXML += this._getXMLTag(\"mergeCell\", [{\r\n name: \"ref\",\r\n value: mergeArray[mergeIndex].start + \":\" + mergeArray[mergeIndex].end\r\n }])\r\n }\r\n return mergeXML.length ? this._getXMLTag(\"mergeCells\", [{\r\n name: \"count\",\r\n value: mergeArrayLength\r\n }], mergeXML) : \"\"\r\n },\r\n _generateCommonXML: function() {\r\n var relsFileContent = XML_TAG + this._createXMLRelationships(this._createXMLRelationship(1, \"officeDocument\", \"xl/\" + WORKBOOK_FILE_NAME));\r\n var folder = this._zip.folder(XL_FOLDER_NAME);\r\n var relsXML = XML_TAG;\r\n this._zip.folder(\"_\" + RELATIONSHIP_PART_NAME).file(\".\" + RELATIONSHIP_PART_NAME, relsFileContent);\r\n var xmlRelationships = this._createXMLRelationship(1, \"worksheet\", \"worksheets/\" + WORKSHEET_FILE_NAME) + this._createXMLRelationship(2, \"styles\", STYLE_FILE_NAME) + this._createXMLRelationship(3, \"sharedStrings\", SHAREDSTRING_FILE_NAME);\r\n relsXML += this._createXMLRelationships(xmlRelationships);\r\n folder.folder(\"_\" + RELATIONSHIP_PART_NAME).file(WORKBOOK_FILE_NAME + \".rels\", relsXML);\r\n folder.file(WORKBOOK_FILE_NAME, this._getWorkbookContent());\r\n this._zip.file(CONTENTTYPES_FILE_NAME, this._getContentTypesContent())\r\n },\r\n _generateContent: function() {\r\n this._prepareStyleData();\r\n this._prepareCellData();\r\n this._generateWorkXML();\r\n this._generateCommonXML()\r\n },\r\n _generateWorkXML: function() {\r\n this._generateStylesXML();\r\n this._generateStringsXML();\r\n this._generateWorksheetXML()\r\n },\r\n ctor: function(dataProvider, options) {\r\n this._rtlEnabled = options && !!options.rtlEnabled;\r\n this._options = options;\r\n this._maxRowIndex = 0;\r\n this._maxColumnIndex = 0;\r\n this._stringArray = [];\r\n this._stringHash = {};\r\n this._styleArray = [];\r\n this._colsArray = [];\r\n this._cellsArray = [];\r\n this._needSheetPr = false;\r\n this._dataProvider = dataProvider;\r\n this._excelFile = new ExcelFile;\r\n if (isDefined(ExcelCreator.JSZip)) {\r\n this._zip = new ExcelCreator.JSZip\r\n } else {\r\n this._zip = null\r\n }\r\n },\r\n _checkZipState: function() {\r\n if (!this._zip) {\r\n throw errors.Error(\"E1041\", \"JSZip\")\r\n }\r\n },\r\n ready: function() {\r\n return this._dataProvider.ready()\r\n },\r\n getData: function(isBlob) {\r\n var options = {\r\n type: isBlob ? \"blob\" : \"base64\",\r\n compression: \"DEFLATE\",\r\n mimeType: MIME_TYPES.EXCEL\r\n };\r\n var deferred = new Deferred;\r\n this._checkZipState();\r\n this._generateContent();\r\n if (this._zip.generateAsync) {\r\n this._zip.generateAsync(options).then(deferred.resolve)\r\n } else {\r\n deferred.resolve(this._zip.generate(options))\r\n }\r\n return deferred\r\n }\r\n});\r\nExcelCreator.JSZip = JSZip;\r\nexport function getData(data, options) {\r\n var excelCreator = new ExcelCreator(data, options);\r\n excelCreator._checkZipState();\r\n return excelCreator.ready().then(() => excelCreator.getData(isFunction(getWindow().Blob)))\r\n}\r\n","/**\r\n * DevExtreme (esm/exporter/image_creator.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport $ from \"../core/renderer\";\r\nimport Color from \"../color\";\r\nimport {\r\n isFunction,\r\n isPromise,\r\n isDefined\r\n} from \"../core/utils/type\";\r\nimport {\r\n getSvgElement,\r\n HIDDEN_FOR_EXPORT\r\n} from \"../core/utils/svg\";\r\nimport {\r\n each as _each,\r\n map as _map\r\n} from \"../core/utils/iterator\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport domAdapter from \"../core/dom_adapter\";\r\nimport {\r\n contains\r\n} from \"../core/utils/dom\";\r\nimport {\r\n getWindow\r\n} from \"../core/utils/window\";\r\nvar window = getWindow();\r\nimport {\r\n camelize\r\n} from \"../core/utils/inflector\";\r\nimport {\r\n Deferred,\r\n fromPromise\r\n} from \"../core/utils/deferred\";\r\nvar _math = Math;\r\nvar PI = _math.PI;\r\nvar _min = _math.min;\r\nvar _abs = _math.abs;\r\nvar _sqrt = _math.sqrt;\r\nvar _pow = _math.pow;\r\nvar _atan2 = _math.atan2;\r\nvar _cos = _math.cos;\r\nvar _sin = _math.sin;\r\nvar _number = Number;\r\nvar IMAGE_QUALITY = 1;\r\nvar TEXT_DECORATION_LINE_WIDTH_COEFF = .05;\r\nvar DEFAULT_FONT_SIZE = \"10px\";\r\nvar DEFAULT_FONT_FAMILY = \"sans-serif\";\r\nvar DEFAULT_TEXT_COLOR = \"#000\";\r\nvar parseAttributes;\r\n\r\nfunction getStringFromCanvas(canvas, mimeType) {\r\n var dataURL = canvas.toDataURL(mimeType, IMAGE_QUALITY);\r\n var imageData = window.atob(dataURL.substring((\"data:\" + mimeType + \";base64,\").length));\r\n return imageData\r\n}\r\n\r\nfunction arcTo(x1, y1, x2, y2, radius, largeArcFlag, clockwise, context) {\r\n var cBx = (x1 + x2) / 2;\r\n var cBy = (y1 + y2) / 2;\r\n var aB = _atan2(y1 - y2, x1 - x2);\r\n var k = largeArcFlag ? 1 : -1;\r\n aB += PI / 180 * 90 * (clockwise ? 1 : -1);\r\n var opSide = _sqrt(_pow(x2 - x1, 2) + _pow(y2 - y1, 2)) / 2;\r\n var adjSide = _sqrt(_abs(_pow(radius, 2) - _pow(opSide, 2)));\r\n var centerX = cBx + k * (adjSide * _cos(aB));\r\n var centerY = cBy + k * (adjSide * _sin(aB));\r\n var startAngle = _atan2(y1 - centerY, x1 - centerX);\r\n var endAngle = _atan2(y2 - centerY, x2 - centerX);\r\n context.arc(centerX, centerY, radius, startAngle, endAngle, !clockwise)\r\n}\r\n\r\nfunction getElementOptions(element, rootAppended) {\r\n var attr = parseAttributes(element.attributes || {});\r\n var options = extend({}, attr, {\r\n text: element.textContent.replace(/\\s+/g, \" \"),\r\n textAlign: \"middle\" === attr[\"text-anchor\"] ? \"center\" : attr[\"text-anchor\"]\r\n });\r\n var transform = attr.transform;\r\n var coords;\r\n if (transform) {\r\n coords = transform.match(/translate\\(-*\\d+([.]\\d+)*(,*\\s*-*\\d+([.]\\d+)*)*/);\r\n if (coords) {\r\n coords = coords[0].match(/-*\\d+([.]\\d+)*/g);\r\n options.translateX = _number(coords[0]);\r\n options.translateY = coords[1] ? _number(coords[1]) : 0\r\n }\r\n coords = transform.match(/rotate\\(-*\\d+([.]\\d+)*(,*\\s*-*\\d+([.]\\d+)*,*\\s*-*\\d+([.]\\d+)*)*/);\r\n if (coords) {\r\n coords = coords[0].match(/-*\\d+([.]\\d+)*/g);\r\n options.rotationAngle = _number(coords[0]);\r\n options.rotationX = coords[1] && _number(coords[1]);\r\n options.rotationY = coords[2] && _number(coords[2])\r\n }\r\n coords = transform.match(/scale\\(-*\\d+([.]\\d+)*(,*\\s*-*\\d+([.]\\d+)*)*/);\r\n if (coords) {\r\n coords = coords[0].match(/-*\\d+([.]\\d+)*/g);\r\n options.scaleX = _number(coords[0]);\r\n if (coords.length > 1) {\r\n options.scaleY = _number(coords[1])\r\n } else {\r\n options.scaleY = options.scaleX\r\n }\r\n }\r\n }\r\n parseStyles(element, options, rootAppended);\r\n return options\r\n}\r\n\r\nfunction drawRect(context, options) {\r\n var x = options.x;\r\n var y = options.y;\r\n var width = options.width;\r\n var height = options.height;\r\n var cornerRadius = options.rx;\r\n if (!cornerRadius) {\r\n context.rect(x, y, width, height)\r\n } else {\r\n cornerRadius = _min(cornerRadius, width / 2, height / 2);\r\n context.save();\r\n context.translate(x, y);\r\n context.moveTo(width / 2, 0);\r\n context.arcTo(width, 0, width, height, cornerRadius);\r\n context.arcTo(width, height, 0, height, cornerRadius);\r\n context.arcTo(0, height, 0, 0, cornerRadius);\r\n context.arcTo(0, 0, cornerRadius, 0, cornerRadius);\r\n context.lineTo(width / 2, 0);\r\n context.restore()\r\n }\r\n}\r\n\r\nfunction drawImage(context, options, shared) {\r\n var d = new Deferred;\r\n var image = new window.Image;\r\n image.onload = function() {\r\n context.save();\r\n context.globalAlpha = options.globalAlpha;\r\n transformElement(context, options);\r\n clipElement(context, options, shared);\r\n context.drawImage(image, options.x, options.y, options.width, options.height);\r\n context.restore();\r\n d.resolve()\r\n };\r\n image.onerror = function() {\r\n d.resolve()\r\n };\r\n image.setAttribute(\"crossOrigin\", \"anonymous\");\r\n image.src = options.href || options[\"xlink:href\"];\r\n return d\r\n}\r\n\r\nfunction drawPath(context, dAttr) {\r\n var dArray = dAttr.replace(/,/g, \" \").split(/([A-Z])/i).filter(item => \"\" !== item.trim());\r\n var i = 0;\r\n var params;\r\n var prevParams;\r\n var prevParamsLen;\r\n do {\r\n params = (dArray[i + 1] || \"\").trim().split(\" \");\r\n switch (dArray[i]) {\r\n case \"M\":\r\n context.moveTo(_number(params[0]), _number(params[1]));\r\n i += 2;\r\n break;\r\n case \"L\":\r\n for (var j = 0; j < params.length / 2; j++) {\r\n context.lineTo(_number(params[2 * j]), _number(params[2 * j + 1]))\r\n }\r\n i += 2;\r\n break;\r\n case \"C\":\r\n context.bezierCurveTo(_number(params[0]), _number(params[1]), _number(params[2]), _number(params[3]), _number(params[4]), _number(params[5]));\r\n i += 2;\r\n break;\r\n case \"a\":\r\n prevParams = dArray[i - 1].trim().split(\" \");\r\n prevParamsLen = prevParams.length - 1;\r\n arcTo(_number(prevParams[prevParamsLen - 1]), _number(prevParams[prevParamsLen]), _number(prevParams[prevParamsLen - 1]) + _number(params[5]), _number(prevParams[prevParamsLen]) + _number(params[6]), _number(params[0]), _number(params[3]), _number(params[4]), context);\r\n i += 2;\r\n break;\r\n case \"A\":\r\n prevParams = dArray[i - 1].trim().split(\" \");\r\n prevParamsLen = prevParams.length - 1;\r\n arcTo(_number(prevParams[prevParamsLen - 1]), _number(prevParams[prevParamsLen]), _number(params[5]), _number(params[6]), _number(params[0]), _number(params[3]), _number(params[4]), context);\r\n i += 2;\r\n break;\r\n case \"Z\":\r\n context.closePath();\r\n i += 1;\r\n break;\r\n default:\r\n i++\r\n }\r\n } while (i < dArray.length)\r\n}\r\n\r\nfunction parseStyles(element, options, rootAppended) {\r\n var style = element.style || {};\r\n var field;\r\n for (field in style) {\r\n if (\"\" !== style[field]) {\r\n options[camelize(field)] = style[field]\r\n }\r\n }\r\n if (rootAppended && domAdapter.isElementNode(element)) {\r\n style = window.getComputedStyle(element);\r\n [\"fill\", \"stroke\", \"stroke-width\", \"font-family\", \"font-size\", \"font-style\", \"font-weight\"].forEach((function(prop) {\r\n if (prop in style && \"\" !== style[prop]) {\r\n options[camelize(prop)] = style[prop]\r\n }\r\n }));\r\n [\"opacity\", \"fill-opacity\", \"stroke-opacity\"].forEach((function(prop) {\r\n if (prop in style && \"\" !== style[prop] && \"1\" !== style[prop]) {\r\n options[prop] = _number(style[prop])\r\n }\r\n }))\r\n }\r\n options.textDecoration = options.textDecoration || options.textDecorationLine;\r\n options.globalAlpha = isDefined(options.opacity) ? options.opacity : options.globalAlpha\r\n}\r\n\r\nfunction parseUrl(urlString) {\r\n var matches = urlString && urlString.match(/url\\(.*#(.*?)[\"']?\\)/i);\r\n return matches && matches[1]\r\n}\r\n\r\nfunction setFontStyle(context, options) {\r\n var fontParams = [];\r\n options.fontSize = options.fontSize || DEFAULT_FONT_SIZE;\r\n options.fontFamily = options.fontFamily || DEFAULT_FONT_FAMILY;\r\n options.fill = options.fill || DEFAULT_TEXT_COLOR;\r\n options.fontStyle && fontParams.push(options.fontStyle);\r\n options.fontWeight && fontParams.push(options.fontWeight);\r\n fontParams.push(options.fontSize);\r\n fontParams.push(options.fontFamily);\r\n context.font = fontParams.join(\" \");\r\n context.textAlign = options.textAlign;\r\n context.fillStyle = options.fill;\r\n context.globalAlpha = options.globalAlpha\r\n}\r\n\r\nfunction drawText(context, options, shared) {\r\n setFontStyle(context, options);\r\n applyFilter(context, options, shared);\r\n options.text && context.fillText(options.text, options.x || 0, options.y || 0);\r\n strokeElement(context, options, true);\r\n drawTextDecoration(context, options, shared)\r\n}\r\n\r\nfunction drawTextDecoration(context, options, shared) {\r\n if (!options.textDecoration || \"none\" === options.textDecoration) {\r\n return\r\n }\r\n var x = options.x;\r\n var textWidth = context.measureText(options.text).width;\r\n var textHeight = parseInt(options.fontSize, 10);\r\n var lineHeight = textHeight * TEXT_DECORATION_LINE_WIDTH_COEFF < 1 ? 1 : textHeight * TEXT_DECORATION_LINE_WIDTH_COEFF;\r\n var y = options.y;\r\n switch (options.textDecoration) {\r\n case \"line-through\":\r\n y -= textHeight / 3 + lineHeight / 2;\r\n break;\r\n case \"overline\":\r\n y -= textHeight - lineHeight;\r\n break;\r\n case \"underline\":\r\n y += lineHeight\r\n }\r\n context.rect(x, y, textWidth, lineHeight);\r\n fillElement(context, options, shared);\r\n strokeElement(context, options)\r\n}\r\n\r\nfunction aggregateOpacity(options) {\r\n options.strokeOpacity = void 0 !== options[\"stroke-opacity\"] ? options[\"stroke-opacity\"] : 1;\r\n options.fillOpacity = void 0 !== options[\"fill-opacity\"] ? options[\"fill-opacity\"] : 1;\r\n if (void 0 !== options.opacity) {\r\n options.strokeOpacity *= options.opacity;\r\n options.fillOpacity *= options.opacity\r\n }\r\n}\r\n\r\nfunction hasTspan(element) {\r\n var nodes = element.childNodes;\r\n for (var i = 0; i < nodes.length; i++) {\r\n if (\"tspan\" === nodes[i].tagName) {\r\n return true\r\n }\r\n }\r\n return false\r\n}\r\n\r\nfunction drawTextElement(childNodes, context, options, shared) {\r\n var lines = [];\r\n var line;\r\n var offset = 0;\r\n for (var i = 0; i < childNodes.length; i++) {\r\n var element = childNodes[i];\r\n if (void 0 === element.tagName) {\r\n drawElement(element, context, options, shared)\r\n } else if (\"tspan\" === element.tagName || \"text\" === element.tagName) {\r\n var elementOptions = getElementOptions(element, shared.rootAppended);\r\n var mergedOptions = extend({}, options, elementOptions);\r\n if (\"tspan\" === element.tagName && hasTspan(element)) {\r\n drawTextElement(element.childNodes, context, mergedOptions, shared);\r\n continue\r\n }\r\n mergedOptions.textAlign = \"start\";\r\n if (!line || void 0 !== elementOptions.x) {\r\n line = {\r\n elements: [],\r\n options: [],\r\n widths: [],\r\n offsets: []\r\n };\r\n lines.push(line)\r\n }\r\n if (void 0 !== elementOptions.y) {\r\n offset = 0\r\n }\r\n if (void 0 !== elementOptions.dy) {\r\n offset += parseFloat(elementOptions.dy)\r\n }\r\n line.elements.push(element);\r\n line.options.push(mergedOptions);\r\n line.offsets.push(offset);\r\n setFontStyle(context, mergedOptions);\r\n line.widths.push(context.measureText(mergedOptions.text).width)\r\n }\r\n }\r\n lines.forEach((function(line) {\r\n var commonWidth = line.widths.reduce((function(commonWidth, width) {\r\n return commonWidth + width\r\n }), 0);\r\n var xDiff = 0;\r\n var currentOffset = 0;\r\n if (\"center\" === options.textAlign) {\r\n xDiff = commonWidth / 2\r\n }\r\n if (\"end\" === options.textAlign) {\r\n xDiff = commonWidth\r\n }\r\n line.options.forEach((function(o, index) {\r\n var width = line.widths[index];\r\n o.x = o.x - xDiff + currentOffset;\r\n o.y += line.offsets[index];\r\n currentOffset += width\r\n }));\r\n line.elements.forEach((function(element, index) {\r\n drawTextElement(element.childNodes, context, line.options[index], shared)\r\n }))\r\n }))\r\n}\r\n\r\nfunction drawElement(element, context, parentOptions, shared) {\r\n var tagName = element.tagName;\r\n var isText = \"text\" === tagName || \"tspan\" === tagName || void 0 === tagName;\r\n var isImage = \"image\" === tagName;\r\n var options = extend({}, parentOptions, getElementOptions(element, shared.rootAppended));\r\n if (\"hidden\" === options.visibility || options[HIDDEN_FOR_EXPORT]) {\r\n return\r\n }\r\n context.save();\r\n !isImage && transformElement(context, options);\r\n clipElement(context, options, shared);\r\n aggregateOpacity(options);\r\n var promise;\r\n context.beginPath();\r\n switch (element.tagName) {\r\n case void 0:\r\n drawText(context, options, shared);\r\n break;\r\n case \"text\":\r\n case \"tspan\":\r\n drawTextElement(element.childNodes, context, options, shared);\r\n break;\r\n case \"image\":\r\n promise = drawImage(context, options, shared);\r\n break;\r\n case \"path\":\r\n drawPath(context, options.d);\r\n break;\r\n case \"rect\":\r\n drawRect(context, options);\r\n context.closePath();\r\n break;\r\n case \"circle\":\r\n context.arc(options.cx, options.cy, options.r, 0, 2 * PI, 1)\r\n }\r\n if (!isText) {\r\n applyFilter(context, options, shared);\r\n fillElement(context, options, shared);\r\n strokeElement(context, options)\r\n }\r\n applyGradient(context, options, shared, element);\r\n context.restore();\r\n return promise\r\n}\r\n\r\nfunction applyGradient(context, options, _ref, element) {\r\n var {\r\n gradients: gradients\r\n } = _ref;\r\n if (0 === gradients.length) {\r\n return\r\n }\r\n var id = parseUrl(options.fill);\r\n if (id && gradients[id]) {\r\n var box = element.getBBox();\r\n var gradient = context.createLinearGradient(box.x, 0, box.x + box.width, 0);\r\n gradients[id].forEach(opt => {\r\n var offset = parseInt(opt.offset.replace(/%/, \"\"));\r\n gradient.addColorStop(offset / 100, opt.stopColor)\r\n });\r\n context.globalAlpha = options.opacity;\r\n context.fillStyle = gradient;\r\n context.fill()\r\n }\r\n}\r\n\r\nfunction applyFilter(context, options, shared) {\r\n var filterOptions;\r\n var id = parseUrl(options.filter);\r\n if (id) {\r\n filterOptions = shared.filters[id];\r\n if (!filterOptions) {\r\n filterOptions = {\r\n offsetX: 0,\r\n offsetY: 0,\r\n blur: 0,\r\n color: \"#000\"\r\n }\r\n }\r\n context.shadowOffsetX = filterOptions.offsetX;\r\n context.shadowOffsetY = filterOptions.offsetY;\r\n context.shadowColor = filterOptions.color;\r\n context.shadowBlur = filterOptions.blur\r\n }\r\n}\r\n\r\nfunction transformElement(context, options) {\r\n context.translate(options.translateX || 0, options.translateY || 0);\r\n options.translateX = void 0;\r\n options.translateY = void 0;\r\n if (options.rotationAngle) {\r\n context.translate(options.rotationX || 0, options.rotationY || 0);\r\n context.rotate(options.rotationAngle * PI / 180);\r\n context.translate(-(options.rotationX || 0), -(options.rotationY || 0));\r\n options.rotationAngle = void 0;\r\n options.rotationX = void 0;\r\n options.rotationY = void 0\r\n }\r\n if (isFinite(options.scaleX)) {\r\n context.scale(options.scaleX, options.scaleY);\r\n options.scaleX = void 0;\r\n options.scaleY = void 0\r\n }\r\n}\r\n\r\nfunction clipElement(context, options, shared) {\r\n if (options[\"clip-path\"]) {\r\n drawElement(shared.clipPaths[parseUrl(options[\"clip-path\"])], context, {}, shared);\r\n context.clip();\r\n options[\"clip-path\"] = void 0\r\n }\r\n}\r\n\r\nfunction hex2rgba(hexColor, alpha) {\r\n var color = new Color(hexColor);\r\n return \"rgba(\" + color.r + \",\" + color.g + \",\" + color.b + \",\" + alpha + \")\"\r\n}\r\n\r\nfunction createGradient(element) {\r\n var options = [];\r\n _each(element.childNodes, (_, _ref2) => {\r\n var {\r\n attributes: attributes\r\n } = _ref2;\r\n options.push({\r\n offset: attributes.offset.value,\r\n stopColor: attributes[\"stop-color\"].value\r\n })\r\n });\r\n return options\r\n}\r\n\r\nfunction createFilter(element) {\r\n var color;\r\n var opacity;\r\n var filterOptions = {};\r\n _each(element.childNodes, (function(_, node) {\r\n var attr = node.attributes;\r\n if (!attr.result) {\r\n return\r\n }\r\n switch (attr.result.value) {\r\n case \"gaussianBlurResult\":\r\n filterOptions.blur = _number(attr.stdDeviation.value);\r\n break;\r\n case \"offsetResult\":\r\n filterOptions.offsetX = _number(attr.dx.value);\r\n filterOptions.offsetY = _number(attr.dy.value);\r\n break;\r\n case \"floodResult\":\r\n color = attr[\"flood-color\"] ? attr[\"flood-color\"].value : \"#000\";\r\n opacity = attr[\"flood-opacity\"] ? attr[\"flood-opacity\"].value : 1;\r\n filterOptions.color = hex2rgba(color, opacity)\r\n }\r\n }));\r\n return filterOptions\r\n}\r\n\r\nfunction asyncEach(array, callback) {\r\n var d = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : new Deferred;\r\n var i = 0;\r\n for (; i < array.length; i++) {\r\n var result = callback(array[i]);\r\n if (isPromise(result)) {\r\n result.then(() => {\r\n asyncEach(Array.prototype.slice.call(array, i + 1), callback, d)\r\n });\r\n break\r\n }\r\n }\r\n if (i === array.length) {\r\n d.resolve()\r\n }\r\n return d\r\n}\r\n\r\nfunction drawCanvasElements(elements, context, parentOptions, shared) {\r\n return asyncEach(elements, (function(element) {\r\n switch (element.tagName && element.tagName.toLowerCase()) {\r\n case \"g\":\r\n case \"svg\":\r\n var options = extend({}, parentOptions, getElementOptions(element, shared.rootAppended));\r\n context.save();\r\n transformElement(context, options);\r\n clipElement(context, options, shared);\r\n var onDone = () => {\r\n context.restore()\r\n };\r\n var d = drawCanvasElements(element.childNodes, context, options, shared);\r\n if (isPromise(d)) {\r\n d.then(onDone)\r\n } else {\r\n onDone()\r\n }\r\n return d;\r\n case \"defs\":\r\n return drawCanvasElements(element.childNodes, context, {}, shared);\r\n case \"clippath\":\r\n shared.clipPaths[element.attributes.id.textContent] = element.childNodes[0];\r\n break;\r\n case \"pattern\":\r\n shared.patterns[element.attributes.id.textContent] = element;\r\n break;\r\n case \"filter\":\r\n shared.filters[element.id] = createFilter(element);\r\n break;\r\n case \"lineargradient\":\r\n shared.gradients[element.attributes.id.textContent] = createGradient(element);\r\n break;\r\n default:\r\n return drawElement(element, context, parentOptions, shared)\r\n }\r\n }))\r\n}\r\n\r\nfunction setLineDash(context, options) {\r\n var matches = options[\"stroke-dasharray\"] && options[\"stroke-dasharray\"].match(/(\\d+)/g);\r\n if (matches && matches.length) {\r\n matches = _map(matches, (function(item) {\r\n return _number(item)\r\n }));\r\n context.setLineDash(matches)\r\n }\r\n}\r\n\r\nfunction strokeElement(context, options, isText) {\r\n var stroke = options.stroke;\r\n if (stroke && \"none\" !== stroke && 0 !== options[\"stroke-width\"]) {\r\n setLineDash(context, options);\r\n context.lineJoin = options[\"stroke-linejoin\"];\r\n context.lineWidth = options[\"stroke-width\"];\r\n context.globalAlpha = options.strokeOpacity;\r\n context.strokeStyle = stroke;\r\n isText ? context.strokeText(options.text, options.x, options.y) : context.stroke();\r\n context.globalAlpha = 1\r\n }\r\n}\r\n\r\nfunction getPattern(context, pattern, shared) {\r\n var options = getElementOptions(pattern, shared.rootAppended);\r\n var patternCanvas = imageCreator._createCanvas(options.width, options.height, 0);\r\n var patternContext = patternCanvas.getContext(\"2d\");\r\n drawCanvasElements(pattern.childNodes, patternContext, options, shared);\r\n return context.createPattern(patternCanvas, \"repeat\")\r\n}\r\n\r\nfunction fillElement(context, options, shared) {\r\n var fill = options.fill;\r\n if (fill && \"none\" !== fill) {\r\n if (-1 === fill.search(/url/)) {\r\n context.fillStyle = fill\r\n } else {\r\n var pattern = shared.patterns[parseUrl(fill)];\r\n if (!pattern) {\r\n return\r\n }\r\n context.fillStyle = getPattern(context, pattern, shared)\r\n }\r\n context.globalAlpha = options.fillOpacity;\r\n context.fill();\r\n context.globalAlpha = 1\r\n }\r\n}\r\nparseAttributes = function(attributes) {\r\n var newAttributes = {};\r\n var attr;\r\n _each(attributes, (function(index, item) {\r\n attr = item.textContent;\r\n if (isFinite(attr)) {\r\n attr = _number(attr)\r\n }\r\n newAttributes[item.name.toLowerCase()] = attr\r\n }));\r\n return newAttributes\r\n};\r\n\r\nfunction drawBackground(context, width, height, backgroundColor, margin) {\r\n context.fillStyle = backgroundColor || \"#ffffff\";\r\n context.fillRect(-margin, -margin, width + 2 * margin, height + 2 * margin)\r\n}\r\n\r\nfunction createInvisibleDiv() {\r\n var invisibleDiv = domAdapter.createElement(\"div\");\r\n invisibleDiv.style.left = \"-9999px\";\r\n invisibleDiv.style.position = \"absolute\";\r\n return invisibleDiv\r\n}\r\n\r\nfunction convertSvgToCanvas(svg, canvas, rootAppended) {\r\n return drawCanvasElements(svg.childNodes, canvas.getContext(\"2d\"), {}, {\r\n clipPaths: {},\r\n patterns: {},\r\n filters: {},\r\n gradients: {},\r\n rootAppended: rootAppended\r\n })\r\n}\r\n\r\nfunction getCanvasFromSvg(markup, _ref3) {\r\n var {\r\n width: width,\r\n height: height,\r\n backgroundColor: backgroundColor,\r\n margin: margin,\r\n svgToCanvas: svgToCanvas = convertSvgToCanvas\r\n } = _ref3;\r\n var scaledScreenInfo = calcScaledInfo(width, height);\r\n var canvas = imageCreator._createCanvas(scaledScreenInfo.width, scaledScreenInfo.height, margin);\r\n var context = canvas.getContext(\"2d\");\r\n context.setTransform(scaledScreenInfo.pixelRatio, 0, 0, scaledScreenInfo.pixelRatio, 0, 0);\r\n var svgElem = getSvgElement(markup);\r\n var invisibleDiv;\r\n var markupIsDomElement = domAdapter.isElementNode(markup);\r\n context.translate(margin, margin);\r\n domAdapter.getBody().appendChild(canvas);\r\n if (!markupIsDomElement) {\r\n invisibleDiv = createInvisibleDiv();\r\n invisibleDiv.appendChild(svgElem);\r\n domAdapter.getBody().appendChild(invisibleDiv)\r\n }\r\n if (svgElem.attributes.direction) {\r\n canvas.dir = svgElem.attributes.direction.textContent\r\n }\r\n drawBackground(context, width, height, backgroundColor, margin);\r\n return fromPromise(svgToCanvas(svgElem, canvas, markupIsDomElement && contains(domAdapter.getBody(), markup))).then(() => canvas).always(() => {\r\n invisibleDiv && domAdapter.getBody().removeChild(invisibleDiv);\r\n domAdapter.getBody().removeChild(canvas)\r\n })\r\n}\r\nexport var imageCreator = {\r\n getImageData: function(markup, options) {\r\n var mimeType = \"image/\" + options.format;\r\n if (isFunction(options.__parseAttributesFn)) {\r\n parseAttributes = options.__parseAttributesFn\r\n }\r\n return getCanvasFromSvg(markup, options).then(canvas => getStringFromCanvas(canvas, mimeType))\r\n },\r\n getData: function(markup, options) {\r\n var that = this;\r\n return imageCreator.getImageData(markup, options).then(binaryData => {\r\n var mimeType = \"image/\" + options.format;\r\n var data = isFunction(window.Blob) && !options.forceProxy ? that._getBlob(binaryData, mimeType) : that._getBase64(binaryData);\r\n return data\r\n })\r\n },\r\n _getBlob: function(binaryData, mimeType) {\r\n var i;\r\n var dataArray = new Uint8Array(binaryData.length);\r\n for (i = 0; i < binaryData.length; i++) {\r\n dataArray[i] = binaryData.charCodeAt(i)\r\n }\r\n return new window.Blob([dataArray.buffer], {\r\n type: mimeType\r\n })\r\n },\r\n _getBase64: function(binaryData) {\r\n return window.btoa(binaryData)\r\n },\r\n _createCanvas(width, height, margin) {\r\n var canvas = $(\"\")[0];\r\n canvas.width = width + 2 * margin;\r\n canvas.height = height + 2 * margin;\r\n canvas.hidden = true;\r\n return canvas\r\n }\r\n};\r\nexport function getData(data, options) {\r\n return imageCreator.getData(data, options)\r\n}\r\nexport function testFormats(formats) {\r\n var canvas = imageCreator._createCanvas(100, 100, 0);\r\n return formats.reduce((function(r, f) {\r\n var mimeType = (\"image/\" + f).toLowerCase();\r\n if (-1 !== canvas.toDataURL(mimeType).indexOf(mimeType)) {\r\n r.supported.push(f)\r\n } else {\r\n r.unsupported.push(f)\r\n }\r\n return r\r\n }), {\r\n supported: [],\r\n unsupported: []\r\n })\r\n}\r\nexport function calcScaledInfo(width, height) {\r\n var pixelRatio = window.devicePixelRatio || 1;\r\n return {\r\n pixelRatio: pixelRatio,\r\n width: width * pixelRatio,\r\n height: height * pixelRatio\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/exporter/svg_creator.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport $ from \"../core/renderer\";\r\nimport ajax from \"../core/utils/ajax\";\r\nimport {\r\n getWindow\r\n} from \"../core/utils/window\";\r\nvar window = getWindow();\r\nimport {\r\n isFunction\r\n} from \"../core/utils/type\";\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport {\r\n getSvgElement,\r\n getSvgMarkup,\r\n HIDDEN_FOR_EXPORT\r\n} from \"../core/utils/svg\";\r\nimport {\r\n when,\r\n Deferred\r\n} from \"../core/utils/deferred\";\r\nexport var svgCreator = {\r\n _markup: \"\",\r\n _imageArray: {},\r\n _imageDeferreds: [],\r\n _getBinaryFile: function(src, callback) {\r\n ajax.sendRequest({\r\n url: src,\r\n method: \"GET\",\r\n responseType: \"arraybuffer\"\r\n }).done(callback).fail((function() {\r\n callback(false)\r\n }))\r\n },\r\n _loadImages: function() {\r\n var that = this;\r\n each(that._imageArray, (function(src) {\r\n var deferred = new Deferred;\r\n that._imageDeferreds.push(deferred);\r\n that._getBinaryFile(src, (function(response) {\r\n if (!response) {\r\n delete that._imageArray[src];\r\n deferred.resolve();\r\n return\r\n }\r\n var i;\r\n var binary = \"\";\r\n var bytes = new Uint8Array(response);\r\n var length = bytes.byteLength;\r\n for (i = 0; i < length; i++) {\r\n binary += String.fromCharCode(bytes[i])\r\n }\r\n that._imageArray[src] = \"data:image/png;base64,\" + window.btoa(binary);\r\n deferred.resolve()\r\n }))\r\n }))\r\n },\r\n _parseImages: function(element) {\r\n var href;\r\n var that = this;\r\n if (\"image\" === element.tagName) {\r\n href = $(element).attr(\"href\") || $(element).attr(\"xlink:href\");\r\n if (!that._imageArray[href]) {\r\n that._imageArray[href] = \"\"\r\n }\r\n }\r\n each(element.childNodes, (function(_, element) {\r\n that._parseImages(element)\r\n }))\r\n },\r\n _prepareImages: function(svgElem) {\r\n this._parseImages(svgElem);\r\n this._loadImages();\r\n return when.apply($, this._imageDeferreds)\r\n },\r\n getData: function(data, options) {\r\n var markup;\r\n var that = this;\r\n var svgElem = getSvgElement(data);\r\n var $svgObject = $(svgElem);\r\n $svgObject.find(\"[\".concat(HIDDEN_FOR_EXPORT, \"]\")).remove();\r\n markup = '' + getSvgMarkup($svgObject.get(0), options.backgroundColor);\r\n return that._prepareImages(svgElem).then(() => {\r\n each(that._imageArray, (function(href, dataURI) {\r\n var regexpString = \"href=['|\\\"]\".concat(href, \"['|\\\"]\");\r\n markup = markup.replace(new RegExp(regexpString, \"gi\"), 'href=\"'.concat(dataURI, '\"'))\r\n }));\r\n return isFunction(window.Blob) ? that._getBlob(markup) : that._getBase64(markup)\r\n })\r\n },\r\n _getBlob: function(markup) {\r\n return new window.Blob([markup], {\r\n type: \"image/svg+xml\"\r\n })\r\n },\r\n _getBase64: function(markup) {\r\n return window.btoa(markup)\r\n }\r\n};\r\nexport function getData(data, options) {\r\n return svgCreator.getData(data, options)\r\n}\r\n","/**\r\n * DevExtreme (esm/exporter/pdf_creator.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n version\r\n} from \"../core/version\";\r\nimport {\r\n getWindow\r\n} from \"../core/utils/window\";\r\nvar window = getWindow();\r\nimport {\r\n imageCreator,\r\n calcScaledInfo\r\n} from \"./image_creator\";\r\nimport {\r\n isFunction\r\n} from \"../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nvar mainPageTemplate = \"%PDF-1.3\\r\\n2 0 obj\\r\\n<>>>\\r\\nendobj\\r\\n4 0 obj\\r\\n<>\\r\\nendobj\\r\\n7 0 obj\\r\\n<>\\r\\nendobj\\r\\n1 0 obj\\r\\n<>\\r\\nendobj\\r\\n\";\r\nvar contentTemplate = \"3 0 obj\\r\\n<>stream\\r\\n0.20 w\\n0 G\\nq _width_ 0 0 _height_ 0.00 0.00 cm /I0 Do Q\\r\\nendstream\\r\\nendobj\\r\\n\";\r\nvar infoTemplate = \"6 0 obj\\r\\n<>\\r\\nendobj\\r\\n\";\r\nvar imageStartTemplate = \"5 0 obj\\r\\n<>stream\\r\\n\";\r\nvar imageEndTemplate = \"\\r\\nendstream\\r\\nendobj\\r\\n\";\r\nvar trailerTemplate = \"trailer\\r\\n<<\\r\\n/Size 8\\r\\n/Root 7 0 R\\r\\n/Info 6 0 R\\r\\n>>\\r\\nstartxref\\r\\n_length_\\r\\n%%EOF\";\r\nvar xrefTemplate = \"xref\\r\\n0 8\\r\\n0000000000 65535 f\\r\\n0000000241 00000 n\\r\\n0000000010 00000 n\\r\\n_main_ 00000 n\\r\\n0000000089 00000 n\\r\\n_image_ 00000 n\\r\\n_info_ 00000 n\\r\\n0000000143 00000 n\\r\\n\";\r\nvar pad = function pad(str, len) {\r\n return str.length < len ? pad(\"0\" + str, len) : str\r\n};\r\nvar composePdfString = function(imageString, options, curDate) {\r\n var margin = 2 * (options.margin || 0);\r\n var {\r\n width: width,\r\n height: height\r\n } = calcScaledInfo(options.width, options.height);\r\n width += margin;\r\n height += margin;\r\n var widthPt = (.75 * width).toFixed(2);\r\n var heightPt = (.75 * height).toFixed(2);\r\n var mainPage = mainPageTemplate.replace(\"_width_\", widthPt).replace(\"_height_\", heightPt);\r\n var content = contentTemplate.replace(\"_width_\", widthPt).replace(\"_height_\", heightPt);\r\n var info = infoTemplate.replace(\"_date_\", curDate).replace(\"_version_\", version);\r\n var image = imageStartTemplate.replace(\"_width_\", width).replace(\"_height_\", height).replace(\"_length_\", imageString.length) + imageString + imageEndTemplate;\r\n var xref = getXref(mainPage.length, content.length, info.length);\r\n var mainContent = mainPage + content + info + image;\r\n var trailer = trailerTemplate.replace(\"_length_\", mainContent.length);\r\n return mainContent + xref + trailer\r\n};\r\n\r\nfunction getXref(mainPageLength, contentLength, infoLength) {\r\n return xrefTemplate.replace(\"_main_\", pad(mainPageLength + \"\", 10)).replace(\"_info_\", pad(mainPageLength + contentLength + \"\", 10)).replace(\"_image_\", pad(mainPageLength + contentLength + infoLength + \"\", 10))\r\n}\r\nvar getCurDate = function() {\r\n return new Date\r\n};\r\nvar getBlob = function(binaryData) {\r\n var i = 0;\r\n var dataArray = new Uint8Array(binaryData.length);\r\n for (; i < binaryData.length; i++) {\r\n dataArray[i] = binaryData.charCodeAt(i)\r\n }\r\n return new window.Blob([dataArray.buffer], {\r\n type: \"application/pdf\"\r\n })\r\n};\r\nvar getBase64 = function(binaryData) {\r\n return window.btoa(binaryData)\r\n};\r\nexport function getData(data, options) {\r\n return imageCreator.getImageData(data, extend({}, options, {\r\n format: \"JPEG\"\r\n })).then(imageString => {\r\n var binaryData = composePdfString(imageString, options, getCurDate());\r\n var pdfData = isFunction(window.Blob) ? getBlob(binaryData) : getBase64(binaryData);\r\n return pdfData\r\n })\r\n}\r\n","/**\r\n * DevExtreme (esm/exporter.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n fileSaver\r\n} from \"./exporter/file_saver\";\r\nimport {\r\n ExcelCreator,\r\n getData as getExcelData\r\n} from \"./exporter/excel_creator\";\r\nimport {\r\n imageCreator,\r\n testFormats,\r\n getData as getImageData\r\n} from \"./exporter/image_creator\";\r\nimport {\r\n svgCreator,\r\n getData as getSvgData\r\n} from \"./exporter/svg_creator\";\r\nimport {\r\n isFunction as _isFunction\r\n} from \"./core/utils/type\";\r\nimport {\r\n Deferred\r\n} from \"./core/utils/deferred\";\r\nimport formatConverter from \"./exporter/excel_format_converter\";\r\nimport {\r\n getData\r\n} from \"./exporter/pdf_creator\";\r\n\r\nfunction _export(data, options, getData) {\r\n if (!data) {\r\n return (new Deferred).resolve()\r\n }\r\n var exportingAction = options.exportingAction;\r\n var exportedAction = options.exportedAction;\r\n var fileSavingAction = options.fileSavingAction;\r\n var eventArgs = {\r\n fileName: options.fileName,\r\n format: options.format,\r\n cancel: false\r\n };\r\n _isFunction(exportingAction) && exportingAction(eventArgs);\r\n if (!eventArgs.cancel) {\r\n return getData(data, options).then(blob => {\r\n _isFunction(exportedAction) && exportedAction();\r\n if (_isFunction(fileSavingAction)) {\r\n eventArgs.data = blob;\r\n fileSavingAction(eventArgs)\r\n }\r\n if (!eventArgs.cancel) {\r\n fileSaver.saveAs(eventArgs.fileName, options.format, blob, options.proxyUrl, options.forceProxy)\r\n }\r\n })\r\n }\r\n return (new Deferred).resolve()\r\n}\r\nexport {\r\n _export as\r\n export, fileSaver\r\n};\r\nexport var excel = {\r\n creator: ExcelCreator,\r\n getData: getExcelData,\r\n formatConverter: formatConverter\r\n};\r\nexport var image = {\r\n creator: imageCreator,\r\n getData: getImageData,\r\n testFormats: testFormats\r\n};\r\nexport var pdf = {\r\n getData: getData\r\n};\r\nexport var svg = {\r\n creator: svgCreator,\r\n getData: getSvgData\r\n};\r\n","module.exports = __webpack_public_path__ + \"img/ideal.bd543890.png\";","/*!\n * devextreme-vue\n * Version: 21.2.5\n * Build date: Mon Jan 17 2022\n *\n * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED\n *\n * This software may be modified and distributed under the terms\n * of the MIT license. See the LICENSE file in the root of the project for details.\n *\n * https://github.com/DevExpress/devextreme-vue\n */\n\n\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DxOptions = exports.DxButton = exports.DxTextBox = void 0;\nvar text_box_1 = __importDefault(require(\"devextreme/ui/text_box\"));\nvar index_1 = require(\"./core/index\");\nvar index_2 = require(\"./core/index\");\nvar DxTextBox = index_1.createComponent({\n props: {\n accessKey: String,\n activeStateEnabled: Boolean,\n buttons: Array,\n disabled: Boolean,\n elementAttr: Object,\n focusStateEnabled: Boolean,\n height: [Function, Number, String],\n hint: String,\n hoverStateEnabled: Boolean,\n inputAttr: {},\n isValid: Boolean,\n label: String,\n labelMode: String,\n mask: String,\n maskChar: String,\n maskInvalidMessage: String,\n maskRules: {},\n maxLength: [Number, String],\n mode: String,\n name: String,\n onChange: Function,\n onContentReady: Function,\n onCopy: Function,\n onCut: Function,\n onDisposing: Function,\n onEnterKey: Function,\n onFocusIn: Function,\n onFocusOut: Function,\n onInitialized: Function,\n onInput: Function,\n onKeyDown: Function,\n onKeyUp: Function,\n onOptionChanged: Function,\n onPaste: Function,\n onValueChanged: Function,\n placeholder: String,\n readOnly: Boolean,\n rtlEnabled: Boolean,\n showClearButton: Boolean,\n showMaskMode: String,\n spellcheck: Boolean,\n stylingMode: String,\n tabIndex: Number,\n text: String,\n useMaskedValue: Boolean,\n validationError: {},\n validationErrors: Array,\n validationMessageMode: String,\n validationStatus: String,\n value: String,\n valueChangeEvent: String,\n visible: Boolean,\n width: [Function, Number, String]\n },\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:accessKey\": null,\n \"update:activeStateEnabled\": null,\n \"update:buttons\": null,\n \"update:disabled\": null,\n \"update:elementAttr\": null,\n \"update:focusStateEnabled\": null,\n \"update:height\": null,\n \"update:hint\": null,\n \"update:hoverStateEnabled\": null,\n \"update:inputAttr\": null,\n \"update:isValid\": null,\n \"update:label\": null,\n \"update:labelMode\": null,\n \"update:mask\": null,\n \"update:maskChar\": null,\n \"update:maskInvalidMessage\": null,\n \"update:maskRules\": null,\n \"update:maxLength\": null,\n \"update:mode\": null,\n \"update:name\": null,\n \"update:onChange\": null,\n \"update:onContentReady\": null,\n \"update:onCopy\": null,\n \"update:onCut\": null,\n \"update:onDisposing\": null,\n \"update:onEnterKey\": null,\n \"update:onFocusIn\": null,\n \"update:onFocusOut\": null,\n \"update:onInitialized\": null,\n \"update:onInput\": null,\n \"update:onKeyDown\": null,\n \"update:onKeyUp\": null,\n \"update:onOptionChanged\": null,\n \"update:onPaste\": null,\n \"update:onValueChanged\": null,\n \"update:placeholder\": null,\n \"update:readOnly\": null,\n \"update:rtlEnabled\": null,\n \"update:showClearButton\": null,\n \"update:showMaskMode\": null,\n \"update:spellcheck\": null,\n \"update:stylingMode\": null,\n \"update:tabIndex\": null,\n \"update:text\": null,\n \"update:useMaskedValue\": null,\n \"update:validationError\": null,\n \"update:validationErrors\": null,\n \"update:validationMessageMode\": null,\n \"update:validationStatus\": null,\n \"update:value\": null,\n \"update:valueChangeEvent\": null,\n \"update:visible\": null,\n \"update:width\": null,\n },\n model: { prop: \"value\", event: \"update:value\" },\n computed: {\n instance: function () {\n return this.$_instance;\n }\n },\n beforeCreate: function () {\n this.$_WidgetClass = text_box_1.default;\n this.$_hasAsyncTemplate = true;\n this.$_expectedChildren = {\n button: { isCollectionItem: true, optionName: \"buttons\" }\n };\n }\n});\nexports.DxTextBox = DxTextBox;\nvar DxButton = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:location\": null,\n \"update:name\": null,\n \"update:options\": null,\n },\n props: {\n location: String,\n name: String,\n options: Object\n }\n});\nexports.DxButton = DxButton;\nDxButton.$_optionName = \"buttons\";\nDxButton.$_isCollectionItem = true;\nDxButton.$_expectedChildren = {\n options: { isCollectionItem: false, optionName: \"options\" }\n};\nvar DxOptions = index_2.createConfigurationComponent({\n emits: {\n \"update:isActive\": null,\n \"update:hoveredElement\": null,\n \"update:accessKey\": null,\n \"update:activeStateEnabled\": null,\n \"update:bindingOptions\": null,\n \"update:disabled\": null,\n \"update:elementAttr\": null,\n \"update:focusStateEnabled\": null,\n \"update:height\": null,\n \"update:hint\": null,\n \"update:hoverStateEnabled\": null,\n \"update:icon\": null,\n \"update:onClick\": null,\n \"update:onContentReady\": null,\n \"update:onDisposing\": null,\n \"update:onFocusIn\": null,\n \"update:onFocusOut\": null,\n \"update:onInitialized\": null,\n \"update:onOptionChanged\": null,\n \"update:rtlEnabled\": null,\n \"update:stylingMode\": null,\n \"update:tabIndex\": null,\n \"update:template\": null,\n \"update:text\": null,\n \"update:type\": null,\n \"update:useSubmitBehavior\": null,\n \"update:validationGroup\": null,\n \"update:visible\": null,\n \"update:width\": null,\n },\n props: {\n accessKey: String,\n activeStateEnabled: Boolean,\n bindingOptions: Object,\n disabled: Boolean,\n elementAttr: Object,\n focusStateEnabled: Boolean,\n height: [Function, Number, String],\n hint: String,\n hoverStateEnabled: Boolean,\n icon: String,\n onClick: Function,\n onContentReady: Function,\n onDisposing: Function,\n onFocusIn: Function,\n onFocusOut: Function,\n onInitialized: Function,\n onOptionChanged: Function,\n rtlEnabled: Boolean,\n stylingMode: String,\n tabIndex: Number,\n template: {},\n text: String,\n type: String,\n useSubmitBehavior: Boolean,\n validationGroup: String,\n visible: Boolean,\n width: [Function, Number, String]\n }\n});\nexports.DxOptions = DxOptions;\nDxOptions.$_optionName = \"options\";\nexports.default = DxTextBox;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"page-campaign-buy-subscription\"}},[(_vm.entityNotFound)?_c('vs-alert',{attrs:{\"color\":\"danger\",\"title\":\"Campaign Not Found\"}},[_c('span',[_vm._v(\"\\n Campaign record with id\\n \"),_c('strong',[_vm._v(_vm._s(_vm.$route.params.campaignId))]),_vm._v(\" not found.\\n \")]),_c('span',[_c('span',[_vm._v(\"Check\")]),_c('router-link',{staticClass:\"text-inherit underline\",attrs:{\"to\":{ name: 'campaign-list' }}},[_vm._v(_vm._s(this.$t(\"Campaign.List\")))])],1)]):_vm._e(),(_vm.strategyNotFound)?_c('vs-alert',{attrs:{\"color\":\"danger\",\"title\":\"Strategy Not Found\"}},[_c('span',[_vm._v(\"\\n Strategy record with id\\n \"),_c('strong',[_vm._v(_vm._s(this.idStrategy))]),_vm._v(\" not found.\\n \")])]):_vm._e(),(_vm.campaign && _vm.strategy)?_c('div',{attrs:{\"id\":\"campaign-data\"}},[_c('vx-card',{staticClass:\"mb-base\",attrs:{\"title\":this.$t('Campaign.Title')}},[_c('div',{staticClass:\"vx-row mb-6\"},[_c('div',{staticClass:\"vx-col sm:w-1/6 w-full\"},[_c('span',[_vm._v(_vm._s(this.$t(\"Campaign.Name\")))])]),_c('div',{staticClass:\"vx-col sm:w-5/6 w-full\"},[_vm._v(\"\\n \"+_vm._s(_vm.campaign.name)+\"\\n \")])]),_c('div',{staticClass:\"vx-row mb-6\"},[_c('div',{staticClass:\"vx-col sm:w-1/6 w-full\"},[_c('span',[_vm._v(_vm._s(this.$t((\"Strategy.Title\" + (_vm.campaign.idStrategyType)))))])]),_c('div',{staticClass:\"vx-col sm:w-5/6 w-full\"},[_c('span',[_vm._v(_vm._s(_vm.strategy.name)+\" \"+_vm._s(_vm.strategy.address2)+\"}\")])])]),_c('hr'),_c('h4',{staticClass:\"mt-8\"},[_vm._v(_vm._s(_vm.$t(\"BuySubscription.SelectDateRange\")))]),_c('div',{staticClass:\"vx-row\"},[_c('div',{staticClass:\"vx-col sm:w-5/6 w-full\"},[_c('DxRangeSelector',{ref:_vm.dateRangeRefKey,attrs:{\"id\":\"range-selector\",\"value\":_vm.range},on:{\"update:value\":function($event){_vm.range=$event}}},[_c('DxMargin',{attrs:{\"top\":20}}),_c('DxScale',{attrs:{\"start-value\":_vm.startValue,\"end-value\":_vm.endValue}},[_c('DxMinorTick',{attrs:{\"visible\":false}}),_c('DxMinorTickInterval',{attrs:{\"days\":1}}),_c('DxTickInterval',{attrs:{\"weeks\":1}}),_c('DxMinRange',{attrs:{\"weeks\":1}}),_c('DxMaxRange',{attrs:{\"days\":200}})],1),_c('DxSliderMarker',{attrs:{\"format\":\"monthAndDay\"}})],1)],1),_c('div',{staticClass:\"vx-col sm:w-1/6 w-full mt-10\"},[_c('span',{staticStyle:{\"float\":\"left\"}},[_c('vs-button',{attrs:{\"radius\":\"\",\"icon\":\"icon-minus\",\"icon-pack\":\"feather\"},on:{\"click\":function($event){return _vm.addDay(-1)}}})],1),_c('span',{staticClass:\"days\"},[_vm._v(_vm._s((_vm.runTime + \" \" + (_vm.$t(\"BuySubscription.Days\")))))]),_c('span',{staticStyle:{\"float\":\"left\"}},[_c('vs-button',{attrs:{\"radius\":\"\",\"icon\":\"icon-plus\",\"icon-pack\":\"feather\"},on:{\"click\":function($event){return _vm.addDay(1)}}})],1)])]),_c('h4',{staticClass:\"mt-8\"},[_vm._v(_vm._s(_vm.$t(\"BuySubscription.DailyBudget\")))]),_c('h1',{staticClass:\"text-center daily-budget\"},[_vm._v(_vm._s(_vm._f(\"currency\")(_vm.dailyBudget)))]),_c('DxSlider',{attrs:{\"min\":1,\"max\":200,\"value\":_vm.dailyBudget},on:{\"update:value\":function($event){_vm.dailyBudget=$event}}}),(_vm.dailyBudget < 3)?_c('vs-alert',{attrs:{\"active\":\"true\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"BuySubscription.MinBudgetWarning\"))+\"\\n \")]):_vm._e()],1),_c('vx-card',{attrs:{\"title\":_vm.$t('BuySubscription.OrderAndPay')}},[_c('div',{staticClass:\"vx-row order-and-pay\"},[_c('div',{staticClass:\"vx-col w-1/3\"},[_c('vs-button',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.enterVoucherLinkVisible),expression:\"enterVoucherLinkVisible\"}],staticClass:\"ml-auto mt-2\",staticStyle:{\"width\":\"100%\"},attrs:{\"icon-pack\":\"feather\",\"icon\":\"icon-arrow-up\"},on:{\"click\":_vm.exchangeVoucher}},[_vm._v(_vm._s(_vm.$t(\"BuySubscription.ExchangeVoucher\")))]),_c('vs-button',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.voucherEntered),expression:\"voucherEntered\"}],staticClass:\"ml-auto mt-2\",staticStyle:{\"width\":\"100%\"},attrs:{\"icon-pack\":\"feather\",\"icon\":\"icon-delete\"},on:{\"click\":_vm.removeVoucher}},[_vm._v(_vm._s(_vm.removeVoucherCaption))]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.enterVoucherVisible),expression:\"enterVoucherVisible\"}]},[_c('div',{staticClass:\"dx-fieldset\"},[_c('div',{staticClass:\"dx-field\"},[_c('div',{staticClass:\"dx-field-label\"},[_vm._v(\"\\n \"+_vm._s(this.$t(\"BuySubscription.VoucherCode\"))+\"\\n \")]),_c('div',{staticClass:\"dx-field-value\"},[_c('DxTextBox',{attrs:{\"value\":_vm.voucherCode},on:{\"update:value\":function($event){_vm.voucherCode=$event}}})],1)]),_c('div',{staticClass:\"dx-field\"},[_c('vs-button',{staticClass:\"ml-auto mt-2\",staticStyle:{\"width\":\"100%\"},attrs:{\"icon-pack\":\"feather\",\"icon\":\"icon-plus\"},on:{\"click\":_vm.applyVoucher}},[_vm._v(_vm._s(_vm.$t(\"BuySubscription.ApplyVoucher\")))])],1)])])],1),_c('div',{staticClass:\"vx-col w-1/3\"}),_c('div',{staticClass:\"vx-col w-1/3\"},[_c('div',{staticClass:\"dx-fieldset\"},[_c('div',{staticClass:\"dx-field\"},[_c('div',{staticClass:\"dx-field-label\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"BuySubscription.TotalBudget\"))+\"\\n \")]),_c('div',{staticClass:\"dx-field-value text-right\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"currency\")(_vm.totalBudget))+\"\\n \")])]),_c('div',{staticClass:\"budget-explanation\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"BuySubscription.TotalBudgetExplanation\", {\n days: _vm.runTime,\n euro: this.$options.filters.currency(this.dailyBudget),\n }))+\"\\n \")]),(_vm.voucherEntered)?_c('div',{staticClass:\"dx-field\"},[_c('div',{staticClass:\"dx-field-label\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"BuySubscription.ReductionAmount\"))+\"\\n \")]),_c('div',{staticClass:\"dx-field-value text-right\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"currency\")(_vm.reductionAmount))+\"\\n \")])]):_vm._e(),(_vm.voucherEntered)?_c('div',{staticClass:\"budget-explanation\"},[_vm._v(\"\\n \"+_vm._s(_vm.reductionExplanation)+\"\\n \")]):_vm._e(),_c('div',{staticClass:\"dx-field\"},[_c('div',{staticClass:\"dx-field-label\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"BuySubscription.TotalVat\"))+\"\\n \")]),_c('div',{staticClass:\"dx-field-value text-right\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"currency\")(_vm.totalVat))+\"\\n \")])]),_c('hr',{staticClass:\"mb-5\"}),_c('div',{staticClass:\"dx-field\"},[_c('div',{staticClass:\"dx-field-label\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"BuySubscription.PaymentTotal\"))+\"\\n \")]),_c('div',{staticClass:\"dx-field-value text-right\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"currency\")(_vm.paymentTotal))+\"\\n \")])])]),_c('hr',{staticClass:\"my-3\"}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.paymentTotal),expression:\"paymentTotal\"}],staticClass:\"row mb-3\"},[_c('ul',{staticClass:\"leftx\"},[_c('li',{staticClass:\"mb-2\"},[_c('vs-radio',{attrs:{\"color\":\"primary\",\"vs-value\":\"ideal\"},model:{value:(_vm.paymentMethod),callback:function ($$v) {_vm.paymentMethod=$$v},expression:\"paymentMethod\"}},[_c('img',{staticClass:\"mr-1\",attrs:{\"width\":\"40\",\"src\":require(\"@/assets/images/payment-methods/ideal.png\")}}),_vm._v(\"\\n iDeal\")])],1),_c('li',{staticClass:\"mb-2\"},[_c('vs-radio',{attrs:{\"color\":\"primary\",\"vs-value\":\"bancontact\"},model:{value:(_vm.paymentMethod),callback:function ($$v) {_vm.paymentMethod=$$v},expression:\"paymentMethod\"}},[_c('img',{staticClass:\"mr-1\",attrs:{\"width\":\"40\",\"src\":require(\"@/assets/images/payment-methods/bancontact.png\")}}),_vm._v(\"\\n Bancontact\")])],1)])]),_c('vs-button',{staticClass:\"ml-auto mt-2\",staticStyle:{\"width\":\"100%\"},on:{\"click\":_vm.buySubscription}},[_vm._v(_vm._s(_vm.$t(\"BuySubscription.Buy\")))])],1)])])],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CampaignBuySubscription.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CampaignBuySubscription.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CampaignBuySubscription.vue?vue&type=template&id=e427e50a&\"\nimport script from \"./CampaignBuySubscription.vue?vue&type=script&lang=js&\"\nexport * from \"./CampaignBuySubscription.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CampaignBuySubscription.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/**\r\n * DevExtreme (esm/core/utils/date_serialization.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport config from \"../config\";\r\nimport {\r\n getFormatter as getLDMLFormatter\r\n} from \"../../localization/ldml/date.formatter\";\r\nimport defaultDateNames from \"../../localization/default_date_names\";\r\nimport {\r\n isString,\r\n isDate,\r\n isNumeric as isNumber\r\n} from \"./type\";\r\nvar NUMBER_SERIALIZATION_FORMAT = \"number\";\r\nvar DATE_SERIALIZATION_FORMAT = \"yyyy/MM/dd\";\r\nvar DATETIME_SERIALIZATION_FORMAT = \"yyyy/MM/dd HH:mm:ss\";\r\nvar ISO8601_PATTERN = /^(\\d{4,})(-)?(\\d{2})(-)?(\\d{2})(?:T(\\d{2})(:)?(\\d{2})?(:)?(\\d{2}(?:\\.(\\d{1,3})\\d*)?)?)?(Z|([+-])(\\d{2})(:)?(\\d{2})?)?$/;\r\nvar ISO8601_TIME_PATTERN = /^(\\d{2}):(\\d{2})(:(\\d{2}))?$/;\r\nvar ISO8601_PATTERN_PARTS = [\"\", \"yyyy\", \"\", \"MM\", \"\", \"dd\", \"THH\", \"\", \"mm\", \"\", \"ss\", \".SSS\"];\r\nvar DATE_SERIALIZATION_PATTERN = /^(\\d{4})\\/(\\d{2})\\/(\\d{2})$/;\r\nvar MILLISECOND_LENGHT = 3;\r\nvar dateParser = function(text, skipISO8601Parsing) {\r\n var result;\r\n if (isString(text) && !skipISO8601Parsing) {\r\n result = parseISO8601String(text)\r\n }\r\n return result || parseDate(text)\r\n};\r\n\r\nfunction getTimePart(part) {\r\n return +part || 0\r\n}\r\n\r\nfunction parseDate(text) {\r\n var isDefaultSerializationFormat = getDateSerializationFormat(text) === DATE_SERIALIZATION_FORMAT;\r\n var parsedValue = !isDate(text) && Date.parse(text);\r\n if (!parsedValue && isDefaultSerializationFormat) {\r\n var parts = text.match(DATE_SERIALIZATION_PATTERN);\r\n if (parts) {\r\n var newDate = new Date(getTimePart(parts[1]), getTimePart(parts[2]), getTimePart(parts[3]));\r\n newDate.setFullYear(getTimePart(parts[1]));\r\n newDate.setMonth(getTimePart(parts[2]) - 1);\r\n newDate.setDate(getTimePart(parts[3]));\r\n return newDate\r\n }\r\n }\r\n return isNumber(parsedValue) ? new Date(parsedValue) : text\r\n}\r\n\r\nfunction parseISO8601String(text) {\r\n var parts = text.match(ISO8601_PATTERN);\r\n if (!parts) {\r\n parts = text.match(ISO8601_TIME_PATTERN);\r\n if (parts) {\r\n return new Date(0, 0, 0, getTimePart(parts[1]), getTimePart(parts[2]), getTimePart(parts[4]))\r\n }\r\n return\r\n }\r\n var year = getTimePart(parts[1]);\r\n var month = --parts[3];\r\n var day = parts[5];\r\n var timeZoneHour = 0;\r\n var timeZoneMinute = 0;\r\n var correctYear = d => {\r\n year < 100 && d.setFullYear(year);\r\n return d\r\n };\r\n timeZoneHour = getTimePart(parts[14]);\r\n timeZoneMinute = getTimePart(parts[16]);\r\n if (\"-\" === parts[13]) {\r\n timeZoneHour = -timeZoneHour;\r\n timeZoneMinute = -timeZoneMinute\r\n }\r\n var hour = getTimePart(parts[6]) - timeZoneHour;\r\n var minute = getTimePart(parts[8]) - timeZoneMinute;\r\n var second = getTimePart(parts[10]);\r\n var millisecond = function(part) {\r\n part = part || \"\";\r\n return getTimePart(part) * Math.pow(10, MILLISECOND_LENGHT - part.length)\r\n }(parts[11]);\r\n if (parts[12]) {\r\n return correctYear(new Date(Date.UTC(year, month, day, hour, minute, second, millisecond)))\r\n }\r\n return correctYear(new Date(year, month, day, hour, minute, second, millisecond))\r\n}\r\nvar getIso8601Format = function(text, useUtc) {\r\n var parts = text.match(ISO8601_PATTERN);\r\n var result = \"\";\r\n if (!parts) {\r\n parts = text.match(ISO8601_TIME_PATTERN);\r\n if (parts) {\r\n return parts[3] ? \"HH:mm:ss\" : \"HH:mm\"\r\n }\r\n return\r\n }\r\n for (var i = 1; i < ISO8601_PATTERN_PARTS.length; i++) {\r\n if (parts[i]) {\r\n result += ISO8601_PATTERN_PARTS[i] || parts[i]\r\n }\r\n }\r\n if (\"Z\" === parts[12]) {\r\n result += \"'Z'\"\r\n }\r\n if (parts[14]) {\r\n if (parts[15]) {\r\n result += \"xxx\"\r\n } else if (parts[16]) {\r\n result += \"xx\"\r\n } else {\r\n result += \"x\"\r\n }\r\n }\r\n return result\r\n};\r\nvar deserializeDate = function(value) {\r\n if (\"number\" === typeof value) {\r\n return new Date(value)\r\n }\r\n return dateParser(value, !config().forceIsoDateParsing)\r\n};\r\nvar serializeDate = function(value, serializationFormat) {\r\n if (!serializationFormat) {\r\n return value\r\n }\r\n if (!isDate(value)) {\r\n return null\r\n }\r\n if (serializationFormat === NUMBER_SERIALIZATION_FORMAT) {\r\n return value && value.valueOf ? value.valueOf() : null\r\n }\r\n return getLDMLFormatter(serializationFormat, defaultDateNames)(value)\r\n};\r\nvar getDateSerializationFormat = function(value) {\r\n if (\"number\" === typeof value) {\r\n return NUMBER_SERIALIZATION_FORMAT\r\n } else if (isString(value)) {\r\n var format;\r\n if (config().forceIsoDateParsing) {\r\n format = getIso8601Format(value)\r\n }\r\n if (format) {\r\n return format\r\n } else if (value.indexOf(\":\") >= 0) {\r\n return DATETIME_SERIALIZATION_FORMAT\r\n } else {\r\n return DATE_SERIALIZATION_FORMAT\r\n }\r\n } else if (value) {\r\n return null\r\n }\r\n};\r\nexport default {\r\n dateParser: dateParser,\r\n deserializeDate: deserializeDate,\r\n serializeDate: serializeDate,\r\n getDateSerializationFormat: getDateSerializationFormat\r\n};\r\n","/**\r\n * DevExtreme (esm/core/utils/date.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport {\r\n isObject,\r\n isString,\r\n isDate,\r\n isDefined,\r\n isNumeric\r\n} from \"./type\";\r\nimport {\r\n adjust\r\n} from \"./math\";\r\nimport {\r\n each\r\n} from \"./iterator\";\r\nimport {\r\n camelize\r\n} from \"./inflector\";\r\nvar dateUnitIntervals = [\"millisecond\", \"second\", \"minute\", \"hour\", \"day\", \"week\", \"month\", \"quarter\", \"year\"];\r\nvar toMilliseconds = function toMilliseconds(value) {\r\n switch (value) {\r\n case \"millisecond\":\r\n return 1;\r\n case \"second\":\r\n return 1e3 * toMilliseconds(\"millisecond\");\r\n case \"minute\":\r\n return 60 * toMilliseconds(\"second\");\r\n case \"hour\":\r\n return 60 * toMilliseconds(\"minute\");\r\n case \"day\":\r\n return 24 * toMilliseconds(\"hour\");\r\n case \"week\":\r\n return 7 * toMilliseconds(\"day\");\r\n case \"month\":\r\n return 30 * toMilliseconds(\"day\");\r\n case \"quarter\":\r\n return 3 * toMilliseconds(\"month\");\r\n case \"year\":\r\n return 365 * toMilliseconds(\"day\");\r\n default:\r\n return 0\r\n }\r\n};\r\nvar getDatesInterval = function(startDate, endDate, intervalUnit) {\r\n var delta = endDate.getTime() - startDate.getTime();\r\n var millisecondCount = toMilliseconds(intervalUnit) || 1;\r\n return Math.floor(delta / millisecondCount)\r\n};\r\nvar getNextDateUnit = function(unit, withWeeks) {\r\n var interval = getDateUnitInterval(unit);\r\n switch (interval) {\r\n case \"millisecond\":\r\n return \"second\";\r\n case \"second\":\r\n return \"minute\";\r\n case \"minute\":\r\n return \"hour\";\r\n case \"hour\":\r\n return \"day\";\r\n case \"day\":\r\n return withWeeks ? \"week\" : \"month\";\r\n case \"week\":\r\n return \"month\";\r\n case \"month\":\r\n return \"quarter\";\r\n case \"quarter\":\r\n case \"year\":\r\n return \"year\";\r\n default:\r\n return 0\r\n }\r\n};\r\nvar convertMillisecondsToDateUnits = function(value) {\r\n var i;\r\n var dateUnitCount;\r\n var dateUnitInterval;\r\n var dateUnitIntervals = [\"millisecond\", \"second\", \"minute\", \"hour\", \"day\", \"month\", \"year\"];\r\n var result = {};\r\n for (i = dateUnitIntervals.length - 1; i >= 0; i--) {\r\n dateUnitInterval = dateUnitIntervals[i];\r\n dateUnitCount = Math.floor(value / toMilliseconds(dateUnitInterval));\r\n if (dateUnitCount > 0) {\r\n result[dateUnitInterval + \"s\"] = dateUnitCount;\r\n value -= convertDateUnitToMilliseconds(dateUnitInterval, dateUnitCount)\r\n }\r\n }\r\n return result\r\n};\r\nvar dateToMilliseconds = function(tickInterval) {\r\n var milliseconds = 0;\r\n if (isObject(tickInterval)) {\r\n each(tickInterval, (function(key, value) {\r\n milliseconds += convertDateUnitToMilliseconds(key.substr(0, key.length - 1), value)\r\n }))\r\n }\r\n if (isString(tickInterval)) {\r\n milliseconds = convertDateUnitToMilliseconds(tickInterval, 1)\r\n }\r\n return milliseconds\r\n};\r\n\r\nfunction convertDateUnitToMilliseconds(dateUnit, count) {\r\n return toMilliseconds(dateUnit) * count\r\n}\r\n\r\nfunction getDateUnitInterval(tickInterval) {\r\n var maxInterval = -1;\r\n var i;\r\n if (isString(tickInterval)) {\r\n return tickInterval\r\n }\r\n if (isObject(tickInterval)) {\r\n each(tickInterval, (function(key, value) {\r\n for (i = 0; i < dateUnitIntervals.length; i++) {\r\n if (value && (key === dateUnitIntervals[i] + \"s\" || key === dateUnitIntervals[i]) && maxInterval < i) {\r\n maxInterval = i\r\n }\r\n }\r\n }));\r\n return dateUnitIntervals[maxInterval]\r\n }\r\n return \"\"\r\n}\r\nvar tickIntervalToFormatMap = {\r\n millisecond: \"millisecond\",\r\n second: \"longtime\",\r\n minute: \"shorttime\",\r\n hour: \"shorttime\",\r\n day: \"day\",\r\n week: \"day\",\r\n month: \"month\",\r\n quarter: \"quarter\",\r\n year: \"year\"\r\n};\r\n\r\nfunction getDateFormatByTickInterval(tickInterval) {\r\n return tickIntervalToFormatMap[getDateUnitInterval(tickInterval)] || \"\"\r\n}\r\nvar getQuarter = function(month) {\r\n return Math.floor(month / 3)\r\n};\r\nvar getFirstQuarterMonth = function(month) {\r\n return 3 * getQuarter(month)\r\n};\r\n\r\nfunction correctDateWithUnitBeginning(date, dateInterval, withCorrection, firstDayOfWeek) {\r\n date = new Date(date.getTime());\r\n var oldDate = new Date(date.getTime());\r\n var firstQuarterMonth;\r\n var month;\r\n var dateUnitInterval = getDateUnitInterval(dateInterval);\r\n switch (dateUnitInterval) {\r\n case \"second\":\r\n date = new Date(1e3 * Math.floor(oldDate.getTime() / 1e3));\r\n break;\r\n case \"minute\":\r\n date = new Date(6e4 * Math.floor(oldDate.getTime() / 6e4));\r\n break;\r\n case \"hour\":\r\n date = new Date(36e5 * Math.floor(oldDate.getTime() / 36e5));\r\n break;\r\n case \"year\":\r\n date.setMonth(0);\r\n case \"month\":\r\n date.setDate(1);\r\n case \"day\":\r\n date.setHours(0, 0, 0, 0);\r\n break;\r\n case \"week\":\r\n date = getFirstWeekDate(date, firstDayOfWeek || 0);\r\n date.setHours(0, 0, 0, 0);\r\n break;\r\n case \"quarter\":\r\n firstQuarterMonth = getFirstQuarterMonth(date.getMonth());\r\n month = date.getMonth();\r\n date.setDate(1);\r\n date.setHours(0, 0, 0, 0);\r\n if (month !== firstQuarterMonth) {\r\n date.setMonth(firstQuarterMonth)\r\n }\r\n }\r\n if (withCorrection && \"hour\" !== dateUnitInterval && \"minute\" !== dateUnitInterval && \"second\" !== dateUnitInterval) {\r\n fixTimezoneGap(oldDate, date)\r\n }\r\n return date\r\n}\r\n\r\nfunction trimTime(date) {\r\n return correctDateWithUnitBeginning(date, \"day\")\r\n}\r\nvar setToDayEnd = function(date) {\r\n var result = trimTime(date);\r\n result.setDate(result.getDate() + 1);\r\n return new Date(result.getTime() - 1)\r\n};\r\nvar getDatesDifferences = function(date1, date2) {\r\n var counter = 0;\r\n var differences = {\r\n year: date1.getFullYear() !== date2.getFullYear(),\r\n month: date1.getMonth() !== date2.getMonth(),\r\n day: date1.getDate() !== date2.getDate(),\r\n hour: date1.getHours() !== date2.getHours(),\r\n minute: date1.getMinutes() !== date2.getMinutes(),\r\n second: date1.getSeconds() !== date2.getSeconds(),\r\n millisecond: date1.getMilliseconds() !== date2.getMilliseconds()\r\n };\r\n each(differences, (function(key, value) {\r\n if (value) {\r\n counter++\r\n }\r\n }));\r\n if (0 === counter && 0 !== getTimezonesDifference(date1, date2)) {\r\n differences.hour = true;\r\n counter++\r\n }\r\n differences.count = counter;\r\n return differences\r\n};\r\n\r\nfunction addDateInterval(value, interval, dir) {\r\n var result = new Date(value.getTime());\r\n var intervalObject = isString(interval) ? getDateIntervalByString(interval.toLowerCase()) : isNumeric(interval) ? convertMillisecondsToDateUnits(interval) : interval;\r\n if (intervalObject.years) {\r\n result.setFullYear(result.getFullYear() + intervalObject.years * dir)\r\n }\r\n if (intervalObject.quarters) {\r\n result.setMonth(result.getMonth() + 3 * intervalObject.quarters * dir)\r\n }\r\n if (intervalObject.months) {\r\n result.setMonth(result.getMonth() + intervalObject.months * dir)\r\n }\r\n if (intervalObject.weeks) {\r\n result.setDate(result.getDate() + 7 * intervalObject.weeks * dir)\r\n }\r\n if (intervalObject.days) {\r\n result.setDate(result.getDate() + intervalObject.days * dir)\r\n }\r\n if (intervalObject.hours) {\r\n result.setTime(result.getTime() + 36e5 * intervalObject.hours * dir)\r\n }\r\n if (intervalObject.minutes) {\r\n result.setTime(result.getTime() + 6e4 * intervalObject.minutes * dir)\r\n }\r\n if (intervalObject.seconds) {\r\n result.setTime(result.getTime() + 1e3 * intervalObject.seconds * dir)\r\n }\r\n if (intervalObject.milliseconds) {\r\n result.setTime(result.getTime() + intervalObject.milliseconds * dir)\r\n }\r\n return result\r\n}\r\nvar addInterval = function(value, interval, isNegative) {\r\n var dir = isNegative ? -1 : 1;\r\n return isDate(value) ? addDateInterval(value, interval, dir) : adjust(value + interval * dir, interval)\r\n};\r\nvar getSequenceByInterval = function(min, max, interval) {\r\n var intervals = [];\r\n var cur;\r\n intervals.push(isDate(min) ? new Date(min.getTime()) : min);\r\n cur = min;\r\n while (cur < max) {\r\n cur = addInterval(cur, interval);\r\n intervals.push(cur)\r\n }\r\n return intervals\r\n};\r\nvar getViewFirstCellDate = function(viewType, date) {\r\n if (\"month\" === viewType) {\r\n return createDateWithFullYear(date.getFullYear(), date.getMonth(), 1)\r\n }\r\n if (\"year\" === viewType) {\r\n return createDateWithFullYear(date.getFullYear(), 0, date.getDate())\r\n }\r\n if (\"decade\" === viewType) {\r\n return createDateWithFullYear(getFirstYearInDecade(date), date.getMonth(), date.getDate())\r\n }\r\n if (\"century\" === viewType) {\r\n return createDateWithFullYear(getFirstDecadeInCentury(date), date.getMonth(), date.getDate())\r\n }\r\n};\r\nvar getViewLastCellDate = function(viewType, date) {\r\n if (\"month\" === viewType) {\r\n return createDateWithFullYear(date.getFullYear(), date.getMonth(), getLastMonthDay(date))\r\n }\r\n if (\"year\" === viewType) {\r\n return createDateWithFullYear(date.getFullYear(), 11, date.getDate())\r\n }\r\n if (\"decade\" === viewType) {\r\n return createDateWithFullYear(getFirstYearInDecade(date) + 9, date.getMonth(), date.getDate())\r\n }\r\n if (\"century\" === viewType) {\r\n return createDateWithFullYear(getFirstDecadeInCentury(date) + 90, date.getMonth(), date.getDate())\r\n }\r\n};\r\nvar getViewMinBoundaryDate = function(viewType, date) {\r\n var resultDate = createDateWithFullYear(date.getFullYear(), date.getMonth(), 1);\r\n if (\"month\" === viewType) {\r\n return resultDate\r\n }\r\n resultDate.setMonth(0);\r\n if (\"year\" === viewType) {\r\n return resultDate\r\n }\r\n if (\"decade\" === viewType) {\r\n resultDate.setFullYear(getFirstYearInDecade(date))\r\n }\r\n if (\"century\" === viewType) {\r\n resultDate.setFullYear(getFirstDecadeInCentury(date))\r\n }\r\n return resultDate\r\n};\r\nvar getViewMaxBoundaryDate = function(viewType, date) {\r\n var resultDate = new Date(date);\r\n resultDate.setDate(getLastMonthDay(date));\r\n if (\"month\" === viewType) {\r\n return resultDate\r\n }\r\n resultDate.setMonth(11);\r\n resultDate.setDate(getLastMonthDay(resultDate));\r\n if (\"year\" === viewType) {\r\n return resultDate\r\n }\r\n if (\"decade\" === viewType) {\r\n resultDate.setFullYear(getFirstYearInDecade(date) + 9)\r\n }\r\n if (\"century\" === viewType) {\r\n resultDate.setFullYear(getFirstDecadeInCentury(date) + 99)\r\n }\r\n return resultDate\r\n};\r\n\r\nfunction getLastMonthDay(date) {\r\n var resultDate = createDateWithFullYear(date.getFullYear(), date.getMonth() + 1, 0);\r\n return resultDate.getDate()\r\n}\r\nvar getViewUp = function(typeView) {\r\n switch (typeView) {\r\n case \"month\":\r\n return \"year\";\r\n case \"year\":\r\n return \"decade\";\r\n case \"decade\":\r\n return \"century\"\r\n }\r\n};\r\nvar getViewDown = function(typeView) {\r\n switch (typeView) {\r\n case \"century\":\r\n return \"decade\";\r\n case \"decade\":\r\n return \"year\";\r\n case \"year\":\r\n return \"month\"\r\n }\r\n};\r\nvar getDifferenceInMonth = function(typeView) {\r\n var difference = 1;\r\n if (\"year\" === typeView) {\r\n difference = 12\r\n }\r\n if (\"decade\" === typeView) {\r\n difference = 120\r\n }\r\n if (\"century\" === typeView) {\r\n difference = 1200\r\n }\r\n return difference\r\n};\r\nvar getDifferenceInMonthForCells = function(typeView) {\r\n var difference = 1;\r\n if (\"decade\" === typeView) {\r\n difference = 12\r\n }\r\n if (\"century\" === typeView) {\r\n difference = 120\r\n }\r\n return difference\r\n};\r\n\r\nfunction getDateIntervalByString(intervalString) {\r\n var result = {};\r\n switch (intervalString) {\r\n case \"year\":\r\n result.years = 1;\r\n break;\r\n case \"month\":\r\n result.months = 1;\r\n break;\r\n case \"quarter\":\r\n result.months = 3;\r\n break;\r\n case \"week\":\r\n result.weeks = 1;\r\n break;\r\n case \"day\":\r\n result.days = 1;\r\n break;\r\n case \"hour\":\r\n result.hours = 1;\r\n break;\r\n case \"minute\":\r\n result.minutes = 1;\r\n break;\r\n case \"second\":\r\n result.seconds = 1;\r\n break;\r\n case \"millisecond\":\r\n result.milliseconds = 1\r\n }\r\n return result\r\n}\r\n\r\nfunction sameDate(date1, date2) {\r\n return sameMonthAndYear(date1, date2) && date1.getDate() === date2.getDate()\r\n}\r\n\r\nfunction sameMonthAndYear(date1, date2) {\r\n return sameYear(date1, date2) && date1.getMonth() === date2.getMonth()\r\n}\r\n\r\nfunction sameYear(date1, date2) {\r\n return date1 && date2 && date1.getFullYear() === date2.getFullYear()\r\n}\r\nvar sameDecade = function(date1, date2) {\r\n if (!isDefined(date1) || !isDefined(date2)) {\r\n return\r\n }\r\n var startDecadeDate1 = date1.getFullYear() - date1.getFullYear() % 10;\r\n var startDecadeDate2 = date2.getFullYear() - date2.getFullYear() % 10;\r\n return date1 && date2 && startDecadeDate1 === startDecadeDate2\r\n};\r\nvar sameCentury = function(date1, date2) {\r\n if (!isDefined(date1) || !isDefined(date2)) {\r\n return\r\n }\r\n var startCenturyDate1 = date1.getFullYear() - date1.getFullYear() % 100;\r\n var startCenturyDate2 = date2.getFullYear() - date2.getFullYear() % 100;\r\n return date1 && date2 && startCenturyDate1 === startCenturyDate2\r\n};\r\n\r\nfunction getFirstDecadeInCentury(date) {\r\n return date && date.getFullYear() - date.getFullYear() % 100\r\n}\r\n\r\nfunction getFirstYearInDecade(date) {\r\n return date && date.getFullYear() - date.getFullYear() % 10\r\n}\r\nvar getShortDateFormat = function() {\r\n return \"yyyy/MM/dd\"\r\n};\r\nvar getFirstMonthDate = function(date) {\r\n if (!isDefined(date)) {\r\n return\r\n }\r\n return createDateWithFullYear(date.getFullYear(), date.getMonth(), 1)\r\n};\r\nvar getLastMonthDate = function(date) {\r\n if (!isDefined(date)) {\r\n return\r\n }\r\n return createDateWithFullYear(date.getFullYear(), date.getMonth() + 1, 0)\r\n};\r\n\r\nfunction getFirstWeekDate(date, firstDayOfWeek) {\r\n var delta = (date.getDay() - firstDayOfWeek + 7) % 7;\r\n var result = new Date(date);\r\n result.setDate(date.getDate() - delta);\r\n return result\r\n}\r\nvar normalizeDateByWeek = function(date, currentDate) {\r\n var differenceInDays = dateUtils.getDatesInterval(date, currentDate, \"day\");\r\n var resultDate = new Date(date);\r\n if (differenceInDays >= 6) {\r\n resultDate = new Date(resultDate.setDate(resultDate.getDate() + 7))\r\n }\r\n return resultDate\r\n};\r\nvar dateInRange = function(date, min, max, format) {\r\n if (\"date\" === format) {\r\n min = min && dateUtils.correctDateWithUnitBeginning(min, \"day\");\r\n max = max && dateUtils.correctDateWithUnitBeginning(max, \"day\");\r\n date = date && dateUtils.correctDateWithUnitBeginning(date, \"day\")\r\n }\r\n return normalizeDate(date, min, max) === date\r\n};\r\nvar intervalsOverlap = function(options) {\r\n var {\r\n firstMin: firstMin,\r\n firstMax: firstMax,\r\n secondMin: secondMin,\r\n secondMax: secondMax\r\n } = options;\r\n return firstMin <= secondMin && secondMin <= firstMax || firstMin > secondMin && firstMin < secondMax || firstMin < secondMax && firstMax > secondMax\r\n};\r\nvar dateTimeFromDecimal = function(number) {\r\n var hours = Math.floor(number);\r\n var minutes = number % 1 * 60;\r\n return {\r\n hours: hours,\r\n minutes: minutes\r\n }\r\n};\r\nvar roundDateByStartDayHour = function(date, startDayHour) {\r\n var startTime = this.dateTimeFromDecimal(startDayHour);\r\n var result = new Date(date);\r\n if (date.getHours() === startTime.hours && date.getMinutes() < startTime.minutes || date.getHours() < startTime.hours) {\r\n result.setHours(startTime.hours, startTime.minutes, 0, 0)\r\n }\r\n return result\r\n};\r\n\r\nfunction normalizeDate(date, min, max) {\r\n var normalizedDate = date;\r\n if (!isDefined(date)) {\r\n return date\r\n }\r\n if (isDefined(min) && date < min) {\r\n normalizedDate = min\r\n }\r\n if (isDefined(max) && date > max) {\r\n normalizedDate = max\r\n }\r\n return normalizedDate\r\n}\r\n\r\nfunction fixTimezoneGap(oldDate, newDate) {\r\n if (!isDefined(oldDate)) {\r\n return\r\n }\r\n var diff = newDate.getHours() - oldDate.getHours();\r\n if (0 === diff) {\r\n return\r\n }\r\n var sign = 1 === diff || -23 === diff ? -1 : 1;\r\n var trial = new Date(newDate.getTime() + 36e5 * sign);\r\n if (sign > 0 || trial.getDate() === newDate.getDate()) {\r\n newDate.setTime(trial.getTime())\r\n }\r\n}\r\nvar roundToHour = function(date) {\r\n var result = new Date(date.getTime());\r\n result.setHours(result.getHours() + 1);\r\n result.setMinutes(0);\r\n return result\r\n};\r\n\r\nfunction getTimezonesDifference(min, max) {\r\n return 60 * (max.getTimezoneOffset() - min.getTimezoneOffset()) * 1e3\r\n}\r\nvar makeDate = function(date) {\r\n return new Date(date)\r\n};\r\nvar getDatesOfInterval = function(startDate, endDate, step) {\r\n var result = [];\r\n var currentDate = new Date(startDate.getTime());\r\n while (currentDate < endDate) {\r\n result.push(new Date(currentDate.getTime()));\r\n currentDate = this.addInterval(currentDate, step)\r\n }\r\n return result\r\n};\r\nvar createDateWithFullYear = function(year) {\r\n var result = new Date(...arguments);\r\n result.setFullYear(year);\r\n return result\r\n};\r\nvar dateUtils = {\r\n dateUnitIntervals: dateUnitIntervals,\r\n convertMillisecondsToDateUnits: convertMillisecondsToDateUnits,\r\n dateToMilliseconds: dateToMilliseconds,\r\n getNextDateUnit: getNextDateUnit,\r\n convertDateUnitToMilliseconds: convertDateUnitToMilliseconds,\r\n getDateUnitInterval: getDateUnitInterval,\r\n getDateFormatByTickInterval: getDateFormatByTickInterval,\r\n getDatesDifferences: getDatesDifferences,\r\n correctDateWithUnitBeginning: correctDateWithUnitBeginning,\r\n trimTime: trimTime,\r\n setToDayEnd: setToDayEnd,\r\n roundDateByStartDayHour: roundDateByStartDayHour,\r\n dateTimeFromDecimal: dateTimeFromDecimal,\r\n addDateInterval: addDateInterval,\r\n addInterval: addInterval,\r\n getSequenceByInterval: getSequenceByInterval,\r\n getDateIntervalByString: getDateIntervalByString,\r\n sameDate: sameDate,\r\n sameMonthAndYear: sameMonthAndYear,\r\n sameMonth: sameMonthAndYear,\r\n sameYear: sameYear,\r\n sameDecade: sameDecade,\r\n sameCentury: sameCentury,\r\n getDifferenceInMonth: getDifferenceInMonth,\r\n getDifferenceInMonthForCells: getDifferenceInMonthForCells,\r\n getFirstYearInDecade: getFirstYearInDecade,\r\n getFirstDecadeInCentury: getFirstDecadeInCentury,\r\n getShortDateFormat: getShortDateFormat,\r\n getViewFirstCellDate: getViewFirstCellDate,\r\n getViewLastCellDate: getViewLastCellDate,\r\n getViewDown: getViewDown,\r\n getViewUp: getViewUp,\r\n getLastMonthDay: getLastMonthDay,\r\n getLastMonthDate: getLastMonthDate,\r\n getFirstMonthDate: getFirstMonthDate,\r\n getFirstWeekDate: getFirstWeekDate,\r\n normalizeDateByWeek: normalizeDateByWeek,\r\n getQuarter: getQuarter,\r\n getFirstQuarterMonth: getFirstQuarterMonth,\r\n dateInRange: dateInRange,\r\n intervalsOverlap: intervalsOverlap,\r\n roundToHour: roundToHour,\r\n normalizeDate: normalizeDate,\r\n getViewMinBoundaryDate: getViewMinBoundaryDate,\r\n getViewMaxBoundaryDate: getViewMaxBoundaryDate,\r\n fixTimezoneGap: fixTimezoneGap,\r\n getTimezonesDifference: getTimezonesDifference,\r\n makeDate: makeDate,\r\n getDatesInterval: getDatesInterval,\r\n getDatesOfInterval: getDatesOfInterval,\r\n createDateWithFullYear: createDateWithFullYear\r\n};\r\ndateUtils.sameView = function(view, date1, date2) {\r\n return dateUtils[camelize(\"same \" + view)](date1, date2)\r\n};\r\nexport default dateUtils;\r\n","/**\r\n * DevExtreme (esm/core/utils/svg.js)\r\n * Version: 21.2.5\r\n * Build date: Mon Jan 17 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\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport {\r\n getWindow\r\n} from \"./window\";\r\nimport $ from \"../../core/renderer\";\r\nvar window = getWindow();\r\n\r\nfunction getMarkup(element, backgroundColor) {\r\n var temp = domAdapter.createElement(\"div\");\r\n var clone = element.cloneNode(true);\r\n if (backgroundColor) {\r\n $(clone).css(\"backgroundColor\", backgroundColor)\r\n }\r\n temp.appendChild(clone);\r\n return temp.innerHTML\r\n}\r\n\r\nfunction fixNamespaces(markup) {\r\n var first = true;\r\n if (-1 === markup.indexOf(\"xmlns:xlink\")) {\r\n markup = markup.replace(\"