{"version":3,"sources":["webpack:///./node_modules/devextreme/esm/viz/core/export.js","webpack:///./node_modules/devextreme/esm/viz/core/plaque.js","webpack:///./node_modules/devextreme/esm/viz/core/layout_element.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/loading_indicator.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/title.js","webpack:///./node_modules/devextreme/esm/viz/core/data_source.js","webpack:///./node_modules/devextreme/esm/viz/core/tooltip.js","webpack:///./node_modules/devextreme/esm/viz/core/utils.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/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/palette.js","webpack:///./node_modules/devextreme/esm/viz/core/base_theme_manager.js"],"names":["pointerActions","down","move","join","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","concat","validateFormat","format","incidentOccurred","validFormats","String","toUpperCase","indexOf","getCreatorFunc","getData","print","imageSrc","options","document","iFrame","createElement","onload","setPrint","style","position","width","height","right","bottom","body","appendChild","calculatePrintPageWidth","iFrameBody","window","this","contentWindow","img","widthRatio","transform","removeFrame","parentElement","removeChild","addEventListener","focus","setTimeout","src","getItemAttributes","type","itemIndex","x","y","attr","rect","text","rtl","separator","stroke","button","default","borderColor","cursor","sharp","d","createMenuItem","renderer","settings","itemData","fontStyle","font","menuItem","g","class","css","data","on","fill","hover","backgroundColor","append","path","resetState","fixPosition","textBBox","getBBox","createMenuItems","items","printingEnabled","push","length","formats","reduce","r","getFormatter","ExportMenu","params","_renderer","_incidentOccurred","_exportTo","exportTo","_print","_shadow","shadowFilter","opacity","_group","linkOn","root","name","after","_buttonGroup","_listGroup","_overlay","rx","ry","filter","id","_subscribeEvents","getExportOptions","widget","exportOptions","fileName","getSize","proxyUrl","margin","svgToCanvas","forceProxy","exportingAction","_createActionByOption","excludeValidators","exportedAction","fileSavingAction","prototype","_hiddenDueToLayout","cutSide","cutLayoutSide","bBox","vertical","horizontal","verticalAlignment","horizontalAlignment","_","translateY","canvas","left","Math","floor","layoutOptions","getLayoutOptions","freeSpace","linkAppend","linkRemove","_options","slice","enabled","show","_updateButton","_updateList","_hideList","hide","_unsubscribeEvents","linkOff","dispose","weak","_fillSpace","top","translateX","round","remove","_listShown","_setButtonState","_menuItems","forEach","item","state","_button","_icon","color","up","e","elementType","target","_showList","stopPropagation","enter","leave","off","exportData","setTitle","buttonDefault","listGroup","shadowColor","clear","plugin","_exportMenu","_layout","add","members","_getOption","pointerEventsValue","menu","_disablePointerEvents","promise","element","fail","error","always","eventArgs","__test","cancel","constructor","proto","addChange","code","setOptions","_getExportMenuOptions","_change","isThemeDependent","isOptionChange","option","_optionChangesMap","onExporting","onExported","onFileSaving","fontFields","_excluded","math","max","min","sin","cos","asin","PI","buildPath","_len","arguments","points","Array","_key","getArc","cornerRadius","xDirection","yDirection","getAbsoluteArc","rotateX","angle","x0","y0","rotateY","rotateSize","getCloudAngle","_ref","anchorX","anchorY","halfWidth","halfHeight","xr","ceil","xl","yt","yb","getCloudPoints","_ref2","_ref3","bounded","arrowWidth","halfArrowWidth","leftTopCorner","rightTopCorner","rightBottomCorner","leftBottomCorner","arrowX","arrowY","arrowBaseBottom","arrowBaseTop","arrowBaseLeft","arrowAngle","endAngle","arrowEndPointX","arrowEndPointY","arrowArc","abs","_arrowArc","arrowWidthRest","_angle","arrowBaseTopX","arrowBaseTopY","_arrowWidthRest","_arrowAngle","_angle2","_arrowBaseTopX","_arrowBaseTopY","bottomAngle","arrowBaseBottomX","arrowBaseBottomY","topAngle","_arrowBaseTopX2","_arrowBaseTopY2","_bottomAngle","_arrowBaseBottomX","_arrowBaseBottomY","_bottomAngle2","_arrowBaseBottomX2","_arrowBaseBottomY2","_bottomAngle3","_arrowBaseBottomX3","_arrowBaseBottomY3","_topAngle","_arrowBaseTopX3","_arrowBaseTopY3","Plaque","contentTemplate","measureContent","moveContentGroup","bonded","_ref4","offsetX","offsetY","offset","restProps","bounds_xl","bounds_xr","bounds_width","bounds_yt","bounds_yb","bounds_height","_root","_draw","shadowSettings","shadow","contentWidth","contentHeight","onRender","_this$_root","_contentBBox","_contentGroup","size","_size","paddingLeftRight","paddingTopBottom","xOff","yOff","blur","lm","rm","tm","bm","margins","y_top","arrowLength","y_bottom","render","model","container","onRendered","group","cloudSettings","borderOptions","border","visible","dashStyle","cloudGroup","_cloud","rotationAngle","radRotationAngle","rotate","_round","defaultOffset","alignFactors","center","LayoutElement","WrapperLayoutElement","renderElement","_renderElement","_cacheBBox","ofBBox","of","myBBox","at","my","shiftX","parseInt","shiftY","shift","wrapperLayoutElementPrototype","noop","easingFunctions","easeOutCubic","pos","start","end","pow","linear","animationSvgStep","segments","elem","progress","easing","currentParams","curSeg","seg","i","j","from","to","arc","current","base","attributeName","obj","complete","currentSettings","now","attrName","animateStep","_animateStep","_progress","_calcProgress","anim","_easing","_currentParams","step","stop","delayTick","_startTime","delay","tick","Animation","duration","partitionDuration","AnimationController","_animationCount","_timerId","_animations","disableComplete","_loop","an","that","animations","activeAnimation","Date","getTime","endAnimation","_endAnimation","_endAnimationTimer","call","addAnimation","animation","clearTimeout","_startDelay","animateElement","onEndAnimation","lock","unstoppable","hasUnstoppableInAnimations","PI_DIV_180","SHARPING_CORRECTION","ARC_COORD_PREC","pxAddingExceptions","order","orphans","widows","zoom","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","NONE","DEFAULT_FONT_SIZE","ELLIPSIS","objectCreate","Object","create","F","DEFAULTS","scaleX","scaleY","getBackup","backupContainer","backupCounter","backupRoot","getBody","restoreRoot","getNextDefsSvgId","numDefsSvgElements","isObjectArgument","value","tagName","createElementNS","getFuncIri","pathModified","location","href","split","extend","source","key","roundValue","exp","toString","getBoundingClientRect","box","preserveAspectRatioMap","full","lefttop","leftcenter","leftbottom","centertop","centerbottom","righttop","rightcenter","rightbottom","processHatchingAttrs","attrs","hatching","direction","_hatching","lockHatching","releaseHatching","normalizeArcParams","innerR","outerR","startAngle","isCircle","noArc","angleDiff","buildArcPath","startAngleCos","startAngleSin","endAngleCos","endAngleSin","longFlag","toFixed","buildPathSegments","list","buildLineSegments","buildCurveSegments","close","buildSegments","buildSimpleLineSegment","buildSimpleCurveSegment","buildSimpleSegment","_points$","ii","k0","k","combinePathParam","segment","jj","compensateSegments","oldSegments","newSegments","originalNewSegments","oldLength","newLength","makeEqualSegments","makeEqualAreaSegments","makeEqualLineSegments","prepareConstSegment","constSeg","short","long","head","constsSeg1","constsSeg2","shortLength","longLength","splice","baseCss","styles","elemStyles","_styles","fixFuncIri","wrapper","attribute","removeAttribute","setAttribute","baseAttr","hasTransformations","recalculateDashStyle","sw","_settings","attributes","test","_addFixIRICallback","_originalSW","replace","_applyTransformation","pathAttr","arcAttr","innerRadius","outerRadius","apply","rectAttr","maxSW","newSW","_originalX","_originalY","_originalWidth","_originalHeight","textAttr","isResetRequired","wasStroked","alignTextNodes","isStroked","createTextNodes","_hasEllipsis","locateTextNodes","strokeTextNodes","textCss","orderHtmlTree","line","node","parentStyle","parentClassName","realStyle","nodes","wholeText","className","isElementNode","fontSize","fontWeight","textDecoration","childNodes","adjustLineHeights","currentItem","maxLengthFontSize","inherits","parseFloat","NaN","removeExtraAttrs","html","findStyleAndClassAttrs","allTagAttrs","p1","p2","p3","match","map","str","parseHTML","div","innerHTML","parseMultiline","texts","trim","createTspans","fieldName","createTextNode","restoreText","applyEllipsis","maxWidth","lines","lineParts","hasEllipsis","ellipsis","ellipsisWidth","_getElementBBox","prepareLines","_texts","parts","commonLength","endIndex","setNewText","startBox","removeTextSpan","cloneAndRemoveAttrs","clone","cloneNode","detachTitleElements","titleElements","querySelectorAll","detachAndStoreTitleElements","setMaxSize","maxHeight","textChanged","textIsEmpty","ellipsisMaxWidth","restoreTitleElement","applyOverflowRules","setMaxHeight","_getLineHeight","t","tspan","parentNode","textContent","rowCount","getIndexForEllipsis","endBox","kk","getSubStringLength","getTextWidth","getSpaceBreakIndex","initialIndices","spaceIndices","indices","char","index","spaceIndex","getWordBreakIndex","getEllipsisString","hideOverflowEllipsis","setEllipsis","wordWrap","lastStepBreakIndex","breakIndex","restText","restLines","isFinite","newTextOffset","restString","restTspan","textOverflow","calculateLineHeight","lineHeight","getItemLineHeight","Number","result","l","arr","commonHeight","prevLine","textValue","lineNumber","wordWrapLines","insertString","newText","substr","parsedHtml","encodeHtml","setTextNodeAttribute","defaultValue","alignment","maxTextWidth","textWidth","fontSize1","fontSize2","parsedHeight1","parsedHeight2","height1","height2","isNaN","strokeWidth","strokeOpacity","baseAnimate","animationParams","defaults","animationEnabled","getAttribute","_animation","pathAnimate","endSegments","curSegments","arcAnimate","arcParams","buildLink","parameters","is","virtual","SvgElement","removeFuncIriCallback","callback","fixFuncIriCallbacks","_getJQElement","_$element","fn","_fixFuncIri","_clearChildrenFuncIri","clearChildren","parent","enableLinks","_links","virtualLink","linkItem","_link","linkAfter","_linkAfter","unlinkItem","next","link","_insert","insertBefore","empty","toBackground","firstChild","toForeground","smartAttr","animate","sharpDirection","tr","transformations","sharpMode","trDirection","strokeOdd","correctionX","correctionY","scaleXDefined","scaleYDefined","animOptions","offsetWidth","offsetHeight","transformation","markup","getOffset","stopAnimation","titleElem","val","args","trigger","PathSvgElement","ArcSvgElement","RectSvgElement","TextSvgElement","updateIndexes","Renderer","_createElement","xmlns","version","cssClass","display","overflow","_init","_$container","fixPlacement","_locker","_backed","getHatchingHash","_defs","_animationController","browser","mozilla","get","dx","dy","removePlacementFix","updateAnimationOptions","unlock","resize","removeByRenderer","newOptions","stopAllAnimations","svg","getRootOffset","simpleRect","circle","cx","cy","image","w","h","preserveAspectRatio","setAttributeNS","_text","linearGradient","stops","gradient","pattern","_id","stepTo2","stepBy15","patternUnits","_getPointsWithYOffset","point","clipShape","method","methodArgs","clipPath","shape","radius","gaussianBlur","in","stdDeviation","flood","composite","in2","operator","finalComposite","filterAttrs","offsetAttrs","floodAttrs","brightFilter","slope","componentTransferElement","getGrayScaleFilter","_grayScaleFilter","values","initHatching","storage","_hatchingStorage","byHash","baseId","refToHash","nextId","ref","storageItem","hash","count","callbacks","el","fire","STATE_HIDDEN","STATE_SHOWN","ANIMATION_EASING","ANIMATION_DURATION","LOADING_INDICATOR_READY","LoadingIndicator","_rect","align","_createStates","eventTrigger","notify","_states","_state","setSize","_transit","stateId","_isHiding","_noHiding","scheduleHiding","fulfillHiding","init","_loadingIndicator","_eventTrigger","_skipLoadingIndicatorOptions","_stopCurrentHandling","_scheduleLoadingIndicatorHiding","_fulfillLoadingIndicatorHiding","showLoadingIndicator","hideLoadingIndicator","_onBeginUpdate","_optionChangedLocker","extenders","isLoading","silent","_canvas","_initialized","_dataIsReady","customize","_dataSourceChangedHandler","handler","_eventsMap","onLoadingIndicatorReady","_drawn","WHITE","BLACK","LIGHT_GREY","GREY_GREEN","SOME_GREY","RED","PRIMARY_TITLE_COLOR","SECONDARY_TITLE_COLOR","SOLID","TOP","RIGHT","BOTTOM","LEFT","CENTER","INSIDE","OUTSIDE","theme","isDefault","family","weight","redrawOnResize","primaryTitleColor","secondaryTitleColor","gridColor","axisColor","title","subtitle","loadingIndicator","export","active","tooltip","textAlignment","shared","interactive","legend","hoverMode","markerSize","columnCount","columnItemSpacing","rowItemSpacing","maxPointCountSupported","commonSeriesSettings","showInLegend","selectionMode","hoverStyle","selectionStyle","valueErrorBar","displayMode","lineWidth","edgeLength","label","horizontalOffset","verticalOffset","radialOffset","showForZeroValues","customizeText","maxLabelCount","connector","seriesSelectionMode","pointSelectionMode","equalRowHeight","dataPrepareSettings","checkTypeForAllData","convertToAxisDataType","sortingMethod","adaptiveLayout","keepLabels","_rtl","itemTextPosition","resolveLabelOverlapping","valueMarginsEnabled","placeholderSize","logarithmBase","discreteAxisDivisionMode","aggregatedPointsPosition","grid","minorGrid","minorTick","stripStyle","constantLineStyle","marker","tooltipEnabled","allowDragging","chart","stack","aggregation","symbol","scatter","stackedline","stackedspline","fullstackedline","fullstackedspline","stepline","area","stackedarea","fullstackedarea","fullstackedsplinearea","steparea","spline","splinearea","stackedsplinearea","bar","stackedbar","fullstackedbar","rangebar","rangearea","rangesplinearea","bubble","candlestick","reduction","stock","crosshair","verticalLine","horizontalLine","commonAxisSettings","multipleAxesSpacing","forceUserTickInterval","breakStyle","overlappingBehavior","indentFromAxis","horizontalAxis","axisDivisionFactor","staggeringSpacing","constantLines","verticalAxis","argumentAxis","endOnTick","workWeek","valueAxis","autoBreaksEnabled","maxAutoBreakCount","commonPaneSettings","scrollBar","adjustOnZoom","autoHidePointMarkers","rotated","synchronizeMultiAxes","stickyHovering","barGroupPadding","minBubbleSize","maxBubbleSize","zoomAndPan","dragBoxStyle","panKey","allowMouseWheel","allowTouchGestures","pie","minDiameter","_skipArgumentSorting","doughnut","donut","gauge","scale","hideFirstOrLast","rangeContainer","valueIndicators","_default","space","indent","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","showCustomBoundaryTicks","topIndent","separatorHeight","textLeftIndent","textTopIndent","selectedRangeColor","sliderMarker","invalidRangeColor","sliderHandle","shutter","background","behavior","snapToTicks","moveSelectedRangeByClick","manualRangeSelectionEnabled","allowSlidersSwap","callValueChanged","bottomIndent","inverted","borderWidth","layer","hoveredBorderColor","selectedBorderWidth","selectedBorderColor","hoveredColor","selectedColor","selectedStep","backStep","backColor","backOpacity","minSize","maxSize","hoveredBorderWidth","backgroundOpacity","controlBar","treeMap","tile","padding","sparkline","lineColor","areaOpacity","minColor","maxColor","barPositiveColor","barNegativeColor","winColor","lossColor","firstLastColor","pointSymbol","pointColor","pointSize","argumentField","valueField","winlossThreshold","showFirstLast","showMinMax","bullet","targetColor","targetWidth","showTarget","showZeroLevel","polar","closed","firstPointOnStartAngle","period","funnel","sortData","colorField","hoverEnabled","customizeTooltip","info","argument","valueText","algorithm","neckWidth","neckHeight","sankey","sourceField","targetField","weightField","useNodeColors","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","themeName","accentColor","markerColor","materialAccents","blue","lime","orange","purple","teal","accent","hasOwnProperty","defaultTheme","themesMapping","themesSchemeMapping","_extend","_each","currentThemeName","nextCacheUid","widgetsCache","getTheme","currentTheme","findThemeNameByName","scheme","findThemeNameByPlatform","platform","colorScheme","getThemeInfo","splitter","substring","registerThemeName","targetThemeName","themeInfo","registerTheme","patchTheme","mergeScalar","field","sourceValue","_value","mergeObject","patchAxes","section","patchMapLayers","addCacheItem","cacheUid","_cache","removeCacheItem","material","_Number","parseHorizontalAlignment","parseVerticalAlignment","DEFAULT_MARGIN","hasText","processTitleLength","pickMarginValue","validateMargin","checkRect","boundingRect","Title","_params","_hasText","processTitleOptions","_titleElement","_clipRect","_subtitleElement","_updateOptions","_updateStructure","clipRect","_updateTexts","titleBox","subtitleOptions","titleElement","subtitleElement","_baseLineCorrection","_updateBoundingRectAlignment","_boundingRect","update","themeOptions","userOptions","isLayoutChanged","_updateBoundingRect","draw","_correctTitleLength","_shiftSubtitle","getCorrectedLayoutOptions","isEmpty","srcBox","correction","priority","measure","fitRect","getOptions","changeLink","_title","_rootClassPrefix","_themeManager","postCtor","_dataSourceLoadErrorHandler","_dataSourceOptions","paginate","_updateDataSource","_refreshDataSource","_dataIsLoaded","_dataSource","isLoaded","_dataSourceItems","mathCeil","mathMax","mathMin","DEFAULT_HTML_GROUP_WIDTH","hideElement","$element","detach","getSpecialFormatOptions","specialFormat","argumentFormat","precision","percentPrecision","createTextHtml","removeElements","elements","Tooltip","_widgetRoot","widgetRoot","_widget","_textHtmlContainers","_wrapper","pointerEvents","addClass","_textGroupHtml","appendTo","_textHtml","_getContainer","closest","_template","_getTemplate","_textFontStyles","zIndex","_customizeTooltip","textGroupHtml","plaque","setTemplate","eventData","isMoving","templateCallback","template","useTemplate","formatObject","skipTemplate","textColor","htmlContainers","containerToTemplateRender","_riseEvents","_moveWrapper","customizeCloud","getComputedStyle","_eventData","setRendererOptions","normalizedCSS","_prepare","description","fontColor","forceEvents","_clear","_getCanvas","isCursorOnTooltip","isPointerOut","plaqueBBox","moveRoot","formatValue","_specialFormat","getLocation","isEnabled","isShared","containerBox","getDocumentElement","getDocument","pageXOffset","scrollLeft","pageYOffset","scrollTop","clientWidth","scrollHeight","clientHeight","_initTooltip","_disposeTooltip","_tooltip","_setTooltipRendererOptions","_getRendererOptions","_setTooltipOptions","onTooltipShown","onTooltipHidden","LN10","log","sqrt","atan2","_max","_cos","_sin","dateToMilliseconds","MAX_PIXEL_COUNT","_NaN","PANE_PADDING","getLog","getAdjustedLog10","raiseTo","power","normalizeAngle","degreesToRadians","getCosAndSin","angleInRadians","getDistance","x1","y1","x2","y2","diffX","diffY","getPower","toExponential","array","len","normalizeEnum","toLowerCase","setCanvasValues","originalTop","originalBottom","originalLeft","originalRight","normalizeBBoxField","normalizeBBox","rotateBBox","w2","h2","centerX","centerY","w2_","h2_","centerX_","centerY_","parseScalar","enumParser","stored","patchFontOptions","fontOptions","b","convertPolarToXY","centerCoords","normalizedRadius","cosSin","convertXYToPolar","phi","processSeriesTemplate","seriesTemplate","series","customizeSeries","nameField","generatedSeries","seriesOrder","nameFieldValue","orderedName","getCategoriesInfo","categories","startValue","endValue","swapBuf","categoriesValue","category","valueOf","indexStartValue","indexEndValue","visibleCategories","lastIdx","isRelativeHeightPane","pane","unit","normalizePanesHeight","panes","parsedHeight","relativeHeightPanes","weightSum","prev","weightHeightCount","emptyHeightPanes","emptyHeightCount","weightForEmpty","emptyWeightSum","updatePanesCanvases","distributedSpace","paneSpace","totalCustomSpace","cur","usefulSpace","startName","endName","calcLength","unique","getVerticallyShiftedAngularCoords","isPositive","horizontalOffset1","verticalOffset1","verticalOffset2","horizontalOffset2","mergeMarginOptions","opt1","opt2","checkInterval","percentStick","sizePointNormalState","getVizRangeObject","isArray","convertVisualRangeObject","visualRange","convertToVisualRange","getAddFunction","range","correctZeroLevel","dataType","rangeValue","marginValue","sign","axisType","getLogExt","raiseToExt","newValue","adjustVisualRange","wholeRange","dataRange","minDefined","maxDefined","nonDiscrete","rangeLength","categoriesInfo","_categoriesInfo","allowNegatives","linearThreshold","transformValue","rangesAreEqual","rangeFromOptions","every","pointInCanvas","isServerSide","Flags","reset","combineMaps","baseMap","thisMap","combineLists","baseList","thisList","buildTotalChanges","_totalChangesOrder","_optionChangesOrder","_layoutChangesOrder","_customChangesOrder","_themeDependentChanges","createChainExecutor","executeChain","_chain","copy","executor","expand","expander","addPlugin","_plugins","_fontFields","keys","func","codes","flags","_flags","has","replaceInherit","_inherit","inherit","plugins","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","_min","ALIGN_START","ALIGN_MIDDLE","ALIGN_END","horizontalAlignmentMap","verticalAlignmentMap","sideMap","slicersMap","BBOX_CEIL_CORRECTION","pickValue","normalizeLayoutOptions","side","primary","bringToEdge","secondary","header","getConjugateSide","getSlice","a","getShrink","processForward","minSide","isValid","processRectBackward","alignmentRect","primarySide","secondarySide","itemRect","processBackward","targetRect","itemFitRect","Layout","_targets","createTargets","targets","collection","sort","processWeakItems","headerItem","weakItem","makeHeader","processBackwardHeaderRect","rectCopy","weakElement","targetSize","weakSize","headerSize","weakRect","headerFitReact","headerRect","forward","cache","reverse","backward","backwardRect","targetSide","createEventTrigger","callbackGetter","changes","triggers","createEvent","triggerEvent","change","eventInfo","applyChanges","newName","actionSettings","arg","createIncidentOccurred","widgetName","createResizeHandler","timeout","_floor","_log","OPTION_RTL_ENABLED","SIZED_ELEMENT_CLASS","_option","getTrue","getFalse","areCanvasesDifferent","canvas1","canvas2","defaultOnIncidentOccurred","component","_eventsStrategy","hasEvent","pickPositiveValue","getEmptyComponent","emptyComponentConfig","callBase","sizedElement","_getDefaultSize","setStyle","setClass","insertElement","EmptyComponent","originalInherit","config","callForEach","functions","c","sizeIsValid","baseWidget","onIncidentOccurred","onDrawn","_getDefaultOptions","_useLinks","children","_changesLocker","_asyncFirstDrawing","_changes","_suspendChanges","_createThemeManager","setCallback","_requestChange","_renderElementAttributes","_initRenderer","linkTarget","_renderVisibilityChange","_attachVisibilityChangeHandlers","_toggleParentsScrollSubscription","_isVisible","_initEventTrigger","NAME","_initPlugins","_initCore","_getThemeManagerOptions","themeSection","_themeSection","_disposePlugins","_resumeChanges","_applyingChanges","_applyChanges","_changesApplied","_optionsQueue","_applyQueuedOptions","resolveItemsDeferred","_legend","_notify","_resolveDeferred","_getTemplatesItems","_collectTemplatesFromItems","getTemplatesDef","groups","getTemplatesGroups","extraItems","_getExtraTemplatesItems","launchRequest","doneRequest","_setGroupsVisibility","_changesApplying","syncRendering","done","visibility","queue","beginUpdate","action","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","_rootClass","_disposeRenderer","_getAnimationOptions","subscribe","$parents","parents","devices","real","_proxiedTargetParentsScrollHandler","bind","_$prevRootParents","_dispose","_disposed","_removeResizeHandler","_disposeCore","defaultCanvas","getSizeOfSide","getter","elementSize","elementWidth","elementHeight","__forceRender","_recreateSizeDependentObjects","_getMinSize","_getAlignmentRect","nextRect","_applySize","isScalar","_resizeHandler","_isUpdateAllowed","_getActionForUpdating","_clean","_render","_optionChanged","partialChanges","getPartialChangeOptionsName","pc","rtlEnabled","elementAttr","disabled","changedOption","fullName","sections","partialChangeOptionsName","op","_addOptionsNameForPartialUpdate","_checkOptionsForPartialUpdate","self","optionObject","some","optionKeys","_visibilityChanged","setTheme","isReady","_resetIsReady","currentPaletteName","_ceil","_isArray","HIGHLIGHTING_STEP","DEFAULT_PALETTE","officePalette","simpleSet","indicatingSet","gradientSet","palettes","office","pastel","bright","soft","ocean","vintage","violet","carmine","currentPalette","getPalette","palette","themeDefault","getAccentColor","RingBuf","buf","ind","res","getAlternateColorsStrategy","stepHighlight","useHighlight","paletteSteps","_reset","getAlteredPalette","getColor","generateColors","colors","getExtrapolateColorsStrategy","paletteCount","cycles","cycleIndex","cycleCount","hsl","diapason","minL","maxL","cycleMiddle","cycleDiff","fromHSL","toHex","getColorMixer","extendedPalette","distributeColors","colorsCount","startIndex","distribution","middleIndex","groupSize","getColorAndDistance","distance","extendPalette","colorInGroups","currentColorIndex","cleanColorIndices","keepLastColorInEnd","paletteWithEmptyColors","paletteLength","color1","c2","color2","blend","repeat","createPalette","themeDefaultPalette","paletteObj","_extensionStrategy","_currentColor","extensionMode","originalPalette","getNewColor","currentColor","newColor","alter","lightness","getLightness","getDiscretePalette","createDiscreteColors","colorCount","sourceCount","addColor","kl","kr","getGradientPalette","ratio","_getTheme","_addCacheItem","_removeCacheItem","getThemePart","_theme","pathItem","BaseThemeManager","ctor","_callback","_font","_current","refresh","_themeName","_defaultPalette","_initializeTheme","createDiscretePalette","createGradientPalette","_initializeFont"],"mappings":"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","file":"js/chunk-7095db4f.7441e005.js","sourcesContent":["/**\r\n * DevExtreme (esm/viz/core/export.js)\r\n * Version: 21.2.15\r\n * Build date: Fri Dec 08 2023\r\n *\r\n * Copyright (c) 2012 - 2023 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 excludeValidators: [\"disabled\"]\r\n }),\r\n exportedAction: widget._createActionByOption(\"onExported\", {\r\n excludeValidators: [\"disabled\"]\r\n }),\r\n fileSavingAction: widget._createActionByOption(\"onFileSaving\", {\r\n excludeValidators: [\"disabled\"]\r\n })\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/plaque.js)\r\n * Version: 21.2.15\r\n * Build date: Fri Dec 08 2023\r\n *\r\n * Copyright (c) 2012 - 2023 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 = [\"x\", \"y\", \"canvas\", \"offsetX\", \"offsetY\", \"offset\"];\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nvar math = Math;\r\nvar round = math.round;\r\nvar max = math.max;\r\nvar min = math.min;\r\nvar sin = math.sin;\r\nvar cos = math.cos;\r\nvar asin = math.asin;\r\nvar PI = math.PI;\r\nvar buildPath = function() {\r\n for (var _len = arguments.length, points = new Array(_len), _key = 0; _key < _len; _key++) {\r\n points[_key] = arguments[_key]\r\n }\r\n return points.join(\"\")\r\n};\r\n\r\nfunction getArc(cornerRadius, xDirection, yDirection) {\r\n return \"a \".concat(cornerRadius, \" \").concat(cornerRadius, \" 0 0 1 \").concat(xDirection * cornerRadius, \" \").concat(yDirection * cornerRadius)\r\n}\r\n\r\nfunction getAbsoluteArc(cornerRadius, x, y) {\r\n return \"A \".concat(cornerRadius, \" \").concat(cornerRadius, \" 0 0 1 \").concat(x, \" \").concat(y)\r\n}\r\n\r\nfunction rotateX(x, y, angle, x0, y0) {\r\n return (x - x0) * round(cos(angle)) + (y - y0) * round(sin(angle)) + x0\r\n}\r\n\r\nfunction rotateY(x, y, angle, x0, y0) {\r\n return -(x - x0) * round(sin(angle)) + (y - y0) * round(cos(angle)) + y0\r\n}\r\n\r\nfunction rotateSize(options, angle) {\r\n if (angle % 90 === 0 && angle % 180 !== 0) {\r\n return {\r\n width: options.height,\r\n height: options.width\r\n }\r\n }\r\n return options\r\n}\r\n\r\nfunction getCloudAngle(_ref, x, y, anchorX, anchorY) {\r\n var {\r\n width: width,\r\n height: height\r\n } = _ref;\r\n var halfWidth = width / 2;\r\n var halfHeight = height / 2;\r\n var xr = Math.ceil(x + halfWidth);\r\n var xl = Math.floor(x - halfWidth);\r\n var yt = Math.floor(y - halfHeight);\r\n var yb = Math.ceil(y + halfHeight);\r\n if (anchorX < xl && anchorY < yt || anchorX >= xl && anchorX <= xr && anchorY < yt) {\r\n return 270\r\n }\r\n if (anchorX > xr && anchorY > yb || anchorX >= xl && anchorX <= xr && anchorY > yb) {\r\n return 90\r\n } else if (anchorX < xl && anchorY > yb || anchorX < xl && anchorY >= yt && anchorY <= yb) {\r\n return 180\r\n }\r\n return 0\r\n}\r\n\r\nfunction getCloudPoints(_ref2, x, y, anchorX, anchorY, _ref3, bounded) {\r\n var {\r\n width: width,\r\n height: height\r\n } = _ref2;\r\n var {\r\n arrowWidth: arrowWidth,\r\n cornerRadius: cornerRadius = 0\r\n } = _ref3;\r\n var halfArrowWidth = arrowWidth / 2;\r\n var halfWidth = width / 2;\r\n var halfHeight = height / 2;\r\n var xr = Math.ceil(x + halfWidth);\r\n var xl = Math.floor(x - halfWidth);\r\n var yt = Math.floor(y - halfHeight);\r\n var yb = Math.ceil(y + halfHeight);\r\n var leftTopCorner = [xl, yt];\r\n var rightTopCorner = [xr, yt];\r\n var rightBottomCorner = [xr, yb];\r\n var leftBottomCorner = [xl, yb];\r\n var arrowX = anchorX <= xl ? xl : xr <= anchorX ? xr : anchorX;\r\n var arrowY = anchorY <= yt ? yt : yb <= anchorY ? yb : anchorY;\r\n var arrowBaseBottom = min(arrowY + halfArrowWidth, yb);\r\n var arrowBaseTop = max(arrowY - halfArrowWidth, yt);\r\n var arrowBaseLeft = max(arrowX - halfArrowWidth, xl);\r\n cornerRadius = Math.min(width / 2, height / 2, cornerRadius);\r\n var points;\r\n leftTopCorner[1] += cornerRadius;\r\n rightTopCorner[0] -= cornerRadius;\r\n rightBottomCorner[1] -= cornerRadius;\r\n leftBottomCorner[0] += cornerRadius;\r\n if (!bounded || xl <= anchorX && anchorX <= xr && yt <= anchorY && anchorY <= yb) {\r\n points = buildPath(leftTopCorner, getArc(cornerRadius, 1, -1), \"L\", rightTopCorner, getArc(cornerRadius, 1, 1), \"L\", rightBottomCorner, getArc(cornerRadius, -1, 1), \"L\", leftBottomCorner, getArc(cornerRadius, -1, -1))\r\n } else if (anchorX > xr && anchorY < yt) {\r\n var arrowAngle = arrowWidth / cornerRadius || 0;\r\n var angle = PI / 4 + arrowAngle / 2;\r\n var endAngle = PI / 4 - arrowAngle / 2;\r\n var arrowEndPointX = rightTopCorner[0] + cos(endAngle) * cornerRadius;\r\n var arrowEndPointY = rightTopCorner[1] + (1 - sin(endAngle)) * cornerRadius;\r\n var arrowArc = buildPath(\"L\", rightTopCorner, getArc(cornerRadius, cos(angle), 1 - sin(angle)), \"L\", [anchorX, anchorY, arrowEndPointX, arrowEndPointY], getAbsoluteArc(cornerRadius, rightTopCorner[0] + cornerRadius, rightTopCorner[1] + cornerRadius));\r\n if (Math.abs(angle) > PI / 2) {\r\n arrowArc = buildPath(\"L\", [arrowBaseLeft, yt, anchorX, anchorY, xr, arrowBaseBottom])\r\n }\r\n points = buildPath(leftTopCorner, getArc(cornerRadius, 1, -1), arrowArc, \"L\", rightBottomCorner, getArc(cornerRadius, -1, 1), \"L\", leftBottomCorner, getArc(cornerRadius, -1, -1))\r\n } else if (anchorX > xr && anchorY >= yt && anchorY <= yb) {\r\n var _arrowArc;\r\n if (arrowBaseTop >= rightTopCorner[1] + cornerRadius && arrowBaseBottom <= rightBottomCorner[1]) {\r\n _arrowArc = buildPath(getArc(cornerRadius, 1, 1), \"L\", [xr, arrowBaseTop, anchorX, anchorY, xr, arrowBaseBottom], \"L\", rightBottomCorner, getArc(cornerRadius, -1, 1))\r\n } else if (arrowBaseTop < rightTopCorner[1] + cornerRadius && arrowBaseBottom >= rightTopCorner[1] + cornerRadius && arrowBaseBottom <= rightBottomCorner[1]) {\r\n var arrowWidthRest = rightTopCorner[1] + cornerRadius - arrowBaseTop;\r\n var _angle = arrowWidthRest / cornerRadius;\r\n var arrowBaseTopX = rightTopCorner[0] + cos(_angle) * cornerRadius;\r\n var arrowBaseTopY = rightTopCorner[1] + (1 - sin(_angle)) * cornerRadius;\r\n _arrowArc = buildPath(getArc(cornerRadius, cos(_angle), 1 - sin(_angle)), \"L\", [arrowBaseTopX, arrowBaseTopY, anchorX, anchorY, xr, arrowBaseBottom], \"L\", rightBottomCorner, getArc(cornerRadius, -1, 1))\r\n } else if (arrowBaseTop < rightTopCorner[1] + cornerRadius && arrowBaseBottom < rightTopCorner[1] + cornerRadius) {\r\n var _arrowWidthRest = rightTopCorner[1] + cornerRadius - arrowBaseTop;\r\n var _arrowAngle = _arrowWidthRest / cornerRadius;\r\n var _angle2 = _arrowAngle;\r\n var _arrowBaseTopX = rightTopCorner[0] + cos(_angle2) * cornerRadius;\r\n var _arrowBaseTopY = rightTopCorner[1] + (1 - sin(_angle2)) * cornerRadius;\r\n var bottomAngle = Math.sin((rightTopCorner[1] + cornerRadius - arrowBaseBottom) / cornerRadius);\r\n var arrowBaseBottomX = rightTopCorner[0] + cornerRadius * cos(bottomAngle);\r\n var arrowBaseBottomY = rightTopCorner[1] + cornerRadius * (1 - sin(bottomAngle));\r\n _arrowArc = buildPath(getArc(cornerRadius, cos(_angle2), 1 - sin(_angle2)), \"L\", [_arrowBaseTopX, _arrowBaseTopY, anchorX, anchorY, arrowBaseBottomX, arrowBaseBottomY], getAbsoluteArc(cornerRadius, rightTopCorner[0] + cornerRadius, rightTopCorner[1] + cornerRadius), \"L\", rightBottomCorner, getArc(cornerRadius, -1, 1))\r\n } else if (arrowBaseTop <= rightTopCorner[1] + cornerRadius && arrowBaseBottom >= rightBottomCorner[1]) {\r\n var topAngle = asin((rightTopCorner[1] + cornerRadius - arrowBaseTop) / cornerRadius);\r\n var _arrowBaseTopX2 = rightTopCorner[0] + cornerRadius * cos(topAngle);\r\n var _arrowBaseTopY2 = rightTopCorner[1] + cornerRadius * (1 - sin(topAngle));\r\n var _bottomAngle = asin((arrowBaseBottom - rightBottomCorner[1]) / cornerRadius);\r\n var _arrowBaseBottomX = rightBottomCorner[0] + cornerRadius * (cos(_bottomAngle) - 1);\r\n var _arrowBaseBottomY = rightBottomCorner[1] + cornerRadius * sin(_bottomAngle);\r\n _arrowArc = buildPath(getArc(cornerRadius, cos(topAngle), 1 - sin(topAngle)), \"L\", [_arrowBaseTopX2, _arrowBaseTopY2, anchorX, anchorY, _arrowBaseBottomX, _arrowBaseBottomY], getAbsoluteArc(cornerRadius, rightBottomCorner[0] - cornerRadius, rightBottomCorner[1] + cornerRadius))\r\n } else if (arrowBaseTop > rightTopCorner[1] + cornerRadius && arrowBaseTop <= rightBottomCorner[1] && arrowBaseBottom > rightBottomCorner[1]) {\r\n var _bottomAngle2 = asin((arrowBaseBottom - rightBottomCorner[1]) / cornerRadius);\r\n var _arrowBaseBottomX2 = rightBottomCorner[0] + cornerRadius * (cos(_bottomAngle2) - 1);\r\n var _arrowBaseBottomY2 = rightBottomCorner[1] + cornerRadius * sin(_bottomAngle2);\r\n _arrowArc = buildPath(getArc(cornerRadius, 1, 1), \"L\", [xr, arrowBaseTop, anchorX, anchorY, _arrowBaseBottomX2, _arrowBaseBottomY2], getAbsoluteArc(cornerRadius, rightBottomCorner[0] - cornerRadius, rightBottomCorner[1] + cornerRadius))\r\n } else if (arrowBaseTop > rightTopCorner[1] + cornerRadius && arrowBaseBottom > rightBottomCorner[1]) {\r\n var _bottomAngle3 = asin((arrowBaseBottom - rightBottomCorner[1]) / cornerRadius);\r\n var _arrowBaseBottomX3 = rightBottomCorner[0] + cornerRadius * (cos(_bottomAngle3) - 1);\r\n var _arrowBaseBottomY3 = rightBottomCorner[1] + cornerRadius * sin(_bottomAngle3);\r\n var _topAngle = asin((arrowBaseTop - rightBottomCorner[1]) / cornerRadius);\r\n var _arrowBaseTopX3 = rightBottomCorner[0] + cornerRadius * (cos(_topAngle) - 1);\r\n var _arrowBaseTopY3 = rightBottomCorner[1] + cornerRadius * sin(_topAngle);\r\n _arrowArc = buildPath(getArc(cornerRadius, 1, 1), \"L\", rightBottomCorner, getArc(cornerRadius, cos(_topAngle) - 1, sin(_topAngle)), \"L\", [_arrowBaseTopX3, _arrowBaseTopY3, anchorX, anchorY, _arrowBaseBottomX3, _arrowBaseBottomY3], getAbsoluteArc(cornerRadius, rightBottomCorner[0] - cornerRadius, rightBottomCorner[1] + cornerRadius))\r\n }\r\n points = buildPath(leftTopCorner, getArc(cornerRadius, 1, -1), \"L\", rightTopCorner, _arrowArc, \"L\", leftBottomCorner, getArc(cornerRadius, -1, -1))\r\n }\r\n return buildPath(\"M\", points, \"Z\")\r\n}\r\nexport class Plaque {\r\n constructor(options, widget, root, contentTemplate) {\r\n var bounded = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : true;\r\n var measureContent = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : (_, g) => g.getBBox();\r\n var moveContentGroup = arguments.length > 6 && void 0 !== arguments[6] ? arguments[6] : (_, g, x, y) => g.move(x, y);\r\n this.widget = widget;\r\n this.options = options;\r\n this.root = root;\r\n this.contentTemplate = contentTemplate;\r\n this.bonded = bounded;\r\n this.measureContent = measureContent;\r\n this.moveContentGroup = moveContentGroup\r\n }\r\n draw(_ref4) {\r\n var {\r\n x: anchorX,\r\n y: anchorY,\r\n canvas: canvas = {},\r\n offsetX: offsetX,\r\n offsetY: offsetY,\r\n offset: offset = 0\r\n } = _ref4, restProps = _objectWithoutPropertiesLoose(_ref4, _excluded);\r\n var options = this.options;\r\n var {\r\n x: x,\r\n y: y\r\n } = options;\r\n var bounds_xl = canvas.left,\r\n bounds_xr = canvas.width - canvas.right,\r\n bounds_width = canvas.width - canvas.right - canvas.left,\r\n bounds_yt = canvas.top,\r\n bounds_yb = canvas.height - canvas.bottom,\r\n bounds_height = canvas.height - canvas.bottom - canvas.top;\r\n if (!(isDefined(anchorX) && isDefined(anchorY)) && !(isDefined(x) && isDefined(y))) {\r\n return false\r\n }\r\n if (isDefined(anchorX) && (anchorX < bounds_xl || bounds_xr < anchorX || anchorY < bounds_yt || bounds_yb < anchorY)) {\r\n return false\r\n }\r\n if (!this._root) {\r\n this._draw()\r\n }\r\n var shadowSettings = extend({\r\n x: \"-50%\",\r\n y: \"-50%\",\r\n width: \"200%\",\r\n height: \"200%\"\r\n }, options.shadow);\r\n var contentWidth = options.width > 0 ? options.width : null;\r\n var contentHeight = options.height > 0 ? options.height : null;\r\n var onRender = () => {\r\n var _this$_root;\r\n var bBox = this._contentBBox = this.measureContent(this.widget, this._contentGroup);\r\n var size = this._size = {\r\n width: max(contentWidth, bBox.width) + 2 * options.paddingLeftRight,\r\n height: max(contentHeight, bBox.height) + 2 * options.paddingTopBottom,\r\n offset: offset\r\n };\r\n var xOff = shadowSettings.offsetX;\r\n var yOff = shadowSettings.offsetY;\r\n var blur = 2 * shadowSettings.blur + 1;\r\n var lm = max(blur - xOff, 0);\r\n var rm = max(blur + xOff, 0);\r\n var tm = max(blur - yOff, 0);\r\n var bm = max(blur + yOff, 0);\r\n this.margins = {\r\n lm: lm,\r\n rm: rm,\r\n tm: tm,\r\n bm: bm\r\n };\r\n if (!isDefined(x)) {\r\n if (isDefined(offsetX)) {\r\n x = anchorX + offsetX\r\n } else if (bounds_width < size.width) {\r\n x = round(bounds_xl + bounds_width / 2)\r\n } else {\r\n x = min(max(anchorX, Math.ceil(bounds_xl + size.width / 2 + lm)), Math.floor(bounds_xr - size.width / 2 - rm))\r\n }\r\n } else {\r\n x += offsetX || 0;\r\n if (!isDefined(anchorX)) {\r\n anchorX = x\r\n }\r\n }\r\n if (!isDefined(y)) {\r\n if (isDefined(offsetY)) {\r\n y = anchorY + offsetY\r\n } else {\r\n var y_top = anchorY - options.arrowLength - size.height / 2 - offset;\r\n var y_bottom = anchorY + options.arrowLength + size.height / 2 + offset;\r\n if (bounds_height < size.height + options.arrowLength) {\r\n y = round(bounds_yt + size.height / 2)\r\n } else if (y_top - size.height / 2 - tm < bounds_yt) {\r\n if (y_bottom + size.height / 2 + bm < bounds_yb) {\r\n y = y_bottom;\r\n anchorY += offset\r\n } else {\r\n y = round(bounds_yt + size.height / 2)\r\n }\r\n } else {\r\n y = y_top;\r\n anchorY -= offset\r\n }\r\n }\r\n } else {\r\n y += offsetY || 0;\r\n if (!isDefined(anchorY)) {\r\n anchorY = y + size.height / 2\r\n }\r\n }\r\n this.anchorX = anchorX;\r\n this.anchorY = anchorY;\r\n this.move(x, y);\r\n null === (_this$_root = this._root) || void 0 === _this$_root ? void 0 : _this$_root.append(this.root)\r\n };\r\n if (this.contentTemplate.render) {\r\n this.contentTemplate.render({\r\n model: options,\r\n container: this._contentGroup.element,\r\n onRendered: onRender\r\n })\r\n } else {\r\n return this.contentTemplate(_extends({\r\n group: this._contentGroup,\r\n onRender: onRender\r\n }, restProps))\r\n }\r\n return true\r\n }\r\n _draw() {\r\n var renderer = this.widget._renderer;\r\n var options = this.options;\r\n var shadowSettings = extend({\r\n x: \"-50%\",\r\n y: \"-50%\",\r\n width: \"200%\",\r\n height: \"200%\"\r\n }, options.shadow);\r\n var shadow = this._shadow = renderer.shadowFilter().attr(shadowSettings);\r\n var cloudSettings = {\r\n opacity: options.opacity,\r\n \"stroke-width\": 0,\r\n fill: options.color\r\n };\r\n var borderOptions = options.border || {};\r\n if (borderOptions.visible) {\r\n extend(cloudSettings, {\r\n \"stroke-width\": borderOptions.width,\r\n stroke: borderOptions.color,\r\n \"stroke-opacity\": borderOptions.opacity,\r\n dashStyle: borderOptions.dashStyle\r\n })\r\n }\r\n var group = this._root = renderer.g().append(this.root);\r\n if (options.type) {\r\n group.attr({\r\n class: \"dxc-\".concat(options.type, \"-annotation\")\r\n })\r\n }\r\n var cloudGroup = renderer.g().attr({\r\n filter: shadow.id\r\n }).append(group);\r\n this._cloud = renderer.path([], \"area\").attr(cloudSettings).sharp().append(cloudGroup);\r\n this._contentGroup = renderer.g().append(group)\r\n }\r\n getBBox() {\r\n var size = this._size || {};\r\n var margins = this.margins || {};\r\n var rotationAngle = getCloudAngle(size, this.x, this.y, this.anchorX, this.anchorY);\r\n return {\r\n x: Math.floor(this.x - size.width / 2 - margins.lm),\r\n y: Math.floor(this.y - size.height / 2 - margins.tm - (270 === rotationAngle ? this.options.arrowLength : 0)),\r\n width: size.width + margins.lm + margins.rm,\r\n height: size.height + margins.tm + margins.bm + (90 === rotationAngle || 270 === rotationAngle ? this.options.arrowLength : 0)\r\n }\r\n }\r\n clear() {\r\n if (this._root) {\r\n this._root.remove();\r\n this._shadow.remove();\r\n this._root = null\r\n }\r\n return this\r\n }\r\n customizeCloud(attr) {\r\n if (this._cloud) {\r\n this._cloud.attr(attr)\r\n }\r\n }\r\n moveRoot(x, y) {\r\n if (this._root) {\r\n this._root.move(x, y)\r\n }\r\n }\r\n move(x, y) {\r\n x = round(x);\r\n y = round(y);\r\n this.x = x;\r\n this.y = y;\r\n var rotationAngle = getCloudAngle(this._size, x, y, this.anchorX, this.anchorY);\r\n var radRotationAngle = rotationAngle * PI / 180;\r\n this._cloud.attr({\r\n d: getCloudPoints(rotateSize(this._size, rotationAngle), x, y, rotateX(this.anchorX, this.anchorY, radRotationAngle, x, y), rotateY(this.anchorX, this.anchorY, radRotationAngle, x, y), this.options, this.bonded)\r\n }).rotate(rotationAngle, x, y);\r\n this.moveContentGroup(this.widget, this._contentGroup, x - this._contentBBox.x - this._contentBBox.width / 2, y - this._contentBBox.y - this._contentBBox.height / 2)\r\n }\r\n hitTest(x, y) {\r\n var {\r\n width: width,\r\n height: height\r\n } = this._size || {};\r\n return Math.abs(x - this.x) <= width / 2 && Math.abs(y - this.y) <= height / 2\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/viz/core/layout_element.js)\r\n * Version: 21.2.15\r\n * Build date: Fri Dec 08 2023\r\n *\r\n * Copyright (c) 2012 - 2023 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/renderers/animation.js)\r\n * Version: 21.2.15\r\n * Build date: Fri Dec 08 2023\r\n *\r\n * Copyright (c) 2012 - 2023 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.15\r\n * Build date: Fri Dec 08 2023\r\n *\r\n * Copyright (c) 2012 - 2023 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/loading_indicator.js)\r\n * Version: 21.2.15\r\n * Build date: Fri Dec 08 2023\r\n *\r\n * Copyright (c) 2012 - 2023 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/themes/generic.light.js)\r\n * Version: 21.2.15\r\n * Build date: Fri Dec 08 2023\r\n *\r\n * Copyright (c) 2012 - 2023 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 aggregatedPointsPosition: \"betweenTicks\",\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.15\r\n * Build date: Fri Dec 08 2023\r\n *\r\n * Copyright (c) 2012 - 2023 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.15\r\n * Build date: Fri Dec 08 2023\r\n *\r\n * Copyright (c) 2012 - 2023 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.15\r\n * Build date: Fri Dec 08 2023\r\n *\r\n * Copyright (c) 2012 - 2023 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.15\r\n * Build date: Fri Dec 08 2023\r\n *\r\n * Copyright (c) 2012 - 2023 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.15\r\n * Build date: Fri Dec 08 2023\r\n *\r\n * Copyright (c) 2012 - 2023 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.15\r\n * Build date: Fri Dec 08 2023\r\n *\r\n * Copyright (c) 2012 - 2023 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.15\r\n * Build date: Fri Dec 08 2023\r\n *\r\n * Copyright (c) 2012 - 2023 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.15\r\n * Build date: Fri Dec 08 2023\r\n *\r\n * Copyright (c) 2012 - 2023 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.15\r\n * Build date: Fri Dec 08 2023\r\n *\r\n * Copyright (c) 2012 - 2023 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/title.js)\r\n * Version: 21.2.15\r\n * Build date: Fri Dec 08 2023\r\n *\r\n * Copyright (c) 2012 - 2023 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/data_source.js)\r\n * Version: 21.2.15\r\n * Build date: Fri Dec 08 2023\r\n *\r\n * Copyright (c) 2012 - 2023 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/core/tooltip.js)\r\n * Version: 21.2.15\r\n * Build date: Fri Dec 08 2023\r\n *\r\n * Copyright (c) 2012 - 2023 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 getHeight\r\n} from \"../../core/utils/size\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport {\r\n getWindow\r\n} from \"../../core/utils/window\";\r\nimport {\r\n replaceWith\r\n} from \"../../core/utils/dom\";\r\nimport {\r\n camelize\r\n} from \"../../core/utils/inflector\";\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n Renderer\r\n} from \"./renderers/renderer\";\r\nimport {\r\n isFunction,\r\n isPlainObject,\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n patchFontOptions,\r\n normalizeEnum\r\n} from \"./utils\";\r\nimport formatHelper from \"../../format_helper\";\r\nimport {\r\n Plaque\r\n} from \"./plaque\";\r\nvar format = formatHelper.format;\r\nvar mathCeil = Math.ceil;\r\nvar mathMax = Math.max;\r\nvar mathMin = Math.min;\r\nvar window = getWindow();\r\nvar DEFAULT_HTML_GROUP_WIDTH = 3e3;\r\n\r\nfunction hideElement($element) {\r\n $element.css({\r\n left: \"-9999px\"\r\n }).detach()\r\n}\r\n\r\nfunction getSpecialFormatOptions(options, specialFormat) {\r\n var result = options;\r\n switch (specialFormat) {\r\n case \"argument\":\r\n result = {\r\n format: options.argumentFormat\r\n };\r\n break;\r\n case \"percent\":\r\n result = {\r\n format: {\r\n type: \"percent\",\r\n precision: options.format && options.format.percentPrecision\r\n }\r\n }\r\n }\r\n return result\r\n}\r\n\r\nfunction createTextHtml() {\r\n return $(\"
\").css({\r\n position: \"relative\",\r\n display: \"inline-block\",\r\n padding: 0,\r\n margin: 0,\r\n border: \"0px solid transparent\"\r\n })\r\n}\r\n\r\nfunction removeElements(elements) {\r\n elements.forEach(el => el.remove())\r\n}\r\nexport var Tooltip = function(params) {\r\n this._eventTrigger = params.eventTrigger;\r\n this._widgetRoot = params.widgetRoot;\r\n this._widget = params.widget;\r\n this._textHtmlContainers = [];\r\n this._wrapper = $(\"
\").css({\r\n position: \"absolute\",\r\n overflow: \"hidden\",\r\n pointerEvents: \"none\"\r\n }).addClass(params.cssClass);\r\n var renderer = this._renderer = new Renderer({\r\n pathModified: params.pathModified,\r\n container: this._wrapper[0]\r\n });\r\n var root = renderer.root;\r\n root.attr({\r\n \"pointer-events\": \"none\"\r\n });\r\n this._text = renderer.text(void 0, 0, 0);\r\n this._textGroupHtml = $(\"
\").css({\r\n position: \"absolute\",\r\n padding: 0,\r\n margin: 0,\r\n border: \"0px solid transparent\"\r\n }).appendTo(this._wrapper);\r\n this._textHtml = createTextHtml().appendTo(this._textGroupHtml)\r\n};\r\nTooltip.prototype = {\r\n constructor: Tooltip,\r\n dispose: function() {\r\n this._wrapper.remove();\r\n this._renderer.dispose();\r\n this._options = this._widgetRoot = null\r\n },\r\n _getContainer: function() {\r\n var options = this._options;\r\n var container = $(this._widgetRoot).closest(options.container);\r\n if (0 === container.length) {\r\n container = $(options.container)\r\n }\r\n return (container.length ? container : $(\"body\")).get(0)\r\n },\r\n setTemplate(contentTemplate) {\r\n this._template = contentTemplate ? this._widget._getTemplate(contentTemplate) : null\r\n },\r\n setOptions: function(options) {\r\n options = options || {};\r\n var that = this;\r\n that._options = options;\r\n that._textFontStyles = patchFontOptions(options.font);\r\n that._textFontStyles.color = that._textFontStyles.fill;\r\n that._wrapper.css({\r\n zIndex: options.zIndex\r\n });\r\n that._customizeTooltip = options.customizeTooltip;\r\n var textGroupHtml = that._textGroupHtml;\r\n if (this.plaque) {\r\n this.plaque.clear()\r\n }\r\n this.setTemplate(options.contentTemplate);\r\n var pointerEvents = options.interactive ? \"auto\" : \"none\";\r\n if (options.interactive) {\r\n this._renderer.root.css({\r\n \"-ms-user-select\": \"auto\",\r\n \"-moz-user-select\": \"auto\",\r\n \"-webkit-user-select\": \"auto\"\r\n })\r\n }\r\n this.plaque = new Plaque({\r\n opacity: that._options.opacity,\r\n color: that._options.color,\r\n border: that._options.border,\r\n paddingLeftRight: that._options.paddingLeftRight,\r\n paddingTopBottom: that._options.paddingTopBottom,\r\n arrowLength: that._options.arrowLength,\r\n arrowWidth: 20,\r\n shadow: that._options.shadow,\r\n cornerRadius: that._options.cornerRadius\r\n }, that, that._renderer.root, _ref => {\r\n var {\r\n group: group,\r\n onRender: onRender,\r\n eventData: eventData,\r\n isMoving: isMoving,\r\n templateCallback: templateCallback = (() => {})\r\n } = _ref;\r\n var state = that._state;\r\n if (!isMoving) {\r\n var template = that._template;\r\n var useTemplate = template && !state.formatObject.skipTemplate;\r\n if (state.html || useTemplate) {\r\n textGroupHtml.css({\r\n color: state.textColor,\r\n width: DEFAULT_HTML_GROUP_WIDTH,\r\n pointerEvents: pointerEvents\r\n });\r\n if (useTemplate) {\r\n var htmlContainers = that._textHtmlContainers;\r\n var containerToTemplateRender = createTextHtml().appendTo(that._textGroupHtml);\r\n htmlContainers.push(containerToTemplateRender);\r\n template.render({\r\n model: state.formatObject,\r\n container: containerToTemplateRender,\r\n onRendered: () => {\r\n removeElements(htmlContainers.splice(0, htmlContainers.length - 1));\r\n that._textHtml = replaceWith(that._textHtml, containerToTemplateRender);\r\n state.html = that._textHtml.html();\r\n if (0 === getWidth(that._textHtml) && 0 === getHeight(that._textHtml)) {\r\n this.plaque.clear();\r\n templateCallback(false);\r\n return\r\n }\r\n onRender();\r\n that._riseEvents(eventData);\r\n that._moveWrapper();\r\n that.plaque.customizeCloud({\r\n fill: state.color,\r\n stroke: state.borderColor,\r\n \"pointer-events\": pointerEvents\r\n });\r\n templateCallback(true);\r\n that._textHtmlContainers = []\r\n }\r\n });\r\n return\r\n } else {\r\n that._text.attr({\r\n text: \"\"\r\n });\r\n that._textHtml.html(state.html)\r\n }\r\n } else {\r\n that._text.css({\r\n fill: state.textColor\r\n }).attr({\r\n text: state.text,\r\n class: options.cssClass,\r\n \"pointer-events\": pointerEvents\r\n }).append(group.attr({\r\n align: options.textAlignment\r\n }))\r\n }\r\n that._riseEvents(eventData);\r\n that.plaque.customizeCloud({\r\n fill: state.color,\r\n stroke: state.borderColor,\r\n \"pointer-events\": pointerEvents\r\n })\r\n }\r\n onRender();\r\n that._moveWrapper();\r\n return true\r\n }, true, (tooltip, g) => {\r\n var state = tooltip._state;\r\n if (state.html) {\r\n var bBox;\r\n var getComputedStyle = window.getComputedStyle;\r\n if (getComputedStyle) {\r\n bBox = getComputedStyle(that._textHtml.get(0));\r\n bBox = {\r\n x: 0,\r\n y: 0,\r\n width: mathCeil(parseFloat(bBox.width)),\r\n height: mathCeil(parseFloat(bBox.height))\r\n }\r\n } else {\r\n bBox = that._textHtml.get(0).getBoundingClientRect();\r\n bBox = {\r\n x: 0,\r\n y: 0,\r\n width: mathCeil(bBox.width ? bBox.width : bBox.right - bBox.left),\r\n height: mathCeil(bBox.height ? bBox.height : bBox.bottom - bBox.top)\r\n }\r\n }\r\n return bBox\r\n }\r\n return g.getBBox()\r\n }, (tooltip, g, x, y) => {\r\n var state = tooltip._state;\r\n if (state.html) {\r\n that._textGroupHtml.css({\r\n left: x,\r\n top: y\r\n })\r\n } else {\r\n g.move(x, y)\r\n }\r\n });\r\n return that\r\n },\r\n _riseEvents: function(eventData) {\r\n this._eventData && this._eventTrigger(\"tooltipHidden\", this._eventData);\r\n this._eventData = eventData;\r\n this._eventTrigger(\"tooltipShown\", this._eventData)\r\n },\r\n setRendererOptions: function(options) {\r\n this._renderer.setOptions(options);\r\n this._textGroupHtml.css({\r\n direction: options.rtl ? \"rtl\" : \"ltr\"\r\n });\r\n return this\r\n },\r\n update: function(options) {\r\n this.setOptions(options);\r\n hideElement(this._wrapper);\r\n var normalizedCSS = {};\r\n for (var name in this._textFontStyles) {\r\n normalizedCSS[camelize(name)] = this._textFontStyles[name]\r\n }\r\n this._textGroupHtml.css(normalizedCSS);\r\n this._text.css(this._textFontStyles);\r\n this._eventData = null;\r\n return this\r\n },\r\n _prepare: function(formatObject, state) {\r\n var customizeTooltip = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : this._customizeTooltip;\r\n var options = this._options;\r\n var customize = {};\r\n if (isFunction(customizeTooltip)) {\r\n customize = customizeTooltip.call(formatObject, formatObject);\r\n customize = isPlainObject(customize) ? customize : {};\r\n if (\"text\" in customize) {\r\n state.text = isDefined(customize.text) ? String(customize.text) : \"\"\r\n }\r\n if (\"html\" in customize) {\r\n state.html = isDefined(customize.html) ? String(customize.html) : \"\"\r\n }\r\n }\r\n if (!(\"text\" in state) && !(\"html\" in state)) {\r\n state.text = formatObject.valueText || formatObject.description || \"\"\r\n }\r\n state.color = customize.color || options.color;\r\n state.borderColor = customize.borderColor || (options.border || {}).color;\r\n state.textColor = customize.fontColor || (this._textFontStyles || {}).color;\r\n return !!state.text || !!state.html || !!this._template\r\n },\r\n show: function(formatObject, params, eventData, customizeTooltip, templateCallback) {\r\n if (this._options.forceEvents) {\r\n eventData.x = params.x;\r\n eventData.y = params.y - params.offset;\r\n this._riseEvents(eventData);\r\n return true\r\n }\r\n var state = {\r\n formatObject: formatObject,\r\n eventData: eventData,\r\n templateCallback: templateCallback\r\n };\r\n if (!this._prepare(formatObject, state, customizeTooltip)) {\r\n return false\r\n }\r\n this._state = state;\r\n this._wrapper.appendTo(this._getContainer());\r\n this._clear();\r\n var parameters = extend({}, this._options, {\r\n canvas: this._getCanvas()\r\n }, state, {\r\n x: params.x,\r\n y: params.y,\r\n offset: params.offset\r\n });\r\n return this.plaque.clear().draw(parameters)\r\n },\r\n isCursorOnTooltip: function(x, y) {\r\n if (this._options.interactive) {\r\n var box = this.plaque.getBBox();\r\n return x > box.x && x < box.x + box.width && y > box.y && y < box.y + box.height\r\n }\r\n return false\r\n },\r\n hide: function(isPointerOut) {\r\n hideElement(this._wrapper);\r\n if (this._eventData) {\r\n this._eventTrigger(\"tooltipHidden\", this._options.forceEvents ? extend({\r\n isPointerOut: isPointerOut\r\n }, this._eventData) : this._eventData);\r\n this._clear();\r\n this._eventData = null\r\n }\r\n },\r\n _clear() {\r\n this._textHtml.empty()\r\n },\r\n move: function(x, y, offset) {\r\n this.plaque.draw({\r\n x: x,\r\n y: y,\r\n offset: offset,\r\n canvas: this._getCanvas(),\r\n isMoving: true\r\n })\r\n },\r\n _moveWrapper: function() {\r\n var plaqueBBox = this.plaque.getBBox();\r\n this._renderer.resize(plaqueBBox.width, plaqueBBox.height);\r\n var offset = this._wrapper.css({\r\n left: 0,\r\n top: 0\r\n }).offset();\r\n var left = plaqueBBox.x;\r\n var top = plaqueBBox.y;\r\n this._wrapper.css({\r\n left: left - offset.left,\r\n top: top - offset.top\r\n });\r\n this.plaque.moveRoot(-left, -top);\r\n if (this._state.html) {\r\n this._textHtml.css({\r\n left: -left,\r\n top: -top\r\n });\r\n this._textGroupHtml.css({\r\n width: mathCeil(getWidth(this._textHtml))\r\n })\r\n }\r\n },\r\n formatValue: function(value, _specialFormat) {\r\n var options = _specialFormat ? getSpecialFormatOptions(this._options, _specialFormat) : this._options;\r\n return format(value, options.format)\r\n },\r\n getOptions() {\r\n return this._options\r\n },\r\n getLocation: function() {\r\n return normalizeEnum(this._options.location)\r\n },\r\n isEnabled: function() {\r\n return !!this._options.enabled || !!this._options.forceEvents\r\n },\r\n isShared: function() {\r\n return !!this._options.shared\r\n },\r\n _getCanvas: function() {\r\n var container = this._getContainer();\r\n var containerBox = container.getBoundingClientRect();\r\n var html = domAdapter.getDocumentElement();\r\n var document = domAdapter.getDocument();\r\n var left = window.pageXOffset || html.scrollLeft || 0;\r\n var top = window.pageYOffset || html.scrollTop || 0;\r\n var box = {\r\n left: left,\r\n top: top,\r\n width: mathMax(html.clientWidth, document.body.clientWidth) + left,\r\n height: mathMax(document.body.scrollHeight, html.scrollHeight, document.body.offsetHeight, html.offsetHeight, document.body.clientHeight, html.clientHeight),\r\n right: 0,\r\n bottom: 0\r\n };\r\n if (container !== domAdapter.getBody()) {\r\n left = mathMax(box.left, box.left + containerBox.left);\r\n top = mathMax(box.top, box.top + containerBox.top);\r\n box.width = mathMin(containerBox.width, box.width) + left + box.left;\r\n box.height = mathMin(containerBox.height, box.height) + top + box.top;\r\n box.left = left;\r\n box.top = top\r\n }\r\n return box\r\n }\r\n};\r\nexport var plugin = {\r\n name: \"tooltip\",\r\n init: function() {\r\n this._initTooltip()\r\n },\r\n dispose: function() {\r\n this._disposeTooltip()\r\n },\r\n members: {\r\n _initTooltip: function() {\r\n this._tooltip = new Tooltip({\r\n cssClass: this._rootClassPrefix + \"-tooltip\",\r\n eventTrigger: this._eventTrigger,\r\n pathModified: this.option(\"pathModified\"),\r\n widgetRoot: this.element(),\r\n widget: this\r\n })\r\n },\r\n _disposeTooltip: function() {\r\n this._tooltip.dispose();\r\n this._tooltip = null\r\n },\r\n _setTooltipRendererOptions: function() {\r\n this._tooltip.setRendererOptions(this._getRendererOptions())\r\n },\r\n _setTooltipOptions: function() {\r\n this._tooltip.update(this._getOption(\"tooltip\"))\r\n }\r\n },\r\n extenders: {\r\n _stopCurrentHandling() {\r\n this._tooltip && this._tooltip.hide()\r\n }\r\n },\r\n customize: function(constructor) {\r\n var proto = constructor.prototype;\r\n proto._eventsMap.onTooltipShown = {\r\n name: \"tooltipShown\"\r\n };\r\n proto._eventsMap.onTooltipHidden = {\r\n name: \"tooltipHidden\"\r\n };\r\n constructor.addChange({\r\n code: \"TOOLTIP_RENDERER\",\r\n handler: function() {\r\n this._setTooltipRendererOptions()\r\n },\r\n isThemeDependent: true,\r\n isOptionChange: true\r\n });\r\n constructor.addChange({\r\n code: \"TOOLTIP\",\r\n handler: function() {\r\n this._setTooltipOptions()\r\n },\r\n isThemeDependent: true,\r\n isOptionChange: true,\r\n option: \"tooltip\"\r\n })\r\n },\r\n fontFields: [\"tooltip.font\"]\r\n};\r\n","/**\r\n * DevExtreme (esm/viz/core/utils.js)\r\n * Version: 21.2.15\r\n * Build date: Fri Dec 08 2023\r\n *\r\n * Copyright (c) 2012 - 2023 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/core/helpers.js)\r\n * Version: 21.2.15\r\n * Build date: Fri Dec 08 2023\r\n *\r\n * Copyright (c) 2012 - 2023 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.15\r\n * Build date: Fri Dec 08 2023\r\n *\r\n * Copyright (c) 2012 - 2023 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/layout.js)\r\n * Version: 21.2.15\r\n * Build date: Fri Dec 08 2023\r\n *\r\n * Copyright (c) 2012 - 2023 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.15\r\n * Build date: Fri Dec 08 2023\r\n *\r\n * Copyright (c) 2012 - 2023 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, eventInfo.actionSettings)\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.15\r\n * Build date: Fri Dec 08 2023\r\n *\r\n * Copyright (c) 2012 - 2023 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 actionSettings: {\r\n excludeValidators: [\"disabled\"]\r\n }\r\n },\r\n onDrawn: {\r\n name: \"drawn\",\r\n actionSettings: {\r\n excludeValidators: [\"disabled\"]\r\n }\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 if (this._disposed) {\r\n return\r\n }\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, actionSettings) {\r\n return that._createActionByOption(name, actionSettings)\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/palette.js)\r\n * Version: 21.2.15\r\n * Build date: Fri Dec 08 2023\r\n *\r\n * Copyright (c) 2012 - 2023 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/base_theme_manager.js)\r\n * Version: 21.2.15\r\n * Build date: Fri Dec 08 2023\r\n *\r\n * Copyright (c) 2012 - 2023 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"],"sourceRoot":""}