{"version":3,"sources":["webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/types/FlowDiagram.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/types/ChordDiagram.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/types/SlicedChart.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/types/RadarChart.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/types/XYChart.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/types/TreeMap.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/types/PercentChart.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/types/XYChart3D.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/types/GaugeChart.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/types/PieChart3D.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/types/SerialChart.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/types/PieChart.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/types/SankeyDiagram.js"],"names":["__webpack_require__","d","__webpack_exports__","FlowDiagramDataItem","FlowDiagram","tslib__WEBPACK_IMPORTED_MODULE_0__","_Chart__WEBPACK_IMPORTED_MODULE_1__","_core_utils_List__WEBPACK_IMPORTED_MODULE_2__","_core_utils_Dictionary__WEBPACK_IMPORTED_MODULE_3__","_core_Container__WEBPACK_IMPORTED_MODULE_4__","_core_Registry__WEBPACK_IMPORTED_MODULE_5__","_elements_FlowDiagramNode__WEBPACK_IMPORTED_MODULE_6__","_elements_FlowDiagramLink__WEBPACK_IMPORTED_MODULE_7__","_core_rendering_fills_LinearGradientModifier__WEBPACK_IMPORTED_MODULE_8__","_core_utils_ColorSet__WEBPACK_IMPORTED_MODULE_9__","_core_utils_Color__WEBPACK_IMPORTED_MODULE_10__","_core_utils_Iterator__WEBPACK_IMPORTED_MODULE_11__","_core_utils_Type__WEBPACK_IMPORTED_MODULE_12__","_core_utils_Number__WEBPACK_IMPORTED_MODULE_13__","_core_utils_Order__WEBPACK_IMPORTED_MODULE_14__","_core_utils_Disposer__WEBPACK_IMPORTED_MODULE_15__","_super","_this","call","this","className","values","value","applyTheme","Object","defineProperty","prototype","get","properties","fromName","set","setProperty","enumerable","configurable","toName","color","setValue","_link","link_1","component","links","create","addSprite","_disposers","push","removeValue","colors","nodePadding","sortBy","sequencedInterpolation","step","minNodeSize","linksContainer","chartContainer","createChild","shouldClone","layout","isMeasured","nodesContainer","dataItem","createDataItem","dispose","validateData","_parseDataFrom","nodes","clear","sortNodes","reset","low","high","sum","count","dataItems","iterator","node","getKey","name","chart","fromNode","outgoingDataItems","toNode","incomingDataItems","strokeModifier","opacities","link","fillModifier","key","setCalculatedValue","strNode","fill","undefined","next","visible","hide","getNodeValue","feedLegend","handleDataItemWorkingValueChange","invalidate","_sorted","sortedIterator","x","y","total","incomingTotal","outgoingTotal","getWorkingValue","totalIncoming","totalOutgoing","changeSorting","applyInternalDefaults","readerTitle","language","translate","getPropertyValue","setPropertyValue","_nodes","template","createNode","events","on","event","target","handleHit","_links","createLink","legend","legendData_1","each","data","dataFields","disposeData","registeredClasses","_FlowDiagram__WEBPACK_IMPORTED_MODULE_1__","_core_utils_Percent__WEBPACK_IMPORTED_MODULE_2__","_core_Container__WEBPACK_IMPORTED_MODULE_3__","_core_Registry__WEBPACK_IMPORTED_MODULE_4__","_elements_ChordNode__WEBPACK_IMPORTED_MODULE_5__","_elements_ChordLink__WEBPACK_IMPORTED_MODULE_6__","_core_utils_Iterator__WEBPACK_IMPORTED_MODULE_7__","_core_utils_Math__WEBPACK_IMPORTED_MODULE_8__","_core_utils_Type__WEBPACK_IMPORTED_MODULE_9__","_core_utils_Utils__WEBPACK_IMPORTED_MODULE_10__","ChordDiagramDataItem","ChordDiagram","valueAngle","startAngle","endAngle","radius","innerRadius","chordContainer","align","valign","parent","validate","rect","innerRect","width","height","maxRadius","Math","min","innerWidth","innerHeight","pixelInnerRadius","newTotal","slice","arc","adjustedTotal","nonRibbon","trueStartAngle","definedBBox","invalidateLayout","setPercentProperty","middleLine","strokeOpacity","fillOpacity","_PercentChart__WEBPACK_IMPORTED_MODULE_1__","_core_Registry__WEBPACK_IMPORTED_MODULE_2__","_core_utils_Type__WEBPACK_IMPORTED_MODULE_3__","SlicedChartDataItem","SlicedChart","seriesContainer","padding","RadarChartDataItem","RadarChart","_XYChart__WEBPACK_IMPORTED_MODULE_1__","_series_RadarSeries__WEBPACK_IMPORTED_MODULE_3__","_core_elements_Circle__WEBPACK_IMPORTED_MODULE_5__","_core_Registry__WEBPACK_IMPORTED_MODULE_6__","_cursors_RadarCursor__WEBPACK_IMPORTED_MODULE_7__","_axes_AxisRendererCircular__WEBPACK_IMPORTED_MODULE_8__","_axes_AxisRendererRadial__WEBPACK_IMPORTED_MODULE_9__","_core_utils_Math__WEBPACK_IMPORTED_MODULE_13__","_core_rendering_Path__WEBPACK_IMPORTED_MODULE_14__","_axisRendererX","_axisRendererY","innerRadiusModifyer","radarContainer","plotContainer","bulletsContainer","axisBulletsContainer","_cursorContainer","_bulletMask","element","paper","add","opacity","processAxis","axis","renderer","gridContainer","breakContainer","toBack","handleXAxisRangeChange","yAxes","handleYAxisRangeChange","xAxes","createCursor","processConfig","config","cursor","type","series","i","len","length","beforeDraw","wr","hr","mr","max","diameter","_pixelInnerRadius","path","useChartAngles","pixelRadiusReal","validatePosition","createSeries","updateXAxis","processRenderer","updateYAxis","XYChartDataItem","XYChart","_SerialChart__WEBPACK_IMPORTED_MODULE_1__","_core_Container__WEBPACK_IMPORTED_MODULE_2__","_core_utils_List__WEBPACK_IMPORTED_MODULE_3__","_axes_DateAxis__WEBPACK_IMPORTED_MODULE_4__","_axes_AxisRendererX__WEBPACK_IMPORTED_MODULE_5__","_axes_AxisRendererY__WEBPACK_IMPORTED_MODULE_6__","_axes_CategoryAxis__WEBPACK_IMPORTED_MODULE_7__","_series_XYSeries__WEBPACK_IMPORTED_MODULE_8__","_cursors_XYCursor__WEBPACK_IMPORTED_MODULE_9__","_core_utils_Disposer__WEBPACK_IMPORTED_MODULE_10__","_core_elements_ZoomOutButton__WEBPACK_IMPORTED_MODULE_11__","_core_utils_Percent__WEBPACK_IMPORTED_MODULE_12__","_core_Registry__WEBPACK_IMPORTED_MODULE_13__","_elements_XYChartScrollbar__WEBPACK_IMPORTED_MODULE_14__","_core_utils_Math__WEBPACK_IMPORTED_MODULE_15__","_core_utils_Iterator__WEBPACK_IMPORTED_MODULE_16__","_core_utils_Type__WEBPACK_IMPORTED_MODULE_17__","_core_utils_Utils__WEBPACK_IMPORTED_MODULE_18__","_core_utils_Array__WEBPACK_IMPORTED_MODULE_19__","_core_utils_Responsive__WEBPACK_IMPORTED_MODULE_20__","_seriesPoints","maskBullets","arrangeTooltips","topAxesCont","zIndex","topAxesContainer","yAxesAndPlotCont","yAxesAndPlotContainer","bottomAxesCont","bottomAxesContainer","leftAxesCont","contentAlign","updateXAxesMargins","leftAxesContainer","plotCont","background","mouseWheelBehavior","rightAxesCont","rightAxesContainer","zoomOutButton","Number","MAX_SAFE_INTEGER","marginTop","marginRight","exportable","draw","toFront","mask","updateSeriesLegend","updatePlotElements","dataChangeUpdate","leftAxesWidth","measuredWidth","rightAxesWidth","paddingLeft","paddingRight","reinit","appeared","handleXAxisChange","handleYAxisChange","processXAxis","newValue","observe","axisLetter","dataProvider","processYAxis","range","getCommonAxisRange","scrollbarX","zoomAxes","toggleZoomOutButton","updateScrollbar","show_1","start","end","seriesAppeared","show","scrollbarY","scrollbar","skipRangeEvents","axes","axisStart","axisEnd","inversed","opposite","_dataUsers","moveValue","addDisposer","dataUsers","inited","invalidateDataItems","updateSeriesMasks","mainContainer","_xAxes","handleAxisRemoval","oldValue","autoDispose","_yAxes","handleSeriesAdded","removeFromInvalidComponents","dataInvalid","xAxis","yAxis","stroke","e","raiseCriticalError","_cursor","removeDispose","handleCursorPositionChange","handleCursorZoomStart","handleCursorZoomEnd","handleCursorPanStart","handleCursorPanning","handleCursorPanEnd","handleCursorCanceled","handleHideCursor","tapToActivate","setTapToActivate","isHiding","xPosition","yPosition","showSeriesTooltip","exceptAxis","snapToSeries","baseAxis","showAxisTooltip","sortSeriesTooltips","hideObjectTooltip","updateLegendValue","sprites","sprite","hideTooltip","position","seriesPoints","snapTooltip","point","showTooltipAtPosition","tooltip","setBounds","pixelWidth","pixelHeight","topLeft","bottomRight","filteredSeriesPoints","seriesPoint","sort","a","b","averageY","maxY","svgContainer","SVGContainer","top_1","bottom","dropped","nextHeight","pointY","invalid","label","pixelY","pixelMarginTop","nextY","measuredHeight","pixelMarginBottom","except","getUpdatedRange","difference","behavior","xRange","getIndex","priority","yRange","_panStartXRange","_panStartYRange","_panEndXRange","panEndRange","delta","_panEndYRange","maxPanOut","panStartRange","axisRange","newStart","newEnd","newRange","_scrollbarX","startGrip","endGrip","orientation","handleXScrollbarChange","adapter","arg","getPositionLabel","_scrollbarY","handleYScrollbarChange","fixRange","instantly","round","declination","realRange","roundPosition","zoom","handleWheel","svgPoint","htmlContainer","cssScale","plotPoint","shift","rangeX","rangeY","shiftStep","differenceX","newStartX","newEndX","differenceY","newStartY","newEndY","locationX","maxWidth","locationY","maxHeight","_mouseWheelDisposer","wheelable","hoverable","dataSourceDateFields","fields","populateDataSourceFields","dataSourceNumberFields","Error","axisRanges","index","configOrder","_zoomOutButton","button","copyFrom","source","clone","scrollbarChart","addData","rawDataItem","removeCount","addScrollbarData","invalidateData","removeScrollbarData","remove","dataUser","removeData","interactions","isTouchProtected","handleTapToActivate","handleTapToActivateDeactivation","relevant","maybeXS","state","stateId","states","sbstate","disabled","_axes_ValueAxis__WEBPACK_IMPORTED_MODULE_4__","_series_TreeMapSeries__WEBPACK_IMPORTED_MODULE_5__","_core_utils_ColorSet__WEBPACK_IMPORTED_MODULE_6__","_core_interaction_Mouse__WEBPACK_IMPORTED_MODULE_7__","_core_utils_Iterator__WEBPACK_IMPORTED_MODULE_8__","_core_utils_Array__WEBPACK_IMPORTED_MODULE_10__","TreeMapDataItem","rows","x0","y0","x1","y1","hasChildren","children","_legendDataItem","valueLabel","getDuration","child","childValue","workingValue","level","_series","duration","delay","toValue","setWorkingValue","TreeMap","layoutAlgorithm","squarify","zoomable","maxLevels","currentLevel","sorting","title","strictMinMax","xRenderer","inside","labels","ticks","grid","axisFills","minGridDistance","line","baseGrid","yRenderer","seriesTemplates","zoomToChartDataItem","_homeDataItem","isTemplate","_navigationBar","navigationBar","dataContext","isDisposed","createTreeSeries","_tempSeries","homeDataItem","_homeText","maxX","getMinMax","layoutItems","_updateDataItemIndexes","navigationData","parentDataItem","initSeries","reverse","createTreeSeriesReal","indexOf","setData","currentlyZoomed","toString","columnsContainer","columns","treeMapDataItem","cursorOverStyle","pointer","seriesDataItem","zoomToSeriesDataItem","toggleBullets","zoomToValues","rangeChangeAnimation","isFinished","_dataDisposers","once","binaryTree","dice","sliceDice","validateLayout","validateDataItems","validateRawData","n","sums","Array","partition","j","valueOffset","valueTarget","k","hi","mid","valueLeft","valueRight","xk","yk","nodeValue","dx","dy","sumValue","minValue","maxValue","newRatio","minRatio","alpha","beta","ratio","sqrt","i0","i1","row","handleDataItemValueChange","getLegendLevel","legendParent","getExporting","exporting","info","format","PercentChartDataItem","PercentChart","_series_PercentSeries__WEBPACK_IMPORTED_MODULE_2__","_core_Registry__WEBPACK_IMPORTED_MODULE_3__","_core_utils_Iterator__WEBPACK_IMPORTED_MODULE_4__","minHeight","minWidth","hiddenInLegend","legendSettings","setLegend","text","valueLabels","itemContainers","PercentSeriesDataItem","isHover","_core_Sprite__WEBPACK_IMPORTED_MODULE_3__","_axes_AxisRendererX3D__WEBPACK_IMPORTED_MODULE_4__","_axes_AxisRendererY3D__WEBPACK_IMPORTED_MODULE_5__","_series_ColumnSeries3D__WEBPACK_IMPORTED_MODULE_6__","_core_Registry__WEBPACK_IMPORTED_MODULE_7__","_core_utils_Math__WEBPACK_IMPORTED_MODULE_9__","_core_utils_Type__WEBPACK_IMPORTED_MODULE_10__","_core_rendering_Path__WEBPACK_IMPORTED_MODULE_11__","_core_utils_Utils__WEBPACK_IMPORTED_MODULE_12__","XYChart3D","XYChart3DDataItem","depth","angle","fixLayout","invalidateDataUsers","fixColumns","dy3D","dx3D","clustered","depthIndex","s","inversed_1","i_1","column","maskColumns","w","h","_RadarChart__WEBPACK_IMPORTED_MODULE_1__","_elements_ClockHand__WEBPACK_IMPORTED_MODULE_3__","_core_utils_Type__WEBPACK_IMPORTED_MODULE_5__","GaugeChart","GaugeChartDataItem","hands","processHand","hand","_PieChart__WEBPACK_IMPORTED_MODULE_1__","_series_PieSeries3D__WEBPACK_IMPORTED_MODULE_2__","_core_utils_Math__WEBPACK_IMPORTED_MODULE_4__","PieChart3D","PieChart3DDataItem","SerialChartDataItem","SerialChart","_series_Series__WEBPACK_IMPORTED_MODULE_4__","_core_utils_Percent__WEBPACK_IMPORTED_MODULE_5__","appear","PieChartDataItem","PieChart","_series_PieSeries__WEBPACK_IMPORTED_MODULE_3__","_core_utils_Iterator__WEBPACK_IMPORTED_MODULE_5__","_core_utils_Utils__WEBPACK_IMPORTED_MODULE_6__","_core_utils_Math__WEBPACK_IMPORTED_MODULE_7__","_core_utils_Type__WEBPACK_IMPORTED_MODULE_8__","updateRadius","_chartPixelRadius","updateSeriesAngles","defaultState","chartCont","chartRadius","chartPixelInnerRadius","seriesRadius","_chartPixelInnerRadius","pixelRadius","_elements_SankeyNode__WEBPACK_IMPORTED_MODULE_4__","_elements_SankeyLink__WEBPACK_IMPORTED_MODULE_5__","_core_utils_Animation__WEBPACK_IMPORTED_MODULE_6__","_core_utils_Object__WEBPACK_IMPORTED_MODULE_10__","SankeyDiagramDataItem","SankeyDiagram","nodeAlign","_levelCount","getNodeLevel","levels","apply","calculateValueHeight","_levelSum","_levelNodesCount","maxSum","availableHeight","maxSumLevel","realValue","_maxSumLevel","maxSumLevelNodeCount","valueHeight","finalHeight","_heightAnimation","animationOptions","to","err","interpolationDuration","transitionDuration","property","from","container","nextCoordinate","levelCoordinate","nodeCount","minX","minY","showReal","container_1","sequencedInterpolationDelay","invalidateLinks","animate","interpolationEasing","animation","nodeHeight","nameLabel","horizontalCenter","_valueHeight"],"mappings":"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","file":"js/chunk-202be5b9.5c592f1c.js","sourcesContent":["/**\r\n * FlowDiagram module.\r\n */\r\nimport * as tslib_1 from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Chart, ChartDataItem } from \"../Chart\";\r\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\r\nimport { DictionaryTemplate, DictionaryDisposer } from \"../../core/utils/Dictionary\";\r\nimport { Container } from \"../../core/Container\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { FlowDiagramNode } from \"../elements/FlowDiagramNode\";\r\nimport { FlowDiagramLink } from \"../elements/FlowDiagramLink\";\r\nimport { LinearGradientModifier } from \"../../core/rendering/fills/LinearGradientModifier\";\r\nimport { ColorSet } from \"../../core/utils/ColorSet\";\r\nimport { toColor, Color } from \"../../core/utils/Color\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $number from \"../../core/utils/Number\";\r\nimport * as $order from \"../../core/utils/Order\";\r\nimport { Disposer } from \"../../core/utils/Disposer\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n//@todo rearange notes after dragged\r\n/**\r\n * Defines a [[DataItem]] for [[FlowDiagram]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar FlowDiagramDataItem = /** @class */ (function (_super) {\r\n tslib_1.__extends(FlowDiagramDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function FlowDiagramDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"FlowDiagramDataItem\";\r\n _this.values.value = {};\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(FlowDiagramDataItem.prototype, \"fromName\", {\r\n /**\r\n * @return name\r\n */\r\n get: function () {\r\n return this.properties.fromName;\r\n },\r\n /**\r\n * Source node's name.\r\n *\r\n * @param value Name\r\n */\r\n set: function (value) {\r\n this.setProperty(\"fromName\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagramDataItem.prototype, \"toName\", {\r\n /**\r\n * @return name\r\n */\r\n get: function () {\r\n return this.properties.toName;\r\n },\r\n /**\r\n * Destination node's name.\r\n *\r\n * @param value Name\r\n */\r\n set: function (value) {\r\n this.setProperty(\"toName\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagramDataItem.prototype, \"color\", {\r\n /**\r\n * @return color\r\n */\r\n get: function () {\r\n return this.properties.color;\r\n },\r\n /**\r\n * Node color\r\n *\r\n * @param value Name\r\n */\r\n set: function (value) {\r\n this.setProperty(\"color\", toColor(value));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagramDataItem.prototype, \"value\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n return this.values.value.value;\r\n },\r\n /**\r\n * Link's value.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setValue(\"value\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagramDataItem.prototype, \"link\", {\r\n /**\r\n * A visual element, representing link between the source and target nodes.\r\n *\r\n * Link's actual thickness will be determined by `value` of this link and\r\n * `value` of the source node.\r\n *\r\n * @readonly\r\n * @return Link element\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._link) {\r\n var link_1 = this.component.links.create();\r\n this._link = link_1;\r\n this.addSprite(link_1);\r\n this._disposers.push(new Disposer(function () {\r\n if (_this.component) {\r\n _this.component.links.removeValue(link_1);\r\n }\r\n }));\r\n }\r\n return this._link;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return FlowDiagramDataItem;\r\n}(ChartDataItem));\r\nexport { FlowDiagramDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a Pie chart\r\n * @see {@link IFlowDiagramEvents} for a list of available Events\r\n * @see {@link IFlowDiagramAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar FlowDiagram = /** @class */ (function (_super) {\r\n tslib_1.__extends(FlowDiagram, _super);\r\n /**\r\n * Constructor\r\n */\r\n function FlowDiagram() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * A Color Set to use when applying/generating colors for each subsequent\r\n * node.\r\n */\r\n _this.colors = new ColorSet();\r\n _this.className = \"FlowDiagram\";\r\n _this.nodePadding = 20;\r\n _this.sortBy = \"none\";\r\n _this.sequencedInterpolation = true;\r\n _this.colors.step = 2;\r\n _this.minNodeSize = 0.02;\r\n var linksContainer = _this.chartContainer.createChild(Container);\r\n linksContainer.shouldClone = false;\r\n linksContainer.layout = \"none\";\r\n linksContainer.isMeasured = false;\r\n _this.linksContainer = linksContainer;\r\n var nodesContainer = _this.chartContainer.createChild(Container);\r\n nodesContainer.shouldClone = false;\r\n nodesContainer.layout = \"none\";\r\n nodesContainer.isMeasured = false;\r\n _this.nodesContainer = nodesContainer;\r\n // this data item holds sums, averages, etc\r\n _this.dataItem = _this.createDataItem();\r\n _this.dataItem.component = _this;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n FlowDiagram.prototype.dispose = function () {\r\n _super.prototype.dispose.call(this);\r\n this.dataItem.dispose();\r\n };\r\n /**\r\n * (Re)validates chart's data, effectively causing the chart to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n FlowDiagram.prototype.validateData = function () {\r\n var _this = this;\r\n if (this._parseDataFrom == 0) {\r\n this.nodes.clear();\r\n }\r\n this.sortNodes();\r\n this.colors.reset();\r\n _super.prototype.validateData.call(this);\r\n var sum = 0;\r\n var count = 0;\r\n var low;\r\n var high;\r\n // build blocks\r\n $iter.each(this.dataItems.iterator(), function (dataItem) {\r\n var fromName = dataItem.fromName;\r\n if (fromName) {\r\n var node = _this.nodes.getKey(fromName);\r\n if (!node) {\r\n node = _this.nodes.create(fromName);\r\n node.name = fromName;\r\n node.chart = _this;\r\n node.dataItem = dataItem;\r\n }\r\n dataItem.fromNode = node;\r\n dataItem.fromNode.outgoingDataItems.push(dataItem);\r\n }\r\n var toName = dataItem.toName;\r\n if (toName) {\r\n var node = _this.nodes.getKey(toName);\r\n if (!node) {\r\n node = _this.nodes.create(toName);\r\n node.name = toName;\r\n node.chart = _this;\r\n node.dataItem = dataItem;\r\n }\r\n dataItem.toNode = node;\r\n dataItem.toNode.incomingDataItems.push(dataItem);\r\n }\r\n if (!dataItem.fromNode) {\r\n var strokeModifier = new LinearGradientModifier();\r\n strokeModifier.opacities = [0, 1];\r\n dataItem.link.strokeModifier = strokeModifier;\r\n }\r\n if (!dataItem.toNode) {\r\n var fillModifier = new LinearGradientModifier();\r\n fillModifier.opacities = [1, 0];\r\n dataItem.link.strokeModifier = fillModifier;\r\n }\r\n var value = dataItem.value;\r\n if ($type.isNumber(value)) {\r\n sum += value;\r\n count++;\r\n if (low > value || !$type.isNumber(low)) {\r\n low = value;\r\n }\r\n if (high < value || !$type.isNumber(high)) {\r\n high = value;\r\n }\r\n }\r\n });\r\n var key = \"value\";\r\n this.dataItem.setCalculatedValue(key, high, \"high\");\r\n this.dataItem.setCalculatedValue(key, low, \"low\");\r\n this.dataItem.setCalculatedValue(key, sum, \"sum\");\r\n this.dataItem.setCalculatedValue(key, sum / count, \"average\");\r\n this.dataItem.setCalculatedValue(key, count, \"count\");\r\n $iter.each(this.nodes.iterator(), function (strNode) {\r\n var node = strNode[1];\r\n if (node.fill instanceof Color) {\r\n node.color = node.fill;\r\n }\r\n if (node.color == undefined) {\r\n node.color = _this.colors.next();\r\n }\r\n if (node.dataItem.color != undefined) {\r\n node.color = node.dataItem.color;\r\n }\r\n if (!node.dataItem.visible) {\r\n node.hide(0);\r\n }\r\n _this.getNodeValue(node);\r\n });\r\n this.sortNodes();\r\n this.feedLegend();\r\n };\r\n /**\r\n * [handleDataItemWorkingValueChange description]\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n FlowDiagram.prototype.handleDataItemWorkingValueChange = function (dataItem, name) {\r\n this.invalidate();\r\n };\r\n /**\r\n * Sorts nodes by either their values or names, based on `sortBy` setting.\r\n */\r\n FlowDiagram.prototype.sortNodes = function () {\r\n if (this.sortBy == \"name\") {\r\n this._sorted = this.nodes.sortedIterator();\r\n }\r\n else if (this.sortBy == \"value\") {\r\n this._sorted = $iter.sort(this.nodes.iterator(), function (x, y) { return $order.reverse($number.order(x[1].total, y[1].total)); });\r\n }\r\n else {\r\n this._sorted = this.nodes.iterator();\r\n }\r\n };\r\n /**\r\n * Updates a cummulative value of the node.\r\n *\r\n * A node's value is determined by summing values of all of the incoming\r\n * links or all of the outgoing links, whichever results in bigger number.\r\n *\r\n * @param node Node value\r\n */\r\n FlowDiagram.prototype.getNodeValue = function (node) {\r\n // todo: totalIncomming totalOutgoing, total\r\n var incomingTotal = 0;\r\n var outgoingTotal = 0;\r\n $iter.each(node.incomingDataItems.iterator(), function (dataItem) {\r\n var value = dataItem.getWorkingValue(\"value\");\r\n if ($type.isNumber(value)) {\r\n incomingTotal += value;\r\n }\r\n });\r\n $iter.each(node.outgoingDataItems.iterator(), function (dataItem) {\r\n var value = dataItem.getWorkingValue(\"value\");\r\n if ($type.isNumber(value)) {\r\n outgoingTotal += value;\r\n }\r\n });\r\n node.total = incomingTotal + outgoingTotal;\r\n node.totalIncoming = incomingTotal;\r\n node.totalOutgoing = outgoingTotal;\r\n };\r\n ;\r\n /**\r\n * Changes the sort type of the nodes.\r\n *\r\n * This will actually reshuffle nodes using nice animation.\r\n */\r\n FlowDiagram.prototype.changeSorting = function () {\r\n this.sortNodes();\r\n };\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n FlowDiagram.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n // Add a default screen reader title for accessibility\r\n // This will be overridden in screen reader if there are any `titles` set\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Flow diagram\");\r\n }\r\n };\r\n /**\r\n * Creates and returns a new data item.\r\n *\r\n * @return Data item\r\n */\r\n FlowDiagram.prototype.createDataItem = function () {\r\n return new FlowDiagramDataItem();\r\n };\r\n Object.defineProperty(FlowDiagram.prototype, \"nodePadding\", {\r\n /**\r\n * @return Padding (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"nodePadding\");\r\n },\r\n /**\r\n * Padding for node square in pixels.\r\n *\r\n * Padding will add extra space around node's name label.\r\n *\r\n * @param value Padding (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"nodePadding\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagram.prototype, \"sortBy\", {\r\n /**\r\n * @returns Node sorting\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"sortBy\");\r\n },\r\n /**\r\n * Sort nodes by \"name\" or \"value\" or do not sort at all. If not sorted, nodes will appear in the same order as they are in the data.\r\n * @default \"none\"\r\n * @param value Node sorting\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"sortBy\", value);\r\n this.changeSorting();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagram.prototype, \"minNodeSize\", {\r\n /**\r\n * @returns min node size\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"minNodeSize\");\r\n },\r\n /**\r\n * Sometimes nodes can get very small if their value is little. With this setting you\r\n * can set min size of a node (this is relative value from the total size of all nodes)\r\n * @default 0.02\r\n * @param value Node sorting\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"minNodeSize\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FlowDiagram.prototype, \"nodes\", {\r\n /**\r\n * A list of chart's nodes.\r\n *\r\n * @param {DictionaryTemplate}\r\n */\r\n get: function () {\r\n if (!this._nodes) {\r\n var template = this.createNode();\r\n template.events.on(\"hit\", function (event) {\r\n event.target.handleHit(event);\r\n });\r\n this._nodes = new DictionaryTemplate(template);\r\n this._disposers.push(new DictionaryDisposer(this._nodes));\r\n }\r\n return this._nodes;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n FlowDiagram.prototype.createNode = function () {\r\n var node = new FlowDiagramNode();\r\n this._disposers.push(node);\r\n return node;\r\n };\r\n Object.defineProperty(FlowDiagram.prototype, \"links\", {\r\n /**\r\n * A list of chart's links.\r\n *\r\n * @param {ListTemplate}\r\n */\r\n get: function () {\r\n if (!this._links) {\r\n this._links = new ListTemplate(this.createLink());\r\n this._disposers.push(new ListDisposer(this._links));\r\n }\r\n return this._links;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n FlowDiagram.prototype.createLink = function () {\r\n var link = new FlowDiagramLink();\r\n this._disposers.push(link);\r\n return link;\r\n };\r\n /**\r\n * Setups the legend to use the chart's data.\r\n * @ignore\r\n */\r\n FlowDiagram.prototype.feedLegend = function () {\r\n var legend = this.legend;\r\n if (legend) {\r\n var legendData_1 = [];\r\n this.nodes.each(function (key, node) {\r\n legendData_1.push(node);\r\n });\r\n legend.data = legendData_1;\r\n legend.dataFields.name = \"name\";\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n FlowDiagram.prototype.disposeData = function () {\r\n _super.prototype.disposeData.call(this);\r\n this.nodes.clear();\r\n };\r\n return FlowDiagram;\r\n}(Chart));\r\nexport { FlowDiagram };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"FlowDiagram\"] = FlowDiagram;\r\n//# sourceMappingURL=FlowDiagram.js.map","/**\r\n * Chord diagram module.\r\n */\r\nimport * as tslib_1 from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { FlowDiagram, FlowDiagramDataItem } from \"./FlowDiagram\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport { Container } from \"../../core/Container\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { ChordNode } from \"../elements/ChordNode\";\r\nimport { ChordLink } from \"../elements/ChordLink\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n//@todo rearange notes after dragged\r\n/**\r\n * Defines a [[DataItem]] for [[ChordDiagram]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar ChordDiagramDataItem = /** @class */ (function (_super) {\r\n tslib_1.__extends(ChordDiagramDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ChordDiagramDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"ChordDiagramDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return ChordDiagramDataItem;\r\n}(FlowDiagramDataItem));\r\nexport { ChordDiagramDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a Chord Diagram chart.\r\n *\r\n * @see {@link IChordDiagramEvents} for a list of available Events\r\n * @see {@link IChordDiagramAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/chord-diagram/} for documentation\r\n * @important\r\n */\r\nvar ChordDiagram = /** @class */ (function (_super) {\r\n tslib_1.__extends(ChordDiagram, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ChordDiagram() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * [valueAngle description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n _this.valueAngle = 0;\r\n _this.className = \"ChordDiagram\";\r\n _this.startAngle = -90;\r\n _this.endAngle = 270;\r\n _this.radius = percent(80);\r\n _this.innerRadius = -15;\r\n _this.nodePadding = 5;\r\n var chordContainer = _this.chartContainer.createChild(Container);\r\n chordContainer.align = \"center\";\r\n chordContainer.valign = \"middle\";\r\n chordContainer.shouldClone = false;\r\n chordContainer.layout = \"absolute\";\r\n _this.chordContainer = chordContainer;\r\n _this.nodesContainer.parent = chordContainer;\r\n _this.linksContainer.parent = chordContainer;\r\n _this.chartContainer.events.on(\"maxsizechanged\", _this.invalidate, _this, false);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Redraws the chart.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ChordDiagram.prototype.validate = function () {\r\n var _this = this;\r\n var chartContainer = this.chartContainer;\r\n var endAngle = this.endAngle;\r\n var startAngle = this.startAngle + this.nodePadding / 2;\r\n var rect = $math.getArcRect(this.startAngle, this.endAngle, 1);\r\n var innerRect = { x: 0, y: 0, width: 0, height: 0 };\r\n rect = $math.getCommonRectangle([rect, innerRect]);\r\n var maxRadius = Math.min(chartContainer.innerWidth / rect.width, chartContainer.innerHeight / rect.height);\r\n if (!$type.isNumber(maxRadius)) {\r\n maxRadius = 0;\r\n }\r\n var radius = $utils.relativeRadiusToValue(this.radius, maxRadius);\r\n var pixelInnerRadius = $utils.relativeRadiusToValue(this.innerRadius, radius, true);\r\n var total = this.dataItem.values.value.sum;\r\n var count = 0;\r\n var newTotal = 0;\r\n $iter.each(this._sorted, function (strNode) {\r\n var node = strNode[1];\r\n _this.getNodeValue(node);\r\n count++;\r\n var value = node.total;\r\n if (node.total / total < _this.minNodeSize) {\r\n value = total * _this.minNodeSize;\r\n }\r\n newTotal += value;\r\n });\r\n this.valueAngle = (endAngle - this.startAngle - this.nodePadding * count) / newTotal;\r\n $iter.each(this._sorted, function (strNode) {\r\n var node = strNode[1];\r\n var slice = node.slice;\r\n slice.radius = radius;\r\n slice.innerRadius = pixelInnerRadius;\r\n var value = node.total;\r\n if (node.total / total < _this.minNodeSize) {\r\n value = total * _this.minNodeSize;\r\n }\r\n node.adjustedTotal = value;\r\n var arc;\r\n if (_this.nonRibbon) {\r\n arc = (endAngle - _this.startAngle) / count - _this.nodePadding;\r\n }\r\n else {\r\n arc = _this.valueAngle * value;\r\n }\r\n slice.arc = arc;\r\n slice.startAngle = startAngle;\r\n node.trueStartAngle = startAngle;\r\n node.parent = _this.nodesContainer;\r\n node.validate(); // otherwise flickers - nodes are already created, but not yet positioned etc.\r\n startAngle += arc + _this.nodePadding;\r\n });\r\n this.chordContainer.definedBBox = { x: radius * rect.x, y: radius * rect.y, width: radius * rect.width, height: radius * rect.height };\r\n this.chordContainer.invalidateLayout();\r\n _super.prototype.validate.call(this);\r\n };\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n ChordDiagram.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n // Add a default screen reader title for accessibility\r\n // This will be overridden in screen reader if there are any `titles` set\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Chord diagram\");\r\n }\r\n };\r\n /**\r\n * Creates and returns a new data item.\r\n *\r\n * @return Data item\r\n */\r\n ChordDiagram.prototype.createDataItem = function () {\r\n return new ChordDiagramDataItem();\r\n };\r\n Object.defineProperty(ChordDiagram.prototype, \"startAngle\", {\r\n /**\r\n * @return Start angle (degrees)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startAngle\");\r\n },\r\n /**\r\n * Starting angle of the Radar face. (degrees)\r\n *\r\n * Normally, a circular radar face begins (the radial axis is drawn) at the\r\n * top center. (at -90 degrees)\r\n *\r\n * You can use `startAngle` to change this setting.\r\n *\r\n * E.g. setting this to 0 will make the radial axis start horizontally to\r\n * the right, as opposed to vertical.\r\n *\r\n * For a perfect circle the absolute sum of `startAngle` and `endAngle`\r\n * needs to be 360.\r\n *\r\n * However, it's **not** necessary to do so. You can set those to lesser\r\n * numbers, to create semi-circles.\r\n *\r\n * E.g. `startAngle = -90` with `endAngle = 0` will create a radar face that\r\n * looks like a quarter of a circle.\r\n *\r\n * @default -90\r\n * @param value Start angle (degrees)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"startAngle\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ChordDiagram.prototype, \"endAngle\", {\r\n /**\r\n * @return End angle (degrees)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endAngle\");\r\n },\r\n /**\r\n * Starting angle of the Radar face. (degrees)\r\n *\r\n * Normally, a circular radar face ends (the radial axis is drawn) exactly\r\n * where it has started, forming a full 360 circle. (at 270 degrees)\r\n *\r\n * You can use `endAngle` to end the circle somewhere else.\r\n *\r\n * E.g. setting this to 180 will make the radar face end at horizontal line\r\n * to the left off the center.\r\n *\r\n * For a perfect circle the absolute sum of `startAngle` and `endAngle`\r\n * needs to be 360.\r\n *\r\n * However, it's **not** necessary to do so. You can set those to lesser\r\n * numbers, to create semi-circles.\r\n *\r\n * E.g. `startAngle = -90` with `endAngle = 0` will create a radar face that\r\n * looks like a quarter of a circle.\r\n *\r\n * @default -90\r\n * @param value End angle (degrees)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"endAngle\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ChordDiagram.prototype, \"radius\", {\r\n /**\r\n * @return Outer radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"radius\");\r\n },\r\n /**\r\n * Outer radius of the Radar face.\r\n *\r\n * This can either be in absolute pixel value, or relative [[Percent]].\r\n *\r\n * @param value Outer radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"radius\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ChordDiagram.prototype, \"innerRadius\", {\r\n /**\r\n * @return Inner radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"innerRadius\");\r\n },\r\n /**\r\n * Inner radius of the Chord nodes.\r\n *\r\n * This can either be in absolute pixel value, or relative [[Percent]].\r\n *\r\n * @param value Outer radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"innerRadius\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ChordDiagram.prototype, \"nonRibbon\", {\r\n /**\r\n * @return Non-ribbon\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"nonRibbon\");\r\n },\r\n /**\r\n *\r\n * If you set this to true, all the lines will be of the same width. This is done by making middleLine of a ChordLink visible.\r\n *\r\n * @param value\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"nonRibbon\", value, true);\r\n this.links.template.middleLine.strokeOpacity = 1;\r\n this.links.template.link.fillOpacity = 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n ChordDiagram.prototype.createNode = function () {\r\n var node = new ChordNode();\r\n this._disposers.push(node);\r\n return node;\r\n };\r\n /**\r\n * @ignore\r\n */\r\n ChordDiagram.prototype.createLink = function () {\r\n var link = new ChordLink();\r\n this._disposers.push(link);\r\n return link;\r\n };\r\n return ChordDiagram;\r\n}(FlowDiagram));\r\nexport { ChordDiagram };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"ChordDiagram\"] = ChordDiagram;\r\n//# sourceMappingURL=ChordDiagram.js.map","/**\r\n * Sliced chart module.\r\n */\r\nimport * as tslib_1 from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { PercentChart, PercentChartDataItem } from \"./PercentChart\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[SlicedChart]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar SlicedChartDataItem = /** @class */ (function (_super) {\r\n tslib_1.__extends(SlicedChartDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function SlicedChartDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"SlicedChartDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return SlicedChartDataItem;\r\n}(PercentChartDataItem));\r\nexport { SlicedChartDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a Sliced chart.\r\n *\r\n * @see {@link ISlicedChartEvents} for a list of available Events\r\n * @see {@link ISlicedChartAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/sliced-chart/} for documentation\r\n * @important\r\n */\r\nvar SlicedChart = /** @class */ (function (_super) {\r\n tslib_1.__extends(SlicedChart, _super);\r\n /**\r\n * Constructor\r\n */\r\n function SlicedChart() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"SlicedChart\";\r\n _this.seriesContainer.layout = \"horizontal\";\r\n _this.padding(15, 15, 15, 15);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n SlicedChart.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n // Add a default screen reader title for accessibility\r\n // This will be overridden in screen reader if there are any `titles` set\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Sliced chart\");\r\n }\r\n };\r\n /**\r\n * (Re)validates the chart, causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n SlicedChart.prototype.validate = function () {\r\n _super.prototype.validate.call(this);\r\n };\r\n return SlicedChart;\r\n}(PercentChart));\r\nexport { SlicedChart };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"SlicedChart\"] = SlicedChart;\r\nregistry.registeredClasses[\"SlicedChartDataItem\"] = SlicedChartDataItem;\r\n//# sourceMappingURL=SlicedChart.js.map","/**\r\n * Radar chart module.\r\n */\r\nimport * as tslib_1 from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { XYChart, XYChartDataItem } from \"./XYChart\";\r\nimport { percent, Percent } from \"../../core/utils/Percent\";\r\nimport { RadarSeries } from \"../series/RadarSeries\";\r\nimport { Container } from \"../../core/Container\";\r\nimport { Circle } from \"../../core/elements/Circle\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { RadarCursor } from \"../cursors/RadarCursor\";\r\nimport { AxisRendererCircular } from \"../axes/AxisRendererCircular\";\r\nimport { AxisRendererRadial } from \"../axes/AxisRendererRadial\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[RadarChart]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar RadarChartDataItem = /** @class */ (function (_super) {\r\n tslib_1.__extends(RadarChartDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function RadarChartDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"RadarChartDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return RadarChartDataItem;\r\n}(XYChartDataItem));\r\nexport { RadarChartDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a Radar chart.\r\n *\r\n * @see {@link IRadarChartEvents} for a list of available Events\r\n * @see {@link IRadarChartAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/radar-chart/} for documentation\r\n * @important\r\n */\r\nvar RadarChart = /** @class */ (function (_super) {\r\n tslib_1.__extends(RadarChart, _super);\r\n /**\r\n * Constructor\r\n */\r\n function RadarChart() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Defines X axis renderer type.\r\n */\r\n _this._axisRendererX = AxisRendererCircular;\r\n /**\r\n * Defines Y axis renderer type.\r\n */\r\n _this._axisRendererY = AxisRendererRadial;\r\n /**\r\n * used by cursor. We adjust innerradius if start and end angle are close to each other\r\n * @ignore Exclude from docs\r\n */\r\n _this.innerRadiusModifyer = 1;\r\n _this.className = \"RadarChart\";\r\n _this.startAngle = -90;\r\n _this.endAngle = 270;\r\n _this.radius = percent(80);\r\n _this.innerRadius = 0;\r\n var radarContainer = _this.plotContainer.createChild(Container);\r\n radarContainer.shouldClone = false;\r\n radarContainer.layout = \"absolute\";\r\n radarContainer.align = \"center\";\r\n radarContainer.valign = \"middle\";\r\n _this.seriesContainer.parent = radarContainer;\r\n _this.radarContainer = radarContainer;\r\n _this.bulletsContainer.parent = radarContainer;\r\n _this.axisBulletsContainer = radarContainer;\r\n _this._cursorContainer = radarContainer;\r\n _this._bulletMask = radarContainer.createChild(Circle);\r\n _this._bulletMask.shouldClone = false;\r\n _this._bulletMask.element = _this.paper.add(\"path\");\r\n _this._bulletMask.opacity = 0;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n RadarChart.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n // Add a default screen reader title for accessibility\r\n // This will be overridden in screen reader if there are any `titles` set\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Radar chart\");\r\n }\r\n };\r\n /**\r\n * Decorates Axis with required properties for this chart.\r\n *\r\n * @param axis Axis\r\n */\r\n RadarChart.prototype.processAxis = function (axis) {\r\n _super.prototype.processAxis.call(this, axis);\r\n var renderer = axis.renderer;\r\n renderer.gridContainer.parent = renderer;\r\n renderer.breakContainer.parent = renderer;\r\n axis.parent = this.radarContainer;\r\n renderer.toBack();\r\n };\r\n /**\r\n * Updates all X axes after range change event.\r\n */\r\n RadarChart.prototype.handleXAxisRangeChange = function () {\r\n _super.prototype.handleXAxisRangeChange.call(this);\r\n $iter.each(this.yAxes.iterator(), function (axis) {\r\n axis.invalidate();\r\n });\r\n };\r\n /**\r\n * Updates all Y axes after range change event.\r\n */\r\n RadarChart.prototype.handleYAxisRangeChange = function () {\r\n _super.prototype.handleYAxisRangeChange.call(this);\r\n $iter.each(this.xAxes.iterator(), function (axis) {\r\n axis.invalidate();\r\n });\r\n };\r\n /**\r\n * Creates and returns a new Cursor, of type suitable for RadarChart.\r\n *\r\n * @return Cursor\r\n */\r\n RadarChart.prototype.createCursor = function () {\r\n return new RadarCursor();\r\n };\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n RadarChart.prototype.processConfig = function (config) {\r\n if (config) {\r\n // Set up cursor\r\n if ($type.hasValue(config.cursor) && !$type.hasValue(config.cursor.type)) {\r\n config.cursor.type = \"RadarCursor\";\r\n }\r\n // Set up series\r\n if ($type.hasValue(config.series) && $type.isArray(config.series)) {\r\n for (var i = 0, len = config.series.length; i < len; i++) {\r\n config.series[i].type = config.series[i].type || \"RadarSeries\";\r\n }\r\n }\r\n // Set up axes\r\n /*if ($type.hasValue(config.xAxes) && $type.isArray(config.xAxes)) {\r\n for (let i = 0, len = config.xAxes.length; i < len; i++) {\r\n config.xAxes[i].type = config.xAxes[i].type || \"AxisRendererCircular\";\r\n }\r\n }\r\n if ($type.hasValue(config.yAxes) && $type.isArray(config.yAxes)) {\r\n for (let i = 0, len = config.yAxes.length; i < len; i++) {\r\n config.yAxes[i].type = config.yAxes[i].type || \"AxisRendererRadial\";\r\n }\r\n }*/\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n /**\r\n * Does calculations before drawing the chart.\r\n */\r\n RadarChart.prototype.beforeDraw = function () {\r\n _super.prototype.beforeDraw.call(this);\r\n var plotContainer = this.plotContainer;\r\n var rect = $math.getArcRect(this.startAngle, this.endAngle, 1);\r\n var innerRect = { x: 0, y: 0, width: 0, height: 0 };\r\n var wr = plotContainer.innerWidth / rect.width;\r\n var hr = plotContainer.innerHeight / rect.height;\r\n var innerRadius = this.innerRadius;\r\n if (innerRadius instanceof Percent) {\r\n var value = innerRadius.value;\r\n var mr = Math.min(wr, hr);\r\n value = Math.max(mr * value, mr - Math.min(plotContainer.innerHeight, plotContainer.innerWidth)) / mr;\r\n innerRect = $math.getArcRect(this.startAngle, this.endAngle, value);\r\n this.innerRadiusModifyer = value / innerRadius.value;\r\n innerRadius = percent(value * 100);\r\n }\r\n // @todo handle this when innerRadius set in pixels (do it for pie also)\r\n rect = $math.getCommonRectangle([rect, innerRect]);\r\n var maxRadius = Math.min(plotContainer.innerWidth / rect.width, plotContainer.innerHeight / rect.height);\r\n var diameter = $utils.relativeRadiusToValue(this.radius, maxRadius) * 2 || 0;\r\n var radius = diameter / 2;\r\n var startAngle = this.startAngle;\r\n var endAngle = this.endAngle;\r\n this._pixelInnerRadius = $utils.relativeRadiusToValue(innerRadius, radius);\r\n this._bulletMask.path = $path.arc(startAngle, endAngle - startAngle, radius, this._pixelInnerRadius);\r\n $iter.each(this.xAxes.iterator(), function (axis) {\r\n if (axis.renderer.useChartAngles) {\r\n axis.renderer.startAngle = startAngle;\r\n axis.renderer.endAngle = endAngle;\r\n }\r\n axis.width = diameter;\r\n axis.height = diameter;\r\n //axis.renderer.width = diameter;\r\n //axis.renderer.height = diameter;\r\n axis.renderer.pixelRadiusReal = radius;\r\n axis.renderer.innerRadius = innerRadius;\r\n });\r\n $iter.each(this.yAxes.iterator(), function (axis) {\r\n axis.renderer.startAngle = startAngle;\r\n axis.renderer.endAngle = endAngle;\r\n axis.width = diameter;\r\n axis.height = diameter;\r\n //axis.renderer.width = diameter;\r\n //axis.renderer.height = diameter;\r\n axis.renderer.pixelRadiusReal = radius;\r\n axis.renderer.innerRadius = innerRadius;\r\n });\r\n var cursor = this.cursor;\r\n if (cursor) {\r\n cursor.width = diameter;\r\n cursor.height = diameter;\r\n cursor.startAngle = startAngle;\r\n cursor.endAngle = endAngle;\r\n }\r\n this.radarContainer.definedBBox = { x: radius * rect.x, y: radius * rect.y, width: radius * rect.width, height: radius * rect.height };\r\n this.radarContainer.validatePosition();\r\n };\r\n /**\r\n * Creates and returns a new Series, suitable for RadarChart.\r\n *\r\n * @return New Series\r\n */\r\n RadarChart.prototype.createSeries = function () {\r\n return new RadarSeries();\r\n };\r\n Object.defineProperty(RadarChart.prototype, \"startAngle\", {\r\n /**\r\n * @return Start angle (degrees)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startAngle\");\r\n },\r\n /**\r\n * Starting angle of the Radar face. (degrees)\r\n *\r\n * Normally, a circular radar face begins (the radial axis is drawn) at the\r\n * top center. (at -90 degrees)\r\n *\r\n * You can use `startAngle` to change this setting.\r\n *\r\n * E.g. setting this to 0 will make the radial axis start horizontally to\r\n * the right, as opposed to vertical.\r\n *\r\n * For a perfect circle the absolute sum of `startAngle` and `endAngle`\r\n * needs to be 360.\r\n *\r\n * However, it's **not** necessary to do so. You can set those to lesser\r\n * numbers, to create semi-circles.\r\n *\r\n * E.g. `startAngle = -90` with `endAngle = 0` will create a radar face that\r\n * looks like a quarter of a circle.\r\n *\r\n * @default -90\r\n * @param value Start angle (degrees)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"startAngle\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RadarChart.prototype, \"endAngle\", {\r\n /**\r\n * @return End angle (degrees)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endAngle\");\r\n },\r\n /**\r\n * Starting angle of the Radar face. (degrees)\r\n *\r\n * Normally, a circular radar face ends (the radial axis is drawn) exactly\r\n * where it has started, forming a full 360 circle. (at 270 degrees)\r\n *\r\n * You can use `endAngle` to end the circle somewhere else.\r\n *\r\n * E.g. setting this to 180 will make the radar face end at horizontal line\r\n * to the left off the center.\r\n *\r\n * For a perfect circle the absolute sum of `startAngle` and `endAngle`\r\n * needs to be 360.\r\n *\r\n * However, it's **not** necessary to do so. You can set those to lesser\r\n * numbers, to create semi-circles.\r\n *\r\n * E.g. `startAngle = -90` with `endAngle = 0` will create a radar face that\r\n * looks like a quarter of a circle.\r\n *\r\n * @default -90\r\n * @param value End angle (degrees)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"endAngle\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RadarChart.prototype, \"radius\", {\r\n /**\r\n * @return Outer radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"radius\");\r\n },\r\n /**\r\n * Outer radius of the Radar face.\r\n *\r\n * This can either be in absolute pixel value, or relative [[Percent]].\r\n *\r\n * @param value Outer radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"radius\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RadarChart.prototype, \"pixelInnerRadius\", {\r\n /**\r\n * @return Inner radius in pixels\r\n */\r\n get: function () {\r\n return this._pixelInnerRadius;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RadarChart.prototype, \"innerRadius\", {\r\n /**\r\n * @return Inner radius\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"innerRadius\");\r\n },\r\n /**\r\n * Inner radius of the radar face.\r\n *\r\n * This can either be in absolute pixel value, or relative [[Percent]].\r\n *\r\n * If set in Percent, it will be relative to `radius`. (outer radius)\r\n *\r\n * @param value Inner radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"innerRadius\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Triggers (re)rendering of the horizontal (X) axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axis Axis\r\n */\r\n RadarChart.prototype.updateXAxis = function (renderer) {\r\n //do not call super!\r\n if (renderer) {\r\n renderer.processRenderer();\r\n }\r\n };\r\n /**\r\n * Triggers (re)rendering of the vertical (Y) axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axis Axis\r\n */\r\n RadarChart.prototype.updateYAxis = function (renderer) {\r\n // do not call super!\r\n if (renderer) {\r\n renderer.processRenderer();\r\n }\r\n };\r\n return RadarChart;\r\n}(XYChart));\r\nexport { RadarChart };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"RadarChart\"] = RadarChart;\r\n//# sourceMappingURL=RadarChart.js.map","/**\r\n * XY Chart module.\r\n */\r\nimport * as tslib_1 from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { SerialChart, SerialChartDataItem } from \"./SerialChart\";\r\nimport { Container } from \"../../core/Container\";\r\nimport { List } from \"../../core/utils/List\";\r\nimport { DateAxis } from \"../axes/DateAxis\";\r\nimport { AxisRendererX } from \"../axes/AxisRendererX\";\r\nimport { AxisRendererY } from \"../axes/AxisRendererY\";\r\nimport { CategoryAxis } from \"../axes/CategoryAxis\";\r\nimport { XYSeries } from \"../series/XYSeries\";\r\nimport { XYCursor } from \"../cursors/XYCursor\";\r\nimport { Disposer } from \"../../core/utils/Disposer\";\r\nimport { ZoomOutButton } from \"../../core/elements/ZoomOutButton\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { XYChartScrollbar } from \"../elements/XYChartScrollbar\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $array from \"../../core/utils/Array\";\r\nimport { defaultRules, ResponsiveBreakpoints } from \"../../core/utils/Responsive\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[XYChart]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar XYChartDataItem = /** @class */ (function (_super) {\r\n tslib_1.__extends(XYChartDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function XYChartDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"XYChartDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return XYChartDataItem;\r\n}(SerialChartDataItem));\r\nexport { XYChartDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates an XY chart, and any derivative chart, like Serial, Date-based, etc.\r\n *\r\n * Basically this is a chart type, that is used to display any chart\r\n * information in a square plot area.\r\n *\r\n * The horizontal and vertical scale is determined by the type of Axis.\r\n *\r\n * The plot types are determined by type of Series.\r\n *\r\n * ```TypeScript\r\n * // Includes\r\n * import * as am4core from \"@amcharts/amcharts4/core\";\r\n * import * as am4charts from \"@amcharts/amcharts4/charts\";\r\n *\r\n * // Create chart\r\n * let chart = am4core.create(\"chartdiv\", am4charts.XYChart);\r\n *\r\n * // Add Data\r\n * chart.data = [{\r\n * \"country\": \"USA\",\r\n * \"visits\": 3025\r\n * }, {\r\n * \t\"country\": \"China\",\r\n * \t\"visits\": 1882\r\n * }, {\r\n * \t\"country\": \"Japan\",\r\n * \t\"visits\": 1809\r\n * }];\r\n *\r\n * // Add category axis\r\n * let categoryAxis = chart.xAxes.push(new am4charts.CategoryAxis());\r\n * categoryAxis.dataFields.category = \"country\";\r\n *\r\n * // Add value axis\r\n * let valueAxis = chart.yAxes.push(new am4charts.ValueAxis());\r\n *\r\n * // Add series\r\n * let series = chart.series.push(new am4charts.ColumnSeries());\r\n * series.name = \"Web Traffic\";\r\n * series.dataFields.categoryX = \"country\";\r\n * series.dataFields.valueY = \"visits\";\r\n * ```\r\n * ```JavaScript\r\n * // Create chart\r\n * var chart = am4core.create(\"chartdiv\", am4charts.XYChart);\r\n *\r\n * // The following would work as well:\r\n * // var chart = am4core.create(\"chartdiv\", \"XYChart\");\r\n *\r\n * // Add Data\r\n * chart.data = [{\r\n * \"country\": \"USA\",\r\n * \"visits\": 3025\r\n * }, {\r\n * \t\"country\": \"China\",\r\n * \t\"visits\": 1882\r\n * }, {\r\n * \t\"country\": \"Japan\",\r\n * \t\"visits\": 1809\r\n * }];\r\n *\r\n * // Add category axis\r\n * var categoryAxis = chart.xAxes.push(new am4charts.CategoryAxis());\r\n * categoryAxis.dataFields.category = \"country\";\r\n *\r\n * // Add value axis\r\n * var valueAxis = chart.yAxes.push(new am4charts.ValueAxis());\r\n *\r\n * // Add series\r\n * var series = chart.series.push(new am4charts.ColumnSeries());\r\n * series.name = \"Web Traffic\";\r\n * series.dataFields.categoryX = \"country\";\r\n * series.dataFields.valueY = \"visits\";\r\n * ```\r\n * ```JSON\r\n * var chart = am4core.createFromConfig({\r\n *\r\n * \t// Category axis\r\n * \t\"xAxes\": [{\r\n * \t\t\"type\": \"CategoryAxis\",\r\n * \t\t\"dataFields\": {\r\n * \t\t\t\"category\": \"country\"\r\n * \t\t}\r\n * \t}],\r\n *\r\n * \t// Value axis\r\n * \t\"yAxes\": [{\r\n * \t\t\"type\": \"ValueAxis\"\r\n * \t}],\r\n *\r\n * \t// Series\r\n * \t\"series\": [{\r\n * \t\t\"type\": \"ColumnSeries\",\r\n * \t\t\"dataFields\": {\r\n * \t\t\t\"categoryX\": \"country\",\r\n * \t\t\t\"valueY\": \"visits\"\r\n * \t\t},\r\n * \t\t\"name\": \"Web Traffic\"\r\n * \t}],\r\n *\r\n * \t// Cursor\r\n * \t\"cursor\": {},\r\n *\r\n * \t// Data\r\n * \t\"data\": [{\r\n * \t\t\"country\": \"USA\",\r\n * \t\t\"visits\": 3025\r\n * \t}, {\r\n * \t\t\"country\": \"China\",\r\n * \t\t\"visits\": 1882\r\n * \t}, {\r\n * \t\t\"country\": \"Japan\",\r\n * \t\t\"visits\": 1809\r\n * \t}]\r\n *\r\n * }, \"chartdiv\", \"XYChart\");\r\n * ```\r\n *\r\n *\r\n * @see {@link IXYChartEvents} for a list of available Events\r\n * @see {@link IXYChartAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/xy-chart/} for documentation\r\n * @important\r\n */\r\nvar XYChart = /** @class */ (function (_super) {\r\n tslib_1.__extends(XYChart, _super);\r\n /**\r\n * Constructor\r\n */\r\n function XYChart() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Defines the type of horizontal axis rederer.\r\n */\r\n _this._axisRendererX = AxisRendererX;\r\n /**\r\n * Defines the type of vertical axis rederer.\r\n */\r\n _this._axisRendererY = AxisRendererY;\r\n /**\r\n * @ignore\r\n */\r\n _this._seriesPoints = [];\r\n _this.className = \"XYChart\";\r\n // Set defaults\r\n //this.margin(10, 10, 10, 10);\r\n _this.maskBullets = true;\r\n _this.arrangeTooltips = true;\r\n // Create main chart container\r\n var chartContainer = _this.chartContainer;\r\n chartContainer.layout = \"vertical\";\r\n _this.padding(15, 15, 15, 15);\r\n // Create top axes container\r\n var topAxesCont = chartContainer.createChild(Container);\r\n topAxesCont.shouldClone = false;\r\n topAxesCont.layout = \"vertical\";\r\n topAxesCont.width = percent(100);\r\n topAxesCont.zIndex = 1;\r\n _this.topAxesContainer = topAxesCont;\r\n // Create vertical axes and plot area container\r\n // Plot area and vertical axes share the whole width of the chart,\r\n // so we need to put then into a separate container so that layouting\r\n // engine takes care of the positioning\r\n var yAxesAndPlotCont = chartContainer.createChild(Container);\r\n yAxesAndPlotCont.shouldClone = false;\r\n yAxesAndPlotCont.layout = \"horizontal\";\r\n yAxesAndPlotCont.width = percent(100);\r\n yAxesAndPlotCont.height = percent(100);\r\n yAxesAndPlotCont.zIndex = 0;\r\n _this.yAxesAndPlotContainer = yAxesAndPlotCont;\r\n // Create a container for bottom axes\r\n var bottomAxesCont = chartContainer.createChild(Container);\r\n bottomAxesCont.shouldClone = false;\r\n bottomAxesCont.width = percent(100);\r\n bottomAxesCont.layout = \"vertical\";\r\n bottomAxesCont.zIndex = 1;\r\n _this.bottomAxesContainer = bottomAxesCont;\r\n // Create a container for left-side axes\r\n var leftAxesCont = yAxesAndPlotCont.createChild(Container);\r\n leftAxesCont.shouldClone = false;\r\n leftAxesCont.layout = \"horizontal\";\r\n leftAxesCont.height = percent(100);\r\n leftAxesCont.contentAlign = \"right\";\r\n leftAxesCont.events.on(\"transformed\", _this.updateXAxesMargins, _this, false);\r\n leftAxesCont.zIndex = 1;\r\n _this.leftAxesContainer = leftAxesCont;\r\n // Create a container for plot area\r\n var plotCont = yAxesAndPlotCont.createChild(Container);\r\n plotCont.shouldClone = false;\r\n plotCont.height = percent(100);\r\n plotCont.width = percent(100);\r\n // Create transparend background for plot container so that hover works\r\n // on all of it\r\n plotCont.background.fillOpacity = 0;\r\n _this.plotContainer = plotCont;\r\n // must go below plot container\r\n _this.mouseWheelBehavior = \"none\";\r\n _this._cursorContainer = plotCont;\r\n // Create a container for right-side axes\r\n var rightAxesCont = yAxesAndPlotCont.createChild(Container);\r\n rightAxesCont.shouldClone = false;\r\n rightAxesCont.layout = \"horizontal\";\r\n rightAxesCont.height = percent(100);\r\n rightAxesCont.zIndex = 1;\r\n rightAxesCont.events.on(\"transformed\", _this.updateXAxesMargins, _this, false);\r\n _this.rightAxesContainer = rightAxesCont;\r\n _this.seriesContainer.parent = plotCont;\r\n _this.bulletsContainer.parent = plotCont;\r\n var zoomOutButton = plotCont.createChild(ZoomOutButton);\r\n zoomOutButton.shouldClone = false;\r\n zoomOutButton.align = \"right\";\r\n zoomOutButton.valign = \"top\";\r\n zoomOutButton.zIndex = Number.MAX_SAFE_INTEGER;\r\n zoomOutButton.marginTop = 5;\r\n zoomOutButton.marginRight = 5;\r\n zoomOutButton.hide(0);\r\n _this.zoomOutButton = zoomOutButton;\r\n // Create a container for bullets\r\n var axisBulletsContainer = _this.plotContainer.createChild(Container);\r\n axisBulletsContainer.shouldClone = false;\r\n axisBulletsContainer.width = percent(100);\r\n axisBulletsContainer.height = percent(100);\r\n axisBulletsContainer.isMeasured = false;\r\n axisBulletsContainer.zIndex = 4;\r\n axisBulletsContainer.layout = \"none\";\r\n _this.axisBulletsContainer = axisBulletsContainer;\r\n _this._bulletMask = _this.plotContainer;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n XYChart.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n this.zoomOutButton.exportable = false;\r\n // Add a default screen reader title for accessibility\r\n // This will be overridden in screen reader if there are any `titles` set\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"X/Y chart\");\r\n }\r\n };\r\n /**\r\n * Draws the chart.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYChart.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n this.seriesContainer.toFront();\r\n this.bulletsContainer.toFront();\r\n if (this.maskBullets) {\r\n this.bulletsContainer.mask = this._bulletMask;\r\n }\r\n this.updateSeriesLegend();\r\n };\r\n /**\r\n * Triggers a redrawing of all chart's series.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYChart.prototype.updatePlotElements = function () {\r\n $iter.each(this.series.iterator(), function (series) {\r\n series.invalidate();\r\n });\r\n };\r\n /**\r\n * Triggers data (re)validation which in turn can cause a redraw of the\r\n * whole chart or just aprticular series / elements.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYChart.prototype.validateData = function () {\r\n // tell axes that data changed\r\n if (this._parseDataFrom == 0) {\r\n $iter.each(this.xAxes.iterator(), function (axis) {\r\n axis.dataChangeUpdate();\r\n });\r\n $iter.each(this.yAxes.iterator(), function (axis) {\r\n axis.dataChangeUpdate();\r\n });\r\n $iter.each(this.series.iterator(), function (series) {\r\n series.dataChangeUpdate();\r\n });\r\n }\r\n _super.prototype.validateData.call(this);\r\n };\r\n /**\r\n * Updates margins for horizontal axes based on settings and available space.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYChart.prototype.updateXAxesMargins = function () {\r\n var leftAxesWidth = this.leftAxesContainer.measuredWidth;\r\n var rightAxesWidth = this.rightAxesContainer.measuredWidth;\r\n var bottomAxesCont = this.bottomAxesContainer;\r\n if (bottomAxesCont.paddingLeft != leftAxesWidth || bottomAxesCont.paddingRight != rightAxesWidth) {\r\n bottomAxesCont.paddingLeft = leftAxesWidth;\r\n bottomAxesCont.paddingRight = rightAxesWidth;\r\n }\r\n var topAxesCont = this.topAxesContainer;\r\n if (topAxesCont.paddingLeft != leftAxesWidth || topAxesCont.paddingRight != rightAxesWidth) {\r\n topAxesCont.paddingLeft = leftAxesWidth;\r\n topAxesCont.paddingRight = rightAxesWidth;\r\n }\r\n };\r\n /**\r\n * Triggers a re-initialization of this element.\r\n *\r\n * Will result in complete redrawing of the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYChart.prototype.reinit = function () {\r\n _super.prototype.reinit.call(this);\r\n this.series.each(function (series) {\r\n series.appeared = false;\r\n });\r\n };\r\n /**\r\n * Triggers an update on the horizontal axis when one of its properties\r\n * change.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event An event object\r\n */\r\n XYChart.prototype.handleXAxisChange = function (event) {\r\n this.updateXAxis(event.target);\r\n };\r\n /**\r\n * Triggers an update on the vertical axis when one of its properties\r\n * change.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event An event object\r\n */\r\n XYChart.prototype.handleYAxisChange = function (event) {\r\n this.updateYAxis(event.target);\r\n };\r\n /**\r\n * Sets up a new horizontal (X) axis when it is added to the chart.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Axis insert event\r\n */\r\n XYChart.prototype.processXAxis = function (event) {\r\n var axis = event.newValue;\r\n axis.chart = this;\r\n if (!axis.renderer) {\r\n axis.renderer = new this._axisRendererX();\r\n axis.renderer.observe([\"opposite\", \"inside\", \"inversed\", \"minGridDistance\"], this.handleXAxisChange, this, false);\r\n }\r\n axis.axisLetter = \"X\";\r\n axis.events.on(\"startendchanged\", this.handleXAxisRangeChange, this, false);\r\n //axis.events.on(\"endchanged\", this.handleXAxisRangeChange, this, false);\r\n // Although axis does not use data directly, we set dataProvider here\r\n // (but not add to chart data users) to hold up rendering before data\r\n // is parsed (system handles this)\r\n axis.dataProvider = this;\r\n this.updateXAxis(axis.renderer);\r\n this.processAxis(axis);\r\n };\r\n /**\r\n * Sets up a new vertical (Y) axis when it is added to the chart.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Axis insert event\r\n */\r\n XYChart.prototype.processYAxis = function (event) {\r\n var axis = event.newValue;\r\n axis.chart = this;\r\n if (!axis.renderer) {\r\n axis.renderer = new this._axisRendererY();\r\n axis.renderer.observe([\"opposite\", \"inside\", \"inversed\", \"minGridDistance\"], this.handleYAxisChange, this, false);\r\n }\r\n axis.axisLetter = \"Y\";\r\n axis.events.on(\"startendchanged\", this.handleYAxisRangeChange, this, false);\r\n //axis.events.on(\"endchanged\", this.handleYAxisRangeChange, this, false);\r\n // Although axis does not use data directly, we set dataProvider here\r\n // (but not add to chart data users) to hold up rendering before data\r\n // is parsed (system handles this)\r\n axis.dataProvider = this;\r\n this.updateYAxis(axis.renderer);\r\n this.processAxis(axis);\r\n };\r\n /**\r\n * Updates horizontal (X) scrollbar and other horizontal axis whenever axis'\r\n * value range changes.\r\n */\r\n XYChart.prototype.handleXAxisRangeChange = function () {\r\n var range = this.getCommonAxisRange(this.xAxes);\r\n if (this.scrollbarX) {\r\n this.zoomAxes(this.xAxes, range, true);\r\n }\r\n this.toggleZoomOutButton();\r\n this.updateScrollbar(this.scrollbarX, range);\r\n };\r\n /**\r\n * Shows or hides the Zoom Out button depending on whether the chart is fully\r\n * zoomed out or not.\r\n */\r\n XYChart.prototype.toggleZoomOutButton = function () {\r\n if (this.zoomOutButton) {\r\n var show_1 = false;\r\n $iter.eachContinue(this.xAxes.iterator(), function (axis) {\r\n if ($math.round(axis.start, 3) != 0 || $math.round(axis.end, 3) != 1) {\r\n show_1 = true;\r\n return false;\r\n }\r\n return true;\r\n });\r\n $iter.eachContinue(this.yAxes.iterator(), function (axis) {\r\n if ($math.round(axis.start, 3) != 0 || $math.round(axis.end, 3) != 1) {\r\n show_1 = true;\r\n return false;\r\n }\r\n return true;\r\n });\r\n if (!this.seriesAppeared) {\r\n show_1 = false;\r\n }\r\n if (show_1) {\r\n this.zoomOutButton.show();\r\n }\r\n else {\r\n this.zoomOutButton.hide();\r\n }\r\n }\r\n };\r\n /**\r\n * @ignore\r\n * moved this check to a separate method so that we could override it in TreeMapSeries\r\n */\r\n XYChart.prototype.seriesAppeared = function () {\r\n var appeared = false;\r\n $iter.each(this.series.iterator(), function (series) {\r\n if (!series.appeared) {\r\n appeared = false;\r\n return false;\r\n }\r\n });\r\n return appeared;\r\n };\r\n /**\r\n * Updates vertical (Y) scrollbar and other horizontal axis whenever axis'\r\n * value range changes.\r\n */\r\n XYChart.prototype.handleYAxisRangeChange = function () {\r\n var range = this.getCommonAxisRange(this.yAxes);\r\n if (this.scrollbarY) {\r\n this.zoomAxes(this.yAxes, range, true);\r\n }\r\n this.toggleZoomOutButton();\r\n this.updateScrollbar(this.scrollbarY, range);\r\n };\r\n /**\r\n * Updates a relative scrollbar whenever data range of the axis changes.\r\n *\r\n * @param scrollbar Scrollbar instance\r\n * @param range New data (values) range of the axis\r\n */\r\n XYChart.prototype.updateScrollbar = function (scrollbar, range) {\r\n if (scrollbar) {\r\n scrollbar.skipRangeEvents();\r\n scrollbar.start = range.start;\r\n scrollbar.end = range.end;\r\n }\r\n };\r\n /**\r\n * Returns a common range of values between a list of axes.\r\n *\r\n * This is used to synchronize the zoom between multiple axes.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axes A list of axes\r\n * @return Common value range\r\n */\r\n XYChart.prototype.getCommonAxisRange = function (axes) {\r\n var start;\r\n var end;\r\n $iter.each(axes.iterator(), function (axis) {\r\n var axisStart = axis.start;\r\n var axisEnd = axis.end;\r\n if (axis.renderer.inversed) {\r\n axisStart = 1 - axis.end;\r\n axisEnd = 1 - axis.start;\r\n }\r\n if (!$type.isNumber(start) || (axisStart < start)) {\r\n start = axisStart;\r\n }\r\n if (!$type.isNumber(end) || (axisEnd > end)) {\r\n end = axisEnd;\r\n }\r\n });\r\n return { start: start, end: end };\r\n };\r\n /**\r\n * Triggers (re)rendering of the horizontal (X) axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axis Axis\r\n */\r\n XYChart.prototype.updateXAxis = function (renderer) {\r\n var axis = renderer.axis;\r\n if (renderer.opposite) {\r\n axis.parent = this.topAxesContainer;\r\n axis.toFront();\r\n }\r\n else {\r\n axis.parent = this.bottomAxesContainer;\r\n axis.toBack();\r\n }\r\n if (axis.renderer) {\r\n axis.renderer.processRenderer();\r\n }\r\n };\r\n /**\r\n * Triggers (re)rendering of the vertical (Y) axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axis Axis\r\n */\r\n XYChart.prototype.updateYAxis = function (renderer) {\r\n var axis = renderer.axis;\r\n if (renderer.opposite) {\r\n axis.parent = this.rightAxesContainer;\r\n axis.toBack();\r\n }\r\n else {\r\n axis.parent = this.leftAxesContainer;\r\n axis.toFront();\r\n }\r\n if (axis.renderer) {\r\n axis.renderer.processRenderer();\r\n }\r\n };\r\n /**\r\n * Decorates an Axis for use with this chart, e.g. sets proper renderer\r\n * and containers for placement.\r\n *\r\n * @param axis Axis\r\n */\r\n XYChart.prototype.processAxis = function (axis) {\r\n var _this = this;\r\n // Value axis does not use data directly, only category axis does\r\n if (axis instanceof CategoryAxis) {\r\n this._dataUsers.moveValue(axis);\r\n }\r\n var renderer = axis.renderer;\r\n renderer.gridContainer.parent = this.plotContainer;\r\n renderer.gridContainer.toBack();\r\n renderer.breakContainer.parent = this.plotContainer;\r\n renderer.breakContainer.toFront();\r\n renderer.breakContainer.zIndex = 10;\r\n axis.addDisposer(new Disposer(function () {\r\n _this.dataUsers.removeValue(axis);\r\n }));\r\n renderer.bulletsContainer.parent = this.axisBulletsContainer;\r\n this.plotContainer.events.on(\"maxsizechanged\", function () {\r\n if (_this.inited) {\r\n axis.invalidateDataItems();\r\n _this.updateSeriesMasks();\r\n }\r\n }, axis, false);\r\n };\r\n /**\r\n * This is done because for some reason IE doesn't change mask if path of a\r\n * mask changes.\r\n */\r\n XYChart.prototype.updateSeriesMasks = function () {\r\n if ($utils.isIE()) {\r\n this.series.each(function (series) {\r\n var mask = series.mainContainer.mask;\r\n series.mainContainer.mask = undefined;\r\n series.mainContainer.mask = mask;\r\n });\r\n }\r\n };\r\n Object.defineProperty(XYChart.prototype, \"xAxes\", {\r\n /**\r\n * A list of horizontal (X) axes.\r\n *\r\n * @return List of axes\r\n */\r\n get: function () {\r\n if (!this._xAxes) {\r\n this._xAxes = new List();\r\n this._xAxes.events.on(\"inserted\", this.processXAxis, this, false);\r\n this._xAxes.events.on(\"removed\", this.handleAxisRemoval, this, false);\r\n }\r\n return this._xAxes;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n XYChart.prototype.handleAxisRemoval = function (event) {\r\n var axis = event.oldValue;\r\n this.dataUsers.removeValue(axis); // need to remove, as it might not be disposed\r\n if (axis.autoDispose) {\r\n axis.dispose();\r\n }\r\n };\r\n Object.defineProperty(XYChart.prototype, \"yAxes\", {\r\n /**\r\n * A list of vertical (Y) axes.\r\n *\r\n * @return List of axes\r\n */\r\n get: function () {\r\n if (!this._yAxes) {\r\n this._yAxes = new List();\r\n this._yAxes.events.on(\"inserted\", this.processYAxis, this, false);\r\n this._yAxes.events.on(\"removed\", this.handleAxisRemoval, this, false);\r\n }\r\n return this._yAxes;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Decorates a new [[XYSeries]] object with required parameters when it is\r\n * added to the chart.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event\r\n */\r\n XYChart.prototype.handleSeriesAdded = function (event) {\r\n try {\r\n _super.prototype.handleSeriesAdded.call(this, event);\r\n var series = event.newValue;\r\n if (this.xAxes.length == 0 || this.yAxes.length == 0) {\r\n registry.removeFromInvalidComponents(series);\r\n series.dataInvalid = false;\r\n }\r\n $utils.used(series.xAxis); // this is enough to get axis, handled in getter\r\n $utils.used(series.yAxis); // this is enough to get axis, handled in getter\r\n if (series.fill == undefined) {\r\n series.fill = this.colors.next();\r\n }\r\n if (series.stroke == undefined) {\r\n series.stroke = series.fill;\r\n }\r\n }\r\n catch (e) {\r\n this.raiseCriticalError(e);\r\n }\r\n };\r\n Object.defineProperty(XYChart.prototype, \"cursor\", {\r\n /**\r\n * @return Cursor\r\n */\r\n get: function () {\r\n return this._cursor;\r\n },\r\n /**\r\n * Chart's [[Cursor]].\r\n *\r\n * @param cursor Cursor\r\n */\r\n set: function (cursor) {\r\n if (this._cursor != cursor) {\r\n if (this._cursor) {\r\n this.removeDispose(this._cursor);\r\n }\r\n this._cursor = cursor;\r\n if (cursor) {\r\n // TODO this is wrong, fix it\r\n this._disposers.push(cursor);\r\n cursor.chart = this;\r\n cursor.shouldClone = false;\r\n cursor.parent = this._cursorContainer;\r\n cursor.events.on(\"cursorpositionchanged\", this.handleCursorPositionChange, this, false);\r\n cursor.events.on(\"zoomstarted\", this.handleCursorZoomStart, this, false);\r\n cursor.events.on(\"zoomended\", this.handleCursorZoomEnd, this, false);\r\n cursor.events.on(\"panstarted\", this.handleCursorPanStart, this, false);\r\n cursor.events.on(\"panning\", this.handleCursorPanning, this, false);\r\n cursor.events.on(\"panended\", this.handleCursorPanEnd, this, false);\r\n cursor.events.on(\"behaviorcanceled\", this.handleCursorCanceled, this, false);\r\n cursor.events.on(\"hidden\", this.handleHideCursor, this, false);\r\n cursor.zIndex = Number.MAX_SAFE_INTEGER - 1;\r\n if (this.tapToActivate) {\r\n // We need this in order to setup cursor properly\r\n this.setTapToActivate(this.tapToActivate);\r\n }\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates and returns a new [[Cursor]] suitable for this chart type.\r\n *\r\n * @return New cursor\r\n */\r\n XYChart.prototype.createCursor = function () {\r\n return new XYCursor();\r\n };\r\n /**\r\n * Performs tasks when the cursor's position changes, e.g. shows proper\r\n * tooltips on axes and series.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYChart.prototype.handleCursorPositionChange = function () {\r\n var cursor = this.cursor;\r\n if (cursor.visible && !cursor.isHiding) {\r\n var xPosition = this.cursor.xPosition;\r\n var yPosition = this.cursor.yPosition;\r\n this.showSeriesTooltip({\r\n x: xPosition,\r\n y: yPosition\r\n });\r\n var exceptAxis = void 0;\r\n var snapToSeries = cursor.snapToSeries;\r\n if (snapToSeries) {\r\n if (snapToSeries.baseAxis == snapToSeries.xAxis) {\r\n exceptAxis = snapToSeries.yAxis;\r\n }\r\n if (snapToSeries.baseAxis == snapToSeries.yAxis) {\r\n exceptAxis = snapToSeries.xAxis;\r\n }\r\n }\r\n this._seriesPoints = [];\r\n this.showAxisTooltip(this.xAxes, xPosition, exceptAxis);\r\n this.showAxisTooltip(this.yAxes, yPosition, exceptAxis);\r\n this.sortSeriesTooltips(this._seriesPoints);\r\n }\r\n };\r\n /**\r\n * Hides all cursor-related tooltips when the cursor itself is hidden.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYChart.prototype.handleHideCursor = function () {\r\n this.hideObjectTooltip(this.xAxes);\r\n this.hideObjectTooltip(this.yAxes);\r\n this.hideObjectTooltip(this.series);\r\n this.updateSeriesLegend();\r\n };\r\n /**\r\n * Updates values for each series' legend item.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYChart.prototype.updateSeriesLegend = function () {\r\n $iter.each(this.series.iterator(), function (series) {\r\n series.updateLegendValue();\r\n });\r\n };\r\n /**\r\n * Hides a tooltip for a list of objects.\r\n *\r\n * @ignore Exclude from docs\r\n * @param sprites A list of sprites to hide tooltip for\r\n */\r\n XYChart.prototype.hideObjectTooltip = function (sprites) {\r\n $iter.each(sprites.iterator(), function (sprite) {\r\n sprite.hideTooltip(0);\r\n });\r\n };\r\n /**\r\n * Shows a tooltip for all chart's series, using specific coordinates as a\r\n * reference point.\r\n *\r\n * The tooltip might be shown at different coordinates depending on the\r\n * actual data point's position, overlapping with other tooltips, etc.\r\n *\r\n * @ignore Exclude from docs\r\n * @param position Reference point\r\n */\r\n XYChart.prototype.showSeriesTooltip = function (position) {\r\n var _this = this;\r\n if (!position) {\r\n this.series.each(function (series) {\r\n series.hideTooltip();\r\n });\r\n return;\r\n }\r\n var seriesPoints = [];\r\n this.series.each(function (series) {\r\n //if (series.tooltipText || series.tooltipHTML) { // not good, bullets are not hovered then\r\n if ((series.xAxis instanceof DateAxis && series.xAxis.snapTooltip) || (series.yAxis instanceof DateAxis && series.yAxis.snapTooltip)) {\r\n // void\r\n }\r\n else {\r\n var point = series.showTooltipAtPosition(position.x, position.y);\r\n if (point) {\r\n series.tooltip.setBounds({ x: 0, y: 0, width: _this.pixelWidth, height: _this.pixelHeight });\r\n seriesPoints.push({ series: series, point: point });\r\n }\r\n }\r\n //}\r\n });\r\n if (this.arrangeTooltips) {\r\n this.sortSeriesTooltips(seriesPoints);\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n XYChart.prototype.sortSeriesTooltips = function (seriesPoints) {\r\n var topLeft = $utils.spritePointToSvg({ x: -0.5, y: -0.5 }, this.plotContainer);\r\n var bottomRight = $utils.spritePointToSvg({ x: this.plotContainer.pixelWidth + 0.5, y: this.plotContainer.pixelHeight + 0.5 }, this.plotContainer);\r\n var sum = 0;\r\n var filteredSeriesPoints = [];\r\n $array.each(seriesPoints, function (seriesPoint) {\r\n var point = seriesPoint.point;\r\n if (point && $math.isInRectangle(point, { x: topLeft.x, y: topLeft.y, width: bottomRight.x - topLeft.x, height: bottomRight.y - topLeft.y })) {\r\n filteredSeriesPoints.push({ point: point, series: seriesPoint.series });\r\n sum += point.y;\r\n }\r\n });\r\n seriesPoints = filteredSeriesPoints;\r\n seriesPoints.sort(function (a, b) {\r\n if (a.point.y > b.point.y) {\r\n return 1;\r\n }\r\n else if (a.point.y < b.point.y) {\r\n return -1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n });\r\n var averageY = sum / seriesPoints.length;\r\n var maxY = $utils.svgPointToDocument({ x: 0, y: 0 }, this.svgContainer.SVGContainer).y;\r\n if (seriesPoints.length > 0) {\r\n var top_1 = topLeft.y;\r\n var bottom = bottomRight.y;\r\n // TODO is this needed ?\r\n $utils.spritePointToDocument({ x: 0, y: top_1 }, this);\r\n var dropped = false;\r\n if (averageY > top_1 + (bottom - top_1) / 2) {\r\n var nextHeight = bottom;\r\n for (var i = seriesPoints.length - 1; i >= 0; i--) {\r\n var series = seriesPoints[i].series;\r\n var tooltip = series.tooltip;\r\n var pointY = seriesPoints[i].point.y;\r\n tooltip.setBounds({ x: 0, y: -maxY, width: this.pixelWidth, height: nextHeight + maxY });\r\n if (tooltip.invalid) {\r\n tooltip.validate();\r\n }\r\n tooltip.toBack();\r\n nextHeight = $utils.spritePointToSvg({ x: 0, y: tooltip.label.pixelY - tooltip.pixelY + pointY - tooltip.pixelMarginTop }, tooltip).y;\r\n if (nextHeight < -maxY) {\r\n dropped = true;\r\n break;\r\n }\r\n }\r\n }\r\n if (averageY <= top_1 + (bottom - top_1) / 2 || dropped) {\r\n var nextY = top_1;\r\n for (var i = 0, len = seriesPoints.length; i < len; i++) {\r\n var series = seriesPoints[i].series;\r\n var pointY = seriesPoints[i].point.y;\r\n var tooltip = series.tooltip;\r\n tooltip.setBounds({ x: 0, y: nextY, width: this.pixelWidth, height: bottom });\r\n if (tooltip.invalid) {\r\n tooltip.validate();\r\n }\r\n tooltip.toBack();\r\n nextY = $utils.spritePointToSvg({ x: 0, y: tooltip.label.pixelY + tooltip.label.measuredHeight - tooltip.pixelY + pointY + tooltip.pixelMarginBottom }, tooltip).y;\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Shows tooltips for a list of axes at specific position.\r\n *\r\n * Position might be X coordinate for horizontal axes, and Y coordinate for\r\n * vertical axes.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axes List of axes to show tooltip on\r\n * @param position Position (px)\r\n */\r\n XYChart.prototype.showAxisTooltip = function (axes, position, except) {\r\n var _this = this;\r\n $iter.each(axes.iterator(), function (axis) {\r\n if (axis != except) {\r\n if (_this.dataItems.length > 0 || axis.dataItems.length > 0) {\r\n axis.showTooltipAtPosition(position);\r\n }\r\n }\r\n });\r\n };\r\n /**\r\n * Recalculates the value range for the axis taking into account zoom level & inversed.\r\n *\r\n * @param axis Axis\r\n * @param range Range\r\n * @return Modified range\r\n */\r\n XYChart.prototype.getUpdatedRange = function (axis, range) {\r\n if (!axis) {\r\n return;\r\n }\r\n var start;\r\n var end;\r\n var inversed = axis.renderer.inversed;\r\n if (axis.renderer instanceof AxisRendererY) {\r\n range = $math.invertRange(range);\r\n }\r\n if (inversed) {\r\n $math.invertRange(range);\r\n start = 1 - axis.end;\r\n end = 1 - axis.start;\r\n }\r\n else {\r\n start = axis.start;\r\n end = axis.end;\r\n }\r\n var difference = end - start;\r\n return {\r\n start: start + range.start * difference,\r\n end: start + range.end * difference\r\n };\r\n };\r\n /**\r\n * Performs zoom and other operations when user finishes zooming using chart\r\n * cursor, e.g. zooms axes.\r\n *\r\n * @param event Cursor's event\r\n */\r\n XYChart.prototype.handleCursorZoomEnd = function (event) {\r\n var cursor = this.cursor;\r\n var behavior = cursor.behavior;\r\n if (behavior == \"zoomX\" || behavior == \"zoomXY\") {\r\n var xRange = cursor.xRange;\r\n if (xRange && this.xAxes.length > 0) {\r\n xRange = this.getUpdatedRange(this.xAxes.getIndex(0), xRange);\r\n xRange.priority = \"start\";\r\n this.zoomAxes(this.xAxes, xRange);\r\n }\r\n }\r\n if (behavior == \"zoomY\" || behavior == \"zoomXY\") {\r\n var yRange = cursor.yRange;\r\n if (yRange && this.yAxes.length > 0) {\r\n yRange = this.getUpdatedRange(this.yAxes.getIndex(0), yRange);\r\n yRange.priority = \"start\";\r\n this.zoomAxes(this.yAxes, yRange);\r\n }\r\n }\r\n this.handleHideCursor();\r\n };\r\n /**\r\n * Performs zoom and other operations when user is panning chart plot using chart cursor.\r\n *\r\n * @param event Cursor's event\r\n */\r\n XYChart.prototype.handleCursorPanStart = function (event) {\r\n var xAxis = this.xAxes.getIndex(0);\r\n if (xAxis) {\r\n this._panStartXRange = { start: xAxis.start, end: xAxis.end };\r\n }\r\n var yAxis = this.yAxes.getIndex(0);\r\n if (yAxis) {\r\n this._panStartYRange = { start: yAxis.start, end: yAxis.end };\r\n }\r\n };\r\n /**\r\n * Performs zoom and other operations when user ends panning\r\n *\r\n * @param event Cursor's event\r\n */\r\n XYChart.prototype.handleCursorPanEnd = function (event) {\r\n var cursor = this.cursor;\r\n var behavior = cursor.behavior;\r\n if (this._panEndXRange && (behavior == \"panX\" || behavior == \"panXY\")) {\r\n var panEndRange = this._panEndXRange;\r\n var delta = 0;\r\n if (panEndRange.start < 0) {\r\n delta = panEndRange.start;\r\n }\r\n if (panEndRange.end > 1) {\r\n delta = panEndRange.end - 1;\r\n }\r\n this.zoomAxes(this.xAxes, { start: panEndRange.start - delta, end: panEndRange.end - delta }, false, true);\r\n this._panEndXRange = undefined;\r\n this._panStartXRange = undefined;\r\n }\r\n if (this._panEndYRange && (behavior == \"panY\" || behavior == \"panXY\")) {\r\n var panEndRange = this._panEndYRange;\r\n var delta = 0;\r\n if (panEndRange.start < 0) {\r\n delta = panEndRange.start;\r\n }\r\n if (panEndRange.end > 1) {\r\n delta = panEndRange.end - 1;\r\n }\r\n this.zoomAxes(this.yAxes, { start: panEndRange.start - delta, end: panEndRange.end - delta }, false, true);\r\n this._panEndYRange = undefined;\r\n this._panStartYRange = undefined;\r\n }\r\n };\r\n XYChart.prototype.handleCursorCanceled = function () {\r\n this._panEndXRange = undefined;\r\n this._panStartXRange = undefined;\r\n };\r\n /**\r\n * Performs zoom and other operations when user is panning chart plot using chart cursor.\r\n *\r\n * @param event Cursor's event\r\n */\r\n XYChart.prototype.handleCursorPanning = function (event) {\r\n var cursor = this.cursor;\r\n var behavior = cursor.behavior;\r\n var maxPanOut = cursor.maxPanOut;\r\n if (this._panStartXRange && (behavior == \"panX\" || behavior == \"panXY\")) {\r\n var panStartRange = this._panStartXRange;\r\n var range = cursor.xRange;\r\n var axisRange = this.getCommonAxisRange(this.xAxes);\r\n var difference = (panStartRange.end - panStartRange.start);\r\n var delta = range.start * (axisRange.end - axisRange.start);\r\n var newStart = Math.max(-maxPanOut, delta + panStartRange.start);\r\n var newEnd = Math.min(delta + panStartRange.end, 1 + maxPanOut);\r\n if (newStart <= 0) {\r\n newEnd = newStart + difference;\r\n }\r\n if (newEnd >= 1) {\r\n newStart = newEnd - difference;\r\n }\r\n var newRange = {\r\n start: newStart,\r\n end: newEnd\r\n };\r\n this._panEndXRange = newRange;\r\n this.zoomAxes(this.xAxes, newRange, false, false, cursor.maxPanOut);\r\n }\r\n if (this._panStartYRange && (behavior == \"panY\" || behavior == \"panXY\")) {\r\n var panStartRange = this._panStartYRange;\r\n var range = cursor.yRange;\r\n var axisRange = this.getCommonAxisRange(this.yAxes);\r\n var difference = panStartRange.end - panStartRange.start;\r\n var delta = range.start * (axisRange.end - axisRange.start);\r\n var newStart = Math.max(-maxPanOut, delta + panStartRange.start);\r\n var newEnd = Math.min(delta + panStartRange.end, 1 + maxPanOut);\r\n if (newStart <= 0) {\r\n newEnd = newStart + difference;\r\n }\r\n if (newEnd >= 1) {\r\n newStart = newEnd - difference;\r\n }\r\n var newRange = {\r\n start: newStart,\r\n end: newEnd\r\n };\r\n this._panEndYRange = newRange;\r\n this.zoomAxes(this.yAxes, newRange, false, false, cursor.maxPanOut);\r\n }\r\n this.handleHideCursor();\r\n };\r\n /**\r\n * Performs zoom and other operations when user starts zooming using chart\r\n * cursor, e.g. zooms axes.\r\n *\r\n * @param event Cursor's event\r\n */\r\n XYChart.prototype.handleCursorZoomStart = function (event) {\r\n // Nothing here\r\n // This method is here only as a \"placeholder\" for extending classes to\r\n // override if necessary\r\n };\r\n Object.defineProperty(XYChart.prototype, \"scrollbarX\", {\r\n /**\r\n * @return Scrollbar\r\n */\r\n get: function () {\r\n return this._scrollbarX;\r\n },\r\n /**\r\n * Horizontal (X) scrollbar.\r\n *\r\n * @param scrollbar Scrollbar\r\n */\r\n set: function (scrollbar) {\r\n var _this = this;\r\n if (this._scrollbarX) {\r\n this.removeDispose(this._scrollbarX);\r\n }\r\n this._scrollbarX = scrollbar;\r\n if (scrollbar) {\r\n this._disposers.push(scrollbar);\r\n scrollbar.parent = this.topAxesContainer;\r\n scrollbar.shouldClone = false;\r\n scrollbar.startGrip.exportable = false;\r\n scrollbar.endGrip.exportable = false;\r\n scrollbar.toBack();\r\n scrollbar.orientation = \"horizontal\";\r\n scrollbar.events.on(\"rangechanged\", this.handleXScrollbarChange, this, false);\r\n // accessibility related\r\n scrollbar.adapter.add(\"positionValue\", function (arg) {\r\n var xAxis = _this.xAxes.getIndex(0);\r\n if (xAxis) {\r\n arg.value = xAxis.getPositionLabel(arg.position);\r\n }\r\n return arg;\r\n });\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYChart.prototype, \"scrollbarY\", {\r\n /**\r\n * @return Scrollbar\r\n */\r\n get: function () {\r\n return this._scrollbarY;\r\n },\r\n /**\r\n * Vertical (Y) scrollbar.\r\n *\r\n * @param scrollbar Scrollbar\r\n */\r\n set: function (scrollbar) {\r\n var _this = this;\r\n if (this._scrollbarY) {\r\n this.removeDispose(this._scrollbarY);\r\n }\r\n this._scrollbarY = scrollbar;\r\n if (scrollbar) {\r\n this._disposers.push(scrollbar);\r\n scrollbar.parent = this.rightAxesContainer;\r\n scrollbar.startGrip.exportable = false;\r\n scrollbar.shouldClone = false;\r\n scrollbar.endGrip.exportable = false;\r\n scrollbar.toFront();\r\n scrollbar.orientation = \"vertical\";\r\n scrollbar.events.on(\"rangechanged\", this.handleYScrollbarChange, this, false);\r\n // accessibility related\r\n scrollbar.adapter.add(\"positionValue\", function (arg) {\r\n var yAxis = _this.yAxes.getIndex(0);\r\n if (yAxis) {\r\n arg.value = yAxis.getPositionLabel(arg.position);\r\n }\r\n return arg;\r\n });\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Zooms axes affected by the horizontal (X) scrollbar when the selection\r\n * on it changes.\r\n *\r\n * @param event Scrollbar range change event\r\n */\r\n XYChart.prototype.handleXScrollbarChange = function (event) {\r\n if (this.inited) {\r\n var scrollbar = event.target;\r\n var range = scrollbar.range;\r\n if (range.end == 1) {\r\n range.priority = \"end\";\r\n }\r\n if (range.start == 0) {\r\n range.priority = \"start\";\r\n }\r\n range = this.zoomAxes(this.xAxes, range);\r\n scrollbar.fixRange(range);\r\n }\r\n };\r\n /**\r\n * Zooms axes affected by the vertical (Y) scrollbar when the selection\r\n * on it changes.\r\n *\r\n * @param event Scrollbar range change event\r\n */\r\n XYChart.prototype.handleYScrollbarChange = function (event) {\r\n if (this.inited) {\r\n var scrollbar = event.target;\r\n var range = scrollbar.range;\r\n if (range.end == 1) {\r\n range.priority = \"end\";\r\n }\r\n if (range.start == 0) {\r\n range.priority = \"start\";\r\n }\r\n range = this.zoomAxes(this.yAxes, range);\r\n scrollbar.fixRange(range);\r\n }\r\n };\r\n /**\r\n * Zooms axes that are affected by to specific relative range.\r\n *\r\n * @param axes List of axes to zoom\r\n * @param range Range of values to zoom to (0-1)\r\n * @param instantly If set to `true` will skip zooming animation\r\n * @return Recalculated range that is common to all involved axes\r\n */\r\n XYChart.prototype.zoomAxes = function (axes, range, instantly, round, declination) {\r\n var realRange = { start: 0, end: 1 };\r\n this.showSeriesTooltip(); // hides\r\n if (!this.dataInvalid) {\r\n $iter.each(axes.iterator(), function (axis) {\r\n if (axis.renderer.inversed) {\r\n range = $math.invertRange(range);\r\n }\r\n axis.hideTooltip(0);\r\n if (round) {\r\n //let diff = range.end - range.start;\r\n range.start = axis.roundPosition(range.start + 0.0001, 0);\r\n range.end = axis.roundPosition(range.end + 0.0001, 0);\r\n }\r\n var axisRange = axis.zoom(range, instantly, instantly, declination);\r\n if (axis.renderer.inversed) {\r\n axisRange = $math.invertRange(axisRange);\r\n }\r\n realRange = axisRange;\r\n });\r\n }\r\n return realRange;\r\n };\r\n Object.defineProperty(XYChart.prototype, \"maskBullets\", {\r\n /**\r\n * @return Mask bullet container?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maskBullets\");\r\n },\r\n /**\r\n * Indicates if bullet container is masked.\r\n *\r\n * If it is set to `true`, any bullets that do not fit into bullet container\r\n * will be clipped off. Settting to `false` will allow bullets to \"spill out\"\r\n * of the plot area so they are not cut off.\r\n *\r\n * @param value Mask bullet container?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"maskBullets\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYChart.prototype, \"arrangeTooltips\", {\r\n /**\r\n * @return Arrange tooltips?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"arrangeTooltips\");\r\n },\r\n /**\r\n * Indicates if chart should arrange series tooltips so that they would not\r\n * overlap.\r\n *\r\n * If set to `true` (default), the chart will adjust vertical positions of\r\n * all simultaneously shown tooltips to avoid overlapping.\r\n *\r\n * However, if you have a vertically-arranged chart, it might not make sense,\r\n * because tooltips would most probably not be aligned horizontally. In this\r\n * case it would probably be a good idea to set this setting to `false`.\r\n *\r\n * @default true\r\n * @param value Arrange tooltips?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"arrangeTooltips\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Handles mouse wheel event.\r\n *\r\n * @param event Original event\r\n */\r\n XYChart.prototype.handleWheel = function (event) {\r\n var plotContainer = this.plotContainer;\r\n var svgPoint = $utils.documentPointToSvg(event.point, this.htmlContainer, this.svgContainer.cssScale);\r\n var plotPoint = $utils.svgPointToSprite(svgPoint, plotContainer);\r\n var shift = event.shift.y;\r\n var rangeX = this.getCommonAxisRange(this.xAxes);\r\n var rangeY = this.getCommonAxisRange(this.yAxes);\r\n var shiftStep = 0.05;\r\n var maxPanOut = 0;\r\n var mouseWheelBehavior = this.mouseWheelBehavior;\r\n if (mouseWheelBehavior == \"panX\" || mouseWheelBehavior == \"panXY\") {\r\n var differenceX = rangeX.end - rangeX.start;\r\n var newStartX = Math.max(-maxPanOut, rangeX.start + shiftStep * shift / 100);\r\n var newEndX = Math.min(rangeX.end + shiftStep * shift / 100, 1 + maxPanOut);\r\n if (newStartX <= 0) {\r\n newEndX = newStartX + differenceX;\r\n }\r\n if (newEndX >= 1) {\r\n newStartX = newEndX - differenceX;\r\n }\r\n this.zoomAxes(this.xAxes, { start: newStartX, end: newEndX });\r\n }\r\n if (mouseWheelBehavior == \"panY\" || mouseWheelBehavior == \"panXY\") {\r\n shift *= -1;\r\n var differenceY = rangeY.end - rangeY.start;\r\n var newStartY = Math.max(-maxPanOut, rangeY.start + shiftStep * shift / 100);\r\n var newEndY = Math.min(rangeY.end + shiftStep * shift / 100, 1 + maxPanOut);\r\n if (newStartY <= 0) {\r\n newEndY = newStartY + differenceY;\r\n }\r\n if (newEndY >= 1) {\r\n newStartY = newEndY - differenceY;\r\n }\r\n this.zoomAxes(this.yAxes, { start: newStartY, end: newEndY });\r\n }\r\n if (mouseWheelBehavior == \"zoomX\" || mouseWheelBehavior == \"zoomXY\") {\r\n var locationX = plotPoint.x / plotContainer.maxWidth;\r\n var newStartX = Math.max(-maxPanOut, rangeX.start - shiftStep * shift / 100 * locationX);\r\n newStartX = Math.min(newStartX, rangeX.start + (rangeX.end - rangeX.start) * locationX - shiftStep * 0.05);\r\n var newEndX = Math.min(rangeX.end + shiftStep * shift / 100 * (1 - locationX), 1 + maxPanOut);\r\n newEndX = Math.max(newEndX, rangeX.start + (rangeX.end - rangeX.start) * locationX + shiftStep * 0.05);\r\n this.zoomAxes(this.xAxes, { start: newStartX, end: newEndX });\r\n }\r\n if (mouseWheelBehavior == \"zoomY\" || mouseWheelBehavior == \"zoomXY\") {\r\n var locationY = plotPoint.y / plotContainer.maxHeight;\r\n var newStartY = Math.max(-maxPanOut, rangeY.start - shiftStep * shift / 100 * (1 - locationY));\r\n newStartY = Math.min(newStartY, rangeY.start + (rangeY.end - rangeY.start) * locationY - shiftStep * 0.05);\r\n var newEndY = Math.min(rangeY.end + shiftStep * shift / 100 * locationY, 1 + maxPanOut);\r\n newEndY = Math.max(newEndY, rangeY.start + (rangeY.end - rangeY.start) * locationY + shiftStep * 0.05);\r\n this.zoomAxes(this.yAxes, { start: newStartY, end: newEndY });\r\n }\r\n };\r\n Object.defineProperty(XYChart.prototype, \"mouseWheelBehavior\", {\r\n /**\r\n * @return Mouse wheel behavior\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"mouseWheelBehavior\");\r\n },\r\n /**\r\n * Specifies action for when mouse wheel is used when over the chart.\r\n *\r\n * Options: Options: `\"zoomX\"`, `\"zoomY\"`, `\"zoomXY\"`, `\"panX\"`, `\"panY\"`, `\"panXY\"`, `\"none\"` (default).\r\n *\r\n * @default \"none\"\r\n * @param mouse wheel behavior\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"mouseWheelBehavior\", value)) {\r\n if (value != \"none\") {\r\n this._mouseWheelDisposer = this.plotContainer.events.on(\"wheel\", this.handleWheel, this, false);\r\n this._disposers.push(this._mouseWheelDisposer);\r\n }\r\n else {\r\n if (this._mouseWheelDisposer) {\r\n this.plotContainer.wheelable = false;\r\n this.plotContainer.hoverable = false;\r\n this._mouseWheelDisposer.dispose();\r\n }\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * This function is called by the [[DataSource]]'s `dateFields` adapater\r\n * so that particular chart types can popuplate this setting with their\r\n * own type-specific data fields so they are parsed properly.\r\n *\r\n * @param fields Array of date fields\r\n * @return Array of date fields populated with chart's date fields\r\n */\r\n XYChart.prototype.dataSourceDateFields = function (fields) {\r\n var _this = this;\r\n // Process parent\r\n fields = _super.prototype.dataSourceDateFields.call(this, fields);\r\n // Check if we have any series with date-fields\r\n $iter.each(this.series.iterator(), function (series) {\r\n fields = _this.populateDataSourceFields(fields, series.dataFields, [\"dateX\", \"dateY\", \"openDateX\", \"openDateY\"]);\r\n });\r\n return fields;\r\n };\r\n /**\r\n * This function is called by the [[DataSource]]'s `numberFields` adapater\r\n * so that particular chart types can popuplate this setting with their\r\n * own type-specific data fields so they are parsed properly.\r\n *\r\n * @param value Array of number fields\r\n * @return Array of number fields populated with chart's number fields\r\n */\r\n XYChart.prototype.dataSourceNumberFields = function (fields) {\r\n var _this = this;\r\n fields = _super.prototype.dataSourceDateFields.call(this, fields);\r\n // Check if we have any series with date-fields\r\n $iter.each(this.series.iterator(), function (series) {\r\n fields = _this.populateDataSourceFields(fields, series.dataFields, [\"valueX\", \"valueY\", \"openValueX\", \"openValueY\"]);\r\n });\r\n return fields;\r\n };\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n XYChart.prototype.processConfig = function (config) {\r\n if (config) {\r\n // Save axis ranges for later processing\r\n var xAxes = [];\r\n var yAxes = [];\r\n // Set up axes\r\n if ($type.hasValue(config.xAxes) && $type.isArray(config.xAxes)) {\r\n for (var i = 0, len = config.xAxes.length; i < len; i++) {\r\n if (!config.xAxes[i].type) {\r\n throw Error(\"[XYChart error] No type set for xAxes[\" + i + \"].\");\r\n }\r\n else if ($type.hasValue(config.xAxes[i][\"axisRanges\"])) {\r\n xAxes.push({\r\n axisRanges: config.xAxes[i][\"axisRanges\"],\r\n index: i\r\n });\r\n delete (config.xAxes[i][\"axisRanges\"]);\r\n }\r\n }\r\n }\r\n if ($type.hasValue(config.yAxes) && $type.isArray(config.yAxes)) {\r\n for (var i = 0, len = config.yAxes.length; i < len; i++) {\r\n if (!config.yAxes[i].type) {\r\n throw Error(\"[XYChart error] No type set for yAxes[\" + i + \"].\");\r\n }\r\n else if ($type.hasValue(config.yAxes[i][\"axisRanges\"])) {\r\n yAxes.push({\r\n axisRanges: config.yAxes[i][\"axisRanges\"],\r\n index: i\r\n });\r\n delete (config.yAxes[i][\"axisRanges\"]);\r\n }\r\n }\r\n }\r\n // Set up series\r\n if ($type.hasValue(config.series) && $type.isArray(config.series)) {\r\n for (var i = 0, len = config.series.length; i < len; i++) {\r\n config.series[i].type = config.series[i].type || \"LineSeries\";\r\n }\r\n }\r\n // Set up cursor\r\n if ($type.hasValue(config.cursor) && !$type.hasValue(config.cursor.type)) {\r\n config.cursor.type = \"XYCursor\";\r\n }\r\n // Set up scrollbars\r\n if ($type.hasValue(config.scrollbarX) && !$type.hasValue(config.scrollbarX.type)) {\r\n config.scrollbarX.type = \"Scrollbar\";\r\n }\r\n if ($type.hasValue(config.scrollbarY) && !$type.hasValue(config.scrollbarY.type)) {\r\n config.scrollbarY.type = \"Scrollbar\";\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n // Finish up with ranges.\r\n // We need to do this here because series are processed last in JSON\r\n // config. Therefore their respective objects are not yet are available\r\n // when axis (and respectively their ranges) are being processed.\r\n if (yAxes.length) {\r\n for (var i = 0, len = yAxes.length; i < len; i++) {\r\n this.yAxes.getIndex(yAxes[i].index).config = {\r\n axisRanges: yAxes[i].axisRanges\r\n };\r\n }\r\n }\r\n if (xAxes.length) {\r\n for (var i = 0, len = xAxes.length; i < len; i++) {\r\n this.xAxes.getIndex(xAxes[i].index).config = {\r\n axisRanges: xAxes[i].axisRanges\r\n };\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * This function is used to sort element's JSON config properties, so that\r\n * some properties that absolutely need to be processed last, can be put at\r\n * the end.\r\n *\r\n * @ignore Exclude from docs\r\n * @param a Element 1\r\n * @param b Element 2\r\n * @return Sorting number\r\n */\r\n XYChart.prototype.configOrder = function (a, b) {\r\n if (a == b) {\r\n return 0;\r\n }\r\n // Must come last\r\n else if (a == \"scrollbarX\") {\r\n return 1;\r\n }\r\n else if (b == \"scrollbarX\") {\r\n return -1;\r\n }\r\n else if (a == \"scrollbarY\") {\r\n return 1;\r\n }\r\n else if (b == \"scrollbarY\") {\r\n return -1;\r\n }\r\n else if (a == \"cursor\") {\r\n return 1;\r\n }\r\n else if (b == \"cursor\") {\r\n return -1;\r\n }\r\n else if (a == \"series\") {\r\n return 1;\r\n }\r\n else if (b == \"series\") {\r\n return -1;\r\n }\r\n else {\r\n return _super.prototype.configOrder.call(this, a, b);\r\n }\r\n };\r\n /**\r\n * Creates a new Series of type suitable for this chart.\r\n *\r\n * @return New series\r\n */\r\n XYChart.prototype.createSeries = function () {\r\n return new XYSeries();\r\n };\r\n Object.defineProperty(XYChart.prototype, \"zoomOutButton\", {\r\n /**\r\n * @return Zoom out button\r\n */\r\n get: function () {\r\n return this._zoomOutButton;\r\n },\r\n /**\r\n * A [[Button]] element that is used for zooming out the chart.\r\n *\r\n * This button appears only when chart is zoomed in, and disappears\r\n * autoamatically when it is zoome dout.\r\n *\r\n * @param button Zoom out button\r\n */\r\n set: function (button) {\r\n var _this = this;\r\n this._zoomOutButton = button;\r\n if (button) {\r\n button.events.on(\"hit\", function () {\r\n _this.zoomAxes(_this.xAxes, { start: 0, end: 1 });\r\n _this.zoomAxes(_this.yAxes, { start: 0, end: 1 });\r\n }, undefined, false);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies all parameters from another [[XYChart]].\r\n *\r\n * @param source Source XYChart\r\n */\r\n XYChart.prototype.copyFrom = function (source) {\r\n var _this = this;\r\n source.xAxes.each(function (axis) {\r\n _this.xAxes.push(axis.clone());\r\n });\r\n source.yAxes.each(function (axis) {\r\n _this.yAxes.push(axis.clone());\r\n });\r\n //this.xAxes.copyFrom(source.xAxes);\r\n //this.yAxes.copyFrom(source.yAxes);\r\n _super.prototype.copyFrom.call(this, source);\r\n //this.zoomOutButton.copyFrom(source.zoomOutButton);\r\n if (source.cursor) {\r\n this.cursor = source.cursor.clone();\r\n }\r\n if (source.scrollbarX) {\r\n this.scrollbarX = source.scrollbarX.clone();\r\n }\r\n if (source.scrollbarY) {\r\n this.scrollbarY = source.scrollbarY.clone();\r\n }\r\n //@todo copy all container properties\r\n };\r\n /**\r\n * @ignore\r\n */\r\n XYChart.prototype.disposeData = function () {\r\n _super.prototype.disposeData.call(this);\r\n var scrollbarX = this.scrollbarX;\r\n if (scrollbarX && scrollbarX instanceof XYChartScrollbar) {\r\n scrollbarX.scrollbarChart.disposeData();\r\n }\r\n var scrollbarY = this.scrollbarY;\r\n if (scrollbarY && scrollbarY instanceof XYChartScrollbar) {\r\n scrollbarY.scrollbarChart.disposeData();\r\n }\r\n this.xAxes.each(function (axis) {\r\n axis.disposeData();\r\n });\r\n this.yAxes.each(function (axis) {\r\n axis.disposeData();\r\n });\r\n };\r\n /**\r\n * Adds one or several (array) of data items to the existing data.\r\n *\r\n * @param rawDataItem One or many raw data item objects\r\n */\r\n XYChart.prototype.addData = function (rawDataItem, removeCount) {\r\n if (this.scrollbarX instanceof XYChartScrollbar) {\r\n this.addScrollbarData(this.scrollbarX, removeCount);\r\n }\r\n if (this.scrollbarY instanceof XYChartScrollbar) {\r\n this.addScrollbarData(this.scrollbarY, removeCount);\r\n }\r\n _super.prototype.addData.call(this, rawDataItem, removeCount);\r\n };\r\n /**\r\n * @ignore\r\n */\r\n XYChart.prototype.addScrollbarData = function (scrollbar, removeCount) {\r\n var chart = scrollbar.scrollbarChart;\r\n chart._parseDataFrom = chart.data.length;\r\n chart.invalidateData();\r\n };\r\n /**\r\n * @ignore\r\n */\r\n XYChart.prototype.removeScrollbarData = function (scrollbar, removeCount) {\r\n var chart = scrollbar.scrollbarChart;\r\n if ($type.isNumber(removeCount)) {\r\n while (removeCount > 0) {\r\n var dataItem = this.dataItems.getIndex(0);\r\n if (dataItem) {\r\n chart.dataItems.remove(dataItem);\r\n }\r\n chart.dataUsers.each(function (dataUser) {\r\n var dataItem = dataUser.dataItems.getIndex(0);\r\n if (dataItem) {\r\n dataUser.dataItems.remove(dataItem);\r\n }\r\n });\r\n chart._parseDataFrom--;\r\n removeCount--;\r\n }\r\n chart.invalidateData();\r\n }\r\n };\r\n /**\r\n * Removes elements from the beginning of data\r\n *\r\n * @param count number of elements to remove\r\n */\r\n XYChart.prototype.removeData = function (count) {\r\n if (this.scrollbarX instanceof XYChartScrollbar) {\r\n this.removeScrollbarData(this.scrollbarX, count);\r\n }\r\n if (this.scrollbarY instanceof XYChartScrollbar) {\r\n this.removeScrollbarData(this.scrollbarY, count);\r\n }\r\n _super.prototype.removeData.call(this, count);\r\n };\r\n /**\r\n * @param value Tap to activate?\r\n */\r\n XYChart.prototype.setTapToActivate = function (value) {\r\n _super.prototype.setTapToActivate.call(this, value);\r\n if (this.cursor) {\r\n this.cursor.interactions.isTouchProtected = value;\r\n this.plotContainer.interactions.isTouchProtected = value;\r\n }\r\n };\r\n XYChart.prototype.handleTapToActivate = function () {\r\n _super.prototype.handleTapToActivate.call(this);\r\n if (this.cursor) {\r\n this.cursor.interactions.isTouchProtected = false;\r\n this.plotContainer.interactions.isTouchProtected = false;\r\n }\r\n };\r\n XYChart.prototype.handleTapToActivateDeactivation = function () {\r\n _super.prototype.handleTapToActivateDeactivation.call(this);\r\n if (this.cursor) {\r\n this.cursor.interactions.isTouchProtected = true;\r\n this.plotContainer.interactions.isTouchProtected = true;\r\n }\r\n };\r\n return XYChart;\r\n}(SerialChart));\r\nexport { XYChart };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"XYChart\"] = XYChart;\r\n/**\r\n * Add default responsive rules\r\n */\r\n/**\r\n * Remove horizontal scrollbar on narrow charts.\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.maybeXS,\r\n state: function (target, stateId) {\r\n if (target instanceof XYChart && target.scrollbarX) {\r\n var state = target.states.create(stateId);\r\n var sbstate = target.scrollbarX.states.create(stateId);\r\n sbstate.properties.disabled = true;\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n/**\r\n * Remove vertical scrollbar on short charts.\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.maybeXS,\r\n state: function (target, stateId) {\r\n if (target instanceof XYChart && target.scrollbarY) {\r\n var state = target.states.create(stateId);\r\n var sbstate = target.scrollbarY.states.create(stateId);\r\n sbstate.properties.disabled = true;\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n//# sourceMappingURL=XYChart.js.map","/**\r\n * TreeMap chart module.\r\n *\r\n * Parts of the functionality used in this module are taken from D3.js library\r\n * (https://d3js.org/)\r\n */\r\nimport * as tslib_1 from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { XYChart, XYChartDataItem } from \"./XYChart\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { DictionaryTemplate, DictionaryDisposer } from \"../../core/utils/Dictionary\";\r\nimport { ValueAxis } from \"../axes/ValueAxis\";\r\nimport { TreeMapSeries } from \"../series/TreeMapSeries\";\r\nimport { ColorSet } from \"../../core/utils/ColorSet\";\r\nimport { MouseCursorStyle } from \"../../core/interaction/Mouse\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $array from \"../../core/utils/Array\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[TreeMap]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar TreeMapDataItem = /** @class */ (function (_super) {\r\n tslib_1.__extends(TreeMapDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function TreeMapDataItem() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * Required for squarify functionality.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n _this.rows = [];\r\n _this.className = \"TreeMapDataItem\";\r\n _this.values.value = {};\r\n _this.values.x0 = {};\r\n _this.values.y0 = {};\r\n _this.values.x1 = {};\r\n _this.values.y1 = {};\r\n _this.hasChildren.children = true;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(TreeMapDataItem.prototype, \"legendDataItem\", {\r\n /**\r\n * @return Legend data item\r\n */\r\n get: function () {\r\n return this._legendDataItem;\r\n },\r\n /**\r\n * A legend's data item, that corresponds to this data item.\r\n *\r\n * @param value Legend data item\r\n */\r\n set: function (value) {\r\n this._legendDataItem = value;\r\n if (value.label) {\r\n value.label.dataItem = this;\r\n }\r\n if (value.valueLabel) {\r\n value.valueLabel.dataItem = this;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns a duration (ms) the Data Item should take to animate from one\r\n * value to another.\r\n *\r\n * If the duration is not specified via parameter, this method will try to\r\n * request a default duration from the related `Component`.\r\n *\r\n * @param duration Default duration (ms)\r\n * @return Duration (ms)\r\n */\r\n TreeMapDataItem.prototype.getDuration = function () {\r\n return 0;\r\n };\r\n Object.defineProperty(TreeMapDataItem.prototype, \"value\", {\r\n /**\r\n * @return Value\r\n */\r\n get: function () {\r\n var value = 0;\r\n if (!this.children || this.children.length == 0) {\r\n value = this.values[\"value\"].workingValue;\r\n }\r\n else {\r\n $iter.each(this.children.iterator(), function (child) {\r\n var childValue = child.value;\r\n if ($type.isNumber(childValue)) {\r\n value += childValue;\r\n }\r\n });\r\n }\r\n return value;\r\n /*\r\n let value = this.values[\"value\"].workingValue;\r\n \r\n if (!$type.isNumber(value)) {\r\n value = 0;\r\n if (this.children) {\r\n $iter.each(this.children.iterator(), (child) => {\r\n if ($type.isNumber(child.value)) {\r\n value += child.value;\r\n }\r\n });\r\n }\r\n }\r\n return value;*/\r\n },\r\n /**\r\n * Numeric value of the item.\r\n *\r\n * @param value Value\r\n */\r\n set: function (value) {\r\n this.setValue(\"value\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapDataItem.prototype, \"percent\", {\r\n get: function () {\r\n if (this.parent) {\r\n return this.value / this.parent.value * 100;\r\n }\r\n return 100;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapDataItem.prototype, \"x0\", {\r\n /**\r\n * @return X\r\n */\r\n get: function () {\r\n return this.values.x0.value;\r\n },\r\n /**\r\n * Item's X position.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param value X\r\n */\r\n set: function (value) {\r\n this.setValue(\"x0\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapDataItem.prototype, \"x1\", {\r\n /**\r\n * @return X\r\n */\r\n get: function () {\r\n return this.values.x1.value;\r\n },\r\n /**\r\n * Item's X position.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param value X\r\n */\r\n set: function (value) {\r\n this.setValue(\"x1\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapDataItem.prototype, \"y0\", {\r\n /**\r\n * @return Y\r\n */\r\n get: function () {\r\n return this.values.y0.value;\r\n },\r\n /**\r\n * Item's Y position.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param value Y\r\n */\r\n set: function (value) {\r\n this.setValue(\"y0\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapDataItem.prototype, \"y1\", {\r\n /**\r\n * @return Y\r\n */\r\n get: function () {\r\n return this.values.y1.value;\r\n },\r\n /**\r\n * Item's Y position.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param value Y\r\n */\r\n set: function (value) {\r\n this.setValue(\"y1\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapDataItem.prototype, \"name\", {\r\n /**\r\n * @return Name\r\n */\r\n get: function () {\r\n return this.properties.name;\r\n },\r\n /**\r\n * Item's name.\r\n *\r\n * @param name Name\r\n */\r\n set: function (name) {\r\n this.setProperty(\"name\", name);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapDataItem.prototype, \"children\", {\r\n /**\r\n * @return Item's children\r\n */\r\n get: function () {\r\n return this.properties.children;\r\n },\r\n /**\r\n * A list of item's sub-children.\r\n *\r\n * Having children means that the TreeMap chat will automatically be\r\n * \"drillable\". Clicking on an item with children will zoom to the item, then\r\n * display its children.\r\n *\r\n * Treemap can have any level of nesting.\r\n *\r\n * @param children Item's children\r\n */\r\n set: function (children) {\r\n this.setProperty(\"children\", children);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapDataItem.prototype, \"level\", {\r\n /**\r\n * Depth level in the treemap hierarchy.\r\n *\r\n * The top-level item will have level set at 0. Its children will have\r\n * level 1, and so on.\r\n *\r\n * @readonly\r\n * @return Level\r\n */\r\n get: function () {\r\n if (!this.parent) {\r\n return 0;\r\n }\r\n else {\r\n return this.parent.level + 1;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapDataItem.prototype, \"color\", {\r\n /**\r\n * @return Color\r\n */\r\n get: function () {\r\n var color = this.properties.color;\r\n if (color == undefined) {\r\n if (this.parent) {\r\n color = this.parent.color;\r\n }\r\n }\r\n if (color == undefined) {\r\n if (this.component) {\r\n color = this.component.colors.getIndex(this.component.colors.step * this.index);\r\n }\r\n }\r\n return color;\r\n },\r\n /**\r\n * Item's color.\r\n *\r\n * If not set, will use parent's color, or, if that is not set either,\r\n * automatically assigned color from chart's color set. (`chart.colors`)\r\n *\r\n * @param value Color\r\n */\r\n set: function (value) {\r\n this.setProperty(\"color\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapDataItem.prototype, \"fill\", {\r\n /**\r\n * @ignore\r\n * For the legend to work properly\r\n */\r\n get: function () {\r\n return this.color;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMapDataItem.prototype, \"series\", {\r\n get: function () {\r\n return this._series;\r\n },\r\n /**\r\n * Series of children data items\r\n * @todo: proper descrition\r\n */\r\n set: function (series) {\r\n if (series != this._series) {\r\n if (this._series) {\r\n this.component.series.removeValue(this._series);\r\n this._series.dispose();\r\n }\r\n this._series = series;\r\n this._disposers.push(series);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Hides the Data Item and related visual elements.\r\n *\r\n * @param duration Animation duration (ms)\r\n * @param delay Delay animation (ms)\r\n * @param toValue A value to set to `fields` when hiding\r\n * @param fields A list of data fields to set value to `toValue`\r\n */\r\n TreeMapDataItem.prototype.hide = function (duration, delay, toValue, fields) {\r\n this.setWorkingValue(\"value\", 0);\r\n if (this.children) {\r\n this.children.each(function (child) {\r\n child.hide(duration, delay, toValue, fields);\r\n });\r\n }\r\n return _super.prototype.hide.call(this, duration, delay, toValue, fields);\r\n };\r\n /**\r\n * Shows the Data Item and related visual elements.\r\n *\r\n * @param duration Animation duration (ms)\r\n * @param delay Delay animation (ms)\r\n * @param fields A list of fields to set values of\r\n */\r\n TreeMapDataItem.prototype.show = function (duration, delay, fields) {\r\n this.setWorkingValue(\"value\", this.values.value.value);\r\n if (this.children) {\r\n this.children.each(function (child) {\r\n child.show(duration, delay, fields);\r\n });\r\n }\r\n return _super.prototype.show.call(this, duration, delay, fields);\r\n };\r\n return TreeMapDataItem;\r\n}(XYChartDataItem));\r\nexport { TreeMapDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a TreeMap chart.\r\n *\r\n * @see {@link ITreeMapEvents} for a list of available Events\r\n * @see {@link ITreeMapAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/treemap/} for documentation\r\n */\r\nvar TreeMap = /** @class */ (function (_super) {\r\n tslib_1.__extends(TreeMap, _super);\r\n /**\r\n * Constructor\r\n */\r\n function TreeMap() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * An algorithm used to divide area into squares based on their value.\r\n *\r\n * Available options: squarify (default), binaryTree, slice, dice, sliceDice.\r\n *\r\n * ```TypeScript\r\n * chart.layoutAlgorithm = chart.sliceDice;\r\n * ```\r\n * ```JavaScript\r\n * chart.layoutAlgorithm = chart.sliceDice;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"layoutAlgorithm\": \"sliceDice\",\r\n * // ...\r\n * }\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/treemap/#Area_division_methods} For more info and examples.\r\n * @default squarify\r\n */\r\n _this.layoutAlgorithm = _this.squarify;\r\n /**\r\n * Is the chart zoomable?\r\n *\r\n * If the chart is `zoomable`, and items have sub-items, the chart will\r\n * drill-down to sub-items when click on their parent item.\r\n *\r\n * @default true\r\n */\r\n _this.zoomable = true;\r\n _this.className = \"TreeMap\";\r\n _this.maxLevels = 2;\r\n _this.currentLevel = 0;\r\n _this.colors = new ColorSet();\r\n _this.sorting = \"descending\";\r\n // create two value axes for the chart\r\n var xAxis = _this.xAxes.push(new ValueAxis());\r\n xAxis.title.disabled = true;\r\n xAxis.strictMinMax = true;\r\n var xRenderer = xAxis.renderer;\r\n xRenderer.inside = true;\r\n xRenderer.labels.template.disabled = true;\r\n xRenderer.ticks.template.disabled = true;\r\n xRenderer.grid.template.disabled = true;\r\n xRenderer.axisFills.template.disabled = true;\r\n xRenderer.minGridDistance = 100;\r\n xRenderer.line.disabled = true;\r\n xRenderer.baseGrid.disabled = true;\r\n //xRenderer.inversed = true;\r\n var yAxis = _this.yAxes.push(new ValueAxis());\r\n yAxis.title.disabled = true;\r\n yAxis.strictMinMax = true;\r\n var yRenderer = yAxis.renderer;\r\n yRenderer.inside = true;\r\n yRenderer.labels.template.disabled = true;\r\n yRenderer.ticks.template.disabled = true;\r\n yRenderer.grid.template.disabled = true;\r\n yRenderer.axisFills.template.disabled = true;\r\n yRenderer.minGridDistance = 100;\r\n yRenderer.line.disabled = true;\r\n yRenderer.baseGrid.disabled = true;\r\n yRenderer.inversed = true;\r\n // shortcuts\r\n _this.xAxis = xAxis;\r\n _this.yAxis = yAxis;\r\n var template = new TreeMapSeries();\r\n _this.seriesTemplates = new DictionaryTemplate(template);\r\n _this._disposers.push(new DictionaryDisposer(_this.seriesTemplates));\r\n _this._disposers.push(template);\r\n _this.zoomOutButton.events.on(\"hit\", function () {\r\n _this.zoomToChartDataItem(_this._homeDataItem);\r\n }, undefined, false);\r\n _this.seriesTemplates.events.on(\"insertKey\", function (event) {\r\n event.newValue.isTemplate = true;\r\n }, undefined, false);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(TreeMap.prototype, \"navigationBar\", {\r\n /**\r\n * Returns navigationBar if it is added to a chart\r\n */\r\n get: function () {\r\n return this._navigationBar;\r\n },\r\n /**\r\n * A navigation bar used to show \"breadcrumb\" control, indicating current\r\n * drill-down path.\r\n */\r\n set: function (navigationBar) {\r\n var _this = this;\r\n if (this._navigationBar != navigationBar) {\r\n this._navigationBar = navigationBar;\r\n navigationBar.parent = this;\r\n navigationBar.toBack();\r\n navigationBar.links.template.events.on(\"hit\", function (event) {\r\n var dataItem = event.target.dataItem.dataContext;\r\n if (!dataItem.isDisposed()) {\r\n _this.zoomToChartDataItem(dataItem);\r\n _this.createTreeSeries(dataItem);\r\n }\r\n }, undefined, true);\r\n this._disposers.push(navigationBar);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * (Re)validates chart's data.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n TreeMap.prototype.validateData = function () {\r\n this.series.clear();\r\n this._tempSeries = [];\r\n _super.prototype.validateData.call(this);\r\n if (this._homeDataItem) {\r\n this._homeDataItem.dispose();\r\n }\r\n var homeDataItem = this.dataItems.template.clone(); // cant' use createDataItem here!\r\n this._homeDataItem = homeDataItem;\r\n $iter.each(this.dataItems.iterator(), function (dataItem) {\r\n dataItem.parent = homeDataItem;\r\n });\r\n homeDataItem.children = this.dataItems;\r\n homeDataItem.x0 = 0;\r\n homeDataItem.y0 = 0;\r\n homeDataItem.name = this._homeText;\r\n var maxX = 1000;\r\n var maxY = Math.round((maxX * this.pixelHeight / this.pixelWidth) / 10) * 10 || 1000;\r\n homeDataItem.x1 = maxX;\r\n homeDataItem.y1 = maxY;\r\n this.xAxis.min = 0;\r\n this.xAxis.max = maxX;\r\n this.xAxis.getMinMax();\r\n this.yAxis.min = 0;\r\n this.yAxis.max = maxY;\r\n this.yAxis.getMinMax();\r\n this.layoutItems(homeDataItem);\r\n this.createTreeSeries(homeDataItem);\r\n };\r\n /**\r\n * Layouts and sizes all items according to their value and\r\n * `layoutAlgorithm`.\r\n *\r\n * @ignore Exclude from docs\r\n * @param parent Parent data item\r\n */\r\n TreeMap.prototype.layoutItems = function (parent, sorting) {\r\n if (parent) {\r\n var children = parent.children;\r\n if (!sorting) {\r\n sorting = this.sorting;\r\n }\r\n if (sorting == \"ascending\") {\r\n children.values.sort(function (a, b) {\r\n return a.value - b.value;\r\n });\r\n }\r\n if (sorting == \"descending\") {\r\n children.values.sort(function (a, b) {\r\n return b.value - a.value;\r\n });\r\n }\r\n this._updateDataItemIndexes(0);\r\n this.layoutAlgorithm(parent);\r\n for (var i = 0, len = children.length; i < len; i++) {\r\n var node = children.getIndex(i);\r\n if (node.children) {\r\n this.layoutItems(node);\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Creates and returns a new treemap series.\r\n *\r\n * @todo Description\r\n * @param dataItem Data item to create series out of\r\n */\r\n TreeMap.prototype.createTreeSeries = function (dataItem) {\r\n var _this = this;\r\n this._tempSeries = [];\r\n var navigationData = [dataItem];\r\n // create parent series and navigation data\r\n var parentDataItem = dataItem.parent;\r\n while (parentDataItem != undefined) {\r\n this.initSeries(parentDataItem);\r\n navigationData.push(parentDataItem);\r\n parentDataItem = parentDataItem.parent;\r\n }\r\n navigationData.reverse();\r\n if (this.navigationBar) {\r\n this.navigationBar.data = navigationData;\r\n }\r\n // create series and children series\r\n this.createTreeSeriesReal(dataItem);\r\n // add those which are not in the list\r\n $array.each(this._tempSeries, function (series) {\r\n if (_this.series.indexOf(series) == -1) {\r\n _this.series.push(series);\r\n }\r\n series.zIndex = series.level;\r\n });\r\n };\r\n /**\r\n * [createTreeSeriesReal description]\r\n *\r\n * @todo Description\r\n * @param dataItem [description]\r\n */\r\n TreeMap.prototype.createTreeSeriesReal = function (dataItem) {\r\n if (dataItem.children) {\r\n var level = dataItem.level;\r\n if (level < this.currentLevel + this.maxLevels) {\r\n this.initSeries(dataItem);\r\n for (var i = 0; i < dataItem.children.length; i++) {\r\n var child = dataItem.children.getIndex(i);\r\n if (child.children) {\r\n this.createTreeSeriesReal(child);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n TreeMap.prototype.setData = function (value) {\r\n this.currentLevel = 0;\r\n this.currentlyZoomed = undefined;\r\n this.xAxis.start = 0;\r\n this.xAxis.end = 1;\r\n this.yAxis.start = 0;\r\n this.yAxis.end = 1;\r\n _super.prototype.setData.call(this, value);\r\n };\r\n /**\r\n * @ignore\r\n * Overriding, as tree map series are created on the fly all the time\r\n */\r\n TreeMap.prototype.seriesAppeared = function () {\r\n return true;\r\n };\r\n /**\r\n * Initializes the treemap series.\r\n *\r\n * @todo Description\r\n * @param dataItem Chart data item\r\n */\r\n TreeMap.prototype.initSeries = function (dataItem) {\r\n var _this = this;\r\n if (!dataItem.series) {\r\n var series = void 0;\r\n var template = this.seriesTemplates.getKey(dataItem.level.toString());\r\n if (template) {\r\n series = template.clone();\r\n }\r\n else {\r\n series = this.series.create();\r\n }\r\n // for the legend to get {value}\r\n series.dataItem.dataContext = dataItem;\r\n series.name = dataItem.name;\r\n series.parentDataItem = dataItem;\r\n dataItem.series = series;\r\n var level = dataItem.level;\r\n series.level = level;\r\n var dataContext = dataItem.dataContext;\r\n if (dataContext) {\r\n series.config = dataContext.config;\r\n }\r\n this.dataUsers.removeValue(series); // series do not use data directly, that's why we remove it\r\n series.data = dataItem.children.values;\r\n series.fill = dataItem.color;\r\n series.columnsContainer.hide(0);\r\n series.bulletsContainer.hide(0);\r\n series.columns.template.adapter.add(\"fill\", function (fill, target) {\r\n var dataItem = target.dataItem;\r\n if (dataItem) {\r\n var treeMapDataItem = dataItem.treeMapDataItem;\r\n if (treeMapDataItem) {\r\n target.fill = treeMapDataItem.color;\r\n target.adapter.remove(\"fill\"); //@todo: make it possible adapters applied once?\r\n return treeMapDataItem.color;\r\n }\r\n }\r\n });\r\n if (this.zoomable && (dataItem.level > this.currentLevel || (dataItem.children && dataItem.children.length > 0))) {\r\n series.columns.template.cursorOverStyle = MouseCursorStyle.pointer;\r\n if (this.zoomable) {\r\n series.columns.template.events.on(\"hit\", function (event) {\r\n var seriesDataItem = event.target.dataItem;\r\n if (dataItem.level > _this.currentLevel) {\r\n _this.zoomToChartDataItem(seriesDataItem.treeMapDataItem.parent);\r\n }\r\n else {\r\n _this.zoomToSeriesDataItem(seriesDataItem);\r\n }\r\n }, this, undefined);\r\n }\r\n }\r\n }\r\n this._tempSeries.push(dataItem.series);\r\n };\r\n /**\r\n * Toggles bullets so that labels that belong to current drill level are\r\n * shown.\r\n *\r\n * @param duration Animation duration (ms)\r\n */\r\n TreeMap.prototype.toggleBullets = function (duration) {\r\n var _this = this;\r\n // hide all series which are not in tempSeries\r\n $iter.each(this.series.iterator(), function (series) {\r\n if (_this._tempSeries.indexOf(series) == -1) {\r\n //series.hideReal(duration);\r\n series.columnsContainer.hide();\r\n series.bulletsContainer.hide(duration);\r\n }\r\n else {\r\n //series.showReal(duration);\r\n series.columnsContainer.show();\r\n series.bulletsContainer.show(duration);\r\n if (series.level < _this.currentLevel) {\r\n series.bulletsContainer.hide(duration);\r\n }\r\n }\r\n });\r\n };\r\n /**\r\n * Zooms to particular item in series.\r\n *\r\n * @param dataItem Data item\r\n */\r\n TreeMap.prototype.zoomToSeriesDataItem = function (dataItem) {\r\n this.zoomToChartDataItem(dataItem.treeMapDataItem);\r\n };\r\n /**\r\n * Zooms to particular item.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n TreeMap.prototype.zoomToChartDataItem = function (dataItem) {\r\n var _this = this;\r\n var zoomOutButton = this.zoomOutButton;\r\n // this is needed because if there is only one fist level, it wont' be shown\r\n if (zoomOutButton) {\r\n if (dataItem != this._homeDataItem) {\r\n zoomOutButton.show();\r\n }\r\n else {\r\n zoomOutButton.hide();\r\n }\r\n }\r\n if (dataItem && dataItem.children) {\r\n this.xAxis.zoomToValues(dataItem.x0, dataItem.x1);\r\n this.yAxis.zoomToValues(dataItem.y0, dataItem.y1);\r\n this.currentLevel = dataItem.level;\r\n this.currentlyZoomed = dataItem;\r\n this.createTreeSeries(dataItem);\r\n var rangeChangeAnimation = this.xAxis.rangeChangeAnimation || this.yAxis.rangeChangeAnimation;\r\n if (rangeChangeAnimation && !rangeChangeAnimation.isDisposed() && !rangeChangeAnimation.isFinished()) {\r\n this._dataDisposers.push(rangeChangeAnimation);\r\n rangeChangeAnimation.events.once(\"animationended\", function () {\r\n _this.toggleBullets();\r\n });\r\n }\r\n else {\r\n this.toggleBullets();\r\n }\r\n }\r\n };\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n TreeMap.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n // Add a default screen reader title for accessibility\r\n // This will be overridden in screen reader if there are any `titles` set\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"TreeMap chart\");\r\n }\r\n //this.homeText = this.language.translate(\"Home\");\r\n };\r\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\r\n TreeMap.prototype.createDataItem = function () {\r\n return new TreeMapDataItem();\r\n };\r\n Object.defineProperty(TreeMap.prototype, \"maxLevels\", {\r\n /**\r\n * @return Maximum drill-down level\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maxLevels\");\r\n },\r\n /**\r\n * Maximum number of levels the chart will display initially.\r\n *\r\n * @default 2\r\n * @param value Maximum drill-down level\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"maxLevels\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMap.prototype, \"currentLevel\", {\r\n /**\r\n * @return Current level\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"currentLevel\");\r\n },\r\n /**\r\n * Current drill-down level the chart is at.\r\n *\r\n * @param value Current level\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"currentLevel\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(TreeMap.prototype, \"sorting\", {\r\n get: function () {\r\n return this.getPropertyValue(\"sorting\");\r\n },\r\n /**\r\n * Sorting direction of treemap items.\r\n *\r\n * Available options: \"none\", \"ascending\", and \"descending\" (default).\r\n *\r\n * @default \"descending\"\r\n * @param value [description]\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"sorting\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates and returns a new series of the suitable type.\r\n *\r\n * @return new series\r\n */\r\n TreeMap.prototype.createSeries = function () {\r\n return new TreeMapSeries();\r\n };\r\n Object.defineProperty(TreeMap.prototype, \"homeText\", {\r\n /**\r\n * @return Home text\r\n */\r\n get: function () {\r\n return this._homeText;\r\n },\r\n /**\r\n * A text displayed on the \"home\" button which is used to go back to level 0\r\n * after drill into sub-items.\r\n *\r\n * @param value Home text\r\n */\r\n set: function (value) {\r\n this._homeText = value;\r\n if (this._homeDataItem) {\r\n this._homeDataItem.name = this._homeText;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n TreeMap.prototype.processConfig = function (config) {\r\n if (config) {\r\n // Instantiate layout algorithm\r\n if ($type.hasValue(config[\"layoutAlgorithm\"]) && $type.isString(config[\"layoutAlgorithm\"])) {\r\n switch (config[\"layoutAlgorithm\"]) {\r\n case \"squarify\":\r\n config[\"layoutAlgorithm\"] = this.squarify;\r\n break;\r\n case \"binaryTree\":\r\n config[\"layoutAlgorithm\"] = this.binaryTree;\r\n break;\r\n case \"slice\":\r\n config[\"layoutAlgorithm\"] = this.slice;\r\n break;\r\n case \"dice\":\r\n config[\"layoutAlgorithm\"] = this.dice;\r\n break;\r\n case \"sliceDice\":\r\n config[\"layoutAlgorithm\"] = this.sliceDice;\r\n break;\r\n default:\r\n delete config[\"layoutAlgorithm\"];\r\n break;\r\n }\r\n }\r\n // Set type for navigation bar\r\n if ($type.hasValue(config.navigationBar) && !$type.hasValue(config.navigationBar.type)) {\r\n config.navigationBar.type = \"NavigationBar\";\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n }\r\n };\r\n /**\r\n * Measures the size of container and informs its children of how much size\r\n * they can occupy, by setting their relative `maxWidth` and `maxHeight`\r\n * properties.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n TreeMap.prototype.validateLayout = function () {\r\n _super.prototype.validateLayout.call(this);\r\n this.layoutItems(this.currentlyZoomed);\r\n };\r\n /**\r\n * Validates (processes) data items.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n TreeMap.prototype.validateDataItems = function () {\r\n _super.prototype.validateDataItems.call(this);\r\n this.layoutItems(this._homeDataItem);\r\n $iter.each(this.series.iterator(), function (series) {\r\n series.validateRawData();\r\n });\r\n this.zoomToChartDataItem(this._homeDataItem);\r\n };\r\n /**\r\n * ==========================================================================\r\n * TREEMAP LAYOUT FUNCTIONS\r\n * ==========================================================================\r\n * @hidden\r\n */\r\n /**\r\n * The functions below are from D3.js library (https://d3js.org/)\r\n *\r\n * --------------------------------------------------------------------------\r\n * Copyright 2017 Mike Bostock\r\n *\r\n * Redistribution and use in source and binary forms, with or without\r\n * modification, are permitted provided that the following conditions are met:\r\n *\r\n * 1. Redistributions of source code must retain the above copyright notice,\r\n * this list of conditions and the following disclaimer.\r\n *\r\n * 2. Redistributions in binary form must reproduce the above copyright\r\n * notice,this list of conditions and the following disclaimer in the\r\n * documentation and/or other materials provided with the distribution.\r\n *\r\n * 3. Neither the name of the copyright holder nor the names of its\r\n * contributors may be used to endorse or promote products derived from\r\n * this software without specific prior written permission.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n * --------------------------------------------------------------------------\r\n * @hidden\r\n */\r\n /**\r\n * Treemap layout algorithm: binaryTree.\r\n *\r\n * @ignore Exclude from docs\r\n * @param parent Data item\r\n */\r\n TreeMap.prototype.binaryTree = function (parent) {\r\n var nodes = parent.children, i, n = nodes.length, sum, sums = new Array(n + 1);\r\n for (sums[0] = sum = i = 0; i < n; ++i) {\r\n sums[i + 1] = sum += nodes.getIndex(i).value;\r\n }\r\n partition(0, n, parent.value, parent.x0, parent.y0, parent.x1, parent.y1);\r\n function partition(i, j, value, x0, y0, x1, y1) {\r\n if (i >= j - 1) {\r\n var node = nodes.getIndex(i);\r\n node.x0 = x0;\r\n node.y0 = y0;\r\n node.x1 = x1;\r\n node.y1 = y1;\r\n return;\r\n }\r\n var valueOffset = sums[i], valueTarget = (value / 2) + valueOffset, k = i + 1, hi = j - 1;\r\n while (k < hi) {\r\n var mid = k + hi >>> 1;\r\n if (sums[mid] < valueTarget) {\r\n k = mid + 1;\r\n }\r\n else {\r\n hi = mid;\r\n }\r\n }\r\n if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) {\r\n --k;\r\n }\r\n var valueLeft = sums[k] - valueOffset, valueRight = value - valueLeft;\r\n if ((x1 - x0) > (y1 - y0)) {\r\n var xk = (x0 * valueRight + x1 * valueLeft) / value;\r\n partition(i, k, valueLeft, x0, y0, xk, y1);\r\n partition(k, j, valueRight, xk, y0, x1, y1);\r\n }\r\n else {\r\n var yk = (y0 * valueRight + y1 * valueLeft) / value;\r\n partition(i, k, valueLeft, x0, y0, x1, yk);\r\n partition(k, j, valueRight, x0, yk, x1, y1);\r\n }\r\n }\r\n };\r\n /**\r\n * Treemap layout algorithm: slice.\r\n *\r\n * @ignore Exclude from docs\r\n * @param parent Data item\r\n */\r\n TreeMap.prototype.slice = function (parent) {\r\n var x0 = parent.x0;\r\n var x1 = parent.x1;\r\n var y0 = parent.y0;\r\n var y1 = parent.y1;\r\n var nodes = parent.children;\r\n var node;\r\n var i = -1;\r\n var n = nodes.length;\r\n var k = parent.value && (y1 - y0) / parent.value;\r\n while (++i < n) {\r\n node = nodes.getIndex(i);\r\n node.x0 = x0;\r\n node.x1 = x1;\r\n node.y0 = y0;\r\n y0 += node.value * k;\r\n node.y1 = y0;\r\n }\r\n };\r\n /**\r\n * Treemap layout algorithm: dice.\r\n *\r\n * @ignore Exclude from docs\r\n * @param parent Data item\r\n */\r\n TreeMap.prototype.dice = function (parent) {\r\n var x0 = parent.x0;\r\n var x1 = parent.x1;\r\n var y0 = parent.y0;\r\n var y1 = parent.y1;\r\n var nodes = parent.children, node, i = -1, n = nodes.length, k = parent.value && (x1 - x0) / parent.value;\r\n while (++i < n) {\r\n node = nodes.getIndex(i);\r\n node.y0 = y0;\r\n node.y1 = y1;\r\n node.x0 = x0;\r\n x0 += node.value * k;\r\n node.x1 = x0;\r\n }\r\n };\r\n /**\r\n * Treemap layout algorithm: slideDice.\r\n *\r\n * @ignore Exclude from docs\r\n * @param parent Data item\r\n */\r\n TreeMap.prototype.sliceDice = function (parent) {\r\n if (parent.level & 1) {\r\n this.slice(parent);\r\n }\r\n else {\r\n this.dice(parent);\r\n }\r\n };\r\n /**\r\n * Treemap layout algorithm: squarify.\r\n *\r\n * @ignore Exclude from docs\r\n * @param parent Data item\r\n */\r\n TreeMap.prototype.squarify = function (parent) {\r\n var ratio = (1 + Math.sqrt(5)) / 2;\r\n var x0 = parent.x0;\r\n var x1 = parent.x1;\r\n var y0 = parent.y0;\r\n var y1 = parent.y1;\r\n var nodes = parent.children;\r\n var nodeValue;\r\n var i0 = 0;\r\n var i1 = 0;\r\n var n = nodes.length;\r\n var dx;\r\n var dy;\r\n var value = parent.value;\r\n var sumValue;\r\n var minValue;\r\n var maxValue;\r\n var newRatio;\r\n var minRatio;\r\n var alpha;\r\n var beta;\r\n while (i0 < n) {\r\n dx = x1 - x0;\r\n dy = y1 - y0;\r\n // Find the next non-empty node.\r\n do {\r\n sumValue = nodes.getIndex(i1++).value;\r\n } while (!sumValue && i1 < n);\r\n minValue = maxValue = sumValue;\r\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\r\n beta = sumValue * sumValue * alpha;\r\n minRatio = Math.max(maxValue / beta, beta / minValue);\r\n // Keep adding nodes while the aspect ratio maintains or improves.\r\n for (; i1 < n; ++i1) {\r\n sumValue += nodeValue = nodes.getIndex(i1).value;\r\n if (nodeValue < minValue) {\r\n minValue = nodeValue;\r\n }\r\n if (nodeValue > maxValue) {\r\n maxValue = nodeValue;\r\n }\r\n beta = sumValue * sumValue * alpha;\r\n newRatio = Math.max(maxValue / beta, beta / minValue);\r\n if (newRatio > minRatio) {\r\n sumValue -= nodeValue;\r\n break;\r\n }\r\n minRatio = newRatio;\r\n }\r\n // Position and record the row orientation.\r\n var row = this.dataItems.template.clone();\r\n row.value = sumValue;\r\n row.dice = dx < dy;\r\n row.children = nodes.slice(i0, i1);\r\n row.x0 = x0;\r\n row.y0 = y0;\r\n row.x1 = x1;\r\n row.y1 = y1;\r\n if (row.dice) {\r\n row.y1 = value ? (y0 += (dy * sumValue) / value) : y1;\r\n this.dice(row);\r\n }\r\n else {\r\n row.x1 = value ? (x0 += (dx * sumValue) / value) : x1;\r\n this.slice(row);\r\n }\r\n value -= sumValue;\r\n i0 = i1;\r\n }\r\n };\r\n /**\r\n * [handleDataItemValueChange description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n TreeMap.prototype.handleDataItemValueChange = function (dataItem, name) {\r\n if (name == \"value\") {\r\n this.invalidateDataItems();\r\n }\r\n };\r\n TreeMap.prototype.handleDataItemWorkingValueChange = function (dataItem, name) {\r\n if (name == \"value\") {\r\n this.invalidateDataItems();\r\n }\r\n };\r\n TreeMap.prototype.getLegendLevel = function (dataItem) {\r\n if (!dataItem) {\r\n return;\r\n }\r\n if (!dataItem.children) {\r\n return;\r\n }\r\n if (dataItem.children.length > 1) {\r\n return dataItem;\r\n }\r\n else if (dataItem.children.length == 1) {\r\n return this.getLegendLevel(dataItem.children.getIndex(0));\r\n }\r\n else {\r\n return dataItem;\r\n }\r\n };\r\n /**\r\n * Setups the legend to use the chart's data.\r\n * @ignore\r\n */\r\n TreeMap.prototype.feedLegend = function () {\r\n var legend = this.legend;\r\n if (legend) {\r\n legend.dataFields.name = \"name\";\r\n var legendParent = this.getLegendLevel(this._homeDataItem);\r\n if (legendParent) {\r\n var legendData_1 = [];\r\n legendParent.children.each(function (dataItem) {\r\n //if (!dataItem.hiddenInLegend) {\r\n legendData_1.push(dataItem);\r\n //}\r\n });\r\n legend.data = legendData_1;\r\n }\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n TreeMap.prototype.disposeData = function () {\r\n _super.prototype.disposeData.call(this);\r\n this._homeDataItem = undefined;\r\n this.series.clear();\r\n if (this.navigationBar) {\r\n this.navigationBar.disposeData();\r\n }\r\n this.xAxis.disposeData();\r\n this.yAxis.disposeData();\r\n };\r\n /**\r\n * Since this chart uses hierarchical data, we need to remove childrent\r\n * dataField from export of non-hierarchical formats such as CSV and XSLX.\r\n *\r\n * @return Export\r\n */\r\n TreeMap.prototype.getExporting = function () {\r\n var _this = this;\r\n var exporting = _super.prototype.getExporting.call(this);\r\n exporting.adapter.add(\"formatDataFields\", function (info) {\r\n if (info.format == \"csv\" || info.format == \"xlsx\") {\r\n if ($type.hasValue(_this.dataFields.children)) {\r\n delete info.dataFields[_this.dataFields.children];\r\n }\r\n }\r\n return info;\r\n });\r\n return exporting;\r\n };\r\n return TreeMap;\r\n}(XYChart));\r\nexport { TreeMap };\r\n/**\r\n * Register class, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"TreeMap\"] = TreeMap;\r\n//# sourceMappingURL=TreeMap.js.map","/**\r\n * Percent chart module.\r\n */\r\nimport * as tslib_1 from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { SerialChart, SerialChartDataItem } from \"./SerialChart\";\r\nimport { PercentSeries } from \"../series/PercentSeries\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[PercentChart]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar PercentChartDataItem = /** @class */ (function (_super) {\r\n tslib_1.__extends(PercentChartDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PercentChartDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"PercentChartDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return PercentChartDataItem;\r\n}(SerialChartDataItem));\r\nexport { PercentChartDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * This is a base class for \"percent-based\" chart types like Pie and Funnel.\r\n *\r\n * @see {@link IPercentChartEvents} for a list of available Events\r\n * @see {@link IPercentChartAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/pie-chart/} for Pie chart documentation\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/sliced-chart/} for Sliced chart documentation\r\n */\r\nvar PercentChart = /** @class */ (function (_super) {\r\n tslib_1.__extends(PercentChart, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PercentChart() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"PercentChart\";\r\n _this.align = \"none\";\r\n _this.valign = \"none\";\r\n // so that the chart is always drawn, even the legend wants all the space\r\n _this.chartContainer.minHeight = 50;\r\n _this.chartContainer.minWidth = 50;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * (Re)validates chart data.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n PercentChart.prototype.validateData = function () {\r\n _super.prototype.validateData.call(this);\r\n this.feedLegend();\r\n };\r\n /**\r\n * Setups the legend to use the chart's data.\r\n * @ignore\r\n */\r\n PercentChart.prototype.feedLegend = function () {\r\n var legend = this.legend;\r\n if (legend) {\r\n var legendData_1 = [];\r\n $iter.each(this.series.iterator(), function (series) {\r\n if (!series.hiddenInLegend) {\r\n $iter.each(series.dataItems.iterator(), function (dataItem) {\r\n if (!dataItem.hiddenInLegend) {\r\n legendData_1.push(dataItem);\r\n if (!dataItem.legendSettings) {\r\n dataItem.legendSettings = series.legendSettings;\r\n }\r\n }\r\n });\r\n }\r\n });\r\n legend.data = legendData_1;\r\n legend.dataFields.name = \"category\";\r\n }\r\n };\r\n /**\r\n * Creates a new [[PercentSeries]].\r\n *\r\n * @return New series\r\n */\r\n PercentChart.prototype.createSeries = function () {\r\n return new PercentSeries();\r\n };\r\n /**\r\n * @ignore\r\n */\r\n PercentChart.prototype.setLegend = function (legend) {\r\n _super.prototype.setLegend.call(this, legend);\r\n if (legend) {\r\n legend.labels.template.text = \"{category}\";\r\n legend.valueLabels.template.text = \"{value.percent.formatNumber('#.0')}%\";\r\n legend.itemContainers.template.events.on(\"over\", function (event) {\r\n var PercentSeriesDataItem = event.target.dataItem.dataContext;\r\n if (PercentSeriesDataItem.visible && !PercentSeriesDataItem.isHiding) {\r\n PercentSeriesDataItem.slice.isHover = true;\r\n }\r\n });\r\n legend.itemContainers.template.events.on(\"out\", function (event) {\r\n var PercentSeriesDataItem = event.target.dataItem.dataContext;\r\n PercentSeriesDataItem.slice.isHover = false;\r\n });\r\n }\r\n };\r\n return PercentChart;\r\n}(SerialChart));\r\nexport { PercentChart };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @hidden\r\n */\r\nregistry.registeredClasses[\"PercentChart\"] = PercentChart;\r\nregistry.registeredClasses[\"PercentChartDataItem\"] = PercentChartDataItem;\r\n//# sourceMappingURL=PercentChart.js.map","/**\r\n * Module for building 3D serial charts.\r\n */\r\nimport * as tslib_1 from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * Imports\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { XYChart, XYChartDataItem } from \"./XYChart\";\r\nimport { Container } from \"../../core/Container\";\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { AxisRendererX3D } from \"../axes/AxisRendererX3D\";\r\nimport { AxisRendererY3D } from \"../axes/AxisRendererY3D\";\r\nimport { ColumnSeries3D } from \"../series/ColumnSeries3D\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[XYChart3D]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar XYChart3DDataItem = /** @class */ (function (_super) {\r\n tslib_1.__extends(XYChart3DDataItem, _super);\r\n function XYChart3DDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"XYChart3DDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return XYChart3DDataItem;\r\n}(XYChartDataItem));\r\nexport { XYChart3DDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a 3D XY chart.\r\n *\r\n * @see {@link IXYChart3DEvents} for a list of available Events\r\n * @see {@link IXYChart3DAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/xy-chart/} for documentation\r\n * @important\r\n */\r\nvar XYChart3D = /** @class */ (function (_super) {\r\n tslib_1.__extends(XYChart3D, _super);\r\n /**\r\n * Constructor\r\n */\r\n function XYChart3D() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Type of the axis renderer to use for X axes.\r\n */\r\n _this._axisRendererX = AxisRendererX3D;\r\n /**\r\n * Type of the axis renderer to use for Y axes.\r\n */\r\n _this._axisRendererY = AxisRendererY3D;\r\n _this.className = \"XYChart3D\";\r\n // Set defaults\r\n _this.depth = 30;\r\n _this.angle = 30;\r\n // Creeate container for columns\r\n var columnsContainer = _this.seriesContainer.createChild(Container);\r\n columnsContainer.shouldClone = false;\r\n columnsContainer.isMeasured = false;\r\n columnsContainer.layout = \"none\";\r\n _this.columnsContainer = columnsContainer;\r\n _this.columnsContainer.mask = _this.createChild(Sprite);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * This is done because for some reason IE doesn't change mask if path of a\r\n * mask changes.\r\n */\r\n XYChart3D.prototype.updateSeriesMasks = function () {\r\n _super.prototype.updateSeriesMasks.call(this);\r\n if ($utils.isIE()) {\r\n var columnsContainer = this.columnsContainer;\r\n var mask = columnsContainer.mask;\r\n columnsContainer.mask = undefined;\r\n columnsContainer.mask = mask;\r\n }\r\n };\r\n Object.defineProperty(XYChart3D.prototype, \"depth\", {\r\n /**\r\n * @return Depth (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"depth\");\r\n },\r\n /**\r\n * Depth of the 3D chart / columns in pixels.\r\n *\r\n * @param value Depth (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"depth\", value);\r\n this.fixLayout();\r\n this.invalidateDataUsers();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYChart3D.prototype, \"angle\", {\r\n /**\r\n * @return Angle\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"angle\");\r\n },\r\n /**\r\n * Angle the chart is viewed at.\r\n *\r\n * @todo Description (review)\r\n * @param value Angle\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"angle\", value);\r\n this.fixLayout();\r\n this.invalidateDataUsers();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYChart3D.prototype, \"dx3D\", {\r\n /**\r\n * A calculated horizontal 3D offset (px).\r\n *\r\n * @readonly\r\n * @return Offset (px)\r\n */\r\n get: function () {\r\n return $math.cos(this.angle) * this.depth;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(XYChart3D.prototype, \"dy3D\", {\r\n /**\r\n * A calculated vertical 3D offset (px).\r\n *\r\n * @readonly\r\n * @return Offset (px)\r\n */\r\n get: function () {\r\n return -$math.sin(this.angle) * this.depth;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * (Re)validates layout\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n XYChart3D.prototype.validateLayout = function () {\r\n _super.prototype.validateLayout.call(this);\r\n this.fixColumns();\r\n };\r\n /**\r\n * Updates the layout (padding and scrollbar positions) to accommodate for\r\n * 3D depth and angle.\r\n */\r\n XYChart3D.prototype.fixLayout = function () {\r\n this.chartContainer.marginTop = -this.dy3D;\r\n this.chartContainer.paddingRight = this.dx3D;\r\n if (this.scrollbarX) {\r\n this.scrollbarX.dy = this.dy3D;\r\n this.scrollbarX.dx = this.dx3D;\r\n }\r\n if (this.scrollbarY) {\r\n this.scrollbarY.dy = this.dy3D;\r\n this.scrollbarY.dx = this.dx3D;\r\n }\r\n this.fixColumns();\r\n _super.prototype.fixLayout.call(this);\r\n };\r\n /**\r\n * Updates column positions, offset and dimensions based on chart's angle\r\n * and depth.\r\n */\r\n XYChart3D.prototype.fixColumns = function () {\r\n var _this = this;\r\n var count = 1;\r\n var i = 0;\r\n $iter.each(this.series.iterator(), function (series) {\r\n if (series instanceof ColumnSeries3D) {\r\n if (!series.clustered && i > 0) {\r\n count++;\r\n }\r\n series.depthIndex = count - 1;\r\n i++;\r\n }\r\n });\r\n var s = 0;\r\n $iter.each(this.series.iterator(), function (series) {\r\n if (series instanceof ColumnSeries3D) {\r\n series.depth = _this.depth / (count);\r\n series.angle = _this.angle;\r\n series.dx = _this.depth / (count) * $math.cos(_this.angle) * (series.depthIndex);\r\n series.dy = -_this.depth / (count) * $math.sin(_this.angle) * (series.depthIndex);\r\n var inversed_1 = false;\r\n if ((series.baseAxis == series.xAxis && series.xAxis.renderer.inversed) || (series.baseAxis == series.yAxis && series.yAxis.renderer.inversed)) {\r\n inversed_1 = true;\r\n }\r\n var i_1 = 1;\r\n series.columns.each(function (column) {\r\n if (inversed_1) {\r\n column.zIndex = 1000 * (1000 - i_1) + s - series.depthIndex * 100;\r\n }\r\n else {\r\n column.zIndex = 1000 * i_1 + s - series.depthIndex * 100;\r\n }\r\n i_1++;\r\n });\r\n if (inversed_1) {\r\n s--;\r\n }\r\n else {\r\n s++;\r\n }\r\n }\r\n });\r\n this.maskColumns();\r\n };\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n XYChart3D.prototype.processConfig = function (config) {\r\n if (config) {\r\n // Set up series\r\n if ($type.hasValue(config.series) && $type.isArray(config.series)) {\r\n for (var i = 0, len = config.series.length; i < len; i++) {\r\n config.series[i].type = config.series[i].type || \"ColumnSeries3D\";\r\n }\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n XYChart3D.prototype.maskColumns = function () {\r\n var w = this.plotContainer.pixelWidth;\r\n var h = this.plotContainer.pixelHeight;\r\n var dx = this.dx3D;\r\n var dy = this.dy3D;\r\n var path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: dx, y: dy }) + $path.lineTo({ x: w + dx, y: dy }) + $path.lineTo({ x: w + dx, y: h + dy }) + $path.lineTo({ x: w, y: h }) + $path.lineTo({ x: w, y: h }) + $path.lineTo({ x: 0, y: h }) + $path.closePath();\r\n var columnsContainer = this.columnsContainer;\r\n if (columnsContainer && columnsContainer.mask) {\r\n columnsContainer.mask.path = path;\r\n }\r\n };\r\n return XYChart3D;\r\n}(XYChart));\r\nexport { XYChart3D };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"XYChart3D\"] = XYChart3D;\r\n//# sourceMappingURL=XYChart3D.js.map","/**\r\n * Module for building Gauge charts.\r\n */\r\nimport * as tslib_1 from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { RadarChart, RadarChartDataItem } from \"./RadarChart\";\r\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\r\nimport { ClockHand } from \"../elements/ClockHand\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[GaugeChart]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar GaugeChartDataItem = /** @class */ (function (_super) {\r\n tslib_1.__extends(GaugeChartDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function GaugeChartDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"GaugeChartDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return GaugeChartDataItem;\r\n}(RadarChartDataItem));\r\nexport { GaugeChartDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a Gauge chart.\r\n *\r\n * @see {@link IGaugeChartEvents} for a list of available Events\r\n * @see {@link IGaugeChartAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/gauge-chart/} for documentation\r\n * @important\r\n */\r\nvar GaugeChart = /** @class */ (function (_super) {\r\n tslib_1.__extends(GaugeChart, _super);\r\n /**\r\n * Constructor\r\n */\r\n function GaugeChart() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"GaugeChart\";\r\n _this.startAngle = 180;\r\n _this.endAngle = 360;\r\n _this.hands = new ListTemplate(new ClockHand());\r\n _this.hands.events.on(\"inserted\", _this.processHand, _this, false);\r\n _this._disposers.push(new ListDisposer(_this.hands));\r\n _this._disposers.push(_this.hands.template);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n GaugeChart.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n // Add a default screen reader title for accessibility\r\n // This will be overridden in screen reader if there are any `titles` set\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Gauge chart\");\r\n }\r\n };\r\n /**\r\n * Decorates a [[ClockHand]] when it is added to the chart.\r\n *\r\n * @param event Event\r\n */\r\n GaugeChart.prototype.processHand = function (event) {\r\n var hand = event.newValue;\r\n if (!hand.axis) {\r\n hand.axis = this.xAxes.getIndex(0);\r\n }\r\n };\r\n return GaugeChart;\r\n}(RadarChart));\r\nexport { GaugeChart };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"GaugeChart\"] = GaugeChart;\r\n//# sourceMappingURL=GaugeChart.js.map","/**\r\n * 3D Pie chart module.\r\n */\r\nimport * as tslib_1 from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * Imports\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { PieChart, PieChartDataItem } from \"./PieChart\";\r\nimport { PieSeries3D } from \"../series/PieSeries3D\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $math from \"../../core/utils/Math\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[PieChart3D]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar PieChart3DDataItem = /** @class */ (function (_super) {\r\n tslib_1.__extends(PieChart3DDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PieChart3DDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"PieChart3DDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return PieChart3DDataItem;\r\n}(PieChartDataItem));\r\nexport { PieChart3DDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a 3D Pie chart.\r\n *\r\n * * ```TypeScript\r\n * // Includes\r\n * import * as am4core from \"@amcharts/amcharts4/core\";\r\n * import * as am4charts from \"@amcharts/amcharts4/charts\";\r\n *\r\n * // Create chart\r\n * let chart = am4core.create(\"chartdiv\", am4charts.Pie3DChart);\r\n *\r\n * // Set data\r\n * chart.data = [{\r\n * \t\"country\": \"Lithuania\",\r\n * \t\"litres\": 501.9\r\n * }, {\r\n * \t\"country\": \"Czechia\",\r\n * \t\"litres\": 301.9\r\n * }, {\r\n * \t\"country\": \"Ireland\",\r\n * \t\"litres\": 201.1\r\n * }];\r\n *\r\n * // Create series\r\n * let series = chart.series.push(new am4charts.Pie3DSeries());\r\n * series.dataFields.value = \"litres\";\r\n * series.dataFields.category = \"country\";\r\n * ```\r\n * ```JavaScript\r\n * // Create chart\r\n * var chart = am4core.create(\"chartdiv\", am4charts.Pie3DChart);\r\n *\r\n * // The following would work as well:\r\n * // var chart = am4core.create(\"chartdiv\", \"Pie3DChart\");\r\n *\r\n * // Set data\r\n * chart.data = [{\r\n * \t\"country\": \"Lithuania\",\r\n * \t\"litres\": 501.9\r\n * }, {\r\n * \t\"country\": \"Czechia\",\r\n * \t\"litres\": 301.9\r\n * }, {\r\n * \t\"country\": \"Ireland\",\r\n * \t\"litres\": 201.1\r\n * }];\r\n *\r\n * // Create series\r\n * var series = chart.series.push(new am4charts.Pie3DSeries());\r\n * series.dataFields.value = \"litres\";\r\n * series.dataFields.category = \"country\";\r\n * ```\r\n * ```JSON\r\n * var chart = am4core.createFromConfig({\r\n *\r\n * \t// Series\r\n * \t\"series\": [{\r\n * \t\t\"type\": \"Pie3DSeries\",\r\n * \t\t\"dataFields\": {\r\n * \t\t\t\"value\": \"litres\",\r\n * \t\t\t\"category\": \"country\"\r\n * \t\t}\r\n * \t}],\r\n *\r\n * \t// Data\r\n * \t\"data\": [{\r\n * \t\t\"country\": \"Lithuania\",\r\n * \t\t\"litres\": 501.9\r\n * \t}, {\r\n * \t\t\"country\": \"Czechia\",\r\n * \t\t\"litres\": 301.9\r\n * \t}, {\r\n * \t\t\"country\": \"Ireland\",\r\n * \t\t\"litres\": 201.1\r\n * \t}]\r\n *\r\n * }, \"chartdiv\", \"Pie3DChart\");\r\n * ```\r\n *\r\n * @see {@link IPieChart3DEvents} for a list of available Events\r\n * @see {@link IPieChart3DAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/pie-chart/} for documentation\r\n * @important\r\n */\r\nvar PieChart3D = /** @class */ (function (_super) {\r\n tslib_1.__extends(PieChart3D, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PieChart3D() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"PieChart3D\";\r\n _this.depth = 20;\r\n _this.angle = 10;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(PieChart3D.prototype, \"depth\", {\r\n /**\r\n * @return Depth (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"depth\");\r\n },\r\n /**\r\n * Depth of the 3D pie in pixels.\r\n *\r\n * This will determine \"height\" of the pie.\r\n *\r\n * @default 20\r\n * @param value Depth (px)\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"depth\", value)) {\r\n this.invalidateDataUsers();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PieChart3D.prototype, \"angle\", {\r\n /**\r\n * @return Angle (degrees)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"angle\");\r\n },\r\n /**\r\n * An angle of a \"point of view\" in degrees. Possible range 0 - 90.\r\n *\r\n * @default 10\r\n * @param value Angle (degrees)\r\n */\r\n set: function (value) {\r\n value = $math.fitToRange(value, 0, 90);\r\n if (this.setPropertyValue(\"angle\", value)) {\r\n this.invalidateDataUsers();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates and returns a new Series.\r\n *\r\n * @return New series\r\n */\r\n PieChart3D.prototype.createSeries = function () {\r\n return new PieSeries3D();\r\n };\r\n return PieChart3D;\r\n}(PieChart));\r\nexport { PieChart3D };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"PieChart3D\"] = PieChart3D;\r\n//# sourceMappingURL=PieChart3D.js.map","/**\r\n * Serial chart module.\r\n */\r\nimport * as tslib_1 from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Chart, ChartDataItem } from \"../Chart\";\r\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\r\nimport { Container } from \"../../core/Container\";\r\nimport { Series } from \"../series/Series\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport { ColorSet } from \"../../core/utils/ColorSet\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { Disposer } from \"../../core/utils/Disposer\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[SerialChart]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar SerialChartDataItem = /** @class */ (function (_super) {\r\n tslib_1.__extends(SerialChartDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function SerialChartDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"SerialChartDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return SerialChartDataItem;\r\n}(ChartDataItem));\r\nexport { SerialChartDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A base class for all series-based charts, like XY, Pie, etc.\r\n *\r\n * Is not useful on its own.\r\n *\r\n * @see {@link ISerialChartEvents} for a list of available Events\r\n * @see {@link ISerialChartAdapters} for a list of available Adapters\r\n */\r\nvar SerialChart = /** @class */ (function (_super) {\r\n tslib_1.__extends(SerialChart, _super);\r\n /**\r\n * Constructor\r\n */\r\n function SerialChart() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"SerialChart\";\r\n _this.colors = new ColorSet();\r\n // Create a container for series\r\n var seriesContainer = _this.chartContainer.createChild(Container);\r\n seriesContainer.shouldClone = false;\r\n seriesContainer.width = percent(100);\r\n seriesContainer.height = percent(100);\r\n seriesContainer.isMeasured = false;\r\n seriesContainer.layout = \"none\";\r\n seriesContainer.zIndex = 2;\r\n _this.seriesContainer = seriesContainer;\r\n // Create a container for bullets\r\n var bulletsContainer = _this.chartContainer.createChild(Container);\r\n bulletsContainer.shouldClone = false;\r\n bulletsContainer.width = percent(100);\r\n bulletsContainer.height = percent(100);\r\n bulletsContainer.isMeasured = false;\r\n bulletsContainer.zIndex = 3;\r\n bulletsContainer.layout = \"none\";\r\n _this.bulletsContainer = bulletsContainer;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n SerialChart.prototype.dispose = function () {\r\n _super.prototype.dispose.call(this);\r\n if (this.colors) {\r\n this.colors.dispose();\r\n }\r\n };\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor\r\n */\r\n SerialChart.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n // Add a default screen reader title for accessibility\r\n // This will be overridden in screen reader if there are any `titles` set\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Serial chart\");\r\n }\r\n };\r\n Object.defineProperty(SerialChart.prototype, \"series\", {\r\n /**\r\n * A list of chart's series.\r\n *\r\n * @return Chart's series\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this._series) {\r\n this._series = new ListTemplate(this.createSeries());\r\n this._series.events.on(\"inserted\", function (event) {\r\n _this.handleSeriesAdded(event);\r\n }, undefined, false);\r\n this._series.events.on(\"removed\", function (event) {\r\n var series = event.oldValue;\r\n _this.dataUsers.removeValue(series);\r\n _this.dataUsers.each(function (dataUser) {\r\n dataUser.invalidateDataItems();\r\n });\r\n if (series.autoDispose) {\r\n series.dispose();\r\n }\r\n _this.feedLegend();\r\n }, undefined, false);\r\n this._disposers.push(new ListDisposer(this._series));\r\n this._disposers.push(this._series.template);\r\n }\r\n return this._series;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Decorates a new [[Series]] object with required parameters when it is\r\n * added to the chart.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event\r\n */\r\n SerialChart.prototype.handleSeriesAdded = function (event) {\r\n var _this = this;\r\n var series = event.newValue;\r\n if (series.isDisposed()) {\r\n return;\r\n }\r\n series.chart = this;\r\n series.parent = this.seriesContainer;\r\n series.bulletsContainer.parent = this.bulletsContainer;\r\n this._dataUsers.moveValue(series);\r\n series.addDisposer(new Disposer(function () {\r\n _this.dataUsers.removeValue(series);\r\n }));\r\n this.feedLegend();\r\n };\r\n /**\r\n * Setups the legend to use the chart's data.\r\n * @ignore\r\n */\r\n SerialChart.prototype.feedLegend = function () {\r\n var legend = this.legend;\r\n if (legend) {\r\n var legendData_1 = [];\r\n $iter.each(this.series.iterator(), function (series) {\r\n if (!series.hiddenInLegend) {\r\n legendData_1.push(series);\r\n }\r\n });\r\n legend.dataFields.name = \"name\";\r\n legend.data = legendData_1;\r\n }\r\n };\r\n /**\r\n * Creates and returns a new Series, suitable for this chart type.\r\n *\r\n * @return New series\r\n */\r\n SerialChart.prototype.createSeries = function () {\r\n return new Series();\r\n };\r\n Object.defineProperty(SerialChart.prototype, \"colors\", {\r\n /**\r\n * @return Color list\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"colors\");\r\n },\r\n /**\r\n * Chart's color list.\r\n *\r\n * This list can be used by a number of serial items, like applying a new\r\n * color for each Series added. Or, applying a new color for each slice\r\n * of a Pie chart.\r\n *\r\n * Please see [[ColorSet]] for information on how you can set up to generate\r\n * unique colors.\r\n *\r\n * A theme you are using may override default pre-defined colors.\r\n *\r\n * @param value Color list\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"colors\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies all parameters from another [[SerialChart]].\r\n *\r\n * @param source Source SerialChart\r\n */\r\n SerialChart.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.series.copyFrom(source.series);\r\n };\r\n /**\r\n * Hides the chart instantly and then shows it. If defaultState.transitionDuration > 0, this will result an animation in which properties of hidden state will animate to properties of visible state.\r\n */\r\n SerialChart.prototype.appear = function () {\r\n _super.prototype.appear.call(this);\r\n this.series.each(function (series) {\r\n series.appear();\r\n });\r\n };\r\n return SerialChart;\r\n}(Chart));\r\nexport { SerialChart };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"SerialChart\"] = SerialChart;\r\n//# sourceMappingURL=SerialChart.js.map","/**\r\n * Pie chart module.\r\n */\r\nimport * as tslib_1 from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { PercentChart, PercentChartDataItem } from \"./PercentChart\";\r\nimport { percent, Percent } from \"../../core/utils/Percent\";\r\nimport { PieSeries } from \"../series/PieSeries\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines a [[DataItem]] for [[PieChart]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar PieChartDataItem = /** @class */ (function (_super) {\r\n tslib_1.__extends(PieChartDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PieChartDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"PieChartDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return PieChartDataItem;\r\n}(PercentChartDataItem));\r\nexport { PieChartDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a Pie chart.\r\n *\r\n * ```TypeScript\r\n * // Includes\r\n * import * as am4core from \"@amcharts/amcharts4/core\";\r\n * import * as am4charts from \"@amcharts/amcharts4/charts\";\r\n *\r\n * // Create chart\r\n * let chart = am4core.create(\"chartdiv\", am4charts.PieChart);\r\n *\r\n * // Set data\r\n * chart.data = [{\r\n * \t\"country\": \"Lithuania\",\r\n * \t\"litres\": 501.9\r\n * }, {\r\n * \t\"country\": \"Czechia\",\r\n * \t\"litres\": 301.9\r\n * }, {\r\n * \t\"country\": \"Ireland\",\r\n * \t\"litres\": 201.1\r\n * }];\r\n *\r\n * // Create series\r\n * let series = chart.series.push(new am4charts.PieSeries());\r\n * series.dataFields.value = \"litres\";\r\n * series.dataFields.category = \"country\";\r\n * ```\r\n * ```JavaScript\r\n * // Create chart\r\n * var chart = am4core.create(\"chartdiv\", am4charts.PieChart);\r\n *\r\n * // The following would work as well:\r\n * // var chart = am4core.create(\"chartdiv\", \"PieChart\");\r\n *\r\n * // Set data\r\n * chart.data = [{\r\n * \t\"country\": \"Lithuania\",\r\n * \t\"litres\": 501.9\r\n * }, {\r\n * \t\"country\": \"Czechia\",\r\n * \t\"litres\": 301.9\r\n * }, {\r\n * \t\"country\": \"Ireland\",\r\n * \t\"litres\": 201.1\r\n * }];\r\n *\r\n * // Create series\r\n * var series = chart.series.push(new am4charts.PieSeries());\r\n * series.dataFields.value = \"litres\";\r\n * series.dataFields.category = \"country\";\r\n * ```\r\n * ```JSON\r\n * var chart = am4core.createFromConfig({\r\n *\r\n * \t// Series\r\n * \t\"series\": [{\r\n * \t\t\"type\": \"PieSeries\",\r\n * \t\t\"dataFields\": {\r\n * \t\t\t\"value\": \"litres\",\r\n * \t\t\t\"category\": \"country\"\r\n * \t\t}\r\n * \t}],\r\n *\r\n * \t// Data\r\n * \t\"data\": [{\r\n * \t\t\"country\": \"Lithuania\",\r\n * \t\t\"litres\": 501.9\r\n * \t}, {\r\n * \t\t\"country\": \"Czechia\",\r\n * \t\t\"litres\": 301.9\r\n * \t}, {\r\n * \t\t\"country\": \"Ireland\",\r\n * \t\t\"litres\": 201.1\r\n * \t}]\r\n *\r\n * }, \"chartdiv\", \"PieChart\");\r\n * ```\r\n *\r\n * @see {@link IPieChartEvents} for a list of available Events\r\n * @see {@link IPieChartAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/pie-chart/} for documentation\r\n * @important\r\n */\r\nvar PieChart = /** @class */ (function (_super) {\r\n tslib_1.__extends(PieChart, _super);\r\n /**\r\n * Constructor\r\n */\r\n function PieChart() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"PieChart\";\r\n // Set defaults\r\n _this.innerRadius = 0;\r\n _this.radius = percent(80);\r\n _this.align = \"none\";\r\n _this.valign = \"none\";\r\n _this.startAngle = -90;\r\n _this.endAngle = 270;\r\n var seriesContainer = _this.seriesContainer;\r\n seriesContainer.isMeasured = true;\r\n seriesContainer.valign = \"middle\";\r\n seriesContainer.align = \"center\";\r\n seriesContainer.layout = \"absolute\";\r\n seriesContainer.width = undefined;\r\n seriesContainer.height = undefined;\r\n // so that the pie is always drawn, even the legend wants all the space\r\n _this.chartContainer.minHeight = 50;\r\n _this.chartContainer.minWidth = 50;\r\n _this.chartContainer.events.on(\"maxsizechanged\", _this.updateRadius, _this, false); // need this for the chart to change radius if legend is removed/disabled\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n PieChart.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n // Add a default screen reader title for accessibility\r\n // This will be overridden in screen reader if there are any `titles` set\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Pie chart\");\r\n }\r\n };\r\n /**\r\n * (Re)validates the chart, causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n PieChart.prototype.validateLayout = function () {\r\n _super.prototype.validateLayout.call(this);\r\n this.updateRadius();\r\n };\r\n /**\r\n * Decorates a new [[Series]] object with required parameters when it is\r\n * added to the chart.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event\r\n */\r\n PieChart.prototype.handleSeriesAdded = function (event) {\r\n _super.prototype.handleSeriesAdded.call(this, event);\r\n this._chartPixelRadius = undefined;\r\n this.updateSeriesAngles();\r\n };\r\n PieChart.prototype.updateSeriesAngles = function () {\r\n var _this = this;\r\n this.series.each(function (series) {\r\n series.startAngle = _this.startAngle;\r\n series.endAngle = _this.endAngle;\r\n series.defaultState.properties.startAngle = _this.startAngle;\r\n series.defaultState.properties.endAngle = _this.endAngle;\r\n });\r\n };\r\n /**\r\n * Recalculates pie's radius, based on a number of criteria.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n PieChart.prototype.updateRadius = function () {\r\n var chartCont = this.chartContainer;\r\n var rect = $math.getArcRect(this.startAngle, this.endAngle, 1);\r\n var innerRect = { x: 0, y: 0, width: 0, height: 0 };\r\n var innerRadius = this.innerRadius;\r\n if (innerRadius instanceof Percent) {\r\n innerRect = $math.getArcRect(this.startAngle, this.endAngle, innerRadius.value);\r\n }\r\n // @todo handle this when innerRadius set in pixels (do it for radar also)\r\n rect = $math.getCommonRectangle([rect, innerRect]);\r\n var maxRadius = Math.min(chartCont.innerWidth / rect.width, chartCont.innerHeight / rect.height);\r\n if (!$type.isNumber(maxRadius)) {\r\n maxRadius = 0;\r\n }\r\n var chartRadius = $utils.relativeRadiusToValue(this.radius, maxRadius);\r\n var chartPixelInnerRadius = $utils.relativeRadiusToValue(this.innerRadius, maxRadius);\r\n var seriesRadius = (chartRadius - chartPixelInnerRadius) / this.series.length;\r\n if (chartRadius != this._chartPixelRadius || chartPixelInnerRadius != this._chartPixelInnerRadius) {\r\n this._chartPixelRadius = chartRadius;\r\n this._chartPixelInnerRadius = chartPixelInnerRadius;\r\n //@todo: make it possible to set series radius in percent\r\n $iter.each($iter.indexed(this.series.iterator()), function (a) {\r\n var i = a[0];\r\n var series = a[1];\r\n var radius = chartPixelInnerRadius + $utils.relativeRadiusToValue(series.radius, chartRadius - chartPixelInnerRadius);\r\n var innerRadius = chartPixelInnerRadius + $utils.relativeRadiusToValue(series.innerRadius, chartRadius - chartPixelInnerRadius);\r\n if (!$type.isNumber(radius)) {\r\n radius = chartPixelInnerRadius + seriesRadius * (i + 1);\r\n }\r\n if (!$type.isNumber(innerRadius)) {\r\n innerRadius = chartPixelInnerRadius + seriesRadius * i;\r\n }\r\n series.pixelRadius = radius;\r\n series.pixelInnerRadius = innerRadius;\r\n });\r\n this.seriesContainer.definedBBox = { x: chartRadius * rect.x, y: chartRadius * rect.y, width: chartRadius * rect.width, height: chartRadius * rect.height };\r\n this.seriesContainer.invalidateLayout();\r\n this.bulletsContainer.x = this.seriesContainer.x;\r\n this.bulletsContainer.y = this.seriesContainer.y;\r\n }\r\n };\r\n Object.defineProperty(PieChart.prototype, \"radius\", {\r\n /**\r\n * @return Radius (px or relative)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"radius\");\r\n },\r\n /**\r\n * Sets radius of the pie chart.\r\n *\r\n * Setting to a number will mean a fixed pixel radius.\r\n *\r\n * Setting to an instance of [[Percent]] will mean a relative radius to\r\n * available space.\r\n *\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * // Set pie chart to be at 50% of the available space\r\n * pieChart.radius = am4core.percent.percent(50);\r\n * ```\r\n * ```JavaScript\r\n * // Set pie chart to be at 50% of the available space\r\n * pieChart.radius = am4core.percent.percent(50);\r\n * ```\r\n * ```JSON\r\n * {\r\n * // Set pie chart to be at 50% of the available space\r\n * \"radius\": \"50%\"\r\n * }\r\n * ```\r\n *\r\n * @default 80%\r\n * @param value Radius (px or relative)\r\n */\r\n set: function (value) {\r\n if (this.setPercentProperty(\"radius\", value, true, false, 10, false)) {\r\n this.invalidateLayout();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PieChart.prototype, \"innerRadius\", {\r\n /**\r\n * @return Relative inner radius (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"innerRadius\");\r\n },\r\n /**\r\n * Sets relative inner radius (to create a donut chart).\r\n *\r\n * Setting to a number will mean a fixed pixel radius.\r\n *\r\n * Setting to an instance of [[Percent]] will mean a relative radius to\r\n * available space.\r\n *\r\n * NOTE: it's not related to `radius`.\r\n *\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * // Set pie chart to be at 50% of the available space\r\n * pieChart.innerRadius = am4core.percent.percent(50);\r\n * ```\r\n * ```JavaScript\r\n * // Set pie chart to be at 50% of the available space\r\n * pieChart.innerRadius = am4core.percent.percent(50);\r\n * ```\r\n * ```JSON\r\n * {\r\n * // Set pie chart to be at 50% of the available space\r\n * \"innerRadius\": \"50%\"\r\n * }\r\n *\r\n * @default 0\r\n * @param value Relative inner radius (0-1)\r\n * @todo Setting things like `innerRadius` modifies `slice.radius` and it then looks like it is not the same value as in default state\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"innerRadius\", value, true, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates a new [[PieSeries]].\r\n *\r\n * @return New series\r\n */\r\n PieChart.prototype.createSeries = function () {\r\n return new PieSeries();\r\n };\r\n Object.defineProperty(PieChart.prototype, \"startAngle\", {\r\n /**\r\n * @return Start angle (degrees)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startAngle\");\r\n },\r\n /**\r\n * Starting angle of the Pie circle. (degrees)\r\n *\r\n * Normally, a pie chart begins (the left side of the first slice is drawn)\r\n * at the top center. (at -90 degrees)\r\n *\r\n * You can use `startAngle` to change this setting.\r\n *\r\n * E.g. setting this to 0 will make the first slice be drawn to the right.\r\n *\r\n * For a perfect circle the absolute sum of `startAngle` and `endAngle`\r\n * needs to be 360.\r\n *\r\n * However, it's **not** necessary to do so. You can set to those lesser\r\n * numbers, to create semi-circles.\r\n *\r\n * E.g. `startAngle = -90` with `endAngle = 0` will create a Pie chart that\r\n * looks like a quarter of a circle.\r\n *\r\n * NOTE: This setting is not supported in a 3D pie chart.\r\n *\r\n * @default -90\r\n * @param value Start angle (degrees)\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"startAngle\", value)) {\r\n this.updateRadius();\r\n this.updateSeriesAngles();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(PieChart.prototype, \"endAngle\", {\r\n /**\r\n * @return End angle (degrees)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endAngle\");\r\n },\r\n /**\r\n * End angle of the Pie circle. (degrees)\r\n *\r\n * Normally, a pie chart ends (the right side of the last slice is drawn)\r\n * at the top center. (at 270 degrees)\r\n *\r\n * You can use `endAngle` to change this setting.\r\n *\r\n * For a perfect circle the absolute sum of `startAngle` and `endAngle`\r\n * needs to be 360.\r\n *\r\n * However, it's **not** necessary to do so. You can set to those lesser\r\n * numbers, to create semi-circles.\r\n *\r\n * E.g. `startAngle = -90` with `endAngle = 0` will create a Pie chart that\r\n * looks like a quarter of a circle.\r\n *\r\n * NOTE: This setting is not supported in a 3D pie chart.\r\n *\r\n * @default 270\r\n * @param value End angle (degrees)\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"endAngle\", value)) {\r\n this.updateRadius();\r\n this.updateSeriesAngles();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return PieChart;\r\n}(PercentChart));\r\nexport { PieChart };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"PieChart\"] = PieChart;\r\nregistry.registeredClasses[\"PieChartDataItem\"] = PieChartDataItem;\r\n//# sourceMappingURL=PieChart.js.map","/**\r\n * Sankey diagram module.\r\n */\r\nimport * as tslib_1 from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { FlowDiagram, FlowDiagramDataItem } from \"./FlowDiagram\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { SankeyNode } from \"../elements/SankeyNode\";\r\nimport { SankeyLink } from \"../elements/SankeyLink\";\r\nimport { Animation } from \"../../core/utils/Animation\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $object from \"../../core/utils/Object\";\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n//@todo rearange notes after dragged\r\n/**\r\n * Defines a [[DataItem]] for [[SankeyDiagram]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar SankeyDiagramDataItem = /** @class */ (function (_super) {\r\n tslib_1.__extends(SankeyDiagramDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function SankeyDiagramDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"SankeyDiagramDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n return SankeyDiagramDataItem;\r\n}(FlowDiagramDataItem));\r\nexport { SankeyDiagramDataItem };\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a Sankey Diagram chart.\r\n *\r\n * @see {@link ISankeyDiagramEvents} for a list of available Events\r\n * @see {@link ISankeyDiagramAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/sankey-diagram/} for documentation\r\n * @important\r\n */\r\nvar SankeyDiagram = /** @class */ (function (_super) {\r\n tslib_1.__extends(SankeyDiagram, _super);\r\n /**\r\n * Constructor\r\n */\r\n function SankeyDiagram() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n _this.className = \"SankeyDiagram\";\r\n _this.orientation = \"horizontal\";\r\n _this.nodeAlign = \"middle\";\r\n _this.nodesContainer.width = percent(100);\r\n _this.nodesContainer.height = percent(100);\r\n _this.linksContainer.width = percent(100);\r\n _this.linksContainer.height = percent(100);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * (Re)validates chart's data, effectively causing the chart to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n SankeyDiagram.prototype.validateData = function () {\r\n var _this = this;\r\n _super.prototype.validateData.call(this);\r\n this._levelCount = 0;\r\n this.nodes.each(function (key, node) {\r\n node.level = _this.getNodeLevel(node, 0);\r\n _this._levelCount = $math.max(_this._levelCount, node.level);\r\n });\r\n };\r\n /**\r\n * Returns node's highest level.\r\n *\r\n * @param node Node\r\n * @param level Current level\r\n * @return New level\r\n */\r\n SankeyDiagram.prototype.getNodeLevel = function (node, level) {\r\n var _this = this;\r\n //@todo solve circular so\r\n var levels = [level];\r\n $iter.each(node.incomingDataItems.iterator(), function (link) {\r\n if (link.fromNode) {\r\n levels.push(_this.getNodeLevel(link.fromNode, level + 1));\r\n }\r\n });\r\n return Math.max.apply(Math, tslib_1.__spread(levels));\r\n };\r\n /**\r\n * Calculates relation between pixel height and total value.\r\n *\r\n * In Sankey the actual thickness of links and height of nodes will depend\r\n * on their values.\r\n */\r\n SankeyDiagram.prototype.calculateValueHeight = function () {\r\n var _this = this;\r\n // calculate sums of each level\r\n this._levelSum = {};\r\n this._levelNodesCount = {};\r\n this.maxSum = 0;\r\n var total = this.dataItem.values.value.sum;\r\n $iter.each(this._sorted, function (strNode) {\r\n var node = strNode[1];\r\n _this.getNodeValue(node);\r\n });\r\n this.nodes.each(function (key, node) {\r\n var level = node.level;\r\n var value = Math.max(node.totalIncoming, node.totalOutgoing);\r\n if (value / total < _this.minNodeSize) {\r\n value = total * _this.minNodeSize;\r\n }\r\n if ($type.isNumber(_this._levelSum[level])) {\r\n _this._levelSum[level] += value;\r\n }\r\n else {\r\n _this._levelSum[level] = value;\r\n }\r\n if ($type.isNumber(_this._levelNodesCount[level])) {\r\n _this._levelNodesCount[level]++;\r\n }\r\n else {\r\n _this._levelNodesCount[level] = 1;\r\n }\r\n });\r\n var availableHeight;\r\n if (this.orientation == \"horizontal\") {\r\n availableHeight = this.chartContainer.maxHeight - 1;\r\n }\r\n else {\r\n availableHeight = this.chartContainer.maxWidth - 1;\r\n }\r\n var maxSumLevel;\r\n $object.each(this._levelSum, function (key, value) {\r\n var realValue = value;\r\n value = value * availableHeight / (availableHeight - (_this._levelNodesCount[key] - 1) * _this.nodePadding);\r\n if (_this.maxSum < value) {\r\n _this.maxSum = realValue;\r\n maxSumLevel = $type.toNumber(key);\r\n }\r\n });\r\n this._maxSumLevel = maxSumLevel;\r\n var maxSumLevelNodeCount = this._levelNodesCount[this._maxSumLevel];\r\n var valueHeight = (availableHeight - (maxSumLevelNodeCount - 1) * this.nodePadding) / this.maxSum;\r\n if (!$type.isNumber(this.valueHeight)) {\r\n this.valueHeight = valueHeight;\r\n }\r\n else {\r\n var finalHeight = void 0;\r\n try {\r\n finalHeight = this._heightAnimation.animationOptions[0].to;\r\n }\r\n catch (err) {\r\n }\r\n // without animations it will be non-smooth as maxValue jumps from one column to another\r\n if (finalHeight != valueHeight) {\r\n var duration = this.interpolationDuration;\r\n try {\r\n duration = this.nodes.template.states.getKey(\"active\").transitionDuration;\r\n }\r\n catch (err) {\r\n }\r\n this._heightAnimation = new Animation(this, { property: \"valueHeight\", from: this.valueHeight, to: valueHeight }, duration).start();\r\n this._disposers.push(this._heightAnimation);\r\n }\r\n }\r\n };\r\n /**\r\n * Redraws the chart.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n SankeyDiagram.prototype.validate = function () {\r\n var _this = this;\r\n _super.prototype.validate.call(this);\r\n this.calculateValueHeight();\r\n var container = this.nodesContainer;\r\n var nextCoordinate = {};\r\n var maxSumLevelNodeCount = this._levelNodesCount[this._maxSumLevel];\r\n var total = this.dataItem.values.value.sum;\r\n $iter.each(this._sorted, function (strNode) {\r\n var node = strNode[1];\r\n var level = node.level;\r\n var levelCoordinate = 0;\r\n var nodeCount = _this._levelNodesCount[level];\r\n switch (_this.nodeAlign) {\r\n case \"bottom\":\r\n levelCoordinate = (_this.maxSum - _this._levelSum[level]) * _this.valueHeight - (nodeCount - maxSumLevelNodeCount) * _this.nodePadding;\r\n break;\r\n case \"middle\":\r\n levelCoordinate = (_this.maxSum - _this._levelSum[level]) * _this.valueHeight / 2 - (nodeCount - maxSumLevelNodeCount) * _this.nodePadding / 2;\r\n break;\r\n }\r\n node.parent = container;\r\n var delta;\r\n var x;\r\n var y;\r\n var value = Math.max(node.totalIncoming, node.totalOutgoing);\r\n if (value / total < _this.minNodeSize) {\r\n value = total * _this.minNodeSize;\r\n }\r\n if (_this.orientation == \"horizontal\") {\r\n delta = (_this.innerWidth - node.pixelWidth) / _this._levelCount;\r\n x = delta * node.level;\r\n y = nextCoordinate[level] || levelCoordinate;\r\n var h = value * _this.valueHeight;\r\n node.height = h;\r\n node.minX = x;\r\n node.maxX = x;\r\n nextCoordinate[level] = y + h + _this.nodePadding;\r\n }\r\n else {\r\n delta = (_this.innerHeight - node.pixelHeight) / _this._levelCount;\r\n x = nextCoordinate[level] || levelCoordinate;\r\n y = delta * node.level;\r\n var w = value * _this.valueHeight;\r\n node.width = w;\r\n node.minY = y;\r\n node.maxY = y;\r\n nextCoordinate[level] = x + w + _this.nodePadding;\r\n }\r\n node.x = x;\r\n node.y = y;\r\n });\r\n };\r\n /**\r\n * Performs actual operations to reveal this element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param duration Fade in duration (ms)\r\n * @return Fade in duration (ms)\r\n */\r\n SankeyDiagram.prototype.showReal = function (duration) {\r\n var _this = this;\r\n if (this.interpolationDuration > 0) {\r\n var container_1 = this.nodesContainer;\r\n var i_1 = 0;\r\n $iter.each(this.links.iterator(), function (link) {\r\n link.hide(0);\r\n });\r\n $iter.each(this._sorted, function (strNode) {\r\n var node = strNode[1];\r\n var property;\r\n if (_this.orientation == \"horizontal\") {\r\n node.dx = -(container_1.pixelWidth - node.pixelWidth) / _this._levelCount;\r\n property = \"dx\";\r\n }\r\n else {\r\n node.dy = -(container_1.pixelHeight - node.pixelHeight) / _this._levelCount;\r\n property = \"dy\";\r\n }\r\n var delay = 0;\r\n var duration = _this.interpolationDuration;\r\n if (_this.sequencedInterpolation) {\r\n delay = _this.sequencedInterpolationDelay * i_1 + duration * i_1 / $iter.length(_this.nodes.iterator());\r\n }\r\n node.opacity = 0;\r\n node.invalidateLinks();\r\n node.animate([{ property: \"opacity\", from: 0, to: 1 }, { property: property, to: 0 }], _this.interpolationDuration, _this.interpolationEasing).delay(delay);\r\n $iter.each(node.outgoingDataItems.iterator(), function (dataItem) {\r\n var animation = dataItem.link.show(_this.interpolationDuration);\r\n if (animation && !animation.isFinished()) {\r\n animation.delay(delay);\r\n }\r\n });\r\n $iter.each(node.incomingDataItems.iterator(), function (dataItem) {\r\n if (!dataItem.fromNode) {\r\n var animation = dataItem.link.show(_this.interpolationDuration);\r\n if (animation && !animation.isFinished()) {\r\n animation.delay(delay);\r\n }\r\n }\r\n });\r\n i_1++;\r\n });\r\n }\r\n return _super.prototype.showReal.call(this);\r\n };\r\n /**\r\n * Changes the sort type of the nodes.\r\n *\r\n * This will actually reshuffle nodes using nice animation.\r\n */\r\n SankeyDiagram.prototype.changeSorting = function () {\r\n var _this = this;\r\n this.sortNodes();\r\n var nextCoordinate = {};\r\n $iter.each(this._sorted, function (strNode) {\r\n var node = strNode[1];\r\n var level = node.level;\r\n var levelCoordinate = (_this.maxSum - _this._levelSum[level]) * _this.valueHeight / 2;\r\n var property;\r\n var nodeHeight;\r\n if (_this.orientation == \"horizontal\") {\r\n property = \"y\";\r\n nodeHeight = node.pixelHeight;\r\n }\r\n else {\r\n property = \"x\";\r\n nodeHeight = node.pixelWidth;\r\n }\r\n node.animate({ property: property, to: nextCoordinate[level] || levelCoordinate }, _this.interpolationDuration, _this.interpolationEasing);\r\n nextCoordinate[level] = (nextCoordinate[level] || levelCoordinate) + nodeHeight + _this.nodePadding;\r\n node.invalidateLinks();\r\n });\r\n };\r\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\r\n SankeyDiagram.prototype.applyInternalDefaults = function () {\r\n _super.prototype.applyInternalDefaults.call(this);\r\n // Add a default screen reader title for accessibility\r\n // This will be overridden in screen reader if there are any `titles` set\r\n if (!$type.hasValue(this.readerTitle)) {\r\n this.readerTitle = this.language.translate(\"Sankey diagram\");\r\n }\r\n };\r\n /**\r\n * Creates and returns a new data item.\r\n *\r\n * @return Data item\r\n */\r\n SankeyDiagram.prototype.createDataItem = function () {\r\n return new SankeyDiagramDataItem();\r\n };\r\n Object.defineProperty(SankeyDiagram.prototype, \"nodeAlign\", {\r\n /**\r\n * @returns Returns nodeAlign value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"nodeAlign\");\r\n },\r\n /**\r\n * How to align nodes. In case layout is vertical, top means left and bottom means right\r\n *\r\n * @param value Node sorting\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"nodeAlign\", value);\r\n this.changeSorting();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(SankeyDiagram.prototype, \"orientation\", {\r\n /**\r\n * @return Orientation\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"orientation\");\r\n },\r\n /**\r\n * Orientation of the chart: \"horizontal\" or \"vertical\";\r\n *\r\n * @param value Orientation\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"orientation\", value, true);\r\n var nameLabel = this.nodes.template.nameLabel;\r\n if (value == \"vertical\") {\r\n this.nodes.template.width = undefined;\r\n nameLabel.label.horizontalCenter = \"middle\";\r\n nameLabel.locationX = 0.5;\r\n }\r\n else {\r\n this.nodes.template.height = undefined;\r\n nameLabel.label.horizontalCenter = \"left\";\r\n nameLabel.locationX = 1;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n SankeyDiagram.prototype.createNode = function () {\r\n var node = new SankeyNode();\r\n this._disposers.push(node);\r\n return node;\r\n };\r\n /**\r\n * @ignore\r\n */\r\n SankeyDiagram.prototype.createLink = function () {\r\n var link = new SankeyLink();\r\n this._disposers.push(link);\r\n return link;\r\n };\r\n Object.defineProperty(SankeyDiagram.prototype, \"valueHeight\", {\r\n /**\r\n * @ignore\r\n */\r\n get: function () {\r\n return this._valueHeight;\r\n },\r\n /**\r\n * @ignore\r\n */\r\n set: function (value) {\r\n if (value != this._valueHeight) {\r\n this._valueHeight = value;\r\n this.invalidate();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n SankeyDiagram.prototype.disposeData = function () {\r\n _super.prototype.disposeData.call(this);\r\n this._sorted = this.nodes.iterator();\r\n };\r\n return SankeyDiagram;\r\n}(FlowDiagram));\r\nexport { SankeyDiagram };\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"SankeyDiagram\"] = SankeyDiagram;\r\n//# sourceMappingURL=SankeyDiagram.js.map"],"sourceRoot":""}