{"version":3,"file":"js/chunk-vendors-3c0e37ba.410c78bc.js","mappings":"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","sources":["webpack://rokk3rfuel/./node_modules/@amcharts/amcharts4/.internal/charts/axes/Axis.js","webpack://rokk3rfuel/./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisBreak.js","webpack://rokk3rfuel/./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisBullet.js","webpack://rokk3rfuel/./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisFill.js","webpack://rokk3rfuel/./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisFillCircular.js","webpack://rokk3rfuel/./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisLabel.js","webpack://rokk3rfuel/./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisLabelCircular.js","webpack://rokk3rfuel/./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisLine.js","webpack://rokk3rfuel/./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisRenderer.js","webpack://rokk3rfuel/./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisRendererCircular.js","webpack://rokk3rfuel/./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisRendererRadial.js","webpack://rokk3rfuel/./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisRendererX.js","webpack://rokk3rfuel/./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisRendererX3D.js","webpack://rokk3rfuel/./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisRendererY.js","webpack://rokk3rfuel/./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisRendererY3D.js","webpack://rokk3rfuel/./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisTick.js"],"sourcesContent":["/**\r\n * Base class for all Axis\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Component } from \"../../core/Component\";\r\nimport { Container } from \"../../core/Container\";\r\nimport { DataItem } from \"../../core/DataItem\";\r\nimport { AxisBreak } from \"./AxisBreak\";\r\nimport { Label } from \"../../core/elements/Label\";\r\nimport { Tooltip } from \"../../core/elements/Tooltip\";\r\nimport { SortedListTemplate } from \"../../core/utils/SortedList\";\r\nimport { List, ListTemplate, ListDisposer } from \"../../core/utils/List\";\r\nimport { Disposer, MultiDisposer } from \"../../core/utils/Disposer\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $number from \"../../core/utils/Number\";\r\nimport * as $array from \"../../core/utils/Array\";\r\nimport * as $type from \"../../core/utils/Type\";\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 [[Axis]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nvar AxisDataItem = /** @class */ (function (_super) {\r\n __extends(AxisDataItem, _super);\r\n /**\r\n * Constructor\r\n */\r\n function AxisDataItem() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"AxisDataItem\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(AxisDataItem.prototype, \"grid\", {\r\n /**\r\n * @return Grid element\r\n */\r\n get: function () {\r\n if (!this._grid) {\r\n var component_1 = this.component;\r\n if (component_1) {\r\n var template = void 0;\r\n var grid_1;\r\n if (this.isRange) {\r\n template = component_1.axisRanges.template.grid;\r\n if (template.disabled) {\r\n return;\r\n }\r\n else {\r\n grid_1 = template.clone();\r\n }\r\n }\r\n else {\r\n template = component_1.renderer.grid.template;\r\n if (template.disabled) {\r\n return;\r\n }\r\n else {\r\n grid_1 = component_1.renderer.grid.create();\r\n this._disposers.push(new Disposer(function () {\r\n component_1.renderer.grid.removeValue(grid_1);\r\n }));\r\n }\r\n }\r\n this.grid = grid_1;\r\n grid_1.shouldClone = false;\r\n this._disposers.push(grid_1);\r\n grid_1.axis = this.component;\r\n }\r\n }\r\n return this._grid;\r\n },\r\n /**\r\n * A [[Grid]] element associated with this data item.\r\n *\r\n * If there is no grid element associated with data item, a new one is\r\n * created and returned.\r\n *\r\n * @param grid Grid element\r\n */\r\n set: function (grid) {\r\n if (this._grid && this._grid != grid) {\r\n $array.remove(this.sprites, this._grid);\r\n this._grid.dataItem = undefined;\r\n }\r\n if (grid) {\r\n if (grid.dataItem && grid.dataItem != this) {\r\n $array.remove(grid.dataItem.sprites, grid);\r\n grid.dataItem.grid = undefined;\r\n }\r\n this.addSprite(grid);\r\n }\r\n this._grid = grid;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisDataItem.prototype, \"tick\", {\r\n /**\r\n * @return Tick element\r\n */\r\n get: function () {\r\n if (!this._tick) {\r\n var component_2 = this.component;\r\n if (component_2) {\r\n var template = void 0;\r\n var tick_1;\r\n if (this.isRange) {\r\n template = component_2.axisRanges.template.tick;\r\n if (template.disabled) {\r\n return;\r\n }\r\n else {\r\n tick_1 = template.clone();\r\n }\r\n }\r\n else {\r\n template = component_2.renderer.ticks.template;\r\n if (template.disabled) {\r\n return;\r\n }\r\n else {\r\n tick_1 = component_2.renderer.ticks.create();\r\n this._disposers.push(new Disposer(function () {\r\n component_2.renderer.ticks.removeValue(tick_1);\r\n }));\r\n }\r\n }\r\n this.tick = tick_1;\r\n tick_1.axis = this.component;\r\n tick_1.shouldClone = false;\r\n this._disposers.push(tick_1);\r\n }\r\n }\r\n return this._tick;\r\n },\r\n /**\r\n * An [[AxisTick]] element associated with this data item.\r\n *\r\n * If there is no tick element associated with data item, a new one is\r\n * created and returned.\r\n *\r\n * @param tick Tick element\r\n */\r\n set: function (tick) {\r\n if (this._tick && this._tick != tick) {\r\n $array.remove(this.sprites, this._tick);\r\n this._tick.dataItem = undefined;\r\n }\r\n if (tick) {\r\n if (tick.dataItem && tick.dataItem != this) {\r\n $array.remove(tick.dataItem.sprites, tick);\r\n tick.dataItem.tick = undefined;\r\n }\r\n this.addSprite(tick);\r\n }\r\n this._tick = tick;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisDataItem.prototype, \"label\", {\r\n /**\r\n * @return Label element\r\n */\r\n get: function () {\r\n if (!this._label) {\r\n var component_3 = this.component;\r\n if (component_3) {\r\n var template = void 0;\r\n var label_1;\r\n if (this.isRange) {\r\n template = component_3.axisRanges.template.label;\r\n if (template.disabled) {\r\n return;\r\n }\r\n else {\r\n label_1 = template.clone();\r\n }\r\n }\r\n else {\r\n template = component_3.renderer.labels.template;\r\n if (template.disabled) {\r\n return;\r\n }\r\n else {\r\n label_1 = component_3.renderer.labels.create();\r\n this._disposers.push(new Disposer(function () {\r\n component_3.renderer.labels.removeValue(label_1);\r\n }));\r\n }\r\n }\r\n this._disposers.push(label_1);\r\n this.label = label_1;\r\n label_1.shouldClone = false;\r\n label_1.axis = this.component;\r\n label_1.virtualParent = component_3;\r\n }\r\n }\r\n return this._label;\r\n },\r\n /**\r\n * An [[AxisLabel]] element associated with this data item.\r\n *\r\n * If there is no label element associated with data item, a new one is\r\n * created and returned.\r\n *\r\n * @param label Label element\r\n */\r\n set: function (label) {\r\n if (this._label && this._label != label) {\r\n $array.remove(this.sprites, this._label);\r\n this._label.dataItem = undefined;\r\n }\r\n if (label) {\r\n if (label.dataItem && label.dataItem != this) {\r\n $array.remove(label.dataItem.sprites, label);\r\n label.dataItem.label = undefined;\r\n }\r\n this.addSprite(label);\r\n }\r\n this._label = label;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisDataItem.prototype, \"axisFill\", {\r\n /**\r\n * @return Label element\r\n */\r\n get: function () {\r\n if (!this._axisFill) {\r\n var component_4 = this.component;\r\n if (component_4) {\r\n var template = void 0;\r\n var axisFill_1;\r\n if (this.isRange) {\r\n template = component_4.axisRanges.template.axisFill;\r\n if (!this.isTemplate && template.disabled) {\r\n return;\r\n }\r\n else {\r\n axisFill_1 = template.clone();\r\n }\r\n }\r\n else {\r\n template = component_4.renderer.axisFills.template;\r\n if (template.disabled) {\r\n return;\r\n }\r\n else {\r\n axisFill_1 = component_4.renderer.axisFills.create();\r\n this._disposers.push(new Disposer(function () {\r\n component_4.renderer.axisFills.removeValue(axisFill_1);\r\n }));\r\n }\r\n }\r\n this.axisFill = axisFill_1;\r\n axisFill_1.shouldClone = false;\r\n this._disposers.push(axisFill_1);\r\n }\r\n }\r\n return this._axisFill;\r\n },\r\n /**\r\n * An [[AxisFill]] associated element with this data item.\r\n *\r\n * If there is no fill element associated with data item, a new one is\r\n * created and returned.\r\n *\r\n * @param label Label element\r\n */\r\n set: function (axisFill) {\r\n if (this._axisFill && this._axisFill != axisFill) {\r\n $array.remove(this.sprites, this._axisFill);\r\n this._axisFill.dataItem = undefined;\r\n }\r\n if (axisFill) {\r\n if (axisFill.dataItem && axisFill.dataItem != this) {\r\n $array.remove(axisFill.dataItem.sprites, axisFill);\r\n axisFill.dataItem.axisFill = undefined;\r\n }\r\n axisFill.axis = this.component;\r\n this.addSprite(axisFill);\r\n }\r\n this._axisFill = axisFill;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisDataItem.prototype, \"text\", {\r\n /**\r\n * @return Text label\r\n */\r\n get: function () {\r\n return this._text;\r\n },\r\n /**\r\n * Text to be used as data item's label.\r\n *\r\n * @param text Text label\r\n */\r\n set: function (text) {\r\n this._text = text;\r\n if (this._label) { // do not use getter, it will create unwanted instances!\r\n this._label.text = text;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisDataItem.prototype, \"mask\", {\r\n /**\r\n * Data item's mask.\r\n *\r\n * @return Mask\r\n */\r\n get: function () {\r\n return this._mask;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisDataItem.prototype, \"contents\", {\r\n /**\r\n * Returns a [[Container]] to place all visual elements, related to data item\r\n * in.\r\n *\r\n * If there is no Container, a new one is created.\r\n *\r\n * @return Contents container\r\n */\r\n get: function () {\r\n if (!this._contents) {\r\n var contents = new Container();\r\n this.addSprite(contents);\r\n contents.isMeasured = false;\r\n this._contents = contents;\r\n var component = this.component;\r\n if (component) {\r\n var mask = component.renderer.createFill(this.component);\r\n mask.disabled = false;\r\n mask.axis = component;\r\n this.addSprite(mask);\r\n this._mask = mask;\r\n contents.mask = mask;\r\n }\r\n }\r\n return this._contents;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisDataItem.prototype, \"axisBreak\", {\r\n /**\r\n * @return Axis break\r\n */\r\n get: function () {\r\n return this._axisBreak;\r\n },\r\n /**\r\n * An [[AxisBreak]] this data item falls within.\r\n *\r\n * @param axisBreak Axis break\r\n */\r\n set: function (axisBreak) {\r\n if (this._axisBreak) {\r\n this._axisBreak.dataItems.removeValue(this);\r\n }\r\n if (axisBreak) {\r\n axisBreak.dataItems.push(this);\r\n }\r\n this._axisBreak = axisBreak;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Re-draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisDataItem.prototype.validate = function () {\r\n if (this.component) {\r\n this.component.validateDataElement(this);\r\n }\r\n };\r\n /**\r\n * Appends data item's elements to the parent [[Container]].\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisDataItem.prototype.appendChildren = function () {\r\n if (this.component) {\r\n this.component.appendDataItem(this);\r\n }\r\n };\r\n /**\r\n * Checks if data item has particular property set.\r\n *\r\n * @param prop Property name\r\n * @return Property set?\r\n */\r\n AxisDataItem.prototype.hasProperty = function (prop) {\r\n return prop == \"component\" ? true : _super.prototype.hasProperty.call(this, prop);\r\n };\r\n /**\r\n * Copies all parameters from another [[AxisDataItem]].\r\n *\r\n * @param source Source AxisDataItem\r\n */\r\n AxisDataItem.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.text = source.text;\r\n if (source.bullet) {\r\n this.bullet = source.bullet.clone();\r\n }\r\n this.minPosition = source.minPosition;\r\n this.maxPosition = source.maxPosition;\r\n };\r\n /**\r\n * Sets visibility of the Data Item.\r\n *\r\n * @param value Data Item\r\n */\r\n AxisDataItem.prototype.setVisibility = function (value, noChangeValues) {\r\n _super.prototype.setVisibility.call(this, value, noChangeValues);\r\n if (this._contents) {\r\n this._contents.visible = value;\r\n }\r\n };\r\n Object.defineProperty(AxisDataItem.prototype, \"bullet\", {\r\n /**\r\n * @return Bullet\r\n */\r\n get: function () {\r\n return this._bullet;\r\n },\r\n /**\r\n * Set it to an instance of any [[Sprite]]. It will be displayed as an axis\r\n * bullet in the middle of the cell, or specific value.\r\n *\r\n * If you need position bullet relatively to the cell, use [[AxisBullet]]\r\n * instead. It has a `location` property which can be used to indicate\r\n * precise relative location within cell/range.\r\n *\r\n * Also, [[AxisBullet]] is a [[Container]] so you can push any other element\r\n * into it.\r\n *\r\n * NOTE: `location` is relative to the parent axis range's scope, i.e.\r\n * between its `date` and `endDate` for [[DateAxis]], or `value`/`endValue`\r\n * ([[ValueAxis]]), or `category`/`endCategory` ([[categoryAxis]]).\r\n *\r\n * ```TypeScript\r\n * let range = dateAxis.axisRanges.create();\r\n * range.date = new Date(2018, 0, 5);\r\n *\r\n * let flag = new am4plugins_bullets.FlagBullet();\r\n * flag.label.text = \"Hello\";\r\n *\r\n * range.bullet = flag;\r\n * ```\r\n * ```JavaScript\r\n * var range = dateAxis.axisRanges.create();\r\n * range.date = new Date(2018, 0, 5);\r\n *\r\n * var flag = new am4plugins_bullets.FlagBullet();\r\n * flag.label.text = \"Hello\";\r\n *\r\n * range.bullet = flag;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"xAxes\": [{\r\n * \"type\": \"DateAxis\",\r\n * // ...\r\n * \"axisRanges\": [{\r\n * \"date\": new Date(2018, 0, 5),\r\n * \"bullet: {\r\n * \"type\": \"FlagBullet\",\r\n * \"label\": {\r\n * \"text\": \"Hello\"\r\n * }\r\n * }\r\n * }]\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @since 4.5.9\r\n * @param value Bullet\r\n */\r\n set: function (value) {\r\n if (this._bullet && this._bullet != value) {\r\n $array.remove(this.sprites, this._bullet);\r\n this._bullet.dataItem = undefined;\r\n }\r\n this._bullet = value;\r\n if (value) {\r\n this.addSprite(value);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return AxisDataItem;\r\n}(DataItem));\r\nexport { AxisDataItem };\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Defines named positions for data item's location within [[Axis]].\r\n */\r\nexport var AxisItemLocation;\r\n(function (AxisItemLocation) {\r\n AxisItemLocation[AxisItemLocation[\"Start\"] = 0] = \"Start\";\r\n AxisItemLocation[AxisItemLocation[\"Middle\"] = 0.5] = \"Middle\";\r\n AxisItemLocation[AxisItemLocation[\"End\"] = 1] = \"End\";\r\n})(AxisItemLocation || (AxisItemLocation = {}));\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A base class for all Axis elements.\r\n *\r\n * @see {@link IAxisEvents} for a list of available Events\r\n * @see {@link IAxisAdapters} for a list of available Adapters\r\n */\r\nvar Axis = /** @class */ (function (_super) {\r\n __extends(Axis, _super);\r\n /**\r\n * Constructor\r\n */\r\n function Axis() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Number of Grid elements on the axis.\r\n */\r\n _this._gridCount = 10;\r\n /**\r\n * A list of [[XYSeries]] that are using this Axis.\r\n */\r\n _this._series = new List();\r\n /**\r\n * Specifies if axis should be automatically disposed when removing from\r\n * chart's axis list.\r\n *\r\n * @default true\r\n */\r\n _this.autoDispose = true;\r\n /**\r\n * @ignore\r\n */\r\n _this._axisItemCount = 0;\r\n if (_this.constructor === Axis) {\r\n throw new Error(\"'Axis' cannot be instantiated directly. Please use a specific axis type.\");\r\n }\r\n _this.hideTooltipWhileZooming = true;\r\n _this.minWidth = 0.0001;\r\n _this.minHeight = 0.0001;\r\n _this.className = \"Axis\";\r\n _this.shouldClone = false;\r\n _this.setPropertyValue(\"cursorTooltipEnabled\", true);\r\n _this.toggleZoomOutButton = true;\r\n _this.zoomable = true;\r\n var interfaceColors = new InterfaceColorSet();\r\n // Create title\r\n _this.title = new Label();\r\n _this.title.shouldClone = false;\r\n _this._disposers.push(_this.title);\r\n _this.setPropertyValue(\"startLocation\", 0);\r\n _this.setPropertyValue(\"endLocation\", 1);\r\n // Data item iterator\r\n _this._dataItemsIterator = new $iter.ListIterator(_this.dataItems, function () { return _this.dataItems.create(); });\r\n _this._dataItemsIterator.createNewItems = true;\r\n // Create tooltip\r\n var tooltip = new Tooltip();\r\n _this._disposers.push(tooltip);\r\n tooltip.label.padding(5, 10, 5, 10);\r\n tooltip.background.pointerLength = 5;\r\n tooltip.fitPointerToBounds = true;\r\n tooltip.background.filters.clear();\r\n // Set virtual parentfor the tooltip so that it can properly inheirt\r\n // formatters from the axis.\r\n tooltip.virtualParent = _this;\r\n // Create background element for the tooltip\r\n var background = tooltip.background;\r\n background.cornerRadius = 0;\r\n background.fill = interfaceColors.getFor(\"alternativeBackground\");\r\n background.stroke = background.fill;\r\n background.strokeWidth = 1;\r\n background.fillOpacity = 1;\r\n tooltip.label.fill = interfaceColors.getFor(\"alternativeText\");\r\n _this.tooltip = tooltip;\r\n // Accessibility\r\n _this.readerHidden = true;\r\n _this.events.on(\"rangechangestarted\", function () {\r\n _this.series.each(function (series) {\r\n if (series.hideTooltipWhileZooming) {\r\n series.tooltip.hide();\r\n series.tooltip.preventShow = true;\r\n }\r\n });\r\n if (_this.hideTooltipWhileZooming) {\r\n _this.tooltip.hide();\r\n _this.tooltip.preventShow = true;\r\n }\r\n }, undefined, false);\r\n _this.events.on(\"rangechangeended\", function () {\r\n _this.series.each(function (series) {\r\n if (series.hideTooltipWhileZooming) {\r\n series.tooltip.hide();\r\n series.tooltip.preventShow = false;\r\n }\r\n });\r\n if (_this.hideTooltipWhileZooming) {\r\n _this.tooltip.hide();\r\n _this.tooltip.preventShow = false;\r\n }\r\n }, undefined, false);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Holds reference to a function that accepts a DataItem and its index as\r\n * parameters.\r\n *\r\n * It can either return a fill opacity for a fill, or manipulate data item\r\n * directly, to create various highlighting scenarios.\r\n *\r\n * For example, you can set it up to highlight only weekends on a\r\n * [[DateAxis]].\r\n */\r\n Axis.prototype.fillRule = function (dataItem, index) {\r\n if (!$type.isNumber(index)) {\r\n index = dataItem.index;\r\n }\r\n if (index / 2 == Math.round(index / 2)) {\r\n dataItem.axisFill.__disabled = true;\r\n dataItem.axisFill.opacity = 0;\r\n }\r\n else {\r\n dataItem.axisFill.opacity = 1;\r\n dataItem.axisFill.__disabled = false;\r\n }\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 Axis.prototype.createDataItem = function () {\r\n return new AxisDataItem();\r\n };\r\n /**\r\n * Invalidates layout.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Axis.prototype.invalidateLayout = function () {\r\n _super.prototype.invalidateLayout.call(this);\r\n // this puts series after axis in invalidation order also makes series update it's data items in case widht/height of a series is not 100%\r\n $iter.each(this.series.iterator(), function (series) {\r\n series.invalidateLayout();\r\n });\r\n };\r\n /**\r\n * Invalidates series of this axis.\r\n */\r\n Axis.prototype.invalidateSeries = function () {\r\n // this puts series after axis in invalidation order also makes series update it's data items in case widht/height of a series is not 100%\r\n $iter.each(this.series.iterator(), function (series) {\r\n series.invalidate();\r\n });\r\n };\r\n /**\r\n * Override to cancel super call for data element validation.\r\n * @ignore\r\n */\r\n Axis.prototype.validateDataElements = function () {\r\n this._axisItemCount = 0;\r\n if (this.ghostLabel) {\r\n this.renderer.updateLabelElement(this.ghostLabel, this.start, this.end);\r\n this.ghostLabel.validate();\r\n }\r\n };\r\n /**\r\n * Recalculates the number of grid items on the axis.\r\n */\r\n Axis.prototype.updateGridCount = function () {\r\n if (this.renderer) {\r\n var gridCount = this.axisLength / this.renderer.minGridDistance;\r\n if (gridCount != this._gridCount) {\r\n this._gridCount = gridCount;\r\n this.clearCache();\r\n }\r\n }\r\n };\r\n /**\r\n * Redraws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Axis.prototype.validateLayout = function () {\r\n this.axisFullLength = this.axisLength / (this.end - this.start);\r\n _super.prototype.validateLayout.call(this);\r\n this.updateGridCount();\r\n var renderer = this.renderer;\r\n if (renderer) {\r\n renderer.updateAxisLine();\r\n renderer.updateTooltip();\r\n renderer.updateBaseGridElement();\r\n }\r\n if (this._prevLength != this.axisLength) {\r\n this.dispatchImmediately(\"lengthchanged\");\r\n this._prevLength = this.axisLength;\r\n }\r\n };\r\n /**\r\n * Initializes Axis' renderer.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Axis.prototype.initRenderer = function () {\r\n };\r\n /**\r\n * Adds a data item to the Axis.\r\n *\r\n * @param dataItem Data item\r\n */\r\n Axis.prototype.appendDataItem = function (dataItem) {\r\n var renderer = this.renderer;\r\n var tick = dataItem.tick;\r\n if (tick) {\r\n if (tick.above) {\r\n tick.parent = renderer.bulletsContainer;\r\n }\r\n else {\r\n tick.parent = renderer.gridContainer;\r\n }\r\n }\r\n if (dataItem.label) {\r\n dataItem.label.parent = renderer;\r\n }\r\n var axisFill = dataItem.axisFill;\r\n if (axisFill) {\r\n if (axisFill.above) {\r\n axisFill.parent = renderer.bulletsContainer;\r\n }\r\n else {\r\n axisFill.parent = renderer.gridContainer;\r\n }\r\n }\r\n var grid = dataItem.grid;\r\n if (grid) {\r\n if (grid.above) {\r\n grid.parent = renderer.bulletsContainer;\r\n }\r\n else {\r\n grid.parent = renderer.gridContainer;\r\n }\r\n }\r\n if (dataItem.bullet) {\r\n dataItem.bullet.parent = renderer.bulletsContainer;\r\n }\r\n };\r\n /**\r\n * Redraws Axis' related items.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Axis.prototype.validate = function () {\r\n _super.prototype.validate.call(this);\r\n this.validateLayout();\r\n this.renderer.updateGridContainer();\r\n };\r\n /**\r\n * Redars Axis ranges.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Axis.prototype.validateAxisRanges = function () {\r\n var _this = this;\r\n $iter.each(this.axisRanges.iterator(), function (axisRange) {\r\n _this.appendDataItem(axisRange);\r\n _this.validateDataElement(axisRange);\r\n if (axisRange.grid) {\r\n axisRange.grid.validate();\r\n }\r\n if (axisRange.tick) {\r\n axisRange.tick.validate();\r\n }\r\n if (axisRange.axisFill) {\r\n axisRange.axisFill.validate();\r\n }\r\n if (axisRange.label) {\r\n axisRange.label.validate();\r\n }\r\n });\r\n };\r\n /**\r\n * Invalidates all axis breaks, so they are redrawn.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Axis.prototype.validateBreaks = function () {\r\n if (this._axisBreaks) {\r\n $iter.each(this._axisBreaks.iterator(), function (axisBreak) {\r\n axisBreak.invalidate();\r\n });\r\n }\r\n };\r\n /**\r\n * Associates an Axis break with this Axis, after it is inserted into\r\n * `axisBreaks`.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event\r\n */\r\n Axis.prototype.processBreak = function (event) {\r\n var axisBreak = event.newValue;\r\n axisBreak.parent = this.renderer.breakContainer;\r\n axisBreak.axis = this;\r\n };\r\n /**\r\n * Registers a [[XYSeries]] element with this Axis.\r\n *\r\n * Returns a [[Disposer]] for all events, added to Series for watching\r\n * changes in Axis, and vice versa.\r\n * @ignore\r\n * @param series Series\r\n * @return Event disposer\r\n */\r\n Axis.prototype.registerSeries = function (series) {\r\n var _this = this;\r\n this.series.moveValue(series);\r\n return new MultiDisposer([\r\n new Disposer(function () {\r\n _this.series.removeValue(series);\r\n }),\r\n this.events.on(\"lengthchanged\", series.invalidate, series, false),\r\n this.events.on(\"lengthchanged\", series.createMask, series, false),\r\n this.events.on(\"startchanged\", series.invalidate, series, false),\r\n this.events.on(\"endchanged\", series.invalidate, series, false),\r\n ]);\r\n };\r\n Object.defineProperty(Axis.prototype, \"renderer\", {\r\n /**\r\n * @return Renderer\r\n */\r\n get: function () {\r\n return this._renderer;\r\n },\r\n /**\r\n * An [[AxisRenderer]] to be used to render this Axis.\r\n *\r\n * Please note that most of the settings, related to Axis' appearance are set\r\n * via its renderer. Not directly on the Axis.\r\n *\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * axis.renderer.inside = true;\r\n * axis.renderer.minLabelPosition = 0.1;\r\n * axis.renderer.maxLabelPosition = 0.9;\r\n * ```\r\n * ```JavaScript\r\n * axis.renderer.inside = true;\r\n * axis.renderer.minLabelPosition = 0.1;\r\n * axis.renderer.maxLabelPosition = 0.9;\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/} for more info\r\n * @param renderer Renderer\r\n */\r\n set: function (renderer) {\r\n if (renderer != this._renderer) {\r\n this._renderer = renderer;\r\n renderer.chart = this.chart;\r\n renderer.axis = this;\r\n renderer.parent = this;\r\n this.title.parent = this; // we add title to axis and set layout in renderer to avoid one extra container, as otherwise axis container would be used for holding renderer only\r\n this.initRenderer();\r\n this._disposers.push(renderer.gridContainer.events.on(\"maxsizechanged\", this.invalidate, this, false));\r\n var ghostLabel_1 = this.renderer.labels.create();\r\n this._disposers.push(ghostLabel_1);\r\n ghostLabel_1.dataItem = this.dataItems.template.clone(); // just for the adapters not to fail\r\n ghostLabel_1.text = \"L\";\r\n ghostLabel_1.parent = this.renderer;\r\n ghostLabel_1.shouldClone = false;\r\n ghostLabel_1.fillOpacity = 0;\r\n ghostLabel_1.opacity = 0;\r\n ghostLabel_1.strokeOpacity = 0;\r\n ghostLabel_1.interactionsEnabled = false;\r\n ghostLabel_1.validate();\r\n this.ghostLabel = ghostLabel_1;\r\n this.events.on(\"beforedatavalidated\", function () {\r\n ghostLabel_1.text = \"L\";\r\n }, undefined, false);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Converts a relative position to angle. (for circular axes)\r\n *\r\n * @param position Position (0-1)\r\n * @return Angle\r\n */\r\n Axis.prototype.positionToAngle = function (position) {\r\n return this.renderer.positionToAngle(position);\r\n };\r\n /**\r\n * Converts pixel coordinates to a relative position. (0-1)\r\n *\r\n * @param point Coorinates (px)\r\n * @return Position (0-1)\r\n */\r\n Axis.prototype.pointToPosition = function (point) {\r\n return this.renderer.pointToPosition(point);\r\n };\r\n /**\r\n * Converts relative position to coordinate.\r\n *\r\n * @since 4.7.15\r\n * @param position (0-1)\r\n * @return coordinate (px)\r\n */\r\n Axis.prototype.positionToCoordinate = function (position) {\r\n return this.renderer.positionToCoordinate(position);\r\n };\r\n /**\r\n * [getAnyRangePath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param start [description]\r\n * @param end [description]\r\n * @return [description]\r\n */\r\n Axis.prototype.getAnyRangePath = function (start, end) {\r\n return this.renderer.getPositionRangePath(start, end);\r\n };\r\n /**\r\n * Converts any positional parameter to a relative position on axis.\r\n *\r\n * @todo Description (review)\r\n * @param value Pisition\r\n * @return Position (0-1)\r\n */\r\n Axis.prototype.anyToPosition = function (value) {\r\n return 0;\r\n };\r\n /**\r\n * Converts any positional parameter to a relative position on axis.\r\n *\r\n * @todo Description (review)\r\n * @param value Pisition\r\n * @return Orientation point\r\n */\r\n Axis.prototype.anyToPoint = function (value) {\r\n return { x: 0, y: 0, angle: 0 };\r\n };\r\n /**\r\n * [getPositionRangePath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param startPosition [description]\r\n * @param endPosition [description]\r\n * @return [description]\r\n */\r\n Axis.prototype.getPositionRangePath = function (startPosition, endPosition) {\r\n if (this.renderer) {\r\n return this.renderer.getPositionRangePath(startPosition, endPosition);\r\n }\r\n return \"\";\r\n };\r\n Object.defineProperty(Axis.prototype, \"axisLength\", {\r\n /**\r\n * Actual axis length in pixels.\r\n *\r\n * @return Axis length (px)\r\n */\r\n get: function () {\r\n if (this.renderer) {\r\n return this.renderer.axisLength;\r\n }\r\n return 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Axis.prototype, \"cursorTooltipEnabled\", {\r\n /**\r\n * @return Display tooltip?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"cursorTooltipEnabled\");\r\n },\r\n /**\r\n * Indicates if axis should display a tooltip for chart's cursor.\r\n *\r\n * @param value Display tooltip?\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"cursorTooltipEnabled\", value)) {\r\n if (value && this.renderer) {\r\n this.renderer.updateTooltip();\r\n }\r\n else if (this.tooltip) {\r\n this.tooltip.hide(0);\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Axis.prototype, \"toggleZoomOutButton\", {\r\n /**\r\n * @return Toggle zoom out button?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"toggleZoomOutButton\");\r\n },\r\n /**\r\n * Normally, when axis is zoomed in, a zoom out button is shown by a chart,\r\n * and vice versa: when axis is zoomed out completely, zoom out button is\r\n * hidden.\r\n *\r\n * Setting this to `false` will disable this behavior. Zooming in our out\r\n * this axis will not reveal or hide zoom out button.\r\n *\r\n * @default true\r\n * @since 4.6.2\r\n * @param value Toggle zoom out button?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"toggleZoomOutButton\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Hides element's [[Tooltip]].\r\n *\r\n * @see {@link Tooltip}\r\n */\r\n Axis.prototype.hideTooltip = function (duration) {\r\n _super.prototype.hideTooltip.call(this, duration);\r\n this._tooltipPosition = undefined;\r\n };\r\n /**\r\n * Shows Axis tooltip at specific relative position within Axis. (0-1)\r\n *\r\n * @param position Position (0-1)\r\n * @param local or global position\r\n */\r\n Axis.prototype.showTooltipAtPosition = function (position, local) {\r\n var tooltip = this._tooltip;\r\n if (!tooltip || this.dataItems.length <= 0) {\r\n this._tooltipPosition = undefined;\r\n }\r\n else {\r\n if (!local) {\r\n position = this.toAxisPosition(position);\r\n }\r\n if (!$type.isNumber(position) || position < this.start || position > this.end) {\r\n tooltip.hide(0);\r\n this._tooltipPosition = undefined;\r\n return;\r\n }\r\n var renderer = this.renderer;\r\n //@todo: think of how to solve this better\r\n if (!tooltip.parent) {\r\n tooltip.parent = this.tooltipContainer;\r\n }\r\n var tooltipLocation = renderer.tooltipLocation;\r\n var startPosition = this.getCellStartPosition(position);\r\n var endPosition = this.getCellEndPosition(position);\r\n if (this.tooltipPosition == \"fixed\") {\r\n position = startPosition + (endPosition - startPosition) * tooltipLocation;\r\n }\r\n position = $math.fitToRange(position, this.start, this.end);\r\n if (this._tooltipPosition != position) {\r\n this._tooltipPosition = position;\r\n var tooltipLocation2 = renderer.tooltipLocation2;\r\n var startPoint = renderer.positionToPoint(startPosition, tooltipLocation2);\r\n var endPoint = renderer.positionToPoint(endPosition, tooltipLocation2);\r\n // save values so cursor could use them\r\n this.currentItemStartPoint = startPoint;\r\n this.currentItemEndPoint = endPoint;\r\n if (renderer.fullWidthTooltip) {\r\n tooltip.width = endPoint.x - startPoint.x;\r\n tooltip.height = endPoint.y - startPoint.y;\r\n }\r\n var point = renderer.positionToPoint(position, tooltipLocation2);\r\n var globalPoint = $utils.spritePointToSvg(point, this.renderer.line);\r\n tooltip.text = this.getTooltipText(position);\r\n if (tooltip.text) {\r\n tooltip.delayedPointTo(globalPoint);\r\n tooltip.show();\r\n }\r\n }\r\n if (!this.cursorTooltipEnabled || this.tooltip.disabled) {\r\n tooltip.hide(0);\r\n }\r\n }\r\n };\r\n /**\r\n * Converts relative position (0-1) to Axis position with zoom level and\r\n * inversed taken into account.\r\n *\r\n * @param position Global position (0-1)\r\n * @return Position within Axis (0-1)\r\n */\r\n Axis.prototype.toAxisPosition = function (position) {\r\n position = this.renderer.toAxisPosition(position);\r\n if (position == undefined) {\r\n return;\r\n }\r\n position = position * (this.end - this.start);\r\n if (this.renderer.inversed) {\r\n position = this.end - position;\r\n }\r\n else {\r\n position = this.start + position;\r\n }\r\n return position;\r\n };\r\n /**\r\n * Converts position on the axis with zoom level and\r\n * inversed taken into account to global position.\r\n *\r\n * @param position Axis position (0-1)\r\n * @return Global position (0-1)\r\n */\r\n Axis.prototype.toGlobalPosition = function (position) {\r\n if (this.renderer.inversed) {\r\n position = this.end - position;\r\n }\r\n else {\r\n position = position - this.start;\r\n }\r\n return position / (this.end - this.start);\r\n };\r\n /**\r\n * Returns text to be used for cursor's Axis tooltip.\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @param position Position coordinate (px)\r\n * @return Label text\r\n */\r\n Axis.prototype.getTooltipText = function (position) {\r\n return;\r\n };\r\n /**\r\n * Updates Axis' tooltip's position and possibly size, and pointer (stem)\r\n * place.\r\n *\r\n * @ignore Exclude from docs\r\n * @param pointerOrientation Pointer (stem) orientation\r\n * @param boundingRectangle A rectangle for tooltip to fit within\r\n */\r\n Axis.prototype.updateTooltip = function (pointerOrientation, boundingRectangle) {\r\n var tooltip = this._tooltip;\r\n if (tooltip) {\r\n tooltip.fixDoc = false;\r\n tooltip.pointerOrientation = pointerOrientation;\r\n tooltip.setBounds($utils.spriteRectToSvg(boundingRectangle, this.renderer.line));\r\n }\r\n };\r\n /**\r\n * [roundPosition description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param position Relative position\r\n * @param location Location on axis\r\n * @return Rounded position\r\n */\r\n Axis.prototype.roundPosition = function (position, location, axisLocation) {\r\n return position;\r\n };\r\n /**\r\n * [getCellStartPosition description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param position [description]\r\n * @return [description]\r\n */\r\n Axis.prototype.getCellStartPosition = function (position) {\r\n return position;\r\n };\r\n /**\r\n * [getCellEndPosition description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param position [description]\r\n * @return [description]\r\n */\r\n Axis.prototype.getCellEndPosition = function (position) {\r\n return position;\r\n };\r\n Object.defineProperty(Axis.prototype, \"axisRanges\", {\r\n /**\r\n * A list of axis ranges for this Axis.\r\n *\r\n * @return Axis ranges\r\n */\r\n get: function () {\r\n if (!this._axisRanges) {\r\n var dataItem = this.createDataItem();\r\n dataItem.isRange = true;\r\n dataItem.axisFill = this.renderer.axisFills.template.clone();\r\n dataItem.grid = this.renderer.grid.template.clone();\r\n dataItem.tick = this.renderer.ticks.template.clone();\r\n dataItem.label = this.renderer.labels.template.clone();\r\n dataItem.isTemplate = true;\r\n dataItem.component = this;\r\n dataItem.axisFill.disabled = false;\r\n dataItem.tick.disabled = false;\r\n dataItem.grid.disabled = false;\r\n dataItem.label.disabled = false;\r\n this._axisRanges = new ListTemplate(dataItem);\r\n this._axisRanges.events.on(\"inserted\", this.processAxisRange, this, false);\r\n this._disposers.push(new ListDisposer(this._axisRanges));\r\n this._disposers.push(this._axisRanges.template);\r\n }\r\n return this._axisRanges;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Decorates an axis range after it has been added to the axis range list.\r\n *\r\n * @param event Event\r\n */\r\n Axis.prototype.processAxisRange = function (event) {\r\n var axisRange = event.newValue;\r\n axisRange.component = this;\r\n axisRange.isRange = true;\r\n };\r\n Object.defineProperty(Axis.prototype, \"axisBreaks\", {\r\n /**\r\n * A list of axis breaks on this Axis.\r\n *\r\n * @return Axis breaks.\r\n */\r\n get: function () {\r\n if (!this._axisBreaks) {\r\n this._axisBreaks = new SortedListTemplate(this.createAxisBreak(), function (a, b) {\r\n return $number.order(a.adjustedStartValue, b.adjustedStartValue);\r\n });\r\n this._axisBreaks.events.on(\"inserted\", this.processBreak, this, false);\r\n this._disposers.push(new ListDisposer(this._axisBreaks));\r\n this._disposers.push(this._axisBreaks.template);\r\n }\r\n return this._axisBreaks;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates a new axis break.\r\n *\r\n * @return Axis break\r\n */\r\n Axis.prototype.createAxisBreak = function () {\r\n return new AxisBreak();\r\n };\r\n Object.defineProperty(Axis.prototype, \"series\", {\r\n /**\r\n * A list of Series currently associated with this Axis.\r\n *\r\n * @return Series\r\n */\r\n get: function () {\r\n if (!this._series) {\r\n this._series = new List();\r\n }\r\n return this._series;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Processes Series' data items.\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Axis.prototype.processSeriesDataItems = function () {\r\n };\r\n /**\r\n * Processes Series' single data item.\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n Axis.prototype.processSeriesDataItem = function (dataItem, axisLetter) {\r\n };\r\n /**\r\n * Post-processes Serie's data items.\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Axis.prototype.postProcessSeriesDataItems = function (series) {\r\n };\r\n /**\r\n * Post-processes Serie's single data item.\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\r\n Axis.prototype.postProcessSeriesDataItem = function (dataItem) {\r\n };\r\n //\r\n /**\r\n * Updates Axis based on all Series that might influence it.\r\n *\r\n * Called by Series after Series data is validated.\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Axis.prototype.updateAxisBySeries = function () {\r\n };\r\n /**\r\n * Hides unused data items.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Axis.prototype.hideUnusedDataItems = function () {\r\n var _this = this;\r\n // hide all unused\r\n var dataItemsIterator = this._dataItemsIterator;\r\n dataItemsIterator.createNewItems = false;\r\n $iter.each(dataItemsIterator.iterator(), function (dataItem) {\r\n _this.validateDataElement(dataItem); // solves shrinking\r\n dataItem.__disabled = true;\r\n });\r\n dataItemsIterator.clear();\r\n dataItemsIterator.createNewItems = true;\r\n };\r\n /**\r\n * Returns a Series' data item that corresponds to specific position on Axis.\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @param series Series\r\n * @param position Position (0-1)\r\n * @param findNearest Should axis try to find nearest tooltip if there is no data item at exact position\r\n * @return Data item\r\n */\r\n Axis.prototype.getSeriesDataItem = function (series, position, findNearest) {\r\n return;\r\n };\r\n /**\r\n * Returns an angle that corresponds to specific position on axis.\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem Data item\r\n * @param key ???\r\n * @param location Location\r\n * @param stackKey ???\r\n * @return Angle\r\n */\r\n Axis.prototype.getAngle = function (dataItem, key, location, stackKey, range) {\r\n return;\r\n };\r\n /**\r\n * [getX description]\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem [description]\r\n * @param key [description]\r\n * @param location [description]\r\n * @param stackKey [description]\r\n * @return [description]\r\n */\r\n Axis.prototype.getX = function (dataItem, key, location, stackKey, range) {\r\n return;\r\n };\r\n /**\r\n * [getX description]\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem [description]\r\n * @param key [description]\r\n * @param location [description]\r\n * @param stackKey [description]\r\n * @return [description]\r\n */\r\n Axis.prototype.getPositionX = function (dataItem, key, location, stackKey, range) {\r\n return;\r\n };\r\n /**\r\n * [getY description]\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem [description]\r\n * @param key [description]\r\n * @param location [description]\r\n * @param stackKey [description]\r\n * @return [description]\r\n */\r\n Axis.prototype.getY = function (dataItem, key, location, stackKey, range) {\r\n return;\r\n };\r\n /**\r\n * [getY description]\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem [description]\r\n * @param key [description]\r\n * @param location [description]\r\n * @param stackKey [description]\r\n * @return [description]\r\n */\r\n Axis.prototype.getPositionY = function (dataItem, key, location, stackKey, range) {\r\n return;\r\n };\r\n Object.defineProperty(Axis.prototype, \"basePoint\", {\r\n /**\r\n * Coordinates of the actual axis start.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Base point coordinates\r\n */\r\n get: function () {\r\n return { x: 0, y: 0 };\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * [dataChangeUpdate description]\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n Axis.prototype.dataChangeUpdate = function () {\r\n };\r\n /**\r\n * [dataChangeUpdate description]\r\n *\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n Axis.prototype.seriesDataChangeUpdate = function (series) {\r\n };\r\n /**\r\n * Removes axis breaks that fall between `min` and `max` (???)\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param min Start value\r\n * @param max End value\r\n * @return Spread o\r\n */\r\n Axis.prototype.adjustDifference = function (min, max) {\r\n var difference = max - min;\r\n if ($type.isNumber(difference)) {\r\n if (this._axisBreaks) {\r\n $iter.eachContinue(this._axisBreaks.iterator(), function (axisBreak) {\r\n var startValue = axisBreak.adjustedStartValue;\r\n var endValue = axisBreak.adjustedEndValue;\r\n if ($type.isNumber(startValue) && $type.isNumber(endValue)) {\r\n // breaks are sorted, we don't need go further anymore\r\n if (startValue > max) {\r\n return false;\r\n }\r\n if (endValue >= min) {\r\n if ($type.isNumber(startValue) && $type.isNumber(endValue)) {\r\n var breakSize = axisBreak.breakSize;\r\n var intersection = $math.intersection({ start: startValue, end: endValue }, { start: min, end: max });\r\n if (intersection) {\r\n difference -= (intersection.end - intersection.start) * (1 - breakSize);\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n });\r\n }\r\n return difference;\r\n }\r\n };\r\n /**\r\n * Checks if specific value falls within a break.\r\n *\r\n * Returns [[AxisBreak]] the value falls into.\r\n *\r\n * @param value Value to check\r\n * @return Axis break\r\n */\r\n Axis.prototype.isInBreak = function (value) {\r\n if (this._axisBreaks) {\r\n return $iter.find(this._axisBreaks.iterator(), function (axisBreak) {\r\n return value >= axisBreak.adjustedStartValue &&\r\n value <= axisBreak.adjustedEndValue;\r\n });\r\n }\r\n };\r\n /**\r\n * [fixAxisBreaks description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\r\n Axis.prototype.fixAxisBreaks = function () {\r\n var _this = this;\r\n if (this._axisBreaks) {\r\n var axisBreaks = this._axisBreaks;\r\n if (axisBreaks.length > 0) {\r\n // first make sure that startValue is <= end value\r\n // This needs to make a copy of axisBreaks because it mutates the list while traversing\r\n // TODO very inefficient\r\n $array.each($iter.toArray(axisBreaks.iterator()), function (axisBreak) {\r\n var startValue = $math.min(axisBreak.startValue, axisBreak.endValue);\r\n var endValue = $math.max(axisBreak.startValue, axisBreak.endValue);\r\n axisBreak.adjustedStartValue = startValue;\r\n axisBreak.adjustedEndValue = endValue;\r\n _this._axisBreaks.update(axisBreak);\r\n });\r\n var firstAxisBreak = axisBreaks.first;\r\n var previousEndValue_1 = Math.min(firstAxisBreak.startValue, firstAxisBreak.endValue);\r\n // process breaks\r\n // TODO does this need to call axisBreaks.update ?\r\n $iter.each(axisBreaks.iterator(), function (axisBreak) {\r\n var startValue = axisBreak.adjustedStartValue;\r\n var endValue = axisBreak.adjustedEndValue;\r\n // breaks can't overlap\r\n // if break starts before previous break ends\r\n if (startValue < previousEndValue_1) {\r\n startValue = previousEndValue_1;\r\n if (endValue < previousEndValue_1) {\r\n endValue = previousEndValue_1;\r\n }\r\n }\r\n axisBreak.adjustedStartValue = startValue;\r\n axisBreak.adjustedEndValue = endValue;\r\n });\r\n }\r\n }\r\n };\r\n Object.defineProperty(Axis.prototype, \"startIndex\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return [description]\r\n */\r\n get: function () {\r\n return 0;\r\n },\r\n /**\r\n * We need start/end indexes of axes to be 0 - `dataItems.length`.\r\n *\r\n * Yes, also for category axis, this helps to avoid jumping of categories\r\n * while scrolling and does not do a lot of extra work as we use\r\n * protected `_startIndex` and `_endIndex` when working with items.\r\n *\r\n * @hidden\r\n */\r\n /**\r\n * [startIndex description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param value [description]\r\n */\r\n set: function (value) {\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Axis.prototype, \"endIndex\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return [description]\r\n */\r\n get: function () {\r\n return this.dataItems.length;\r\n },\r\n /**\r\n * [endIndex description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param value [description]\r\n */\r\n set: function (value) {\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns a formatted label based on position.\r\n *\r\n * Individual axis types should override this method to generate a label\r\n * that is relevant to axis type.\r\n *\r\n * Please note that `position` represents position within axis which may be\r\n * zoomed and not correspond to Cursor's `position`.\r\n *\r\n * To convert Cursor's `position` to Axis' `position` use `toAxisPosition()` method.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/tutorials/tracking-cursors-position-via-api/#Tracking_Cursor_s_position} For more information about cursor tracking.\r\n * @param position Relative position on axis (0-1)\r\n * @return Position label\r\n */\r\n Axis.prototype.getPositionLabel = function (position) {\r\n return Math.round(position * 100) + \"%x\";\r\n };\r\n Object.defineProperty(Axis.prototype, \"chart\", {\r\n /**\r\n * @return Chart\r\n */\r\n get: function () {\r\n return this._chart;\r\n },\r\n /**\r\n * A Chart this Axis belongs to.\r\n *\r\n * @param value Chart\r\n */\r\n set: function (value) {\r\n this._chart = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Creates a data item for a Series range.\r\n *\r\n * @param series Target Series\r\n * @return Range data item\r\n */\r\n Axis.prototype.createSeriesRange = function (series) {\r\n var range = this.axisRanges.create();\r\n range.component = this;\r\n range.axisFill = this.renderer.axisFills.template.clone();\r\n range.axisFill.disabled = false;\r\n range.axisFill.fillOpacity = 0;\r\n range.grid = this.renderer.grid.template.clone();\r\n range.grid.disabled = true;\r\n range.tick = this.renderer.ticks.template.clone();\r\n range.tick.disabled = true;\r\n range.label = this.renderer.labels.template.clone();\r\n range.label.disabled = true;\r\n range.addDisposer(new Disposer(function () {\r\n series.axisRanges.removeValue(range);\r\n }));\r\n series.axisRanges.push(range);\r\n return range;\r\n };\r\n /**\r\n * Copies all properties and related data from a different instance of Axis.\r\n *\r\n * @param source Source Axis\r\n */\r\n Axis.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n if (this.renderer) {\r\n this.renderer.copyFrom(source.renderer);\r\n }\r\n else {\r\n if (source.renderer) {\r\n this.renderer = source.renderer.clone();\r\n this._disposers.push(this.renderer);\r\n }\r\n }\r\n if (source.title) {\r\n if (!this.title) {\r\n this.title = source.title.clone();\r\n this.title.parent = this;\r\n }\r\n else {\r\n this.title.copyFrom(source.title);\r\n }\r\n this._disposers.push(this.title);\r\n }\r\n };\r\n /**\r\n * Resets internal iterator.\r\n */\r\n Axis.prototype.resetIterators = function () {\r\n this._dataItemsIterator.reset();\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 Axis.prototype.processConfig = function (config) {\r\n if (config) {\r\n // Set up axis ranges\r\n if ($type.hasValue(config.axisRanges) && $type.isArray(config.axisRanges)) {\r\n for (var i = 0, len = config.axisRanges.length; i < len; i++) {\r\n var range = config.axisRanges[i];\r\n // If `series` is set, we know it's a series range\r\n if ($type.hasValue(range[\"series\"])) {\r\n if ($type.isString(range[\"series\"])) {\r\n if (this.map.hasKey(range[\"series\"])) {\r\n //range[\"series\"] = this.map.getKey(range[\"series\"]);\r\n config.axisRanges[i] = this.createSeriesRange(this.map.getKey(range[\"series\"]));\r\n delete (range[\"series\"]);\r\n config.axisRanges[i].config = range;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n /**\r\n * Ordering function used in JSON setup.\r\n *\r\n * @param a Item A\r\n * @param b Item B\r\n * @return Order\r\n */\r\n Axis.prototype.configOrder = function (a, b) {\r\n if (a == b) {\r\n return 0;\r\n }\r\n // last\r\n else if (a == \"title\") {\r\n return 1;\r\n }\r\n else if (b == \"title\") {\r\n return -1;\r\n }\r\n // first\r\n else if (a == \"component\") {\r\n return -1;\r\n }\r\n else if (b == \"component\") {\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 Object.defineProperty(Axis.prototype, \"startLocation\", {\r\n /**\r\n * @return Location (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startLocation\");\r\n },\r\n /**\r\n * Axis start location. Works on Date/Category axis, doesn't work on Value axis.\r\n *\r\n * * 0 - Full first cell is shown.\r\n * * 0.5 - Half of first cell is shown.\r\n * * 1 - None of the first cell is visible. (you probably don't want that)\r\n *\r\n * @param value Location (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"startLocation\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Axis.prototype, \"endLocation\", {\r\n /**\r\n * @return Location (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endLocation\");\r\n },\r\n /**\r\n * Axis end location. Works on Date/Category axis, doesn't work on Value axis.\r\n *\r\n * * 0 - None of the last cell is shown. (don't do that)\r\n * * 0.5 - Half of the last cell is shown.\r\n * * 1 - Full last cell is shown.\r\n *\r\n * @param value Location (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"endLocation\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Axis.prototype.setDisabled = function (value) {\r\n var changed = _super.prototype.setDisabled.call(this, value);\r\n if (this.renderer) {\r\n this.renderer.gridContainer.disabled = value;\r\n }\r\n return changed;\r\n };\r\n Object.defineProperty(Axis.prototype, \"title\", {\r\n /**\r\n * @return Title label\r\n */\r\n get: function () {\r\n return this._title;\r\n },\r\n /**\r\n * A reference to a [[Label]] element which serves as a title to the axis.\r\n *\r\n * When axis is created it aleready has an element, so you can just modify\r\n * it.\r\n *\r\n * Or you can replace it with your own instance of `Label`.\r\n *\r\n * @param value Title label\r\n */\r\n set: function (value) {\r\n if (this._title && this._title != value) {\r\n this._title.dispose();\r\n }\r\n if (value) {\r\n this._title = value;\r\n value.parent = this;\r\n value.shouldClone = false;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Axis.prototype, \"hideTooltipWhileZooming\", {\r\n /**\r\n * @return Hide tooltip while zooming?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"hideTooltipWhileZooming\");\r\n },\r\n /**\r\n * Indicates if axis' tooltip should be hidden while axis range is animating\r\n * (zooming)\r\n *\r\n * @default true\r\n * @since 4.7.16\r\n * @param value Hide tooltip while zooming?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"hideTooltipWhileZooming\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Axis.prototype, \"zoomable\", {\r\n /**\r\n * @return Zoomable?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"zoomable\");\r\n },\r\n /**\r\n * Should the axis be zoomed with scrollbar/cursor?\r\n *\r\n * @default true\r\n * @since 4.9.28\r\n * @param value Zoomable?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"zoomable\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Axis;\r\n}(Component));\r\nexport { Axis };\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[\"Axis\"] = Axis;\r\nregistry.registeredClasses[\"AxisDataItem\"] = AxisDataItem;\r\n/**\r\n * Add default responsive rules\r\n */\r\n/**\r\n * Disable axis tooltips.\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.maybeXS,\r\n state: function (target, stateId) {\r\n if (target instanceof Axis && target.tooltip) {\r\n var state = target.states.create(stateId);\r\n state.properties.cursorTooltipEnabled = false;\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n//# sourceMappingURL=Axis.js.map","/**\r\n * Axis break module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../../core/Container\";\r\nimport { MutableValueDisposer } from \"../../core/utils/Disposer\";\r\nimport { WavedLine } from \"../../core/elements/WavedLine\";\r\nimport { List } from \"../../core/utils/List\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { color } from \"../../core/utils/Color\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Base class to define \"breaks\" on axes.\r\n *\r\n * @see {@link IAxisBreakEvents} for a list of available events\r\n * @see {@link IAxisBreakAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar AxisBreak = /** @class */ (function (_super) {\r\n __extends(AxisBreak, _super);\r\n /**\r\n * Constructor\r\n */\r\n function AxisBreak() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * Reference to parent Axis.\r\n */\r\n _this._axis = new MutableValueDisposer();\r\n /**\r\n * A list of axis data items which fall within this break.\r\n */\r\n _this.dataItems = new List();\r\n _this.className = \"AxisBreak\";\r\n // Set defaults\r\n _this.breakSize = 0.01;\r\n _this.marginLeft = -5;\r\n _this.marginRight = -5;\r\n _this.marginTop = -5;\r\n _this.marginBottom = -5;\r\n var interfaceColors = new InterfaceColorSet();\r\n // Create elements\r\n // (these won't be used actually, just for setting properties)\r\n var fillShape = new WavedLine();\r\n fillShape.fill = interfaceColors.getFor(\"background\");\r\n fillShape.stroke = color();\r\n fillShape.fillOpacity = 0.9;\r\n fillShape.zIndex = 0;\r\n _this._fillShape = fillShape;\r\n var startLine = new WavedLine();\r\n startLine.fill = color();\r\n startLine.stroke = interfaceColors.getFor(\"grid\");\r\n startLine.strokeOpacity = 0.3;\r\n startLine.zIndex = 1;\r\n _this._startLine = startLine;\r\n var endLine = new WavedLine();\r\n endLine.fill = color();\r\n endLine.stroke = color(\"#000000\"); // interfaceColors.getFor(\"grid\");\r\n endLine.strokeOpacity = 0.3;\r\n endLine.zIndex = 2;\r\n _this._endLine = endLine;\r\n _this._disposers.push(_this._axis);\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n AxisBreak.prototype.dispose = function () {\r\n _super.prototype.dispose.call(this);\r\n if (this._fillShape) {\r\n this._fillShape.dispose();\r\n }\r\n if (this._startLine) {\r\n this._startLine.dispose();\r\n }\r\n if (this._endLine) {\r\n this._endLine.dispose();\r\n }\r\n };\r\n Object.defineProperty(AxisBreak.prototype, \"startLine\", {\r\n /**\r\n * @return Element\r\n */\r\n get: function () {\r\n return this._startLine;\r\n },\r\n /**\r\n * An element used for the starting line of the break.\r\n *\r\n * @param sprite Element\r\n */\r\n set: function (sprite) {\r\n if (this._startLine) {\r\n this._startLine.dispose();\r\n }\r\n this._startLine = sprite;\r\n this.addBreakSprite(sprite);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisBreak.prototype, \"endLine\", {\r\n /**\r\n * @return Element\r\n */\r\n get: function () {\r\n return this._endLine;\r\n },\r\n /**\r\n * An element used for the end line of the break.\r\n *\r\n * @param sprite Element\r\n */\r\n set: function (sprite) {\r\n if (this._endLine) {\r\n this._endLine.dispose();\r\n }\r\n this._endLine = sprite;\r\n this.addBreakSprite(sprite);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisBreak.prototype, \"fillShape\", {\r\n /**\r\n * @return Element\r\n */\r\n get: function () {\r\n return this._fillShape;\r\n },\r\n /**\r\n * An element used for fill of the break.\r\n *\r\n * @param sprite Element\r\n */\r\n set: function (sprite) {\r\n if (this._fillShape) {\r\n this._fillShape.dispose();\r\n }\r\n this._fillShape = sprite;\r\n this.addBreakSprite(sprite);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Adds a break element (e.g. lines, fill) to the break, which is\r\n * [[Container]].\r\n *\r\n * @ignore Exclude from docs\r\n * @param sprite Element to add\r\n */\r\n AxisBreak.prototype.addBreakSprite = function (sprite) {\r\n sprite.parent = this;\r\n sprite.isMeasured = false;\r\n this._disposers.push(sprite);\r\n };\r\n Object.defineProperty(AxisBreak.prototype, \"axis\", {\r\n /**\r\n * @return Axis\r\n */\r\n get: function () {\r\n return this._axis.get();\r\n },\r\n /**\r\n * An Axis this Break is associated with.\r\n *\r\n * @param axis Axis\r\n */\r\n set: function (axis) {\r\n if (this._axis.get() !== axis) {\r\n this._axis.set(axis, axis.renderer.gridContainer.events.on(\"transformed\", this.invalidate, this, false));\r\n axis.renderer.createBreakSprites(this);\r\n // this can't go to copyFrom, as axis is set later\r\n var breakTemplate = axis.axisBreaks.template;\r\n this.startLine.copyFrom(breakTemplate.startLine);\r\n this.endLine.copyFrom(breakTemplate.endLine);\r\n this.fillShape.copyFrom(breakTemplate.fillShape);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisBreak.prototype, \"breakSize\", {\r\n /**\r\n * @return Relative axis break\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"breakSize\");\r\n },\r\n /**\r\n * A size of the break relative to the actual size of the scope break spans.\r\n *\r\n * For example, if `breakSize = 0.1` and unbroken scope of values it spans\r\n * would be 100 pixels, the break would be 10 pixels wide.\r\n *\r\n * 0 means the break will completely collapse and hide the values.\r\n * 1 means break would be not collapse at all, which would make it\r\n * effectively useless.\r\n *\r\n * @default 0.01\r\n * @param value Relative axis break\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"breakSize\", value)) {\r\n if (this.axis) {\r\n this.axis.invalidate();\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisBreak.prototype, \"startPoint\", {\r\n /**\r\n * Returns pixel coordinates of axis break's start.\r\n *\r\n * @return Start point\r\n */\r\n get: function () {\r\n var renderer = this.axis.renderer;\r\n if (renderer) {\r\n return renderer.positionToPoint(this.startPosition);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisBreak.prototype, \"endPoint\", {\r\n /**\r\n * Returns pixel coordinates of axis break's end.\r\n *\r\n * @return End point\r\n */\r\n get: function () {\r\n var renderer = this.axis.renderer;\r\n if (renderer) {\r\n return renderer.positionToPoint(this.endPosition);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisBreak.prototype, \"startPosition\", {\r\n /**\r\n * Returns a relative position at which axis break starts.\r\n *\r\n * This is a calculated position, meaning it shows relative position of the\r\n * break after break is applied.\r\n *\r\n * @return Start position\r\n */\r\n get: function () {\r\n return;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisBreak.prototype, \"endPosition\", {\r\n /**\r\n * Returns a relative position at which axis break ends.\r\n *\r\n * This is a calculated position, meaning it shows relative position of the\r\n * break after break is applied.\r\n *\r\n * @return End position\r\n */\r\n get: function () {\r\n return;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Draws the axis break.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisBreak.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n if (this.axis) {\r\n var renderer = this.axis.renderer;\r\n renderer.updateBreakElement(this);\r\n }\r\n };\r\n Object.defineProperty(AxisBreak.prototype, \"startValue\", {\r\n /**\r\n * @return Starting value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startValue\");\r\n },\r\n /**\r\n * A starting value for the break.\r\n *\r\n * @param value Starting value\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"startValue\", value)) {\r\n if (this.axis) {\r\n this.axis.invalidate();\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisBreak.prototype, \"endValue\", {\r\n /**\r\n * @return End value\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endValue\");\r\n },\r\n /**\r\n * An end value for the break.\r\n *\r\n * @param value End value\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"endValue\", value)) {\r\n if (this.axis) {\r\n this.axis.invalidate();\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return AxisBreak;\r\n}(Container));\r\nexport { AxisBreak };\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[\"AxisBreak\"] = AxisBreak;\r\n//# sourceMappingURL=AxisBreak.js.map","/**\r\n * Axis Bullet module.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../../core/Container\";\r\nimport { registry } from \"../../core/Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Used to draw a positioned bullet (element) on an Axis.\r\n *\r\n * ```TypeScript\r\n * let range = dateAxis.axisRanges.create();\r\n * range.date = new Date(2018, 0, 5);\r\n *\r\n * let flag = new am4plugins_bullets.FlagBullet();\r\n * flag.label.text = \"Hello\";\r\n *\r\n * range.bullet = flag;\r\n * ```\r\n * ```JavaScript\r\n * var range = dateAxis.axisRanges.create();\r\n * range.date = new Date(2018, 0, 5);\r\n *\r\n * var flag = new am4plugins_bullets.FlagBullet();\r\n * flag.label.text = \"Hello\";\r\n *\r\n * range.bullet = flag;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"xAxes\": [{\r\n * \"type\": \"DateAxis\",\r\n * // ...\r\n * \"axisRanges\": [{\r\n * \"date\": new Date(2018, 0, 5),\r\n * \"bullet: {\r\n * \"type\": \"FlagBullet\",\r\n * \"label\": {\r\n * \"text\": \"Hello\"\r\n * }\r\n * }\r\n * }]\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @since 4.5.9\r\n * @see {@link IAxisBulletEvents} for a list of available events\r\n * @see {@link IAxisBulletAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar AxisBullet = /** @class */ (function (_super) {\r\n __extends(AxisBullet, _super);\r\n function AxisBullet() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"AxisBullet\";\r\n _this.location = 0.5;\r\n _this.isMeasured = false;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(AxisBullet.prototype, \"location\", {\r\n /**\r\n * @return Location (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"location\");\r\n },\r\n /**\r\n * Relative position within cell/range.\r\n *\r\n * Value range is from from `0` (beginning) to `1` (end).\r\n *\r\n * NOTE: `location` is relative to the parent axis range's scope, i.e.\r\n * between its `date` and `endDate` for [[DateAxis]], or `value`/`endValue`\r\n * ([[ValueAxis]]), or `category`/`endCategory` ([[categoryAxis]]).\r\n *\r\n * ```TypeScript\r\n * let range = dateAxis.axisRanges.create();\r\n * range.date = new Date(2018, 0, 5);\r\n * range.endDate = new Date(2018, 0, 6);\r\n *\r\n * let bullet = new am4charts.AxisBullet();\r\n * bullet.location = 1;\r\n *\r\n * let flag = bullet.createChild(am4plugins_bullets.FlagBullet);\r\n * flag.label.text = \"Hello\";\r\n * ```\r\n * ```JavaScript\r\n * var range = dateAxis.axisRanges.create();\r\n * range.date = new Date(2018, 0, 5);\r\n * range.endDate = new Date(2018, 0, 6);\r\n *\r\n * var bullet = new am4charts.AxisBullet();\r\n * bullet.location = 1;\r\n *\r\n * var flag = bullet.createChild(am4plugins_bullets.FlagBullet);\r\n * flag.label.text = \"Hello\";\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"xAxes\": [{\r\n * \"type\": \"DateAxis\",\r\n * // ...\r\n * \"axisRanges\": [{\r\n * \"date\": new Date(2018, 0, 5),\r\n * \"endDate\": new Date(2018, 0, 6),\r\n * \"bullet: {\r\n * \"type\": \"AxisBullet\",\r\n * \"location\": 1,\r\n * \"children\": [{\r\n * \"type\": \"FlagBullet\",\r\n * \"label\": {\r\n * \"text\": \"Hello\"\r\n * }\r\n * }]\r\n * }\r\n * }]\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @default 0.5\r\n * @param value Location (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"location\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n AxisBullet.prototype.setDisabled = function (value) {\r\n var changed = _super.prototype.setDisabled.call(this, value);\r\n if (this.axis) {\r\n this.axis.invalidateDataItems();\r\n }\r\n return changed;\r\n };\r\n return AxisBullet;\r\n}(Container));\r\nexport { AxisBullet };\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[\"AxisBullet\"] = AxisBullet;\r\n//# sourceMappingURL=AxisBullet.js.map","import { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * AxisFill is a base class used to defines fill shapes for various\r\n * type-specific Axes.\r\n *\r\n * Axis fills are used to add fills to specific ranges of those axes.\r\n *\r\n * @see {@link IAxisFillEvents} for a list of available events\r\n * @see {@link IAxisFillAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar AxisFill = /** @class */ (function (_super) {\r\n __extends(AxisFill, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param axis Axis\r\n */\r\n function AxisFill(axis) {\r\n var _this = _super.call(this) || this;\r\n _this.axis = axis;\r\n _this.element = _this.paper.add(\"path\");\r\n _this.className = \"AxisFill\";\r\n _this.isMeasured = false;\r\n _this.location = 0;\r\n _this.above = false;\r\n var interfaceColors = new InterfaceColorSet();\r\n _this.fill = interfaceColors.getFor(\"alternativeBackground\");\r\n _this.fillOpacity = 0;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n AxisFill.prototype.setDisabled = function (value) {\r\n var changed = _super.prototype.setDisabled.call(this, value);\r\n if (this.axis) {\r\n this.axis.invalidateDataItems();\r\n }\r\n return changed;\r\n };\r\n /**\r\n * Draws the fill element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisFill.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n if (this.__disabled || this.disabled) {\r\n return;\r\n }\r\n if (this.axis && $type.isNumber(this.startPosition) && $type.isNumber(this.endPosition)) {\r\n this.fillPath = this.axis.getPositionRangePath(this.startPosition, this.endPosition);\r\n this.path = this.fillPath;\r\n if (this.isMeasured) {\r\n this.measure();\r\n }\r\n }\r\n };\r\n Object.defineProperty(AxisFill.prototype, \"startPosition\", {\r\n /**\r\n * @return Start position\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startPosition\");\r\n },\r\n /**\r\n * An actual starting position of the fill.\r\n *\r\n * @param value Starting position\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"startPosition\", value);\r\n this.invalidate(); // this is needed as relative position might not change when zooming\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisFill.prototype, \"endPosition\", {\r\n /**\r\n * @return End position\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endPosition\");\r\n },\r\n /**\r\n * An actual end position of the fill.\r\n *\r\n * @param value End position\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"endPosition\", value);\r\n this.invalidate(); // this is needed as relative position might not change when zooming\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisFill.prototype, \"location\", {\r\n /**\r\n * @return Location (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"location\");\r\n },\r\n /**\r\n * Relative location of the fill. (0-1)\r\n *\r\n * @param value Location (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"location\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n AxisFill.prototype.setPath = function (value) {\r\n if (this.setPropertyValue(\"path\", value)) {\r\n this.element.attr({ \"d\": value });\r\n return true;\r\n }\r\n return false;\r\n };\r\n Object.defineProperty(AxisFill.prototype, \"above\", {\r\n /**\r\n * @return Draw above series?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"above\");\r\n },\r\n /**\r\n * Normally fill goes below series. Set this to `true` to go above.\r\n *\r\n * @default false\r\n * @since 4.5.9\r\n * @param value Draw above series?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"above\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return AxisFill;\r\n}(Sprite));\r\nexport { AxisFill };\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[\"AxisFill\"] = AxisFill;\r\n//# sourceMappingURL=AxisFill.js.map","import { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AxisFill } from \"./AxisFill\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Provides fill element functionality for circular Axes.\r\n *\r\n * @see {@link IAxisFillCircularEvents} for a list of available events\r\n * @see {@link IAxisFillCircularAdapters} for a list of available Adapters\r\n * @todo Needs description\r\n */\r\nvar AxisFillCircular = /** @class */ (function (_super) {\r\n __extends(AxisFillCircular, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param axis Axis\r\n */\r\n function AxisFillCircular(axis) {\r\n var _this = _super.call(this, axis) || this;\r\n _this.className = \"AxisFillCircular\";\r\n _this.element = _this.paper.add(\"path\");\r\n _this.radius = percent(100);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Draws the fill element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisFillCircular.prototype.draw = function () {\r\n _super.prototype.draw.call(this);\r\n if (this.__disabled || this.disabled) {\r\n return;\r\n }\r\n if (this.axis) {\r\n var renderer = this.axis.renderer;\r\n this.fillPath = renderer.getPositionRangePath(this.startPosition, this.endPosition, this.radius, $type.hasValue(this.innerRadius) ? this.innerRadius : renderer.innerRadius, this.cornerRadius);\r\n this.path = this.fillPath;\r\n }\r\n };\r\n Object.defineProperty(AxisFillCircular.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 fill. Relative ([[Percent]]) or absolute (pixels).\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 Object.defineProperty(AxisFillCircular.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 fill. Relative ([[Percent]]) or absolute (pixels).\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(AxisFillCircular.prototype, \"cornerRadius\", {\r\n /**\r\n * @return Corner radius (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"cornerRadius\");\r\n },\r\n /**\r\n * Corner radius for the fill. In pixels.\r\n *\r\n * @param value Corner radius (px)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"cornerRadius\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return AxisFillCircular;\r\n}(AxisFill));\r\nexport { AxisFillCircular };\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[\"AxisFillCircular\"] = AxisFillCircular;\r\n//# sourceMappingURL=AxisFillCircular.js.map","/**\r\n * Axis Label module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Label } from \"../../core/elements/Label\";\r\nimport { registry } from \"../../core/Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Use to create labels on Axis.\r\n *\r\n * @see {@link IAxisLabelEvents} for a list of available events\r\n * @see {@link IAxisLabelAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nvar AxisLabel = /** @class */ (function (_super) {\r\n __extends(AxisLabel, _super);\r\n /**\r\n * Constructor\r\n */\r\n function AxisLabel() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"AxisLabel\";\r\n _this.isMeasured = false;\r\n _this.padding(10, 10, 10, 10);\r\n _this.location = 0.5;\r\n //this.nonScaling = true; // not good for perf\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(AxisLabel.prototype, \"location\", {\r\n /**\r\n * @return Location (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"location\");\r\n },\r\n /**\r\n * Relative location of the label. (0-1)\r\n *\r\n * @param value Location (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"location\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisLabel.prototype, \"inside\", {\r\n /**\r\n * Returns if label is set to be drawn inside axis.\r\n *\r\n * @return Inside?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"inside\");\r\n },\r\n /**\r\n * Sets if label should be drawn inside axis.\r\n *\r\n * @param value Inside?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"inside\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n AxisLabel.prototype.setDisabled = function (value) {\r\n var changed = _super.prototype.setDisabled.call(this, value);\r\n if (this.axis) {\r\n this.axis.invalidateDataItems();\r\n }\r\n return changed;\r\n };\r\n return AxisLabel;\r\n}(Label));\r\nexport { AxisLabel };\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[\"AxisLabel\"] = AxisLabel;\r\n//# sourceMappingURL=AxisLabel.js.map","/**\r\n * Axis Label module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AxisLabel } from \"./AxisLabel\";\r\nimport { registry } from \"../../core/Registry\";\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\nimport { Percent } from \"../../core/utils/Percent\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Use to create labels on circular axis.\r\n *\r\n * @see {@link IAxisLabelCircularEvents} for a list of available events\r\n * @see {@link IAxisLabelCircularAdapters} for a list of available Adapters\r\n */\r\nvar AxisLabelCircular = /** @class */ (function (_super) {\r\n __extends(AxisLabelCircular, _super);\r\n /**\r\n * Constructor\r\n */\r\n function AxisLabelCircular() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n *\r\n * @ignore\r\n */\r\n _this.fdx = 0;\r\n /**\r\n *\r\n * @ignore\r\n */\r\n _this.fdy = 0;\r\n _this.className = \"AxisLabelCircular\";\r\n _this.padding(0, 0, 0, 0);\r\n _this.location = 0.5;\r\n _this.locationOnPath = 0.5;\r\n _this.radius = 0;\r\n _this.isMeasured = false;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(AxisLabelCircular.prototype, \"relativeRotation\", {\r\n /**\r\n * @return Rotation angle\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"relativeRotation\");\r\n },\r\n /**\r\n * Relative rotation of the label.\r\n *\r\n * It is an angle to circle. In case 90, labels will be positioned like rays\r\n * of light, if 0 - positioned along the circle.\r\n *\r\n * @param value Rotation angle\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"relativeRotation\", value, true);\r\n if (!$type.hasValue(value)) {\r\n this.rotation = undefined;\r\n var dataItem = this.dataItem;\r\n if (dataItem && dataItem.component) {\r\n dataItem.component.invalidateDataItems();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisLabelCircular.prototype, \"radius\", {\r\n /**\r\n * @return Distance (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"radius\");\r\n },\r\n /**\r\n * Distance from axis circle to label in pixels or percent.\r\n *\r\n * @param value Distance (px or percent)\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(AxisLabelCircular.prototype, \"bent\", {\r\n /**\r\n * @return Bent?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"bent\");\r\n },\r\n /**\r\n * Specifies if label should be bent along the circle.\r\n *\r\n * IMPORTANT: Use this with caution, since it is quite CPU-greedy.\r\n *\r\n * @since 4.1.2\r\n * @default false\r\n * @param value Bent?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"bent\", value, true);\r\n this.setPropertyValue(\"wrap\", false);\r\n this.setPropertyValue(\"horizontalCenter\", \"none\");\r\n this.setPropertyValue(\"verticalCenter\", \"none\");\r\n if (value) {\r\n this.setPropertyValue(\"dx\", 0);\r\n this.setPropertyValue(\"dy\", 0);\r\n this.setPropertyValue(\"x\", 0);\r\n this.setPropertyValue(\"y\", 0);\r\n this.setPropertyValue(\"rotation\", 0);\r\n //this.setPropertyValue(\"relativeRotation\", undefined);\r\n this.fdx = 0;\r\n this.fdy = 0;\r\n this.textAlign = \"middle\";\r\n }\r\n else {\r\n if (this.textPathElement) {\r\n this.textPathElement.dispose();\r\n this.textPathElement = undefined;\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns label radius in pixels.\r\n *\r\n * @param axisRadius Radius\r\n * @return Pixel radius\r\n */\r\n AxisLabelCircular.prototype.pixelRadius = function (axisRadius) {\r\n var sign = 1;\r\n if (this.inside) {\r\n sign = -1;\r\n }\r\n return $utils.relativeToValue(this.radius, axisRadius) * sign;\r\n };\r\n /**\r\n * Returns label horizontal radius in pixels.\r\n *\r\n * @param axisRadius Radius\r\n * @param axisRadiusY Vertical radius\r\n * @return Radius\r\n */\r\n AxisLabelCircular.prototype.pixelRadiusY = function (axisRadius, axisRadiusY) {\r\n var sign = 1;\r\n if (this.inside) {\r\n sign = -1;\r\n }\r\n var radius = this.radius;\r\n if ($type.isNumber(radius)) {\r\n radius *= axisRadiusY / axisRadius;\r\n return $utils.relativeToValue(radius, axisRadius) * sign;\r\n }\r\n else {\r\n return $utils.relativeToValue(radius, axisRadiusY) * sign;\r\n }\r\n };\r\n /**\r\n * [fixPosition description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param point Label affixation point\r\n * @param axisRadius Distance from point (px)\r\n */\r\n AxisLabelCircular.prototype.fixPosition = function (angle, axisRadius, axisRadiusY, dx, dy) {\r\n if (!$type.isNumber(axisRadiusY)) {\r\n axisRadiusY = axisRadius;\r\n }\r\n if (!$type.isNumber(dx)) {\r\n dx = 0;\r\n }\r\n if (!$type.isNumber(dy)) {\r\n dy = 0;\r\n }\r\n var point = { x: axisRadius * $math.cos(angle), y: axisRadiusY * $math.sin(angle) };\r\n if (this.invalid) {\r\n this.validate(); //@todo\" check if we need this\r\n }\r\n var isNegative = false;\r\n var realRadius = this.radius;\r\n if (realRadius instanceof Percent && realRadius.value < 0) {\r\n isNegative = true;\r\n }\r\n else if (realRadius < 0) {\r\n isNegative = true;\r\n }\r\n var relativeRotation = this.relativeRotation;\r\n var labelRadius = this.pixelRadius(axisRadius);\r\n if (this.bent) {\r\n var point_1 = { x: (axisRadius + labelRadius) * $math.cos(angle + 180), y: (axisRadiusY + labelRadius * axisRadiusY / axisRadius) * $math.sin(angle + 180) };\r\n this.path = $path.moveTo(point_1) + $path.arcTo(angle + 180, 360, axisRadius + labelRadius, axisRadiusY + labelRadius * axisRadiusY / axisRadius);\r\n if (this.textPathElement) {\r\n this.textPathElement.attr({ \"startOffset\": (this.locationOnPath * 100) + \"%\" });\r\n }\r\n return;\r\n }\r\n // WHEN ROTATED\r\n if ($type.isNumber(relativeRotation)) {\r\n this.horizontalCenter = \"none\";\r\n this.verticalCenter = \"none\";\r\n angle = $math.fitAngleToRange(angle, -180, 180);\r\n var pixelWidth = this.bbox.width;\r\n var pixelHeight = this.bbox.height;\r\n var pixelPaddingBottom = this.pixelPaddingBottom;\r\n var pixelPaddingTop = this.pixelPaddingTop;\r\n var pixelPaddingLeft = this.pixelPaddingLeft;\r\n var pixelPaddingRight = this.pixelPaddingRight;\r\n if (angle > 90 || angle < -90) {\r\n if (relativeRotation == -90) {\r\n relativeRotation = 90;\r\n pixelWidth = 0;\r\n }\r\n }\r\n else {\r\n if (relativeRotation == -90) {\r\n pixelHeight = -pixelHeight;\r\n }\r\n if (relativeRotation == 90) {\r\n relativeRotation = -90;\r\n pixelWidth = -pixelPaddingLeft - pixelPaddingRight;\r\n pixelHeight = -pixelHeight - pixelPaddingTop - pixelPaddingBottom;\r\n }\r\n }\r\n this.rotation = relativeRotation + angle + 90;\r\n var dH = $math.sin(relativeRotation) / 2;\r\n var dW = $math.cos(relativeRotation) / 2;\r\n var rotation = this.rotation;\r\n this.dx = pixelHeight * dH * $math.sin(rotation) - pixelWidth * dW * $math.cos(rotation);\r\n this.dy = -pixelHeight * dH * $math.cos(rotation) - pixelWidth * dW * $math.sin(rotation);\r\n if (!this.inside) {\r\n labelRadius += (pixelHeight + pixelPaddingBottom + pixelPaddingTop) * $math.cos(relativeRotation) + (pixelWidth + pixelPaddingLeft + pixelPaddingRight) * $math.sin(relativeRotation);\r\n }\r\n else {\r\n if (angle > 90 || angle < -90) {\r\n labelRadius -= (pixelPaddingBottom + pixelPaddingTop) * $math.cos(relativeRotation) + (pixelPaddingLeft + pixelPaddingRight) * $math.sin(relativeRotation);\r\n }\r\n else {\r\n labelRadius += (pixelPaddingBottom + this.bbox.height + pixelPaddingTop) * $math.cos(relativeRotation) + (pixelPaddingLeft + pixelPaddingRight + this.bbox.width) * $math.sin(relativeRotation);\r\n }\r\n }\r\n point.x += $math.cos(angle) * labelRadius;\r\n point.y += $math.sin(angle) * labelRadius * axisRadiusY / axisRadius;\r\n }\r\n else {\r\n // END OF ROTATED\r\n this.horizontalCenter = \"middle\";\r\n this.verticalCenter = \"middle\";\r\n if (isNegative) {\r\n this.dx = 0;\r\n this.dy = 0;\r\n point.x = (axisRadius + labelRadius) * $math.cos(angle);\r\n point.y = (axisRadiusY + labelRadius * axisRadiusY / axisRadius) * $math.sin(angle);\r\n }\r\n else {\r\n // we don't use valign for labels because then they would jump while animating. instead we modify dy depending on a y position\r\n // this math makes dy to be 1 at the top of the circle, 0.5 at the middle and 1 at the bottom\r\n // @todo with this math doesn't work well with inside = true\r\n this.dy = this._measuredHeight / 2 * $math.sin(angle); //(1 - (point.y + axisRadiusY) / (2 * axisRadiusY));\r\n // simmilar with dx\r\n this.dx = this._measuredWidth / 2 * $math.cos(angle); //(1 - (point.x + axisRadius) / (2 * axisRadius));\r\n point.x += $math.cos(angle) * labelRadius;\r\n point.y += $math.sin(angle) * labelRadius * axisRadiusY / axisRadius;\r\n }\r\n }\r\n point.x += dx;\r\n point.y += dy;\r\n this.fdx = this.dx;\r\n this.fdy = this.dy;\r\n this.moveTo(point);\r\n };\r\n return AxisLabelCircular;\r\n}(AxisLabel));\r\nexport { AxisLabelCircular };\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[\"AxisLabelCircular\"] = AxisLabelCircular;\r\n//# sourceMappingURL=AxisLabelCircular.js.map","/**\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { color } from \"../../core/utils/Color\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Used to draw Axis line.\r\n *\r\n * @see {@link IAxisLineEvents} for a list of available events\r\n * @see {@link IAxisLineAdapters} for a list of available Adapters\r\n */\r\nvar AxisLine = /** @class */ (function (_super) {\r\n __extends(AxisLine, _super);\r\n /**\r\n * Constructor\r\n */\r\n function AxisLine() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"AxisLine\";\r\n _this.element = _this.paper.add(\"path\");\r\n var interfaceColors = new InterfaceColorSet();\r\n _this.stroke = interfaceColors.getFor(\"grid\");\r\n _this.strokeOpacity = 0.15;\r\n _this.pixelPerfect = true;\r\n _this.fill = color();\r\n _this.applyTheme();\r\n _this.interactionsEnabled = false;\r\n return _this;\r\n //this.element.moveTo({ x: 0, y: 0 });\r\n }\r\n return AxisLine;\r\n}(Sprite));\r\nexport { AxisLine };\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[\"AxisLine\"] = AxisLine;\r\n//# sourceMappingURL=AxisLine.js.map","/**\r\n * Module, defining base Axis Renderer.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container } from \"../../core/Container\";\r\nimport { MutableValueDisposer } from \"../../core/utils/Disposer\";\r\nimport { AxisDataItem } from \"./Axis\";\r\nimport { AxisLine } from \"./AxisLine\";\r\nimport { AxisFill } from \"./AxisFill\";\r\nimport { Grid } from \"./Grid\";\r\nimport { AxisLabel } from \"./AxisLabel\";\r\nimport { AxisTick } from \"./AxisTick\";\r\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A base class for all axis renderers.\r\n *\r\n * @see {@link IAxisRendererEvents} for a list of available events\r\n * @see {@link IAxisRendererAdapters} for a list of available Adapters\r\n */\r\nvar AxisRenderer = /** @class */ (function (_super) {\r\n __extends(AxisRenderer, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param axis Related axis\r\n */\r\n function AxisRenderer() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * A related chart.\r\n */\r\n _this._chart = new MutableValueDisposer();\r\n _this.className = \"AxisRenderer\";\r\n // Set defaults\r\n _this.minGridDistance = 50;\r\n _this.inside = false;\r\n _this.inversed = false;\r\n _this.tooltipLocation = 0.5;\r\n _this.fullWidthTooltip = false;\r\n _this.cellStartLocation = 0;\r\n _this.cellEndLocation = 1;\r\n _this.minLabelPosition = 0;\r\n _this.maxLabelPosition = 1;\r\n _this.shouldClone = false;\r\n var gridContainer = _this.createChild(Container);\r\n gridContainer.shouldClone = false;\r\n gridContainer.layout = \"none\";\r\n //\tgridContainer.isMeasured = false;\r\n gridContainer.virtualParent = _this;\r\n gridContainer.width = percent(100);\r\n gridContainer.height = percent(100);\r\n _this.gridContainer = gridContainer;\r\n // not good without this\r\n gridContainer.events.on(\"maxsizechanged\", function () {\r\n if (_this.inited) {\r\n _this.invalidateAxisItems();\r\n }\r\n }, _this, false);\r\n var breakContainer = _this.createChild(Container);\r\n breakContainer.shouldClone = false;\r\n breakContainer.isMeasured = false;\r\n breakContainer.layout = \"none\";\r\n breakContainer.width = percent(100);\r\n breakContainer.height = percent(100);\r\n _this.breakContainer = breakContainer;\r\n var bulletsContainer = _this.createChild(Container);\r\n bulletsContainer.shouldClone = false;\r\n bulletsContainer.isMeasured = false;\r\n bulletsContainer.layout = \"none\";\r\n bulletsContainer.width = percent(100);\r\n bulletsContainer.height = percent(100);\r\n _this.bulletsContainer = bulletsContainer;\r\n _this.line = _this.createChild(AxisLine);\r\n _this.line.shouldClone = false;\r\n _this.line.strokeOpacity = 0;\r\n var baseGrid = _this.createChild(Grid);\r\n baseGrid.shouldClone = false;\r\n _this.baseGrid = baseGrid;\r\n // Make elements disposable\r\n var disposers = _this._disposers;\r\n disposers.push(baseGrid);\r\n disposers.push(_this.line);\r\n disposers.push(gridContainer);\r\n disposers.push(breakContainer);\r\n disposers.push(bulletsContainer);\r\n disposers.push(_this._chart);\r\n _this.ticks.template.disabled = true;\r\n _this.axisFills.template.disabled = true;\r\n _this.axisFills.template.interactionsEnabled = false;\r\n // Apply theme\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(AxisRenderer.prototype, \"axis\", {\r\n /**\r\n * Axis of a renderer\r\n * @return axis Axis\r\n */\r\n get: function () {\r\n return this._axis;\r\n },\r\n /**\r\n * Axis of a renderer\r\n * @param axis Axis\r\n */\r\n set: function (axis) {\r\n this.setAxis(axis);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n AxisRenderer.prototype.setAxis = function (axis) {\r\n this._axis = axis;\r\n this.baseGrid.parent = axis;\r\n this.line.parent = axis;\r\n this.gridContainer.bind(\"opacity\", axis);\r\n };\r\n /**\r\n * Called when rendered is attached to an Axis, as well as a property of\r\n * Axis that might affect the appearance is updated.\r\n *\r\n * E.g. `axis.opposite`, `axis.inside`, etc.\r\n *\r\n * This method is called **before** draw, so that any related setting\r\n * changed in this method can be changed.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\r\n AxisRenderer.prototype.processRenderer = function () {\r\n this.events.on(\"sizechanged\", this.updateTooltip, this, false);\r\n this.events.on(\"positionchanged\", this.updateTooltip, this, false);\r\n this.labels.template.inside = this.inside;\r\n this.ticks.template.inside = this.inside;\r\n };\r\n /**\r\n * Updates Axis' tooltip.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\r\n AxisRenderer.prototype.updateTooltip = function () {\r\n // This is a placeholder method for extending classes to override.\r\n };\r\n Object.defineProperty(AxisRenderer.prototype, \"axisLength\", {\r\n /**\r\n * Returns actual length of the Axis, in pixels.\r\n *\r\n * @return Length (px)\r\n */\r\n get: function () {\r\n // This is a placeholder method for extending classes to override.\r\n return 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Re-positions an element to new coordinates.\r\n *\r\n * @ignore Exclude from docs\r\n * @param item A target element\r\n * @param point New coordinates\r\n */\r\n AxisRenderer.prototype.positionItem = function (item, point) {\r\n if (item) {\r\n item.moveTo(point);\r\n }\r\n };\r\n /**\r\n * Converts relative position on axis to point coordinates.\r\n *\r\n * @param position Position (0-1)\r\n * @return Point\r\n */\r\n AxisRenderer.prototype.positionToPoint = function (position, position2) {\r\n // This is a placeholder method for extending classes to override.\r\n return { x: 0, y: 0 };\r\n };\r\n /**\r\n * Converts relative position on axis to angle.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review / units)\r\n * @param position Position (0-1)\r\n * @return Angle\r\n */\r\n AxisRenderer.prototype.positionToAngle = function (position) {\r\n // This is a placeholder method for extending classes to override.\r\n return 0;\r\n };\r\n /**\r\n * Converts relative position (0-1) on axis to a pixel coordinate.\r\n *\r\n * @param position Position (0-1)\r\n * @return Coordinate (px)\r\n */\r\n AxisRenderer.prototype.positionToCoordinate = function (position) {\r\n var coordinate;\r\n var axis = this.axis;\r\n var axisFullLength = axis.axisFullLength;\r\n if (axis.renderer.inversed) {\r\n coordinate = (axis.end - position) * axisFullLength;\r\n }\r\n else {\r\n coordinate = (position - axis.start) * axisFullLength;\r\n }\r\n return coordinate;\r\n };\r\n AxisRenderer.prototype.updateGridContainer = function () {\r\n };\r\n AxisRenderer.prototype.getHeight = function () {\r\n var gridContainer = this.gridContainer;\r\n if (gridContainer.parent) {\r\n return gridContainer.parent.pixelHeight;\r\n }\r\n return this.gridContainer.pixelHeight || 0;\r\n };\r\n AxisRenderer.prototype.getWidth = function () {\r\n var gridContainer = this.gridContainer;\r\n if (gridContainer.parent) {\r\n return gridContainer.parent.pixelWidth;\r\n }\r\n return this.gridContainer.pixelWidth || 0;\r\n };\r\n /**\r\n * Converts a coordinate in pixels to a relative position. (0-1)\r\n *\r\n * @param coordinate Coordinate (px)\r\n * @param coordinate2 Coordinate of a second axis, only needed for complex axes systems, like timeline (px)\r\n * @return Position (0-1)\r\n */\r\n AxisRenderer.prototype.coordinateToPosition = function (coordinate, coordinate2) {\r\n var position;\r\n var axis = this.axis;\r\n var axisFullLength = axis.axisFullLength;\r\n if (axis.renderer.inversed) {\r\n position = axis.end - coordinate / axisFullLength;\r\n }\r\n else {\r\n position = coordinate / axisFullLength + axis.start;\r\n }\r\n return $math.round(position, 5);\r\n };\r\n /**\r\n * Converts a point at specific coordinates to a relative position (0-1)\r\n * on the axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param point Point\r\n * @return Position (0-1)\r\n */\r\n AxisRenderer.prototype.pointToPosition = function (point) {\r\n // This is a placeholder method for extending classes to override.\r\n return 0;\r\n };\r\n /**\r\n * [getPositionRangePath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param startPosition Starting position\r\n * @param endPosition End position\r\n * @return SVG path\r\n */\r\n AxisRenderer.prototype.getPositionRangePath = function (startPosition, endPosition) {\r\n return \"\";\r\n };\r\n /**\r\n * Invalidates all axis data items, effectively causing them re-evaluated.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n */\r\n AxisRenderer.prototype.invalidateAxisItems = function () {\r\n var axis = this.axis;\r\n if (axis) {\r\n axis.invalidateDataItems();\r\n }\r\n };\r\n /**\r\n * Updates and positions a grid element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param grid Grid element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRenderer.prototype.updateGridElement = function (grid, position, endPosition) {\r\n // This is a placeholder method for extending classes to override.\r\n };\r\n /**\r\n * Updates and positions a tick element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param tick Tick element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRenderer.prototype.updateTickElement = function (tick, position, endPosition) {\r\n // This is a placeholder method for extending classes to override.\r\n };\r\n /**\r\n * Updates and positions axis bullet.\r\n *\r\n * @ignore Exclude from docs\r\n * @param bullet AxisBullet element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRenderer.prototype.updateBullet = function (bullet, position, endPosition) {\r\n // This is a placeholder method for extending classes to override.\r\n };\r\n /**\r\n * Updates and positions a label element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param label Label element\r\n * @param position Starting position\r\n * @param endPosition Ending position\r\n */\r\n AxisRenderer.prototype.updateLabelElement = function (label, position, endPosition, location) {\r\n // This is a placeholder method for extending classes to override.\r\n };\r\n /**\r\n * Updates and positions the axis fill element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param fill Fill element\r\n * @param position Starting position\r\n * @param endPosition Ending position\r\n */\r\n AxisRenderer.prototype.updateFillElement = function (fill, position, endPosition) {\r\n fill.startPosition = position;\r\n fill.endPosition = endPosition;\r\n };\r\n /**\r\n * Updates and positions the axis line element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRenderer.prototype.updateAxisLine = function () {\r\n // This is a placeholder method for extending classes to override.\r\n };\r\n /**\r\n * Updates and positions the base grid element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRenderer.prototype.updateBaseGridElement = function () {\r\n // This is a placeholder method for extending classes to override.\r\n };\r\n /**\r\n * Updates and positions an axis break element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axisBreak Break element\r\n */\r\n AxisRenderer.prototype.updateBreakElement = function (axisBreak) {\r\n this.positionItem(axisBreak.startLine, axisBreak.startPoint);\r\n this.toggleVisibility(axisBreak.startLine, axisBreak.startPosition, 0, 1);\r\n this.positionItem(axisBreak.endLine, axisBreak.endPoint);\r\n this.toggleVisibility(axisBreak.endLine, axisBreak.endPosition, 0, 1);\r\n };\r\n Object.defineProperty(AxisRenderer.prototype, \"minGridDistance\", {\r\n /**\r\n * @return Min distance (px)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"minGridDistance\");\r\n },\r\n /**\r\n * Minimum distance in pixels between grid elements.\r\n *\r\n * Use it to control density of the grid/labels on the axis.element.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/positioning-axis-elements/#Setting_the_density_of_the_the_grid_labels} for more info\r\n * @param value Min distance (px)\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"minGridDistance\", value)) {\r\n if (this.axis) {\r\n this.axis.invalidateDataItems();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRenderer.prototype, \"chart\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Chart\r\n */\r\n get: function () {\r\n return this._chart.get();\r\n },\r\n /**\r\n * A chart, associated with the Axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Chart\r\n */\r\n set: function (value) {\r\n this._chart.set(value, null);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Toggles visibility of an element, based on its current position and\r\n * min/max position settings.\r\n *\r\n * E.g. labels based on `minLabelPosition` and `maxLabelPosition`.\r\n *\r\n * @ignore Exclude from docs\r\n * @param sprite An element to toggle\r\n * @param position Elements current position\r\n * @param minPosition Min position setting\r\n * @param maxPosition Max position setting\r\n */\r\n AxisRenderer.prototype.toggleVisibility = function (sprite, position, minPosition, maxPosition) {\r\n var axis = this.axis;\r\n var dataItem = sprite.dataItem;\r\n if (dataItem && dataItem instanceof AxisDataItem) {\r\n if ($type.isNumber(dataItem.minPosition)) {\r\n minPosition = dataItem.minPosition;\r\n }\r\n if ($type.isNumber(dataItem.maxPosition)) {\r\n maxPosition = dataItem.maxPosition;\r\n }\r\n }\r\n var updatedStart = axis.start + (axis.end - axis.start) * (minPosition - 0.0001);\r\n var updatedEnd = axis.start + (axis.end - axis.start) * (maxPosition + 0.0001);\r\n if (!sprite.disabled) {\r\n if (position < updatedStart || position > updatedEnd) {\r\n sprite.__disabled = true;\r\n }\r\n else {\r\n sprite.__disabled = false;\r\n }\r\n }\r\n };\r\n /**\r\n * Creates visual elements for and axis break.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axisBreak Axis break\r\n */\r\n AxisRenderer.prototype.createBreakSprites = function (axisBreak) {\r\n // This is a placeholder method for extending classes to override.\r\n };\r\n Object.defineProperty(AxisRenderer.prototype, \"axisFills\", {\r\n /**\r\n * A list of Axis' Fill elements.\r\n *\r\n * Those are fill elements that cover the space between every second set\r\n * of grid lines, and can be configured to create striped charts.\r\n *\r\n * Please note that these are disabled by default. To enable them, set\r\n * template to true.\r\n *\r\n * ```TypeScript\r\n * categoryAxis.renderer.axisFills.template.disabled = false;\r\n * ```\r\n * ```JavaScript\r\n * categoryAxis.renderer.axisFills.template.disabled = false;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"xAxes\": [{\r\n * // ...\r\n * \"renderer\": {\r\n * \"axisFills\": {\r\n * \"disabled\": false\r\n * }\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/tutorials/alternated-axis-fills/} this tutorial for more info.\r\n * @return Fill elements\r\n */\r\n get: function () {\r\n if (!this._axisFills) {\r\n var fill = this.createFill(this.axis);\r\n this._axisFills = new ListTemplate(fill);\r\n fill.applyOnClones = true;\r\n fill.events.on(\"enabled\", this.invalidateAxisItems, this, false);\r\n this._disposers.push(new ListDisposer(this._axisFills));\r\n this._disposers.push(this._axisFills.template);\r\n }\r\n return this._axisFills;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns a new fill element, suitable for this Axis Renderer type.\r\n *\r\n * @return Fill element\r\n */\r\n AxisRenderer.prototype.createFill = function (axis) {\r\n return new AxisFill(axis);\r\n };\r\n Object.defineProperty(AxisRenderer.prototype, \"grid\", {\r\n /**\r\n * A list of Axis' Grid elements.\r\n *\r\n * @return Grid elements\r\n */\r\n get: function () {\r\n if (!this._grid) {\r\n var grid = this.createGrid();\r\n this._grid = new ListTemplate(grid);\r\n grid.applyOnClones = true;\r\n grid.events.on(\"enabled\", this.invalidateAxisItems, this, false);\r\n this._disposers.push(new ListDisposer(this._grid));\r\n this._disposers.push(this._grid.template);\r\n }\r\n return this._grid;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns a new grid element, suitable for this Axis Renderer type.\r\n *\r\n * @return Grid element\r\n */\r\n AxisRenderer.prototype.createGrid = function () {\r\n return new Grid();\r\n };\r\n Object.defineProperty(AxisRenderer.prototype, \"ticks\", {\r\n /**\r\n * A list of Axis' Tick elements.\r\n *\r\n * Please note that these are disabled by default. To enable ticks, you'll\r\n * need to set `disabled` and `strokeOpacity` properties of the tick template.\r\n *\r\n * ```TypeScript\r\n * categoryAxis.renderer.ticks.template.disabled = false;\r\n * categoryAxis.renderer.ticks.template.strokeOpacity = 0.5;\r\n * ```\r\n * ```JavaScript\r\n * categoryAxis.renderer.ticks.template.disabled = false;\r\n * categoryAxis.renderer.ticks.template.strokeOpacity = 0.5;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"xAxes\": [{\r\n * // ...\r\n * \"renderer\": {\r\n * \"ticks\": {\r\n * \"disabled\": false,\r\n * \"strokeOpacity\": 0.5\r\n * }\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @return Tick elements\r\n */\r\n get: function () {\r\n if (!this._ticks) {\r\n var tick = this.createTick();\r\n tick.applyOnClones = true;\r\n tick.isMeasured = false;\r\n tick.events.on(\"enabled\", this.invalidateAxisItems, this, false);\r\n this._ticks = new ListTemplate(tick);\r\n this._disposers.push(new ListDisposer(this._ticks));\r\n this._disposers.push(this._ticks.template);\r\n }\r\n return this._ticks;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns a new tick element, suitable for this Axis Renderer type.\r\n *\r\n * @return Tick element\r\n */\r\n AxisRenderer.prototype.createTick = function () {\r\n return new AxisTick();\r\n };\r\n Object.defineProperty(AxisRenderer.prototype, \"labels\", {\r\n /**\r\n * A list of Axis' Label elements.\r\n *\r\n * @return Label elements\r\n */\r\n get: function () {\r\n if (!this._labels) {\r\n var label = this.createLabel();\r\n this._labels = new ListTemplate(label);\r\n label.applyOnClones = true;\r\n label.events.on(\"enabled\", this.invalidateAxisItems, this, false);\r\n this._disposers.push(new ListDisposer(this._labels));\r\n this._disposers.push(this._labels.template);\r\n }\r\n return this._labels;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns a new label element, suitable for this Axis Renderer type.\r\n *\r\n * @return Label element\r\n */\r\n AxisRenderer.prototype.createLabel = function () {\r\n return new AxisLabel();\r\n };\r\n Object.defineProperty(AxisRenderer.prototype, \"inside\", {\r\n /**\r\n * @return Labels inside?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"inside\");\r\n },\r\n /**\r\n * Indicates whether Axis' labels and ticks should be drawn inside Plot area.\r\n *\r\n * Does not work with all renderers, like AxisRendererRadial.\r\n *\r\n * @param value Labels inside?\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"inside\", value)) {\r\n if (this.axis) {\r\n this.axis.invalidate();\r\n }\r\n }\r\n if (value) {\r\n this.width = 0;\r\n this.height = 0;\r\n }\r\n else {\r\n this.width = undefined;\r\n this.height = undefined;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRenderer.prototype, \"opposite\", {\r\n /**\r\n * @return Draw axis on opposite side?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"opposite\");\r\n },\r\n /**\r\n * Indicates whether Axis should be drawn on the opposite side of the plot\r\n * area than it would normally be drawn based on chart's settings.\r\n *\r\n * Does not work with all renderers, like [[AxisRendererRadial]] and\r\n * [[AxisRenderer Circular].\r\n *\r\n * @param value Draw axis on opposite side?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"opposite\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRenderer.prototype, \"fullWidthTooltip\", {\r\n /**\r\n * @return Full width tooltip?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"fullWidthTooltip\");\r\n },\r\n /**\r\n * Indicates if Axis tooltip should take the whole width of the axis cell.\r\n * (between two grid lines)\r\n *\r\n * NOTE: this setting is ignored on circular axis types.\r\n *\r\n * @param value Full width tooltip?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"fullWidthTooltip\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRenderer.prototype, \"tooltipLocation\", {\r\n /**\r\n * @return Tooltip location\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"tooltipLocation\");\r\n },\r\n /**\r\n * Location within axis cell to show tooltip on. (0-1)\r\n *\r\n * 0 - show at the start\r\n * 0.5 - show right in the middle\r\n * 1 - show at the end\r\n *\r\n * @param value Tooltip location\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"tooltipLocation\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRenderer.prototype, \"tooltipLocation2\", {\r\n /**\r\n * @return Tooltip location\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"tooltipLocation2\");\r\n },\r\n /**\r\n * Location within secondary axis cell to show tooltip on. (0-1)\r\n *\r\n * 0 - show at the start\r\n * 0.5 - show right in the middle\r\n * 1 - show at the end\r\n *\r\n * @param value Tooltip location\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"tooltipLocation2\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRenderer.prototype, \"cellStartLocation\", {\r\n /**\r\n * @return Cell start (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"cellStartLocation\");\r\n },\r\n /**\r\n * Location for the cell start.\r\n *\r\n * Normally a \"cell\" is the whole available width in a category.\r\n *\r\n * If there are several clustered column-like series available, the whole\r\n * space is divided between each clustered column, or column stacks.\r\n *\r\n * `cellStartLocation` identifies where, within available space, the actual\r\n * cell starts.\r\n *\r\n * This, together with column series' `width` will affect actual width of\r\n * columns, and thus gaps between them.\r\n *\r\n * This will affect category-like axes only, like [[DateAxis]], or\r\n * [[CategoryAxis]].\r\n *\r\n * This is used to limit a space occupied by series like column.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/positioning-axis-elements/} for more info.\r\n * @param value Cell start (0-1)\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"cellStartLocation\", value)) {\r\n if (this.axis) {\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRenderer.prototype, \"cellEndLocation\", {\r\n /**\r\n * @return Cell end (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"cellEndLocation\");\r\n },\r\n /**\r\n * Location for the cell end.\r\n *\r\n * Normally a \"cell\" is the whole available width in a category.\r\n *\r\n * If there are several clustered column-like series available, the whole\r\n * space is divided between each clustered column, or column stacks.\r\n *\r\n * `cellEndLocation` identifies where, within available space, the actual\r\n * cell ends.\r\n *\r\n * This, together with column series' `width` will affect actual width of\r\n * columns, and thus gaps between them.\r\n *\r\n * This will affect category-like axes only, like [[DateAxis]], or\r\n * [[CategoryAxis]].\r\n *\r\n * This is used to limit a space occupied by series like column.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/positioning-axis-elements/} for more info.\r\n * @param value Cell end (0-1)\r\n */\r\n set: function (value) {\r\n if (this.setPropertyValue(\"cellEndLocation\", value)) {\r\n if (this.axis) {\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRenderer.prototype, \"inversed\", {\r\n /**\r\n * @return Flip axis?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"inversed\");\r\n },\r\n /**\r\n * Indicates if the scale of the axis should be flipped.\r\n *\r\n * @param value Flip axis?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"inversed\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRenderer.prototype, \"minLabelPosition\", {\r\n /**\r\n * @return Min label position (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"minLabelPosition\");\r\n },\r\n /**\r\n * Minimum position along the Axis, for labels.\r\n *\r\n * Labels, which have their position closer to the start of the Axis, will be\r\n * automatically hidden.\r\n *\r\n * E.g., setting this to 0.05 (5% of total axis length) would hide labels,\r\n * that would otherwise be drawn very near start of the Axis.\r\n *\r\n * This is especially usefull with `inside = true`, or if the chart hasn't\r\n * got any extra margins.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/positioning-axis-elements/} for more info.\r\n * @param value Min label position (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"minLabelPosition\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRenderer.prototype, \"maxLabelPosition\", {\r\n /**\r\n * @return Max label position (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"maxLabelPosition\");\r\n },\r\n /**\r\n * Maximum position along the Axis, for labels.\r\n *\r\n * Labels, which have their position closer to the and of the Axis, will be\r\n * automatically hidden.\r\n *\r\n * E.g., setting this to 0.95 (95% of total axis length) would hide labels,\r\n * that would otherwise be drawn very near end of the Axis.\r\n *\r\n * This is especially usefull with `inside = true`, or if the chart hasn't\r\n * got any extra margins.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/positioning-axis-elements/} for more info.\r\n * @param value Max label position (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"maxLabelPosition\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Copies all settings and related items from another object of the same\r\n * type.\r\n *\r\n * @param source Source object\r\n */\r\n AxisRenderer.prototype.copyFrom = function (source) {\r\n _super.prototype.copyFrom.call(this, source);\r\n this.grid.template.copyFrom(source.grid.template);\r\n this.ticks.template.copyFrom(source.ticks.template);\r\n this.labels.template.copyFrom(source.labels.template);\r\n this.axisFills.template.copyFrom(source.axisFills.template);\r\n this.line.copyFrom(source.line);\r\n this.baseGrid.copyFrom(source.baseGrid);\r\n };\r\n /**\r\n * @ignore\r\n */\r\n AxisRenderer.prototype.toAxisPosition = function (value) {\r\n return value;\r\n };\r\n /**\r\n * Sets `visibility` property:\r\n *\r\n * * `true` - visible\r\n * * `false` - hidden\r\n *\r\n * @param value true - visible, false - hidden\r\n * @return Current visibility\r\n */\r\n AxisRenderer.prototype.setVisibility = function (value) {\r\n _super.prototype.setVisibility.call(this, value);\r\n this.bulletsContainer.visible = value;\r\n };\r\n return AxisRenderer;\r\n}(Container));\r\nexport { AxisRenderer };\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[\"AxisRenderer\"] = AxisRenderer;\r\n//# sourceMappingURL=AxisRenderer.js.map","/**\r\n * Module, defining Axis Renderer for circular axes.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AxisRenderer } from \"./AxisRenderer\";\r\nimport { AxisFillCircular } from \"./AxisFillCircular\";\r\nimport { GridCircular } from \"./GridCircular\";\r\nimport { AxisLabelCircular } from \"./AxisLabelCircular\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { percent, Percent } from \"../../core/utils/Percent\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { AxisBullet } from \"./AxisBullet\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A renderer for circular axis.\r\n */\r\nvar AxisRendererCircular = /** @class */ (function (_super) {\r\n __extends(AxisRendererCircular, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param axis Related axis\r\n */\r\n function AxisRendererCircular() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * @ignore\r\n */\r\n _this.pixelRadiusReal = 0;\r\n // axis.layout = \"none\"; // does not trigger redraw when size changes\r\n _this.layout = \"none\";\r\n _this.className = \"AxisRendererCircular\";\r\n _this.isMeasured = false;\r\n _this.startAngle = -90;\r\n _this.endAngle = 270;\r\n _this.useChartAngles = true;\r\n _this.radius = percent(100);\r\n _this.isMeasured = false;\r\n _this.grid.template.location = 0;\r\n _this.labels.template.location = 0;\r\n _this.labels.template.radius = 15;\r\n _this.ticks.template.location = 0;\r\n _this.ticks.template.pixelPerfect = false;\r\n _this.tooltipLocation = 0;\r\n _this.line.strokeOpacity = 0;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n AxisRendererCircular.prototype.setAxis = function (axis) {\r\n var _this = this;\r\n _super.prototype.setAxis.call(this, axis);\r\n axis.isMeasured = false;\r\n // modify x and y so that tooltip would always be on circle\r\n var tooltip = axis.tooltip;\r\n tooltip.adapter.add(\"dx\", function (x, target) {\r\n var point = $utils.svgPointToSprite({ x: target.pixelX, y: target.pixelY }, _this);\r\n return _this.pixelRadius * Math.cos(Math.atan2(point.y, point.x)) - point.x;\r\n });\r\n tooltip.adapter.add(\"dy\", function (y, target) {\r\n var point = $utils.svgPointToSprite({ x: target.pixelX, y: target.pixelY }, _this);\r\n return _this.pixelRadius * Math.sin(Math.atan2(point.y, point.x)) - point.y;\r\n });\r\n };\r\n /**\r\n * Validates Axis renderer.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererCircular.prototype.validate = function () {\r\n // so that radius would be updated\r\n if (this.chart && this.chart.invalid) {\r\n this.chart.validate();\r\n }\r\n _super.prototype.validate.call(this);\r\n };\r\n Object.defineProperty(AxisRendererCircular.prototype, \"axisLength\", {\r\n /**\r\n * Returns actual length of the Axis, in pixels.\r\n *\r\n * @return Length (px)\r\n */\r\n get: function () {\r\n return 2 * Math.PI * this.pixelRadius;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererCircular.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 axis.\r\n *\r\n * Can be absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Outer radius\r\n */\r\n set: function (value) {\r\n if (this.setPercentProperty(\"radius\", value, false, false, 10, false)) {\r\n if (this.axis) {\r\n this.axis.invalidate();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererCircular.prototype, \"pixelRadius\", {\r\n /**\r\n * Outer radius in pixels.\r\n *\r\n * @return Outer radius (px)\r\n */\r\n get: function () {\r\n return $utils.relativeRadiusToValue(this.radius, this.pixelRadiusReal) || 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererCircular.prototype, \"innerRadius\", {\r\n /**\r\n * @return Inner radius\r\n */\r\n get: function () {\r\n var chart = this.chart;\r\n var innerRadius = this.getPropertyValue(\"innerRadius\");\r\n if (chart) {\r\n if (!$type.hasValue(innerRadius)) {\r\n innerRadius = chart.innerRadius;\r\n if (innerRadius instanceof Percent && chart) {\r\n innerRadius = percent(innerRadius.value * chart.innerRadiusModifyer * 100);\r\n }\r\n }\r\n else {\r\n if (innerRadius instanceof Percent && chart) {\r\n var mr = chart.mr;\r\n var value = innerRadius.value;\r\n value = Math.max(mr * value, mr - Math.min(chart.plotContainer.innerHeight, chart.plotContainer.innerWidth)) / mr;\r\n innerRadius = percent(value * 100);\r\n }\r\n }\r\n return innerRadius;\r\n }\r\n },\r\n /**\r\n * Inner radius of the axis.\r\n *\r\n * Can be absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Inner radius\r\n */\r\n set: function (value) {\r\n if (this.setPercentProperty(\"innerRadius\", value, false, false, 10, false)) {\r\n if (this.axis) {\r\n this.axis.invalidate();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererCircular.prototype, \"useChartAngles\", {\r\n /**\r\n * @return Use chart angles\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"useChartAngles\");\r\n },\r\n /**\r\n * Specifies if axis should use its own `startAngle` and `endAngle` or\r\n * inherit them from relative properties from chart.\r\n *\r\n * @default false\r\n * @param value Use chart's angles\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"useChartAngles\", value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererCircular.prototype, \"pixelInnerRadius\", {\r\n /**\r\n * Inner radius in pixels.\r\n *\r\n * @return Inner radius (px)\r\n */\r\n get: function () {\r\n return $utils.relativeRadiusToValue(this.innerRadius, this.pixelRadiusReal) || 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Converts relative position on axis to point coordinates.\r\n *\r\n * @param position Position (0-1)\r\n * @param position2 Position (0-1) Position on the second axis\r\n * @return Point\r\n */\r\n AxisRendererCircular.prototype.positionToPoint = function (position, position2) {\r\n if (!$type.isNumber(position2)) {\r\n position2 = 1;\r\n }\r\n var coordinate = this.positionToCoordinate(position);\r\n var angle = this.startAngle + (this.endAngle - this.startAngle) * coordinate / this.axisLength;\r\n var radius = this.pixelRadius;\r\n var innerRadius = this.pixelInnerRadius;\r\n if (this.axisRendererY) {\r\n var realRadius = $math.fitToRange(this.axisRendererY.positionToCoordinate(position2), 0, Infinity);\r\n if (realRadius == 0) {\r\n realRadius = 0.000001;\r\n }\r\n var point = { x: realRadius * $math.cos(angle), y: realRadius * $math.sin(angle) };\r\n return point;\r\n }\r\n return { x: $math.cos(angle) * innerRadius + (radius - innerRadius) * $math.cos(angle) * position2, y: $math.sin(angle) * innerRadius + (radius - innerRadius) * $math.sin(angle) * position2 };\r\n };\r\n /**\r\n * Converts relative position (0-1) on axis to angle in degrees (0-360).\r\n *\r\n * @param position Position (0-1)\r\n * @return Angle (0-360)\r\n */\r\n AxisRendererCircular.prototype.positionToAngle = function (position) {\r\n var axis = this.axis;\r\n var arc = (this.endAngle - this.startAngle) / (axis.end - axis.start);\r\n var angle;\r\n if (axis.renderer.inversed) {\r\n angle = this.startAngle + (axis.end - position) * arc;\r\n }\r\n else {\r\n angle = this.startAngle + (position - axis.start) * arc;\r\n }\r\n return $math.round(angle, 3);\r\n };\r\n /**\r\n * Converts angle on axis to relative position(0-1).\r\n *\r\n * @param angle Angle in degrees\r\n * @return Position (0-1)\r\n */\r\n AxisRendererCircular.prototype.angleToPosition = function (angle) {\r\n var axis = this.axis;\r\n var arc = (this.endAngle - this.startAngle) / (axis.end - axis.start);\r\n var position;\r\n if (axis.renderer.inversed) {\r\n position = axis.end - (angle - this.startAngle) / arc;\r\n }\r\n else {\r\n position = (angle - this.startAngle) / arc + axis.start;\r\n }\r\n return $math.round(position, 5);\r\n };\r\n /**\r\n * Updates and positions the axis line element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererCircular.prototype.updateAxisLine = function () {\r\n var radius = this.pixelRadius;\r\n var startAngle = this.startAngle;\r\n var endAngle = this.endAngle;\r\n var arc = $math.min(360, endAngle - startAngle);\r\n this.line.path = $path.moveTo({ x: radius * $math.cos(startAngle), y: radius * $math.sin(startAngle) }) + $path.arcTo(startAngle, arc, radius, radius);\r\n };\r\n /**\r\n * Updates and positions a grid element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param grid Grid element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererCircular.prototype.updateGridElement = function (grid, position, endPosition) {\r\n position = position + (endPosition - position) * grid.location;\r\n var point = this.positionToPoint(position);\r\n if ($type.isNumber(point.x) && $type.isNumber(point.y) && grid.element) {\r\n var angle = $math.DEGREES * Math.atan2(point.y, point.x);\r\n var radius = $utils.relativeRadiusToValue($type.hasValue(grid.radius) ? grid.radius : percent(100), this.pixelRadius);\r\n var gridInnerRadius = $utils.relativeRadiusToValue(grid.innerRadius, this.pixelRadius);\r\n grid.zIndex = 0;\r\n var innerRadius = $utils.relativeRadiusToValue($type.isNumber(gridInnerRadius) ? gridInnerRadius : this.innerRadius, this.pixelRadiusReal, true);\r\n if (!$type.isNumber(innerRadius)) {\r\n innerRadius = 0;\r\n }\r\n grid.path = $path.moveTo({ x: innerRadius * $math.cos(angle), y: innerRadius * $math.sin(angle) }) + $path.lineTo({ x: radius * $math.cos(angle), y: radius * $math.sin(angle) });\r\n }\r\n this.toggleVisibility(grid, position, 0, 1);\r\n };\r\n /**\r\n * Updates and positions a tick element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param tick Tick element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererCircular.prototype.updateTickElement = function (tick, position, endPosition) {\r\n position = position + (endPosition - position) * tick.location;\r\n var point = this.positionToPoint(position);\r\n if (tick.element) {\r\n var radius = this.pixelRadius;\r\n var angle = $math.DEGREES * Math.atan2(point.y, point.x);\r\n var tickLength = tick.length;\r\n if (tick.inside) {\r\n tickLength = -tickLength;\r\n }\r\n tick.zIndex = 1;\r\n tick.path = $path.moveTo({ x: radius * $math.cos(angle), y: radius * $math.sin(angle) }) + $path.lineTo({ x: (radius + tickLength) * $math.cos(angle), y: (radius + tickLength) * $math.sin(angle) });\r\n }\r\n this.toggleVisibility(tick, position, 0, 1);\r\n };\r\n /**\r\n * Updates and positions axis bullet.\r\n *\r\n * @ignore Exclude from docs\r\n * @param bullet AxisBullet element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererCircular.prototype.updateBullet = function (bullet, position, endPosition) {\r\n var location = 0.5;\r\n if (bullet instanceof AxisBullet) {\r\n location = bullet.location;\r\n }\r\n position = position + (endPosition - position) * location;\r\n var point = this.positionToPoint(position);\r\n var radius = this.pixelRadius;\r\n var angle = $math.DEGREES * Math.atan2(point.y, point.x);\r\n point = { x: radius * $math.cos(angle), y: radius * $math.sin(angle) };\r\n this.positionItem(bullet, point);\r\n this.toggleVisibility(bullet, position, 0, 1);\r\n };\r\n /**\r\n * Updates and positions a label element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param label Label element\r\n * @param position Starting position\r\n * @param endPosition Ending position\r\n */\r\n AxisRendererCircular.prototype.updateLabelElement = function (label, position, endPosition, location) {\r\n if (!$type.hasValue(location)) {\r\n location = label.location;\r\n }\r\n position = position + (endPosition - position) * location;\r\n label.fixPosition(this.positionToAngle(position), this.pixelRadius);\r\n label.zIndex = 2;\r\n this.toggleVisibility(label, position, this.minLabelPosition, this.maxLabelPosition);\r\n };\r\n /**\r\n * Checks if point is within bounds of a container.\r\n *\r\n * @ignore Exclude from docs\r\n * @param point Point coordinates\r\n * @return Fits?\r\n */\r\n AxisRendererCircular.prototype.fitsToBounds = function (point) {\r\n return true;\r\n };\r\n Object.defineProperty(AxisRendererCircular.prototype, \"startAngle\", {\r\n /**\r\n * @return Start angle\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startAngle\");\r\n },\r\n /**\r\n * Start angle of the axis in degrees (0-360).\r\n *\r\n * @param value Start angle\r\n */\r\n set: function (value) {\r\n // do not normalize angel here!\r\n if (this.setPropertyValue(\"startAngle\", value)) {\r\n this.invalidateAxisItems();\r\n if (this.axis) {\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererCircular.prototype, \"endAngle\", {\r\n /**\r\n * @return End angle\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endAngle\");\r\n },\r\n /**\r\n * End angle of the axis in degrees (0-360).\r\n *\r\n * @param value End angle\r\n */\r\n set: function (value) {\r\n // do not normalize angel here!\r\n if (this.setPropertyValue(\"endAngle\", value)) {\r\n this.invalidateAxisItems();\r\n if (this.axis) {\r\n this.axis.invalidateSeries();\r\n }\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * [getPositionRangePath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param startPosition Starting position\r\n * @param endPosition End position\r\n * @return SVG path\r\n */\r\n AxisRendererCircular.prototype.getPositionRangePath = function (startPosition, endPosition, radius, innerRadius, cornerRadius) {\r\n var path = \"\";\r\n if ($type.isNumber(startPosition) && $type.isNumber(endPosition)) {\r\n if (!$type.hasValue(radius)) {\r\n radius = this.radius;\r\n }\r\n startPosition = $math.max(startPosition, this.axis.start);\r\n endPosition = $math.min(endPosition, this.axis.end);\r\n if (endPosition < startPosition) {\r\n endPosition = startPosition;\r\n }\r\n var pixelRadius = $utils.relativeRadiusToValue(radius, this.pixelRadius);\r\n var pixelInnerRadius = $utils.relativeRadiusToValue(innerRadius, this.pixelRadius, true);\r\n var startAngle = this.positionToAngle(startPosition);\r\n var endAngle = this.positionToAngle(endPosition);\r\n var arc = endAngle - startAngle;\r\n path = $path.arc(startAngle, arc, pixelRadius, pixelInnerRadius, pixelRadius, cornerRadius);\r\n }\r\n return path;\r\n };\r\n /**\r\n * Returns a new grid element, suitable for this Axis Renderer type.\r\n *\r\n * @return Grid element\r\n */\r\n AxisRendererCircular.prototype.createGrid = function () {\r\n return new GridCircular();\r\n };\r\n /**\r\n * Returns a new fill element, suitable for this Axis Renderer type.\r\n *\r\n * @return Fill element\r\n */\r\n AxisRendererCircular.prototype.createFill = function (axis) {\r\n return new AxisFillCircular(axis);\r\n };\r\n /**\r\n * Returns a new label element, suitable for this Axis Renderer type.\r\n *\r\n * @return Label element\r\n */\r\n AxisRendererCircular.prototype.createLabel = function () {\r\n return new AxisLabelCircular();\r\n };\r\n /**\r\n * Converts a point at specific coordinates to a relative position (0-1)\r\n * on the axis.\r\n *\r\n * @param point Point\r\n * @return Position (0-1)\r\n */\r\n AxisRendererCircular.prototype.pointToPosition = function (point) {\r\n var angle = $math.fitAngleToRange($math.getAngle(point), this.startAngle, this.endAngle);\r\n return this.coordinateToPosition((angle - this.startAngle) / 360 * this.axisLength);\r\n };\r\n return AxisRendererCircular;\r\n}(AxisRenderer));\r\nexport { AxisRendererCircular };\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[\"AxisRendererCircular\"] = AxisRendererCircular;\r\n//# sourceMappingURL=AxisRendererCircular.js.map","/**\r\n * Module, defining Axis Renderer for radial axes.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AxisRendererY } from \"./AxisRendererY\";\r\nimport { CategoryAxis } from \"./CategoryAxis\";\r\nimport { WavedCircle } from \"../../core/elements/WavedCircle\";\r\nimport { MutableValueDisposer } from \"../../core/utils/Disposer\";\r\nimport { Percent, percent } from \"../../core/utils/Percent\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { AxisBullet } from \"./AxisBullet\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A renderer for radial axis.\r\n */\r\nvar AxisRendererRadial = /** @class */ (function (_super) {\r\n __extends(AxisRendererRadial, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param axis Related axis\r\n */\r\n function AxisRendererRadial() {\r\n var _this = \r\n // Init\r\n _super.call(this) || this;\r\n /**\r\n * A related chart.\r\n */\r\n _this._chart = new MutableValueDisposer();\r\n /**\r\n * @ignore\r\n */\r\n _this.pixelRadiusReal = 0;\r\n _this.className = \"AxisRendererRadial\";\r\n _this.isMeasured = false;\r\n _this.startAngle = -90;\r\n _this.endAngle = 270;\r\n _this.minGridDistance = 30;\r\n _this.gridType = \"circles\";\r\n _this.axisAngle = -90;\r\n _this.isMeasured = false;\r\n _this.layout = \"none\";\r\n _this.radius = percent(100);\r\n _this.line.strokeOpacity = 0;\r\n _this.labels.template.horizontalCenter = \"middle\";\r\n _this._disposers.push(_this._chart);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Validates Axis renderer.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererRadial.prototype.validate = function () {\r\n // so that radius would be updated\r\n if (this.chart && this.chart.invalid) {\r\n this.chart.validate();\r\n }\r\n _super.prototype.validate.call(this);\r\n };\r\n Object.defineProperty(AxisRendererRadial.prototype, \"axisLength\", {\r\n /**\r\n * Returns actual length of the Axis, in pixels.\r\n *\r\n * @return Length (px)\r\n */\r\n get: function () {\r\n return this.pixelRadius - this.pixelInnerRadius;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererRadial.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 axis.\r\n *\r\n * Can be absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Outer radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"radius\", value, false, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererRadial.prototype, \"pixelRadius\", {\r\n /**\r\n * Outer radius in pixels.\r\n *\r\n * @return Outer radius (px)\r\n */\r\n get: function () {\r\n return $utils.relativeRadiusToValue(this.radius, this.pixelRadiusReal) || 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererRadial.prototype, \"innerRadius\", {\r\n /**\r\n * @return Inner radius\r\n */\r\n get: function () {\r\n var chart = this.chart;\r\n var innerRadius = this.getPropertyValue(\"innerRadius\");\r\n if (chart) {\r\n if (!$type.hasValue(innerRadius)) {\r\n innerRadius = chart.innerRadius;\r\n if (innerRadius instanceof Percent && chart) {\r\n innerRadius = percent(innerRadius.value * chart.innerRadiusModifyer * 100);\r\n }\r\n }\r\n else {\r\n if (innerRadius instanceof Percent && chart) {\r\n var mr = chart.mr;\r\n var value = innerRadius.value;\r\n value = Math.max(mr * value, mr - Math.min(chart.plotContainer.innerHeight, chart.plotContainer.innerWidth)) / mr;\r\n innerRadius = percent(value * 100);\r\n }\r\n }\r\n }\r\n return innerRadius;\r\n },\r\n /**\r\n * Inner radius of the axis.\r\n *\r\n * Can be absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Outer radius\r\n */\r\n set: function (value) {\r\n this.setPercentProperty(\"innerRadius\", value, false, false, 10, false);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererRadial.prototype, \"pixelInnerRadius\", {\r\n /**\r\n * Inner radius in pixels.\r\n *\r\n * @return Inner radius (px)\r\n */\r\n get: function () {\r\n return $utils.relativeRadiusToValue(this.innerRadius, this.pixelRadiusReal) || 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Converts relative position on axis to point coordinates.\r\n *\r\n * @param position Position (0-1)\r\n * @param position2 Position (0-1) Position on the second axis\r\n * @return Point\r\n */\r\n AxisRendererRadial.prototype.positionToPoint = function (position, position2) {\r\n var radius = $math.fitToRange(this.positionToCoordinate(position), 0, Infinity);\r\n return { x: radius * $math.cos(this.axisAngle), y: radius * $math.sin(this.axisAngle) };\r\n };\r\n /**\r\n * Updates and positions the axis line element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererRadial.prototype.updateAxisLine = function () {\r\n this.line.path = $path.moveTo({ x: this.pixelInnerRadius * $math.cos(this.axisAngle), y: this.pixelInnerRadius * $math.sin(this.axisAngle) }) + $path.lineTo({ x: this.pixelRadius * $math.cos(this.axisAngle), y: this.pixelRadius * $math.sin(this.axisAngle) });\r\n var title = this.axis.title;\r\n title.valign = \"none\";\r\n title.horizontalCenter = \"middle\";\r\n title.verticalCenter = \"bottom\";\r\n title.y = -this.axisLength / 2;\r\n var rotation = 90;\r\n if (this.opposite) {\r\n if (!this.inside) {\r\n rotation = -90;\r\n }\r\n }\r\n else {\r\n if (this.inside) {\r\n rotation = -90;\r\n }\r\n }\r\n title.rotation = rotation;\r\n };\r\n /**\r\n * Updates and positions a grid element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param grid Grid element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererRadial.prototype.updateGridElement = function (grid, position, endPosition) {\r\n position = position + (endPosition - position) * grid.location;\r\n var point = this.positionToPoint(position);\r\n var path;\r\n var radius = $math.getDistance(point);\r\n var startAngle = this.startAngle;\r\n var endAngle = this.endAngle;\r\n var chart = this.chart;\r\n if ($type.isNumber(radius) && grid.element && chart) {\r\n var xAxis = chart.xAxes.getIndex(0);\r\n var count = 0;\r\n var series = chart.series.getIndex(0);\r\n if (series) {\r\n count = series.dataItems.length;\r\n }\r\n // polygons are only possible if x axis is present\r\n // @todo: review this\r\n if (this.gridType == \"polygons\" && count > 0 && series && xAxis && xAxis instanceof CategoryAxis) {\r\n var gridLocation = xAxis.renderer.grid.template.location;\r\n var angle = xAxis.getAngle(series.dataItems.getIndex(0), \"categoryX\", gridLocation);\r\n path = $path.moveTo({ x: radius * $math.cos(angle), y: radius * $math.sin(angle) });\r\n for (var i = 1; i < count; i++) {\r\n angle = xAxis.getAngle(series.dataItems.getIndex(i), \"categoryX\", gridLocation);\r\n path += $path.lineTo({ x: radius * $math.cos(angle), y: radius * $math.sin(angle) });\r\n }\r\n angle = xAxis.getAngle(series.dataItems.getIndex(count - 1), \"categoryX\", xAxis.renderer.cellEndLocation);\r\n path += $path.lineTo({ x: radius * $math.cos(angle), y: radius * $math.sin(angle) });\r\n }\r\n else {\r\n path = $path.moveTo({ x: radius * $math.cos(startAngle), y: radius * $math.sin(startAngle) }) + $path.arcTo(startAngle, endAngle - startAngle, radius, radius);\r\n }\r\n grid.path = path;\r\n }\r\n this.toggleVisibility(grid, position, 0, 1);\r\n };\r\n /**\r\n * Updates and positions a label element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param label Label element\r\n * @param position Starting position\r\n * @param endPosition Ending position\r\n */\r\n AxisRendererRadial.prototype.updateLabelElement = function (label, position, endPosition, location) {\r\n if (!$type.hasValue(location)) {\r\n location = label.location;\r\n }\r\n position = position + (endPosition - position) * location;\r\n var point = this.positionToPoint(position);\r\n this.positionItem(label, point);\r\n this.toggleVisibility(label, position, this.minLabelPosition, this.maxLabelPosition);\r\n };\r\n /**\r\n * Updates and positions the base grid element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererRadial.prototype.updateBaseGridElement = function () {\r\n // @todo? zero grid for radar chart, is it needed?\r\n };\r\n /**\r\n * Checks if point is within bounds of a container.\r\n *\r\n * @ignore Exclude from docs\r\n * @param point Point coordinates\r\n * @return Fits?\r\n */\r\n AxisRendererRadial.prototype.fitsToBounds = function (point) {\r\n return true;\r\n };\r\n Object.defineProperty(AxisRendererRadial.prototype, \"startAngle\", {\r\n /**\r\n * @return Start angle\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"startAngle\");\r\n },\r\n /**\r\n * Start angle of the axis in degrees. (0-360)\r\n *\r\n * @param value Start angle\r\n */\r\n set: function (value) {\r\n // do not normalize angle here!\r\n if (this.setPropertyValue(\"startAngle\", value)) {\r\n this.invalidateAxisItems();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererRadial.prototype, \"endAngle\", {\r\n /**\r\n * @return End angle\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"endAngle\");\r\n },\r\n /**\r\n * End angle of the axis in degrees. (0-360)\r\n *\r\n * @param value End angle\r\n */\r\n set: function (value) {\r\n // do not normalize angel here!\r\n if (this.setPropertyValue(\"endAngle\", value)) {\r\n this.invalidateAxisItems();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererRadial.prototype, \"axisAngle\", {\r\n /**\r\n * @return Axis angle\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"axisAngle\");\r\n //return $math.fitToRange(this.getPropertyValue(\"axisAngle\"), this.startAngle, this.endAngle); // no good, as less flexible\r\n },\r\n /**\r\n * Angle of the radial axis in degrees. (0-360)\r\n *\r\n * @param value Axis angle\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"axisAngle\", $math.normalizeAngle(value));\r\n this.invalidateAxisItems();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisRendererRadial.prototype, \"gridType\", {\r\n /**\r\n * Grid type\r\n */\r\n get: function () {\r\n var axis = this.chart.xAxes.getIndex(0);\r\n if (axis instanceof CategoryAxis) {\r\n return this.getPropertyValue(\"gridType\");\r\n }\r\n else {\r\n return \"circles\";\r\n }\r\n },\r\n // polygons grid type is only possible under these conditions: xAxis is available and it is CategoryAxis, also at least one series should be added to a chart\r\n /**\r\n * Grid type for radial axis.\r\n *\r\n * A grid on radia axis can either be perfect circles (\"circles\"), or\r\n * straight lines (\"polygons\").\r\n *\r\n * @default \"circles\"\r\n * @param value Grid type\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"gridType\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * [getPositionRangePath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param startPosition Starting position\r\n * @param endPosition End position\r\n * @return SVG path\r\n */\r\n AxisRendererRadial.prototype.getPositionRangePath = function (startPosition, endPosition) {\r\n var pixelInnerRadius = this.pixelInnerRadius;\r\n var pixelRadius = this.axisLength + pixelInnerRadius;\r\n var innerRadius = $math.fitToRange(this.positionToCoordinate(startPosition), pixelInnerRadius, pixelRadius);\r\n var radius = $math.fitToRange(this.positionToCoordinate(endPosition), pixelInnerRadius, pixelRadius);\r\n //let angleCount: number = this.angleCount;\r\n var startAngle = this.startAngle;\r\n var endAngle = this.endAngle;\r\n var arc = endAngle - startAngle;\r\n var path;\r\n var chart = this.chart;\r\n var xAxis = chart.xAxes.getIndex(0);\r\n var series = chart.series.getIndex(0);\r\n var count = 0;\r\n if (series) {\r\n count = series.dataItems.length;\r\n }\r\n // polygons are only possible if x axis is present\r\n // @todo: review this\r\n if (this.gridType == \"polygons\" && count > 0 && series && xAxis && xAxis instanceof CategoryAxis) {\r\n var gridLocation = xAxis.renderer.grid.template.location;\r\n var angle = xAxis.getAngle(series.dataItems.getIndex(0), \"categoryX\", gridLocation);\r\n path = $path.moveTo({ x: radius * $math.cos(angle), y: radius * $math.sin(angle) });\r\n for (var i = 1; i < count; i++) {\r\n angle = xAxis.getAngle(series.dataItems.getIndex(i), \"categoryX\", gridLocation);\r\n path += $path.lineTo({ x: radius * $math.cos(angle), y: radius * $math.sin(angle) });\r\n }\r\n angle = xAxis.getAngle(series.dataItems.getIndex(count - 1), \"categoryX\", xAxis.renderer.cellEndLocation);\r\n path += $path.lineTo({ x: radius * $math.cos(angle), y: radius * $math.sin(angle) });\r\n path += $path.moveTo({ x: innerRadius * $math.cos(angle), y: innerRadius * $math.sin(angle) });\r\n for (var i = count - 1; i >= 0; i--) {\r\n angle = xAxis.getAngle(series.dataItems.getIndex(i), \"categoryX\", gridLocation);\r\n path += $path.lineTo({ x: innerRadius * $math.cos(angle), y: innerRadius * $math.sin(angle) });\r\n }\r\n }\r\n else {\r\n path = $path.arc(startAngle, arc, radius, innerRadius);\r\n }\r\n return path;\r\n };\r\n /**\r\n * Updates and positions an axis break element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axisBreak Break element\r\n */\r\n AxisRendererRadial.prototype.updateBreakElement = function (axisBreak) {\r\n // @todo: someday we might need axis break when gridType is polygons\r\n var startLine = axisBreak.startLine;\r\n var endLine = axisBreak.endLine;\r\n var fillShape = axisBreak.fillShape;\r\n var startPoint = axisBreak.startPoint;\r\n var endPoint = axisBreak.endPoint;\r\n startLine.radius = Math.abs(startPoint.y);\r\n endLine.radius = Math.abs(endPoint.y);\r\n fillShape.radius = Math.abs(endPoint.y);\r\n fillShape.innerRadius = Math.abs(startPoint.y);\r\n };\r\n /**\r\n * Creates visual elements for and axis break.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axisBreak Axis break\r\n */\r\n AxisRendererRadial.prototype.createBreakSprites = function (axisBreak) {\r\n axisBreak.startLine = new WavedCircle();\r\n axisBreak.endLine = new WavedCircle();\r\n axisBreak.fillShape = new WavedCircle();\r\n };\r\n /**\r\n * Updates some of the Axis tooltip's visual properties, related to\r\n * rendering of the Axis.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererRadial.prototype.updateTooltip = function () {\r\n var axis = this.axis;\r\n if (axis) {\r\n var bigNum = 4000;\r\n var bbx = -4000;\r\n var bby = -4000;\r\n var bbw = bigNum * 2;\r\n var bbh = bigNum * 2;\r\n var axisAngle = this.axisAngle;\r\n if (axisAngle < 0) {\r\n axisAngle += 360;\r\n }\r\n var tooltipOrientation = \"vertical\";\r\n if ((axisAngle > 45 && axisAngle < 135) || (axisAngle > 225 && axisAngle < 315)) {\r\n tooltipOrientation = \"horizontal\";\r\n }\r\n this.axis.updateTooltip(tooltipOrientation, { x: bbx, y: bby, width: bbw, height: bbh });\r\n }\r\n };\r\n /**\r\n * Updates and positions a tick element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param tick Tick element\r\n * @param position Position\r\n */\r\n AxisRendererRadial.prototype.updateTickElement = function (tick, position, endPosition) {\r\n position = position + (endPosition - position) * tick.location;\r\n var point = this.positionToPoint(position);\r\n if (tick.element) {\r\n var angle = $math.normalizeAngle(this.axisAngle + 90);\r\n if (angle / 90 != Math.round(angle / 90)) {\r\n tick.pixelPerfect = false;\r\n }\r\n else {\r\n tick.pixelPerfect = true;\r\n }\r\n var tickLength = -tick.length;\r\n if (tick.inside) {\r\n tickLength *= -1;\r\n }\r\n tick.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: tickLength * $math.cos(angle), y: tickLength * $math.sin(angle) });\r\n }\r\n this.positionItem(tick, point);\r\n this.toggleVisibility(tick, position, 0, 1);\r\n };\r\n /**\r\n * Updates and positions axis bullet.\r\n *\r\n * @ignore Exclude from docs\r\n * @param bullet AxisBullet element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererRadial.prototype.updateBullet = function (bullet, position, endPosition) {\r\n var location = 0.5;\r\n if (bullet instanceof AxisBullet) {\r\n location = bullet.location;\r\n }\r\n position = position + (endPosition - position) * location;\r\n var point = this.positionToPoint(position);\r\n this.positionItem(bullet, point);\r\n this.toggleVisibility(bullet, position, 0, 1);\r\n };\r\n /**\r\n * Converts a position on the axis to a coordinate in pixels.\r\n *\r\n * @ignore Exclude from docs\r\n * @param position Position (0-1)\r\n * @return Coordinate (px)\r\n */\r\n AxisRendererRadial.prototype.positionToCoordinate = function (position) {\r\n var coordinate;\r\n var axis = this.axis;\r\n var axisFullLength = axis.axisFullLength;\r\n var innerRadius = this.pixelInnerRadius;\r\n if (axis.renderer.inversed) {\r\n coordinate = (axis.end - position) * axisFullLength + innerRadius;\r\n }\r\n else {\r\n coordinate = (position - axis.start) * axisFullLength + innerRadius;\r\n }\r\n return $math.round(coordinate, 1);\r\n };\r\n /**\r\n * Converts a point at specific coordinates to a relative position (0-1)\r\n * on the axis.\r\n *\r\n * @param point Point\r\n * @return Position (0-1)\r\n */\r\n AxisRendererRadial.prototype.pointToPosition = function (point) {\r\n var coordinate = ($math.getDistance(point) - this.pixelInnerRadius);\r\n return this.coordinateToPosition(coordinate);\r\n };\r\n Object.defineProperty(AxisRendererRadial.prototype, \"chart\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Chart\r\n */\r\n get: function () {\r\n return this._chart.get();\r\n },\r\n /**\r\n * A chart, associated with the Axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Chart\r\n */\r\n set: function (value) {\r\n this._chart.set(value, null);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return AxisRendererRadial;\r\n}(AxisRendererY));\r\nexport { AxisRendererRadial };\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[\"AxisRendererRadial\"] = AxisRendererRadial;\r\n//# sourceMappingURL=AxisRendererRadial.js.map","/**\r\n * Module, defining Axis Renderer for vertical axes.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AxisRenderer } from \"./AxisRenderer\";\r\nimport { AxisBullet } from \"./AxisBullet\";\r\nimport { WavedLine } from \"../../core/elements/WavedLine\";\r\nimport { WavedRectangle } from \"../../core/elements/WavedRectangle\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { percent, Percent } from \"../../core/utils/Percent\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { defaultRules, ResponsiveBreakpoints } from \"../../core/utils/Responsive\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A renderer for horizontal axis.\r\n *\r\n * @see {@link IAxisRendererEvents} for a list of available events\r\n * @see {@link IAxisRendererAdapters} for a list of available Adapters\r\n */\r\nvar AxisRendererX = /** @class */ (function (_super) {\r\n __extends(AxisRendererX, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param axis Related axis\r\n */\r\n function AxisRendererX() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"AxisRendererX\";\r\n _this.minGridDistance = 120;\r\n _this.opposite = false;\r\n _this.rotation = 0;\r\n _this.width = percent(100);\r\n _this.labels.template.horizontalCenter = \"middle\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n AxisRendererX.prototype.setAxis = function (axis) {\r\n _super.prototype.setAxis.call(this, axis);\r\n axis.layout = \"vertical\";\r\n };\r\n /**\r\n * @ignore\r\n */\r\n AxisRendererX.prototype.updateGridContainer = function () {\r\n var axis = this.axis;\r\n if (axis) {\r\n var gridContainer = this.gridContainer;\r\n gridContainer.x = axis.pixelX;\r\n gridContainer.width = axis.axisLength;\r\n }\r\n };\r\n /**\r\n * Called when rendered is attached to an Axis, as well as a property of\r\n * Axis that might affect the appearance is updated.\r\n *\r\n * E.g. `axis.opposite`, `axis.inside`, etc.\r\n *\r\n * This method is called **before** draw, so that any related setting\r\n * changed in this method can be changed.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererX.prototype.processRenderer = function () {\r\n _super.prototype.processRenderer.call(this);\r\n // can not do this in init, as axis is set later\r\n var axis = this.axis;\r\n if (axis) {\r\n if (!(axis.width instanceof Percent)) {\r\n axis.width = percent(100);\r\n }\r\n // @todo Is thi sneeded?\r\n $utils.used(this.line);\r\n var title = axis.title;\r\n title.rotation = 0;\r\n title.align = \"center\";\r\n if (this.opposite) {\r\n this.line.toFront();\r\n title.toBack();\r\n }\r\n else {\r\n title.toFront();\r\n this.toBack();\r\n this.line.toBack();\r\n }\r\n }\r\n };\r\n /**\r\n * Updates some of the Axis tooltip's visual properties, related to\r\n * rendering of the Axis.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererX.prototype.updateTooltip = function () {\r\n var axis = this.axis;\r\n if (axis) {\r\n var bigNum = 1000;\r\n var bbx = this.line.pixelX;\r\n var bby = this.line.pixelY;\r\n var bbw = this.axisLength;\r\n var bbh = bigNum;\r\n // top\r\n if (this.opposite) {\r\n if (!this.inside) {\r\n bby = -bigNum;\r\n bbh = bigNum;\r\n }\r\n }\r\n // bottom\r\n else {\r\n if (this.inside) {\r\n bby = -bigNum;\r\n bbh = bigNum;\r\n }\r\n }\r\n this.axis.updateTooltip(\"vertical\", { x: bbx, y: bby, width: bbw, height: bbh });\r\n }\r\n };\r\n /**\r\n * Updates and positions a label element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param label Label element\r\n * @param position Starting position\r\n * @param endPosition Ending position\r\n */\r\n AxisRendererX.prototype.updateLabelElement = function (label, position, endPosition, location) {\r\n if (!$type.hasValue(location)) {\r\n location = label.location;\r\n }\r\n position = position + (endPosition - position) * location;\r\n var point = this.positionToPoint(position);\r\n label.isMeasured = !label.inside;\r\n var deltaY = 0;\r\n var verticalCenter;\r\n var maxHeight = this.gridContainer.maxHeight;\r\n if (this.opposite) {\r\n if (label.inside) {\r\n verticalCenter = \"top\";\r\n if (label.valign == \"bottom\") {\r\n deltaY = maxHeight;\r\n verticalCenter = \"bottom\";\r\n }\r\n if (label.valign == \"middle\") {\r\n deltaY = maxHeight / 2;\r\n verticalCenter = \"middle\";\r\n }\r\n }\r\n else {\r\n verticalCenter = \"bottom\";\r\n }\r\n point.y = deltaY;\r\n }\r\n else {\r\n if (label.inside) {\r\n verticalCenter = \"bottom\";\r\n if (label.valign == \"top\") {\r\n deltaY = -maxHeight;\r\n verticalCenter = \"top\";\r\n }\r\n if (label.valign == \"middle\") {\r\n deltaY = -maxHeight / 2;\r\n verticalCenter = \"middle\";\r\n }\r\n }\r\n else {\r\n verticalCenter = \"top\";\r\n }\r\n point.y += deltaY;\r\n }\r\n if (label.rotation == 0) {\r\n // Apply fuzzy logic to verticalCenter only if labels are not rotated\r\n label.verticalCenter = verticalCenter;\r\n }\r\n this.positionItem(label, point);\r\n this.toggleVisibility(label, position, this.minLabelPosition, this.maxLabelPosition);\r\n };\r\n Object.defineProperty(AxisRendererX.prototype, \"axisLength\", {\r\n /**\r\n * Returns actual length of the Axis, in pixels.\r\n *\r\n * @return Length (px)\r\n */\r\n get: function () {\r\n var axis = this.axis;\r\n return (axis.measuredWidth - axis.pixelPaddingRight - axis.pixelPaddingLeft) || 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Converts relative position on axis to point coordinates.\r\n *\r\n * @param position Position (0-1)\r\n * @param position2 Position (0-1) Position on the second axis\r\n * @return Point\r\n */\r\n AxisRendererX.prototype.positionToPoint = function (position, position2) {\r\n return { x: this.positionToCoordinate(position), y: 0 };\r\n };\r\n /**\r\n * Converts a point at specific coordinates to a relative position (0-1)\r\n * on the axis.\r\n *\r\n * @param point Point\r\n * @return Position (0-1)\r\n */\r\n AxisRendererX.prototype.pointToPosition = function (point) {\r\n return this.coordinateToPosition(point.x, point.y);\r\n };\r\n /**\r\n * [getPositionRangePath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param startPosition Starting position\r\n * @param endPosition End position\r\n * @return SVG path\r\n */\r\n AxisRendererX.prototype.getPositionRangePath = function (startPosition, endPosition) {\r\n var x1 = $math.fitToRange(this.positionToCoordinate(startPosition), 0, this.axisLength);\r\n var x2 = $math.fitToRange(this.positionToCoordinate(endPosition), 0, this.axisLength);\r\n var w = Math.abs(x2 - x1);\r\n var h = this.getHeight();\r\n var x = Math.min(x1, x2);\r\n var y = 0;\r\n return $path.rectToPath({\r\n x: x,\r\n y: y,\r\n width: w,\r\n height: h\r\n }, true);\r\n };\r\n /**\r\n * Updates and positions an axis break element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axisBreak Break element\r\n */\r\n AxisRendererX.prototype.updateBreakElement = function (axisBreak) {\r\n _super.prototype.updateBreakElement.call(this, axisBreak);\r\n var startLine = axisBreak.startLine;\r\n var endLine = axisBreak.endLine;\r\n var fillShape = axisBreak.fillShape;\r\n var startPoint = axisBreak.startPoint;\r\n var endPoint = axisBreak.endPoint;\r\n var y1 = axisBreak.pixelMarginLeft;\r\n var y2 = this.getHeight() - axisBreak.pixelMarginTop - axisBreak.pixelMarginBottom;\r\n startPoint.x = $math.fitToRange(startPoint.x, -1, this.axisLength + 1);\r\n endPoint.x = $math.fitToRange(endPoint.x, -1, this.axisLength + 1);\r\n if (startPoint.x == endPoint.x && (startPoint.x < 0 || startPoint.x > this.axisLength)) {\r\n axisBreak.fillShape.__disabled = true;\r\n }\r\n else {\r\n axisBreak.fillShape.__disabled = false;\r\n }\r\n startLine.y = y1;\r\n startLine.width = 0;\r\n startLine.height = y2;\r\n endLine.y = y1;\r\n endLine.width = 0;\r\n endLine.height = y2;\r\n fillShape.height = y2;\r\n fillShape.width = Math.abs(endPoint.x - startPoint.x);\r\n fillShape.y = y1;\r\n fillShape.x = startPoint.x;\r\n };\r\n /**\r\n * Updates and positions a grid element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param grid Grid element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererX.prototype.updateGridElement = function (grid, position, endPosition) {\r\n position = position + (endPosition - position) * grid.location;\r\n var point = this.positionToPoint(position);\r\n //point.x = $utils.spritePointToSprite({x:point.x, y:0}, this, this.gridContainer).x;\r\n grid.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: 0, y: this.getHeight() });\r\n this.positionItem(grid, point);\r\n this.toggleVisibility(grid, position, 0, 1);\r\n };\r\n /**\r\n * Updates and positions a tick element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param tick Tick element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererX.prototype.updateTickElement = function (tick, position, endPosition) {\r\n position = position + (endPosition - position) * tick.location;\r\n var point = this.positionToPoint(position);\r\n var tickLength = tick.length;\r\n point.y = $utils.spritePointToSprite({ x: 0, y: this.line.pixelY }, this.line.parent, this.gridContainer).y;\r\n if (this.opposite) {\r\n tickLength *= (tick.inside ? 1 : -1);\r\n }\r\n else {\r\n tickLength *= (tick.inside ? -1 : 1);\r\n }\r\n tick.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: 0, y: tickLength });\r\n this.positionItem(tick, point);\r\n this.toggleVisibility(tick, position, 0, 1);\r\n };\r\n /**\r\n * Updates and positions the axis line element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererX.prototype.updateAxisLine = function () {\r\n this.line.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: this.axisLength, y: 0 });\r\n };\r\n /**\r\n * Updates and positions the base grid element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererX.prototype.updateBaseGridElement = function () {\r\n _super.prototype.updateBaseGridElement.call(this);\r\n var axis = this.axis;\r\n var h = this.getHeight();\r\n var w = this.axisLength;\r\n var baseGrid = this.baseGrid;\r\n var x = axis.basePoint.x;\r\n if (x < -0.2 || x > w + 0.2) {\r\n baseGrid.hide(0);\r\n }\r\n else {\r\n var y = $utils.spritePointToSprite({ x: 0, y: 0 }, this.gridContainer, baseGrid.parent).y;\r\n baseGrid.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: 0, y: h });\r\n baseGrid.moveTo({ x: x, y: y });\r\n baseGrid.show(0);\r\n }\r\n };\r\n /**\r\n * Creates visual elements for and axis break.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axisBreak Axis break\r\n */\r\n AxisRendererX.prototype.createBreakSprites = function (axisBreak) {\r\n axisBreak.startLine = new WavedLine();\r\n axisBreak.endLine = new WavedLine();\r\n var wavedRectangle = new WavedRectangle();\r\n wavedRectangle.setWavedSides(false, true, false, true);\r\n axisBreak.fillShape = wavedRectangle;\r\n };\r\n /**\r\n * @ignore\r\n */\r\n AxisRendererX.prototype.toAxisPosition = function (value) {\r\n var inversedPosition = value;\r\n var axis = this.axis;\r\n if (axis) {\r\n var relativePositionSprite = axis.relativePositionSprite;\r\n var x = axis.pixelX;\r\n if (relativePositionSprite) {\r\n x = $utils.spritePointToSprite({ x: this.pixelX, y: 0 }, this.parent, relativePositionSprite).x;\r\n }\r\n else {\r\n relativePositionSprite = axis.parent;\r\n }\r\n if (relativePositionSprite) {\r\n var relativeX = x / relativePositionSprite.innerWidth;\r\n var relativeWidth = axis.axisLength / relativePositionSprite.innerWidth;\r\n return (inversedPosition - relativeX) / relativeWidth;\r\n }\r\n }\r\n return value;\r\n };\r\n /**\r\n * Updates and positions axis bullets.\r\n *\r\n * @ignore Exclude from docs\r\n * @param bullet AxisBullet element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererX.prototype.updateBullet = function (bullet, position, endPosition) {\r\n var location = 0.5;\r\n if (bullet instanceof AxisBullet) {\r\n location = bullet.location;\r\n }\r\n position = position + (endPosition - position) * location;\r\n var point = this.positionToPoint(position);\r\n point.y = $utils.spritePointToSprite({ x: 0, y: this.line.pixelY }, this.line.parent, this.gridContainer).y;\r\n this.positionItem(bullet, point);\r\n this.toggleVisibility(bullet, position, 0, 1);\r\n };\r\n return AxisRendererX;\r\n}(AxisRenderer));\r\nexport { AxisRendererX };\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[\"AxisRendererX\"] = AxisRendererX;\r\n/**\r\n * Add default responsive rules\r\n */\r\n/**\r\n * Put labels inside plot area.\r\n * Disable first and last labels.\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.heightXS,\r\n state: function (target, stateId) {\r\n if (target instanceof AxisRendererX) {\r\n var state = target.states.create(stateId);\r\n state.properties.inside = true;\r\n state.properties.maxLabelPosition = 0.9;\r\n state.properties.minLabelPosition = 0.1;\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n/**\r\n * Disable labels altogather on very small charts\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.heightXXS,\r\n state: function (target, stateId) {\r\n if (target instanceof AxisRendererX) {\r\n var state = target.states.create(stateId);\r\n state.properties.disabled = true;\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n//# sourceMappingURL=AxisRendererX.js.map","/**\r\n * Module, defining Axis Renderer for horizontal 3D axes.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AxisRendererX } from \"../axes/AxisRendererX\";\r\nimport { MutableValueDisposer } from \"../../core/utils/Disposer\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Renderer for horizontal 3D axis.\r\n *\r\n * @see {@link IAxisRendererX3DEvents} for a list of available events\r\n * @see {@link IAxisRendererX3DAdapters} for a list of available Adapters\r\n */\r\nvar AxisRendererX3D = /** @class */ (function (_super) {\r\n __extends(AxisRendererX3D, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param axis Related axis\r\n */\r\n function AxisRendererX3D() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * A related chart.\r\n *\r\n * @todo Description\r\n */\r\n _this._chart = new MutableValueDisposer();\r\n _this.className = \"AxisRendererX3D\";\r\n _this._disposers.push(_this._chart);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Updates and positions a grid element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param grid Grid element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererX3D.prototype.updateGridElement = function (grid, position, endPosition) {\r\n position = position + (endPosition - position) * grid.location;\r\n var point = this.positionToPoint(position);\r\n if (grid.element) {\r\n var dx = this.chart.dx3D || 0;\r\n var dy = this.chart.dy3D || 0;\r\n var h = this.getHeight();\r\n grid.path = $path.moveTo({ x: dx, y: dy }) + $path.lineTo({ x: dx, y: h + dy }) + $path.lineTo({ x: 0, y: h });\r\n }\r\n this.positionItem(grid, point);\r\n this.toggleVisibility(grid, position, 0, 1);\r\n };\r\n /**\r\n * Updates and positions the base grid element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererX3D.prototype.updateBaseGridElement = function () {\r\n _super.prototype.updateBaseGridElement.call(this);\r\n var h = this.getHeight();\r\n var dx = this.chart.dx3D || 0;\r\n var dy = this.chart.dy3D || 0;\r\n this.baseGrid.path = $path.moveTo({ x: dx, y: dy }) + $path.lineTo({ x: 0, y: 0 }) + $path.lineTo({ x: 0, y: h });\r\n };\r\n Object.defineProperty(AxisRendererX3D.prototype, \"chart\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Chart\r\n */\r\n get: function () {\r\n return this._chart.get();\r\n },\r\n /**\r\n * Chart, associated with the Axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Chart\r\n */\r\n set: function (chart) {\r\n if (chart) {\r\n this._chart.set(chart, chart.events.on(\"propertychanged\", this.handle3DChanged, this, false));\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Invoked when 3D-related settings change, like depth or angle.\r\n *\r\n * @param event Event\r\n */\r\n AxisRendererX3D.prototype.handle3DChanged = function (event) {\r\n if (event.property == \"depth\" || event.property == \"angle\") {\r\n this.invalidate();\r\n }\r\n };\r\n return AxisRendererX3D;\r\n}(AxisRendererX));\r\nexport { AxisRendererX3D };\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[\"AxisRendererX3D\"] = AxisRendererX3D;\r\n//# sourceMappingURL=AxisRendererX3D.js.map","/**\r\n * Module, defining Axis Renderer for vertical axes.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AxisRenderer } from \"./AxisRenderer\";\r\nimport { WavedLine } from \"../../core/elements/WavedLine\";\r\nimport { WavedRectangle } from \"../../core/elements/WavedRectangle\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { percent, Percent } from \"../../core/utils/Percent\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { defaultRules, ResponsiveBreakpoints } from \"../../core/utils/Responsive\";\r\nimport { AxisBullet } from \"./AxisBullet\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * A renderer for vertical axis.\r\n *\r\n * @see {@link IAxisRendererYEvents} for a list of available events\r\n * @see {@link IAxisRendererYAdapters} for a list of available Adapters\r\n */\r\nvar AxisRendererY = /** @class */ (function (_super) {\r\n __extends(AxisRendererY, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param axis Related axis\r\n */\r\n function AxisRendererY() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"AxisRendererY\";\r\n _this.minGridDistance = 40;\r\n _this.opposite = false;\r\n _this.height = percent(100);\r\n _this.labels.template.verticalCenter = \"middle\";\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * @ignore\r\n */\r\n AxisRendererY.prototype.setAxis = function (axis) {\r\n _super.prototype.setAxis.call(this, axis);\r\n axis.layout = \"horizontal\";\r\n };\r\n /**\r\n * @ignore\r\n */\r\n AxisRendererY.prototype.updateGridContainer = function () {\r\n var axis = this.axis;\r\n if (axis) {\r\n var gridContainer = this.gridContainer;\r\n gridContainer.y = axis.pixelY;\r\n gridContainer.height = axis.axisLength;\r\n }\r\n };\r\n /**\r\n * @ignore\r\n */\r\n AxisRendererY.prototype.toAxisPosition = function (value) {\r\n var axis = this.axis;\r\n if (axis) {\r\n var inversedPosition = 1 - value;\r\n var relativePositionSprite = axis.relativePositionSprite;\r\n var y = axis.pixelY;\r\n if (relativePositionSprite) {\r\n y = $utils.spritePointToSprite({ x: 0, y: this.pixelY }, this.parent, relativePositionSprite).y;\r\n }\r\n else {\r\n relativePositionSprite = axis.parent;\r\n }\r\n if (relativePositionSprite) {\r\n var relativeY = y / relativePositionSprite.innerHeight;\r\n var relativeHeight = axis.axisLength / relativePositionSprite.innerHeight;\r\n return 1 - (inversedPosition - relativeY) / relativeHeight;\r\n }\r\n }\r\n return value;\r\n };\r\n /**\r\n * Called when rendered is attached to an Axis, as well as a property of\r\n * Axis that might affect the appearance is updated.\r\n *\r\n * E.g. `axis.opposite`, `axis.inside`, etc.\r\n *\r\n * This method is called **before** draw, so that any related setting\r\n * changed in this method can be changed.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererY.prototype.processRenderer = function () {\r\n _super.prototype.processRenderer.call(this);\r\n var axis = this.axis;\r\n if (axis) {\r\n var title = axis.title;\r\n title.valign = \"middle\";\r\n if (!(axis.height instanceof Percent)) {\r\n axis.height = percent(100);\r\n }\r\n if (this.opposite) {\r\n title.rotation = 90;\r\n this.line.toBack();\r\n title.toFront();\r\n }\r\n else {\r\n title.rotation = -90;\r\n title.toBack();\r\n this.line.toFront();\r\n }\r\n }\r\n };\r\n /**\r\n * Updates some of the Axis tooltip's visual properties, related to\r\n * rendering of the Axis.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererY.prototype.updateTooltip = function () {\r\n var axis = this.axis;\r\n if (axis) {\r\n var bigNum = 2000;\r\n var bbx = 0;\r\n var bby = 0;\r\n var bbw = bigNum;\r\n var bbh = this.axisLength;\r\n // right\r\n if (this.opposite) {\r\n if (this.inside) {\r\n bbx = -bigNum;\r\n bbw = bigNum;\r\n }\r\n }\r\n // left\r\n else {\r\n if (!this.inside) {\r\n bbx = -bigNum;\r\n bbw = bigNum;\r\n }\r\n }\r\n this.axis.updateTooltip(\"horizontal\", { x: bbx, y: bby, width: bbw, height: bbh });\r\n }\r\n };\r\n Object.defineProperty(AxisRendererY.prototype, \"axisLength\", {\r\n /**\r\n * Returns actual length of the Axis, in pixels.\r\n *\r\n * @return Length (px)\r\n */\r\n get: function () {\r\n var axis = this.axis;\r\n return (axis.measuredHeight - axis.pixelPaddingTop - axis.pixelPaddingBottom) || 0;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Converts relative position on axis to point coordinates.\r\n *\r\n * @param position Position (0-1)\r\n * @param position2 Position (0-1) Position on the second axis\r\n * @return Point\r\n */\r\n AxisRendererY.prototype.positionToPoint = function (position, position2) {\r\n return { x: 0, y: this.positionToCoordinate(position) };\r\n };\r\n /**\r\n * Converts a point at specific coordinates to a relative position (0-1)\r\n * on the axis.\r\n *\r\n * @param point Point\r\n * @return Position (0-1)\r\n */\r\n AxisRendererY.prototype.pointToPosition = function (point) {\r\n return this.coordinateToPosition(point.y, point.x);\r\n };\r\n /**\r\n * Converts a coordinate in pixels to a relative position. (0-1)\r\n *\r\n * @param coordinate Coordinate (px)\r\n * @param coordinate2 Coordinate of a second axis, only needed for complex axes systems, like timeline (px)\r\n * @return Position (0-1)\r\n */\r\n AxisRendererY.prototype.coordinateToPosition = function (coordinate, coordinate2) {\r\n var position;\r\n var axis = this.axis;\r\n var axisFullLength = axis.axisFullLength;\r\n if (axis.renderer.inversed) {\r\n position = (1 - axis.start) - coordinate / axisFullLength;\r\n }\r\n else {\r\n position = coordinate / axisFullLength + (1 - axis.end);\r\n }\r\n return $math.round(position, 5);\r\n };\r\n /**\r\n * [getPositionRangePath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param startPosition Starting position\r\n * @param endPosition End position\r\n * @return SVG path\r\n */\r\n AxisRendererY.prototype.getPositionRangePath = function (startPosition, endPosition) {\r\n var y1 = $math.fitToRange(this.positionToCoordinate(startPosition), 0, this.axisLength);\r\n var y2 = $math.fitToRange(this.positionToCoordinate(endPosition), 0, this.axisLength);\r\n var h = Math.abs(y2 - y1);\r\n var w = this.getWidth();\r\n var y = Math.min(y1, y2);\r\n var x = 0;\r\n return $path.rectToPath({\r\n x: x,\r\n y: y,\r\n width: w,\r\n height: h\r\n }, true);\r\n };\r\n /**\r\n * Updates and positions a grid element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param grid Grid element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererY.prototype.updateGridElement = function (grid, position, endPosition) {\r\n position = position + (endPosition - position) * grid.location;\r\n var point = this.positionToPoint(position);\r\n //\tpoint.y = $utils.spritePointToSprite({ x: 0, y: point.y }, this, this.gridContainer).y;\r\n grid.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: this.getWidth(), y: 0 });\r\n this.positionItem(grid, point);\r\n this.toggleVisibility(grid, position, 0, 1);\r\n };\r\n /**\r\n * Updates and positions a tick element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param tick Tick element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererY.prototype.updateTickElement = function (tick, position, endPosition) {\r\n position = position + (endPosition - position) * tick.location;\r\n var point = this.positionToPoint(position);\r\n var tickLength = tick.length;\r\n try {\r\n $utils.used(this.axis.title.measuredWidth);\r\n }\r\n catch (_a) {\r\n // void\r\n }\r\n point.x = $utils.spritePointToSprite({ x: this.line.pixelX, y: 0 }, this.line.parent, this.gridContainer).x;\r\n if (!this.opposite) {\r\n tickLength *= (tick.inside ? 1 : -1);\r\n }\r\n else {\r\n tickLength *= (tick.inside ? -1 : 1);\r\n }\r\n tick.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: tickLength, y: 0 });\r\n this.positionItem(tick, point);\r\n this.toggleVisibility(tick, position, 0, 1);\r\n };\r\n /**\r\n * Updates and positions the axis line element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererY.prototype.updateAxisLine = function () {\r\n this.line.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: 0, y: this.axisLength });\r\n };\r\n /**\r\n * Updates and positions the base grid element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererY.prototype.updateBaseGridElement = function () {\r\n _super.prototype.updateBaseGridElement.call(this);\r\n var axis = this.axis;\r\n var w = this.getWidth();\r\n var h = this.axisLength;\r\n var y = axis.basePoint.y;\r\n var baseGrid = this.baseGrid;\r\n if (y < -0.2 || y > h + 0.2) {\r\n baseGrid.hide(0);\r\n }\r\n else {\r\n var x = $utils.spritePointToSprite({ x: 0, y: 0 }, this.gridContainer, baseGrid.parent).x;\r\n baseGrid.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: w, y: 0 });\r\n baseGrid.moveTo({ x: x, y: y });\r\n baseGrid.show(0);\r\n }\r\n };\r\n /**\r\n * Updates and positions a label element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param label Label element\r\n * @param position Starting position\r\n * @param endPosition Ending position\r\n */\r\n AxisRendererY.prototype.updateLabelElement = function (label, position, endPosition, location) {\r\n if (!$type.hasValue(location)) {\r\n location = label.location;\r\n }\r\n position = position + (endPosition - position) * location;\r\n label.isMeasured = !label.inside;\r\n var point = this.positionToPoint(position);\r\n var horizontalCenter;\r\n var deltaX = 0;\r\n var maxWidth = this.gridContainer.maxWidth;\r\n if (this.opposite) {\r\n if (label.inside) {\r\n horizontalCenter = \"right\";\r\n if (label.align == \"left\") {\r\n deltaX = -maxWidth;\r\n horizontalCenter = \"left\";\r\n }\r\n if (label.align == \"center\") {\r\n deltaX = -maxWidth / 2;\r\n horizontalCenter = \"middle\";\r\n }\r\n }\r\n else {\r\n horizontalCenter = \"left\";\r\n }\r\n point.x = 0 + deltaX;\r\n }\r\n else {\r\n if (label.inside) {\r\n horizontalCenter = \"left\";\r\n if (label.align == \"right\") {\r\n deltaX = maxWidth;\r\n horizontalCenter = \"right\";\r\n }\r\n if (label.align == \"center\") {\r\n deltaX = maxWidth / 2;\r\n horizontalCenter = \"middle\";\r\n }\r\n }\r\n else {\r\n horizontalCenter = \"right\";\r\n }\r\n point.x = this.measuredWidth + deltaX;\r\n }\r\n if (label.rotation == 0) {\r\n // Apply fuzzy logic to verticalCenter only if labels are not rotated\r\n label.horizontalCenter = horizontalCenter;\r\n }\r\n this.positionItem(label, point);\r\n this.toggleVisibility(label, position, this.minLabelPosition, this.maxLabelPosition);\r\n };\r\n /**\r\n * Updates and positions an axis break element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axisBreak Break element\r\n */\r\n AxisRendererY.prototype.updateBreakElement = function (axisBreak) {\r\n _super.prototype.updateBreakElement.call(this, axisBreak);\r\n var startLine = axisBreak.startLine;\r\n var endLine = axisBreak.endLine;\r\n var fillShape = axisBreak.fillShape;\r\n var startPoint = axisBreak.startPoint;\r\n var endPoint = axisBreak.endPoint;\r\n var x1 = axisBreak.pixelMarginLeft;\r\n var x2 = this.getWidth() - axisBreak.pixelMarginLeft - axisBreak.pixelMarginRight;\r\n startPoint.y = $math.fitToRange(startPoint.y, -1, this.axisLength + 1);\r\n endPoint.y = $math.fitToRange(endPoint.y, -1, this.axisLength + 1);\r\n if (startPoint.y == endPoint.y && (startPoint.y < 0 || startPoint.y > this.axisLength)) {\r\n axisBreak.fillShape.__disabled = true;\r\n }\r\n else {\r\n axisBreak.fillShape.__disabled = false;\r\n }\r\n var w = Math.abs(x2 - x1);\r\n startLine.x = x1;\r\n startLine.height = 0;\r\n startLine.width = w;\r\n endLine.x = x1;\r\n endLine.height = 0;\r\n endLine.width = w;\r\n fillShape.width = w;\r\n fillShape.height = Math.abs(endPoint.y - startPoint.y);\r\n fillShape.x = x1;\r\n fillShape.y = endPoint.y;\r\n };\r\n /**\r\n * Creates visual elements for and axis break.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axisBreak Axis break\r\n */\r\n AxisRendererY.prototype.createBreakSprites = function (axisBreak) {\r\n axisBreak.startLine = new WavedLine();\r\n axisBreak.endLine = new WavedLine();\r\n var wavedRectangle = new WavedRectangle();\r\n wavedRectangle.setWavedSides(true, false, true, false);\r\n axisBreak.fillShape = wavedRectangle;\r\n };\r\n /**\r\n * Converts a position on the axis to a coordinate in pixels.\r\n *\r\n * @ignore Exclude from docs\r\n * @param position Position (0-1)\r\n * @return Coordinate (px)\r\n */\r\n AxisRendererY.prototype.positionToCoordinate = function (position) {\r\n var coordinate;\r\n var axis = this.axis;\r\n var axisFullLength = axis.axisFullLength;\r\n if (!axis.renderer.inversed) {\r\n coordinate = (axis.end - position) * axisFullLength;\r\n }\r\n else {\r\n coordinate = (position - axis.start) * axisFullLength;\r\n }\r\n return coordinate;\r\n };\r\n /**\r\n * Updates and positions axis bullets.\r\n *\r\n * @ignore Exclude from docs\r\n * @param bullet AxisBullet element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererY.prototype.updateBullet = function (bullet, position, endPosition) {\r\n var location = 0.5;\r\n if (bullet instanceof AxisBullet) {\r\n location = bullet.location;\r\n }\r\n position = position + (endPosition - position) * location;\r\n var point = this.positionToPoint(position);\r\n point.x = $utils.spritePointToSprite({ x: this.line.pixelX, y: 0 }, this.line.parent, this.gridContainer).x;\r\n this.positionItem(bullet, point);\r\n this.toggleVisibility(bullet, position, 0, 1);\r\n };\r\n return AxisRendererY;\r\n}(AxisRenderer));\r\nexport { AxisRendererY };\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[\"AxisRendererY\"] = AxisRendererY;\r\n/**\r\n * Add default responsive rules\r\n */\r\n/**\r\n * Put labels inside plot area.\r\n * Disable first and last labels.\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.widthS,\r\n state: function (target, stateId) {\r\n if (target instanceof AxisRendererY) {\r\n var state = target.states.create(stateId);\r\n state.properties.inside = true;\r\n state.properties.maxLabelPosition = 0.9;\r\n state.properties.minLabelPosition = 0.1;\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n/**\r\n * Disable labels altogather on very small charts\r\n */\r\ndefaultRules.push({\r\n relevant: ResponsiveBreakpoints.widthXS,\r\n state: function (target, stateId) {\r\n if (target instanceof AxisRendererY) {\r\n var state = target.states.create(stateId);\r\n state.properties.disabled = true;\r\n return state;\r\n }\r\n return null;\r\n }\r\n});\r\n//# sourceMappingURL=AxisRendererY.js.map","/**\r\n * Module, defining Axis Renderer for vertical 3D axes.\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AxisRendererY } from \"../axes/AxisRendererY\";\r\nimport { MutableValueDisposer } from \"../../core/utils/Disposer\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Renderer for vertical 3D axis.\r\n *\r\n * @see {@link IAxisRendererY3DEvents} for a list of available events\r\n * @see {@link IAxisRendererY3DAdapters} for a list of available Adapters\r\n */\r\nvar AxisRendererY3D = /** @class */ (function (_super) {\r\n __extends(AxisRendererY3D, _super);\r\n /**\r\n * Constructor.\r\n *\r\n * @param axis Related axis\r\n */\r\n function AxisRendererY3D() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * A related chart.\r\n *\r\n * @todo Description\r\n */\r\n _this._chart = new MutableValueDisposer();\r\n _this.className = \"AxisRendererY3D\";\r\n _this._disposers.push(_this._chart);\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * Updates and positions a grid element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param grid Grid element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\r\n AxisRendererY3D.prototype.updateGridElement = function (grid, position, endPosition) {\r\n position = position + (endPosition - position) * grid.location;\r\n var point = this.positionToPoint(position);\r\n if (grid.element) {\r\n var dx = this.chart.dx3D || 0;\r\n var dy = this.chart.dy3D || 0;\r\n var w = this.getWidth();\r\n grid.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: dx, y: dy }) + $path.lineTo({ x: w + dx, y: dy });\r\n }\r\n this.positionItem(grid, point);\r\n this.toggleVisibility(grid, position, 0, 1);\r\n };\r\n /**\r\n * Updates and positions the base grid element.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n AxisRendererY3D.prototype.updateBaseGridElement = function () {\r\n _super.prototype.updateBaseGridElement.call(this);\r\n var dx = this.chart.dx3D || 0;\r\n var dy = this.chart.dy3D || 0;\r\n var w = this.getWidth();\r\n this.baseGrid.path = $path.moveTo({ x: 0, y: 0 })\r\n + $path.lineTo({ x: w, y: 0 })\r\n + $path.lineTo({ x: w + dx, y: dy });\r\n };\r\n Object.defineProperty(AxisRendererY3D.prototype, \"chart\", {\r\n /**\r\n * @ignore Exclude from docs\r\n * @return Chart\r\n */\r\n get: function () {\r\n return this._chart.get();\r\n },\r\n /**\r\n * Chart, associated with the Axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Chart\r\n */\r\n set: function (chart) {\r\n if (chart) {\r\n this._chart.set(chart, chart.events.on(\"propertychanged\", this.handle3DChanged, this, false));\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Invoked when 3D-related settings change, like depth or angle.\r\n *\r\n * @param event Event\r\n */\r\n AxisRendererY3D.prototype.handle3DChanged = function (event) {\r\n if (event.property == \"depth\" || event.property == \"angle\") {\r\n this.invalidate();\r\n }\r\n };\r\n return AxisRendererY3D;\r\n}(AxisRendererY));\r\nexport { AxisRendererY3D };\r\n//# sourceMappingURL=AxisRendererY3D.js.map","/**\r\n * Axis Tick module\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Tick } from \"../elements/Tick\";\r\nimport { registry } from \"../../core/Registry\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Draws an axis tick\r\n * @see {@link IAxisTickEvents} for a list of available events\r\n * @see {@link IAxisTickAdapters} for a list of available Adapters\r\n */\r\nvar AxisTick = /** @class */ (function (_super) {\r\n __extends(AxisTick, _super);\r\n function AxisTick() {\r\n var _this = _super.call(this) || this;\r\n _this.className = \"AxisTick\";\r\n _this.element = _this.paper.add(\"path\");\r\n _this.location = 0.5;\r\n _this.above = false;\r\n _this.isMeasured = false;\r\n _this.pixelPerfect = true;\r\n _this.strokeOpacity = 0;\r\n _this.length = 5;\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n Object.defineProperty(AxisTick.prototype, \"location\", {\r\n /**\r\n * @return Location (0-1)\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"location\");\r\n },\r\n /**\r\n * Relative location of the tick. (0-1)\r\n *\r\n * @param value Location (0-1)\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"location\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisTick.prototype, \"inside\", {\r\n /**\r\n * Returns if label is set to be drawn inside axis.\r\n *\r\n * @return Inside?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"inside\");\r\n },\r\n /**\r\n * Sets if tick should be drawn inside axis.\r\n *\r\n * @param value Inside?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"inside\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AxisTick.prototype, \"above\", {\r\n /**\r\n * @return Draw above series?\r\n */\r\n get: function () {\r\n return this.getPropertyValue(\"above\");\r\n },\r\n /**\r\n * Normally tick goes below series. Set this to `true` to go above.\r\n *\r\n * @default false\r\n * @since 4.5.9\r\n * @param value Draw above series?\r\n */\r\n set: function (value) {\r\n this.setPropertyValue(\"above\", value, true);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @ignore\r\n */\r\n AxisTick.prototype.setDisabled = function (value) {\r\n var changed = _super.prototype.setDisabled.call(this, value);\r\n if (this.axis) {\r\n this.axis.invalidateDataItems();\r\n }\r\n return changed;\r\n };\r\n return AxisTick;\r\n}(Tick));\r\nexport { AxisTick };\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[\"AxisTick\"] = AxisTick;\r\n//# sourceMappingURL=AxisTick.js.map"],"names":["AxisItemLocation","AxisDataItem","_super","_this","call","this","className","applyTheme","Object","defineProperty","prototype","get","_grid","component_1","component","grid_1","template","isRange","axisRanges","grid","disabled","clone","renderer","create","_disposers","push","removeValue","shouldClone","axis","set","sprites","dataItem","undefined","addSprite","enumerable","configurable","_tick","component_2","tick_1","tick","ticks","_label","component_3","label_1","label","labels","virtualParent","_axisFill","component_4","axisFill_1","axisFill","isTemplate","axisFills","_text","text","_mask","_contents","contents","isMeasured","mask","createFill","_axisBreak","axisBreak","dataItems","validate","validateDataElement","appendChildren","appendDataItem","hasProperty","prop","copyFrom","source","bullet","minPosition","maxPosition","setVisibility","value","noChangeValues","visible","_bullet","Axis","_gridCount","_series","autoDispose","_axisItemCount","constructor","Error","hideTooltipWhileZooming","minWidth","minHeight","setPropertyValue","toggleZoomOutButton","zoomable","interfaceColors","title","_dataItemsIterator","createNewItems","tooltip","padding","background","pointerLength","fitPointerToBounds","filters","clear","cornerRadius","fill","getFor","stroke","strokeWidth","fillOpacity","readerHidden","events","on","series","each","hide","preventShow","fillRule","index","Math","round","__disabled","opacity","createDataItem","invalidateLayout","iterator","invalidateSeries","invalidate","validateDataElements","ghostLabel","updateLabelElement","start","end","updateGridCount","gridCount","axisLength","minGridDistance","clearCache","validateLayout","axisFullLength","updateAxisLine","updateTooltip","updateBaseGridElement","_prevLength","dispatchImmediately","initRenderer","above","parent","bulletsContainer","gridContainer","updateGridContainer","validateAxisRanges","axisRange","validateBreaks","_axisBreaks","processBreak","event","newValue","breakContainer","registerSeries","moveValue","createMask","_renderer","chart","ghostLabel_1","strokeOpacity","interactionsEnabled","positionToAngle","position","pointToPosition","point","positionToCoordinate","getAnyRangePath","getPositionRangePath","anyToPosition","anyToPoint","x","y","angle","startPosition","endPosition","getPropertyValue","hideTooltip","duration","_tooltipPosition","showTooltipAtPosition","local","_tooltip","length","toAxisPosition","tooltipContainer","tooltipLocation","getCellStartPosition","getCellEndPosition","tooltipPosition","tooltipLocation2","startPoint","positionToPoint","endPoint","currentItemStartPoint","currentItemEndPoint","fullWidthTooltip","width","height","globalPoint","line","getTooltipText","delayedPointTo","show","cursorTooltipEnabled","inversed","toGlobalPosition","pointerOrientation","boundingRectangle","fixDoc","setBounds","roundPosition","location","axisLocation","_axisRanges","processAxisRange","createAxisBreak","a","b","adjustedStartValue","processSeriesDataItems","processSeriesDataItem","axisLetter","postProcessSeriesDataItems","postProcessSeriesDataItem","updateAxisBySeries","hideUnusedDataItems","dataItemsIterator","getSeriesDataItem","findNearest","getAngle","key","stackKey","range","getX","getPositionX","getY","getPositionY","dataChangeUpdate","seriesDataChangeUpdate","adjustDifference","min","max","difference","startValue","endValue","adjustedEndValue","breakSize","intersection","isInBreak","fixAxisBreaks","axisBreaks","update","firstAxisBreak","first","previousEndValue_1","getPositionLabel","_chart","createSeriesRange","addDisposer","resetIterators","reset","processConfig","config","i","len","map","hasKey","getKey","configOrder","setDisabled","changed","_title","dispose","relevant","state","target","stateId","states","properties","AxisBreak","_axis","marginLeft","marginRight","marginTop","marginBottom","fillShape","zIndex","_fillShape","startLine","_startLine","endLine","_endLine","sprite","addBreakSprite","createBreakSprites","breakTemplate","draw","updateBreakElement","AxisBullet","invalidateDataItems","AxisFill","element","paper","add","fillPath","path","measure","setPath","attr","AxisFillCircular","radius","innerRadius","setPercentProperty","AxisLabel","AxisLabelCircular","fdx","fdy","locationOnPath","rotation","textAlign","textPathElement","pixelRadius","axisRadius","sign","inside","pixelRadiusY","axisRadiusY","fixPosition","dx","dy","invalid","isNegative","realRadius","relativeRotation","labelRadius","bent","point_1","horizontalCenter","verticalCenter","pixelWidth","bbox","pixelHeight","pixelPaddingBottom","pixelPaddingTop","pixelPaddingLeft","pixelPaddingRight","dH","dW","_measuredHeight","_measuredWidth","moveTo","AxisLine","pixelPerfect","AxisRenderer","cellStartLocation","cellEndLocation","minLabelPosition","maxLabelPosition","createChild","layout","inited","invalidateAxisItems","baseGrid","disposers","setAxis","bind","processRenderer","positionItem","item","position2","coordinate","getHeight","getWidth","coordinateToPosition","coordinate2","updateGridElement","updateTickElement","updateBullet","updateFillElement","toggleVisibility","updatedStart","updatedEnd","_axisFills","applyOnClones","createGrid","_ticks","createTick","_labels","createLabel","AxisRendererCircular","pixelRadiusReal","startAngle","endAngle","useChartAngles","adapter","pixelX","pixelY","cos","atan2","sin","PI","mr","plotContainer","innerHeight","innerWidth","innerRadiusModifyer","pixelInnerRadius","axisRendererY","Infinity","arc","angleToPosition","gridInnerRadius","tickLength","fitsToBounds","AxisRendererRadial","gridType","axisAngle","valign","opposite","xAxis","xAxes","getIndex","count","gridLocation","abs","bigNum","bbx","bby","bbw","bbh","tooltipOrientation","AxisRendererX","align","toFront","toBack","deltaY","maxHeight","measuredWidth","x1","x2","w","h","y1","pixelMarginLeft","y2","pixelMarginTop","pixelMarginBottom","basePoint","wavedRectangle","setWavedSides","inversedPosition","relativePositionSprite","relativeX","relativeWidth","AxisRendererX3D","dx3D","dy3D","handle3DChanged","property","AxisRendererY","relativeY","relativeHeight","measuredHeight","_a","deltaX","maxWidth","pixelMarginRight","AxisRendererY3D","AxisTick"],"sourceRoot":""}