UNPKG

105 kBSource Map (JSON)View Raw
1{"version":3,"file":"Axis.js","sourceRoot":"","sources":["../../../../../src/.internal/charts/axes/Axis.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Base class for all Axis\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Component, IComponentProperties, IComponentDataFields, IComponentAdapters, IComponentEvents } from \"../../core/Component\";\r\nimport { Container } from \"../../core/Container\";\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { DataItem, IDataItemAdapters } from \"../../core/DataItem\";\r\n\r\nimport { Grid } from \"./Grid\";\r\nimport { AxisTick } from \"./AxisTick\";\r\nimport { AxisLabel } from \"./AxisLabel\";\r\nimport { AxisFill } from \"./AxisFill\";\r\nimport { AxisBreak } from \"./AxisBreak\";\r\nimport { AxisRenderer } from \"./AxisRenderer\";\r\n\r\n// Charts\r\nimport { Chart } from \"../Chart\";\r\n\r\n// Series\r\nimport { XYSeries, XYSeriesDataItem } from \"../series/XYSeries\";\r\n\r\n// Elements\r\nimport { IPoint, IOrientationPoint } from \"../../core/defs/IPoint\";\r\nimport { Label } from \"../../core/elements/Label\";\r\nimport { IRectangle } from \"../../core/defs/IRectangle\";\r\nimport { Tooltip, PointerOrientation } from \"../../core/elements/Tooltip\";\r\nimport { PointedRectangle } from \"../../core/elements/PointedRectangle\";\r\n\r\n// Types\r\nimport { IRange } from \"../../core/defs/IRange\";\r\n\r\n// Utils\r\nimport { Ordering } from \"../../core/utils/Order\";\r\nimport { SortedListTemplate } from \"../../core/utils/SortedList\";\r\nimport { List, ListTemplate, IListEvents, ListDisposer } from \"../../core/utils/List\";\r\nimport { IDisposer, 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/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines a [[DataItem]] for [[Axis]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nexport class AxisDataItem extends DataItem {\r\n\r\n\t/**\r\n\t * Reference to a related [[Grid]] element.\r\n\t */\r\n\tprotected _grid: Grid;\r\n\r\n\t/**\r\n\t * Reference to a related [[AxisTick]] element.\r\n\t */\r\n\tprotected _tick: AxisTick;\r\n\r\n\t/**\r\n\t * Reference to a related [[AxisLabel]] element.\r\n\t */\r\n\tprotected _label: AxisLabel;\r\n\r\n\t/**\r\n\t * Reference to a related [[AxisFill]] element.\r\n\t */\r\n\tprotected _axisFill: AxisFill;\r\n\r\n\t/**\r\n\t * A mask for axis. We're using [[AxisFill]] since the mask, basically, has\r\n\t * the same shape and features.\r\n\t */\r\n\tprotected _mask: AxisFill;\r\n\r\n\t/**\r\n\t * Container which might be used to hold some extra items, like series\r\n\t * segments when data item is used for axis range.\r\n\t */\r\n\tprotected _contents: Container;\r\n\r\n\t/**\r\n\t * A text to be used as label for this data item.\r\n\t */\r\n\tprotected _text: string;\r\n\r\n\t/**\r\n\t * Holds a physical position of the grid line associated with this data item,\r\n\t * so that it can be used when measuring distance between points, and hiding\r\n\t * some of them so they don't overlap.\r\n\t */\r\n\tpublic point: IPoint;\r\n\r\n\t/**\r\n\t * If the data item is within an existing [[AxisBreak]] this property will\r\n\t * hold a reference to that [[AxisBreak]].\r\n\t */\r\n\tpublic _axisBreak: AxisBreak;\r\n\r\n\t/**\r\n\t * Defines a type of [[Component]] this data item is used for.\r\n\t */\r\n\tpublic _component!: Axis;\r\n\r\n\t/**\r\n\t * Used to distinguish from real data points and those data items that are\r\n\t * used for ranges, like `series.axisRanges` or `axis.axisRanges`.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic isRange: boolean;\r\n\r\n\t/**\r\n\t * relative position of data item on axis\r\n\t */\r\n\tpublic position: number;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected _bullet: Sprite;\r\n\r\n\t/**\r\n\t * Allows hiding axis item (tick, label, grid) if it is closer to axis\r\n\t * beginning than this relative position (0-1).\r\n\t *\r\n\t * For axis labels it overrides `minLabelPosition` if set.\r\n\t *\r\n\t * ```TypeScript\r\n\t * // Hide all ticks and labels closer than 20% to axis beginning.\r\n\t * axis.dataItems.template.minPosition = 0.2;\r\n\t * ```\r\n\t * ```JavaScript\r\n\t * // Hide all ticks and labels closer than 20% to axis beginning.\r\n\t * axis.dataItems.template.minPosition = 0.2;\r\n\t * ```\r\n\t * ```JSON\r\n\t * {\r\n\t * // ...\r\n\t * \"xAxes\": [{\r\n\t * // ...\r\n\t * // Hide all ticks and labels closer than 20% to axis beginning.\r\n\t * \"dataItems\": {\r\n\t * \"minPosition\": 0.2\r\n\t * }\r\n\t * }]\r\n\t * }\r\n\t * ```\r\n\t * \r\n\t * @since 4.5.11\r\n\t */\r\n\tpublic minPosition?: number;\r\n\r\n\t/**\r\n\t * Allows hiding axis item (tick, label, grid) if it is closer to axis\r\n\t * end than this relative position (0-1).\r\n\t *\r\n\t * For axis labels it overrides `maxLabelPosition` if set.\r\n\t *\r\n\t * ```TypeScript\r\n\t * // Hide all ticks and labels closer than 20% to axis end.\r\n\t * axis.dataItems.template.maxPosition = 0.8;\r\n\t * ```\r\n\t * ```JavaScript\r\n\t * // Hide all ticks and labels closer than 20% to axis end.\r\n\t * axis.dataItems.template.maxPosition = 0.8;\r\n\t * ```\r\n\t * ```JSON\r\n\t * {\r\n\t * // ...\r\n\t * \"xAxes\": [{\r\n\t * // ...\r\n\t * // Hide all ticks and labels closer than 20% to axis end.\r\n\t * \"dataItems\": {\r\n\t * \"maxPosition\": 0.8\r\n\t * }\r\n\t * }]\r\n\t * }\r\n\t * ```\r\n\t * \r\n\t * @since 4.5.11\r\n\t */\r\n\tpublic maxPosition?: number;\r\n\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"AxisDataItem\";\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Actual index of the axis data item.\r\n\t * \r\n\t * @since 4.7.8\r\n\t */\r\n\tpublic itemIndex: number;\r\n\r\n\t/**\r\n\t * A [[Grid]] element associated with this data item.\r\n\t *\r\n\t * If there is no grid element associated with data item, a new one is\r\n\t * created and returned.\r\n\t *\r\n\t * @param grid Grid element\r\n\t */\r\n\tpublic set grid(grid: Grid) {\r\n\t\tif (this._grid && this._grid != grid) {\r\n\t\t\t$array.remove(this.sprites, this._grid);\r\n\t\t\tthis._grid.dataItem = undefined;\r\n\t\t}\r\n\r\n\t\tif (grid) {\r\n\t\t\tif (grid.dataItem && grid.dataItem != this) {\r\n\t\t\t\t$array.remove(grid.dataItem.sprites, grid);\r\n\t\t\t\tgrid.dataItem.grid = undefined;\r\n\t\t\t}\r\n\t\t\tthis.addSprite(grid);\r\n\t\t}\r\n\t\tthis._grid = grid;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Grid element\r\n\t */\r\n\tpublic get grid(): Grid {\r\n\t\tif (!this._grid) {\r\n\t\t\tlet component = this.component;\r\n\t\t\tif (component) {\r\n\r\n\t\t\t\tlet template: Grid;\r\n\t\t\t\tlet grid: Grid;\r\n\r\n\t\t\t\tif (this.isRange) {\r\n\t\t\t\t\ttemplate = component.axisRanges.template.grid;\r\n\t\t\t\t\tif (template.disabled) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tgrid = template.clone();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\ttemplate = component.renderer.grid.template;\r\n\t\t\t\t\tif (template.disabled) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tgrid = component.renderer.grid.create();\r\n\t\t\t\t\t\tthis._disposers.push(new Disposer(() => {\r\n\t\t\t\t\t\t\tcomponent.renderer.grid.removeValue(grid);\r\n\t\t\t\t\t\t}));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.grid = grid;\r\n\t\t\t\tgrid.shouldClone = false;\r\n\t\t\t\tthis._disposers.push(grid);\r\n\t\t\t\tgrid.axis = this.component;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this._grid;\r\n\t}\r\n\r\n\t/**\r\n\t * An [[AxisTick]] element associated with this data item.\r\n\t *\r\n\t * If there is no tick element associated with data item, a new one is\r\n\t * created and returned.\r\n\t *\r\n\t * @param tick Tick element\r\n\t */\r\n\tpublic set tick(tick: AxisTick) {\r\n\t\tif (this._tick && this._tick != tick) {\r\n\t\t\t$array.remove(this.sprites, this._tick);\r\n\t\t\tthis._tick.dataItem = undefined;\r\n\t\t}\r\n\r\n\t\tif (tick) {\r\n\t\t\tif (tick.dataItem && tick.dataItem != this) {\r\n\t\t\t\t$array.remove(tick.dataItem.sprites, tick);\r\n\t\t\t\ttick.dataItem.tick = undefined;\r\n\t\t\t}\r\n\t\t\tthis.addSprite(tick);\r\n\t\t}\r\n\t\tthis._tick = tick;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Tick element\r\n\t */\r\n\tpublic get tick(): AxisTick {\r\n\t\tif (!this._tick) {\r\n\t\t\tlet component = this.component;\r\n\t\t\tif (component) {\r\n\r\n\t\t\t\tlet template: AxisTick;\r\n\t\t\t\tlet tick: AxisTick;\r\n\r\n\t\t\t\tif (this.isRange) {\r\n\t\t\t\t\ttemplate = component.axisRanges.template.tick;\r\n\t\t\t\t\tif (template.disabled) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\ttick = template.clone();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\ttemplate = component.renderer.ticks.template;\r\n\t\t\t\t\tif (template.disabled) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\ttick = component.renderer.ticks.create();\r\n\t\t\t\t\t\tthis._disposers.push(new Disposer(() => {\r\n\t\t\t\t\t\t\tcomponent.renderer.ticks.removeValue(tick);\r\n\t\t\t\t\t\t}));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.tick = tick;\r\n\t\t\t\ttick.axis = this.component;\r\n\t\t\t\ttick.shouldClone = false;\r\n\t\t\t\tthis._disposers.push(tick);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this._tick;\r\n\t}\r\n\r\n\t/**\r\n\t * An [[AxisLabel]] element associated with this data item.\r\n\t *\r\n\t * If there is no label element associated with data item, a new one is\r\n\t * created and returned.\r\n\t *\r\n\t * @param label Label element\r\n\t */\r\n\tpublic set label(label: AxisLabel) {\r\n\t\tif (this._label && this._label != label) {\r\n\t\t\t$array.remove(this.sprites, this._label);\r\n\t\t\tthis._label.dataItem = undefined;\r\n\t\t}\r\n\r\n\t\tif (label) {\r\n\t\t\tif (label.dataItem && label.dataItem != this) {\r\n\t\t\t\t$array.remove(label.dataItem.sprites, label);\r\n\t\t\t\tlabel.dataItem.label = undefined;\r\n\t\t\t}\r\n\t\t\tthis.addSprite(label);\r\n\t\t}\r\n\t\tthis._label = label;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Label element\r\n\t */\r\n\tpublic get label(): AxisLabel {\r\n\t\tif (!this._label) {\r\n\t\t\tlet component = this.component;\r\n\t\t\tif (component) {\r\n\r\n\t\t\t\tlet template: AxisLabel;\r\n\t\t\t\tlet label: AxisLabel;\r\n\r\n\t\t\t\tif (this.isRange) {\r\n\t\t\t\t\ttemplate = component.axisRanges.template.label;\r\n\t\t\t\t\tif (template.disabled) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tlabel = template.clone();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\ttemplate = component.renderer.labels.template;\r\n\t\t\t\t\tif (template.disabled) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tlabel = component.renderer.labels.create();\r\n\t\t\t\t\t\tthis._disposers.push(new Disposer(() => {\r\n\t\t\t\t\t\t\tcomponent.renderer.labels.removeValue(label);\r\n\t\t\t\t\t\t}));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._disposers.push(label);\r\n\t\t\t\tthis.label = label;\r\n\t\t\t\tlabel.shouldClone = false;\r\n\t\t\t\tlabel.axis = this.component;\r\n\t\t\t\tlabel.virtualParent = component;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this._label;\r\n\t}\r\n\r\n\t/**\r\n\t * An [[AxisFill]] associated element with this data item.\r\n\t *\r\n\t * If there is no fill element associated with data item, a new one is\r\n\t * created and returned.\r\n\t *\r\n\t * @param label Label element\r\n\t */\r\n\tpublic set axisFill(axisFill: AxisFill) {\r\n\t\tif (this._axisFill && this._axisFill != axisFill) {\r\n\t\t\t$array.remove(this.sprites, this._axisFill);\r\n\t\t\tthis._axisFill.dataItem = undefined;\r\n\t\t}\r\n\r\n\t\tif (axisFill) {\r\n\t\t\tif (axisFill.dataItem && axisFill.dataItem != this) {\r\n\t\t\t\t$array.remove(axisFill.dataItem.sprites, axisFill);\r\n\t\t\t\taxisFill.dataItem.axisFill = undefined;\r\n\t\t\t}\r\n\t\t\taxisFill.axis = this.component;\r\n\t\t\tthis.addSprite(axisFill);\r\n\t\t}\r\n\t\tthis._axisFill = axisFill;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Label element\r\n\t */\r\n\tpublic get axisFill(): AxisFill {\r\n\t\tif (!this._axisFill) {\r\n\t\t\tlet component = this.component;\r\n\t\t\tif (component) {\r\n\r\n\t\t\t\tlet template: AxisFill;\r\n\t\t\t\tlet axisFill: AxisFill;\r\n\r\n\t\t\t\tif (this.isRange) {\r\n\t\t\t\t\ttemplate = component.axisRanges.template.axisFill;\r\n\t\t\t\t\tif (!this.isTemplate && template.disabled) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\taxisFill = template.clone();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\ttemplate = component.renderer.axisFills.template;\r\n\t\t\t\t\tif (template.disabled) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\taxisFill = component.renderer.axisFills.create();\r\n\t\t\t\t\t\tthis._disposers.push(new Disposer(() => {\r\n\t\t\t\t\t\t\tcomponent.renderer.axisFills.removeValue(axisFill);\r\n\t\t\t\t\t\t}));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.axisFill = axisFill;\r\n\t\t\t\taxisFill.shouldClone = false;\r\n\t\t\t\tthis._disposers.push(axisFill);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this._axisFill;\r\n\t}\r\n\r\n\t/**\r\n\t * Text to be used as data item's label.\r\n\t *\r\n\t * @param text Text label\r\n\t */\r\n\tpublic set text(text: string) {\r\n\t\tthis._text = text;\r\n\t\tif (this._label) { // do not use getter, it will create unwanted instances!\r\n\t\t\tthis._label.text = text;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Text label\r\n\t */\r\n\tpublic get text(): string {\r\n\t\treturn this._text;\r\n\t}\r\n\r\n\t/**\r\n\t * Data item's mask.\r\n\t *\r\n\t * @return Mask\r\n\t */\r\n\tpublic get mask(): AxisFill {\r\n\t\treturn this._mask;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a [[Container]] to place all visual elements, related to data item\r\n\t * in.\r\n\t *\r\n\t * If there is no Container, a new one is created.\r\n\t *\r\n\t * @return Contents container\r\n\t */\r\n\tpublic get contents(): Container {\r\n\t\tif (!this._contents) {\r\n\t\t\tlet contents = new Container();\r\n\t\t\tthis.addSprite(contents);\r\n\t\t\tcontents.isMeasured = false;\r\n\t\t\tthis._contents = contents;\r\n\r\n\t\t\tlet component = this.component;\r\n\t\t\tif (component) {\r\n\t\t\t\tlet mask: AxisFill = component.renderer.createFill(this.component);\r\n\t\t\t\tmask.disabled = false;\r\n\t\t\t\tmask.axis = component;\r\n\t\t\t\tthis.addSprite(mask);\r\n\t\t\t\tthis._mask = mask;\r\n\t\t\t\tcontents.mask = mask;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this._contents;\r\n\t}\r\n\r\n\t/**\r\n\t * An [[AxisBreak]] this data item falls within.\r\n\t *\r\n\t * @param axisBreak Axis break\r\n\t */\r\n\tpublic set axisBreak(axisBreak: this[\"_axisBreak\"]) {\r\n\t\tif (this._axisBreak) {\r\n\t\t\tthis._axisBreak.dataItems.removeValue(this);\r\n\t\t}\r\n\t\tif (axisBreak) {\r\n\t\t\taxisBreak.dataItems.push(this);\r\n\t\t}\r\n\t\tthis._axisBreak = axisBreak;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Axis break\r\n\t */\r\n\tpublic get axisBreak(): this[\"_axisBreak\"] {\r\n\t\treturn this._axisBreak;\r\n\t}\r\n\r\n\t/**\r\n\t * Re-draws the element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validate() {\r\n\t\tif (this.component) {\r\n\t\t\tthis.component.validateDataElement(this);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Appends data item's elements to the parent [[Container]].\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic appendChildren() {\r\n\t\tif (this.component) {\r\n\t\t\tthis.component.appendDataItem(this);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if data item has particular property set.\r\n\t *\r\n\t * @param prop Property name\r\n\t * @return Property set?\r\n\t */\r\n\tprotected hasProperty(prop: string): boolean {\r\n\t\treturn prop == \"component\" ? true : super.hasProperty(prop);\r\n\t}\r\n\r\n\t/**\r\n\t * Copies all parameters from another [[AxisDataItem]].\r\n\t *\r\n\t * @param source Source AxisDataItem\r\n\t */\r\n\tpublic copyFrom(source: this) {\r\n\t\tsuper.copyFrom(source);\r\n\t\tthis.text = source.text;\r\n\t\tif (source.bullet) {\r\n\t\t\tthis.bullet = source.bullet.clone();\r\n\t\t}\r\n\r\n\t\tthis.minPosition = source.minPosition;\r\n\t\tthis.maxPosition = source.maxPosition;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets visibility of the Data Item.\r\n\t *\r\n\t * @param value Data Item\r\n\t */\r\n\tpublic setVisibility(value: boolean, noChangeValues?: boolean): void {\r\n\t\tsuper.setVisibility(value, noChangeValues);\r\n\t\tif (this._contents) {\r\n\t\t\tthis._contents.visible = value;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Set it to an instance of any [[Sprite]]. It will be displayed as an axis\r\n\t * bullet in the middle of the cell, or specific value.\r\n\t *\r\n\t * If you need position bullet relatively to the cell, use [[AxisBullet]]\r\n\t * instead. It has a `location` property which can be used to indicate\r\n\t * precise relative location within cell/range.\r\n\t *\r\n\t * Also, [[AxisBullet]] is a [[Container]] so you can push any other element\r\n\t * into it.\r\n\t *\r\n\t * NOTE: `location` is relative to the parent axis range's scope, i.e.\r\n\t * between its `date` and `endDate` for [[DateAxis]], or `value`/`endValue`\r\n\t * ([[ValueAxis]]), or `category`/`endCategory` ([[categoryAxis]]).\r\n\t * \r\n\t * ```TypeScript\r\n\t * let range = dateAxis.axisRanges.create();\r\n\t * range.date = new Date(2018, 0, 5);\r\n\t * \r\n\t * let flag = new am4plugins_bullets.FlagBullet();\r\n\t * flag.label.text = \"Hello\";\r\n\t *\r\n\t * range.bullet = flag;\r\n\t * ```\r\n\t * ```JavaScript\r\n\t * var range = dateAxis.axisRanges.create();\r\n\t * range.date = new Date(2018, 0, 5);\r\n\t * \r\n\t * var flag = new am4plugins_bullets.FlagBullet();\r\n\t * flag.label.text = \"Hello\";\r\n\t *\r\n\t * range.bullet = flag;\r\n\t * ```\r\n\t * ```JSON\r\n\t * {\r\n\t * // ...\r\n\t * \"xAxes\": [{\r\n\t * \"type\": \"DateAxis\",\r\n\t * // ...\r\n\t * \"axisRanges\": [{\r\n\t * \"date\": new Date(2018, 0, 5),\r\n\t * \"bullet: {\r\n\t * \"type\": \"FlagBullet\",\r\n\t * \"label\": {\r\n\t * \"text\": \"Hello\"\r\n\t * }\r\n\t * }\r\n\t * }]\r\n\t * }]\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @since 4.5.9\r\n\t * @param value Bullet\r\n\t */\r\n\tpublic set bullet(value: Sprite) {\r\n\t\tif (this._bullet && this._bullet != value) {\r\n\t\t\t$array.remove(this.sprites, this._bullet);\r\n\t\t\tthis._bullet.dataItem = undefined;\r\n\t\t}\r\n\r\n\t\tthis._bullet = value;\r\n\t\tif (value) {\r\n\t\t\tthis.addSprite(value);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Bullet\r\n\t */\r\n\tpublic get bullet(): Sprite {\r\n\t\treturn this._bullet;\r\n\t}\r\n\r\n\r\n\r\n}\r\n\r\n/**\r\n * Defines adapters for [[AxisDataItem]]\r\n * Includes both the [[DataItemAdapter]] definitions and properties\r\n * @see {@link DataItemAdapter}\r\n */\r\nexport interface IAxisDataItemAdapters extends IDataItemAdapters {\r\n\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines named positions for data item's location within [[Axis]].\r\n */\r\nexport enum AxisItemLocation {\r\n\tStart = 0,\r\n\tMiddle = 0.5,\r\n\tEnd = 1\r\n}\r\n\r\n/**\r\n * Defines data fields for [[Axis]].\r\n */\r\nexport interface IAxisDataFields extends IComponentDataFields { }\r\n\r\n/**\r\n * Defines properties for [[Axis]].\r\n */\r\nexport interface IAxisProperties extends IComponentProperties {\r\n\r\n\t/**\r\n\t * Axis start location.\r\n\t *\r\n\t * * 0 - None of the first cell is shown. (don't do that)\r\n\t * * 0.5 - Half of the first cell is shown.\r\n\t * * 1 - Full first cell is shown.\r\n\t *\r\n\t * @param value Location (0-1)\r\n\t */\r\n\tstartLocation?: number;\r\n\r\n\r\n\t/**\r\n\t * Axis end location.\r\n\t *\r\n\t * * 0 - None of the last cell is shown. (don't do that)\r\n\t * * 0.5 - Half of the last cell is shown.\r\n\t * * 1 - Full last cell is shown.\r\n\t *\r\n\t * @param value Location (0-1)\r\n\t */\r\n\tendLocation?: number;\r\n\r\n\t/**\r\n\t * Indicates if cusor's tooltip should be shown on this Axis.\r\n\t */\r\n\tcursorTooltipEnabled?: boolean;\r\n\r\n\t/**\r\n\t * Normally, when axis is zoomed in, a zoom out button is shown by a chart,\r\n\t * and vice versa: when axis is zoomed out completely, zoom out button is\r\n\t * hidden.\r\n\t *\r\n\t * Setting this to `false` will disable this behavior. Zooming in our out\r\n\t * this axis will not reveal or hide zoom out button.\r\n\t *\r\n\t * @default true\r\n\t */\r\n\ttoggleZoomOutButton?: boolean;\r\n\r\n\t/**\r\n\t * Indicates if axis' tooltip should be hidden while axis range is animating\r\n\t * (zooming)\r\n\t *\r\n\t * @since 4.7.16\r\n\t * @default true\r\n\t */\r\n\thideTooltipWhileZooming?: boolean;\r\n\r\n\r\n\tzoomable?: boolean;\r\n}\r\n\r\n/**\r\n * Defines events for [[Axis]].\r\n */\r\nexport interface IAxisEvents extends IComponentEvents {\r\n\r\n\t/**\r\n\t * Invoked when available axis lenght changes, e.g. after resizing the whole\r\n\t * chart.\r\n\t */\r\n\tlengthchanged: {}\r\n\r\n}\r\n\r\n/**\r\n * Defines adapters for [[Axis]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IAxisAdapters extends IComponentAdapters, IAxisProperties {\r\n\t/**\r\n\t * Applied to the tooltip text before it is shown.\r\n\t */\r\n\tgetTooltipText: string;\r\n\r\n}\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\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\nexport class Axis<T extends AxisRenderer = AxisRenderer> extends Component {\r\n\r\n\t/**\r\n\t * Defines list of data fields.\r\n\t */\r\n\tpublic _dataFields: IAxisDataFields;\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IAxisProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IAxisAdapters;\r\n\r\n\t/**\r\n\t * Defines the type of the [[DataItem]] used in the class.\r\n\t */\r\n\tpublic _dataItem: AxisDataItem;\r\n\r\n\t/**\r\n\t * A list of Axis Ranges.\r\n\t */\r\n\tprotected _axisRanges: ListTemplate<this[\"_dataItem\"]>;\r\n\r\n\t/**\r\n\t * Defines the type of the axis breaks.\r\n\t */\r\n\tpublic _axisBreak: AxisBreak;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IAxisEvents;\r\n\r\n\t/**\r\n\t * A [[Label]] instance that is used for Axis title label.\r\n\t */\r\n\tprotected _title: Label;\r\n\r\n\t/**\r\n\t * \"X\", \"Y\", etc.\r\n\t *\r\n\t * This is needed so that Axis knows which of the values from series' data\r\n\t * items it should use.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic axisLetter: string;\r\n\r\n\t/**\r\n\t * A reference to chart the axis is for.\r\n\t */\r\n\tprotected _chart: Chart;\r\n\r\n\t/**\r\n\t * A type for renderer used for this Axis.\r\n\t */\r\n\tpublic _renderer: T;\r\n\r\n\t/**\r\n\t * Number of Grid elements on the axis.\r\n\t */\r\n\tprotected _gridCount: number = 10;\r\n\r\n\t/**\r\n\t * A list of [[XYSeries]] that are using this Axis.\r\n\t */\r\n\tprotected _series: List<XYSeries> = new List<XYSeries>();\r\n\r\n\t/**\r\n\t * Holds the length of the Axis, so that we can check if it changed after\r\n\t * other changes and we need to update layouts.\r\n\t */\r\n\tprotected _prevLength: number;\r\n\r\n\t/**\r\n\t * A list of Axis Breaks associated with this Axis.\r\n\t */\r\n\tprotected _axisBreaks: SortedListTemplate<this[\"_axisBreak\"]>;\r\n\r\n\t/**\r\n\t * A reference to the Iterator for Axis' data items.\r\n\t */\r\n\tprotected _dataItemsIterator: $iter.ListIterator<this[\"_dataItem\"]>;\r\n\r\n\t/**\r\n\t * A name of the data field this Axis looks for its data in, e.g. \"category\".\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic axisFieldName: string;\r\n\r\n\t// we save these values so that cursur could use them if axis line is a fill\r\n\r\n\t/**\r\n\t * [currentItemStartPoint description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic currentItemStartPoint: IPoint;\r\n\r\n\t/**\r\n\t * [currentItemEndPoint description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic currentItemEndPoint: IPoint;\r\n\r\n\tprotected _tooltipPosition: number;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic relativePositionSprite?: Sprite;\r\n\r\n\t/**\r\n\t * Holds reference to a function that accepts a DataItem and its index as\r\n\t * parameters.\r\n\t *\r\n\t * It can either return a fill opacity for a fill, or manipulate data item\r\n\t * directly, to create various highlighting scenarios.\r\n\t *\r\n\t * For example, you can set it up to highlight only weekends on a\r\n\t * [[DateAxis]].\r\n\t */\r\n\tpublic fillRule(dataItem: this[\"_dataItem\"], index?: number): void {\r\n\t\tif (!$type.isNumber(index)) {\r\n\t\t\tindex = dataItem.index;\r\n\t\t}\r\n\t\tif (index / 2 == Math.round(index / 2)) {\r\n\t\t\tdataItem.axisFill.__disabled = true;\r\n\t\t\tdataItem.axisFill.opacity = 0;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tdataItem.axisFill.opacity = 1;\r\n\t\t\tdataItem.axisFill.__disabled = false;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Full length of the axis, in pixels.\r\n\t *\r\n\t * @readonly\r\n\t */\r\n\tpublic axisFullLength: number;\r\n\r\n\t/**\r\n\t * Ghost label is used to prevent chart shrinking/expanding when zooming or\r\n\t * when data is invalidated. You can set custom text on it so that it would\r\n\t * be bigger/smaller,\r\n\t */\r\n\tpublic ghostLabel: AxisLabel;\r\n\r\n\t/**\r\n\t * Specifies if axis should be automatically disposed when removing from\r\n\t * chart's axis list.\r\n\t *\r\n\t * @default true\r\n\t */\r\n\tpublic autoDispose: boolean = true;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected _axisItemCount: number = 0;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tif (this.constructor === Axis) {\r\n\t\t\tthrow new Error(\"'Axis' cannot be instantiated directly. Please use a specific axis type.\");\r\n\t\t}\r\n\r\n\t\tthis.hideTooltipWhileZooming = true;\r\n\t\tthis.minWidth = 0.0001;\r\n\t\tthis.minHeight = 0.0001;\r\n\t\tthis.className = \"Axis\";\r\n\t\tthis.shouldClone = false;\r\n\t\tthis.setPropertyValue(\"cursorTooltipEnabled\", true);\r\n\t\tthis.toggleZoomOutButton = true;\r\n\t\tthis.zoomable = true;\r\n\r\n\t\tlet interfaceColors = new InterfaceColorSet();\r\n\r\n\t\t// Create title\r\n\t\tthis.title = new Label();\r\n\t\tthis.title.shouldClone = false;\r\n\t\tthis._disposers.push(this.title);\r\n\t\tthis.setPropertyValue(\"startLocation\", 0);\r\n\t\tthis.setPropertyValue(\"endLocation\", 1);\r\n\r\n\t\t// Data item iterator\r\n\t\tthis._dataItemsIterator = new $iter.ListIterator<this[\"_dataItem\"]>(this.dataItems, () => this.dataItems.create());\r\n\t\tthis._dataItemsIterator.createNewItems = true;\r\n\r\n\t\t// Create tooltip\r\n\t\tlet tooltip: Tooltip = new Tooltip();\r\n\t\tthis._disposers.push(tooltip);\r\n\t\ttooltip.label.padding(5, 10, 5, 10);\r\n\t\ttooltip.background.pointerLength = 5;\r\n\t\ttooltip.fitPointerToBounds = true;\r\n\t\ttooltip.background.filters.clear();\r\n\r\n\t\t// Set virtual parentfor the tooltip so that it can properly inheirt\r\n\t\t// formatters from the axis.\r\n\t\ttooltip.virtualParent = this;\r\n\r\n\t\t// Create background element for the tooltip\r\n\t\tlet background: PointedRectangle = <PointedRectangle>tooltip.background;\r\n\t\tbackground.cornerRadius = 0;\r\n\t\tbackground.fill = interfaceColors.getFor(\"alternativeBackground\");\r\n\t\tbackground.stroke = background.fill;\r\n\t\tbackground.strokeWidth = 1;\r\n\t\tbackground.fillOpacity = 1;\r\n\t\ttooltip.label.fill = interfaceColors.getFor(\"alternativeText\");\r\n\r\n\t\tthis.tooltip = tooltip;\r\n\r\n\t\t// Accessibility\r\n\t\tthis.readerHidden = true;\r\n\r\n\t\tthis.events.on(\"rangechangestarted\", () => {\r\n\r\n\t\t\tthis.series.each((series) => {\r\n\t\t\t\tif (series.hideTooltipWhileZooming) {\r\n\t\t\t\t\tseries.tooltip.hide();\r\n\t\t\t\t\tseries.tooltip.preventShow = true;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\tif (this.hideTooltipWhileZooming) {\r\n\t\t\t\tthis.tooltip.hide();\r\n\t\t\t\tthis.tooltip.preventShow = true;\r\n\t\t\t}\r\n\t\t}, undefined, false);\r\n\r\n\t\tthis.events.on(\"rangechangeended\", () => {\r\n\t\t\tthis.series.each((series) => {\r\n\t\t\t\tif (series.hideTooltipWhileZooming) {\r\n\t\t\t\t\tseries.tooltip.hide();\r\n\t\t\t\t\tseries.tooltip.preventShow = false;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\tif (this.hideTooltipWhileZooming) {\r\n\t\t\t\tthis.tooltip.hide();\r\n\t\t\t\tthis.tooltip.preventShow = false;\r\n\t\t\t}\r\n\t\t}, undefined, false);\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a new/empty DataItem of the type appropriate for this object.\r\n\t *\r\n\t * @see {@link DataItem}\r\n\t * @return Data Item\r\n\t */\r\n\tprotected createDataItem(): this[\"_dataItem\"] {\r\n\t\treturn new AxisDataItem();\r\n\t}\r\n\r\n\t/**\r\n\t * Invalidates layout.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic invalidateLayout(): void {\r\n\t\tsuper.invalidateLayout();\r\n\t\t// 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\t\t$iter.each(this.series.iterator(), (series) => {\r\n\t\t\tseries.invalidateLayout();\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Invalidates series of this axis.\r\n\t */\r\n\tpublic invalidateSeries(): void {\r\n\t\t// 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\t\t$iter.each(this.series.iterator(), (series) => {\r\n\t\t\tseries.invalidate();\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Override to cancel super call for data element validation.\r\n\t * @ignore\r\n\t */\r\n\tpublic validateDataElements() {\r\n\t\tthis._axisItemCount = 0;\r\n\t\tif (this.ghostLabel) {\r\n\t\t\tthis.renderer.updateLabelElement(this.ghostLabel, this.start, this.end);\r\n\t\t\tthis.ghostLabel.validate();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Recalculates the number of grid items on the axis.\r\n\t */\r\n\tprotected updateGridCount() {\r\n\t\tif (this.renderer) {\r\n\t\t\tlet gridCount = this.axisLength / this.renderer.minGridDistance;\r\n\t\t\tif (gridCount != this._gridCount) {\r\n\t\t\t\tthis._gridCount = gridCount;\r\n\t\t\t\tthis.clearCache();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Redraws the element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validateLayout(): void {\r\n\r\n\t\tthis.axisFullLength = this.axisLength / (this.end - this.start);\r\n\r\n\t\tsuper.validateLayout();\r\n\t\tthis.updateGridCount();\r\n\t\tlet renderer = this.renderer;\r\n\t\tif (renderer) {\r\n\t\t\trenderer.updateAxisLine();\r\n\t\t\trenderer.updateTooltip();\r\n\t\t\trenderer.updateBaseGridElement();\r\n\t\t}\r\n\r\n\t\tif (this._prevLength != this.axisLength) {\r\n\t\t\tthis.dispatchImmediately(\"lengthchanged\");\r\n\t\t\tthis._prevLength = this.axisLength;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Initializes Axis' renderer.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic initRenderer(): void {\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Adds a data item to the Axis.\r\n\t *\r\n\t * @param dataItem Data item\r\n\t */\r\n\tpublic appendDataItem(dataItem: this[\"_dataItem\"]) {\r\n\t\tlet renderer: AxisRenderer = this.renderer;\r\n\r\n\r\n\t\tlet tick = dataItem.tick;\r\n\t\tif (tick) {\r\n\t\t\tif (tick.above) {\r\n\t\t\t\ttick.parent = renderer.bulletsContainer;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\ttick.parent = renderer.gridContainer;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (dataItem.label) {\r\n\t\t\tdataItem.label.parent = renderer;\r\n\t\t}\r\n\r\n\t\tlet axisFill = dataItem.axisFill;\r\n\t\tif (axisFill) {\r\n\t\t\tif (axisFill.above) {\r\n\t\t\t\taxisFill.parent = renderer.bulletsContainer;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\taxisFill.parent = renderer.gridContainer;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet grid = dataItem.grid;\r\n\t\tif (grid) {\r\n\t\t\tif (grid.above) {\r\n\t\t\t\tgrid.parent = renderer.bulletsContainer;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tgrid.parent = renderer.gridContainer;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (dataItem.bullet) {\r\n\t\t\tdataItem.bullet.parent = renderer.bulletsContainer;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Redraws Axis' related items.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validate(): void {\r\n\t\tsuper.validate();\r\n\t\tthis.validateLayout();\r\n\r\n\t\tthis.renderer.updateGridContainer();\r\n\t}\r\n\r\n\t/**\r\n\t * Redars Axis ranges.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validateAxisRanges(): void {\r\n\t\t$iter.each(this.axisRanges.iterator(), (axisRange) => {\r\n\t\t\tthis.appendDataItem(axisRange);\r\n\t\t\tthis.validateDataElement(axisRange);\r\n\t\t\tif (axisRange.grid) {\r\n\t\t\t\taxisRange.grid.validate();\r\n\t\t\t}\r\n\t\t\tif (axisRange.tick) {\r\n\t\t\t\taxisRange.tick.validate();\r\n\t\t\t}\r\n\t\t\tif (axisRange.axisFill) {\r\n\t\t\t\taxisRange.axisFill.validate();\r\n\t\t\t}\r\n\t\t\tif (axisRange.label) {\r\n\t\t\t\taxisRange.label.validate();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Invalidates all axis breaks, so they are redrawn.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validateBreaks(): void {\r\n\t\tif (this._axisBreaks) {\r\n\t\t\t$iter.each(this._axisBreaks.iterator(), (axisBreak) => {\r\n\t\t\t\taxisBreak.invalidate();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Associates an Axis break with this Axis, after it is inserted into\r\n\t * `axisBreaks`.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param event Event\r\n\t */\r\n\tpublic processBreak(event: IListEvents<this[\"_axisBreak\"]>[\"inserted\"]) {\r\n\t\tlet axisBreak: this[\"_axisBreak\"] = event.newValue;\r\n\t\taxisBreak.parent = this.renderer.breakContainer;\r\n\t\taxisBreak.axis = this;\r\n\t}\r\n\r\n\t/**\r\n\t * Registers a [[XYSeries]] element with this Axis.\r\n\t *\r\n\t * Returns a [[Disposer]] for all events, added to Series for watching\r\n\t * changes in Axis, and vice versa.\r\n\t * @ignore\r\n\t * @param series Series\r\n\t * @return Event disposer\r\n\t */\r\n\tpublic registerSeries(series: XYSeries): IDisposer {\r\n\t\tthis.series.moveValue(series);\r\n\r\n\t\treturn new MultiDisposer([\r\n\t\t\tnew Disposer(() => {\r\n\t\t\t\tthis.series.removeValue(series);\r\n\t\t\t}),\r\n\r\n\t\t\tthis.events.on(\"lengthchanged\", series.invalidate, series, false),\r\n\t\t\tthis.events.on(\"lengthchanged\", series.createMask, series, false),\r\n\t\t\tthis.events.on(\"startchanged\", series.invalidate, series, false),\r\n\t\t\tthis.events.on(\"endchanged\", series.invalidate, series, false),\r\n\t\t\t//axis.events.on(\"validated\", chart.handleCursorPositionChange, chart, false)\t\t\t\r\n\r\n\t\t\t// TODO should these be disposed of ?\r\n\t\t\t//series.events.on(\"datavalidated\", this.processSeriesDataItems, this),\r\n\t\t\t//series.events.on(\"visibilitychanged\", this.processSeriesDataItems, this),\r\n\t\t\t//series.events.on(\"hidden\", this.processSeriesDataItems, this)\r\n\t\t]);\r\n\t}\r\n\r\n\t/**\r\n\t * An [[AxisRenderer]] to be used to render this Axis.\r\n\t *\r\n\t * Please note that most of the settings, related to Axis' appearance are set\r\n\t * via its renderer. Not directly on the Axis.\r\n\t *\r\n\t * E.g.:\r\n\t *\r\n\t * ```TypeScript\r\n\t * axis.renderer.inside = true;\r\n\t * axis.renderer.minLabelPosition = 0.1;\r\n\t * axis.renderer.maxLabelPosition = 0.9;\r\n\t * ```\r\n\t * ```JavaScript\r\n\t * axis.renderer.inside = true;\r\n\t * axis.renderer.minLabelPosition = 0.1;\r\n\t * axis.renderer.maxLabelPosition = 0.9;\r\n\t * ```\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/} for more info\r\n\t * @param renderer Renderer\r\n\t */\r\n\tpublic set renderer(renderer: this[\"_renderer\"]) {\r\n\t\tif (renderer != this._renderer) {\r\n\t\t\tthis._renderer = renderer;\r\n\t\t\trenderer.chart = this.chart;\r\n\t\t\trenderer.axis = this;\r\n\t\t\trenderer.parent = this;\r\n\t\t\tthis.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\t\t\tthis.initRenderer();\r\n\r\n\t\t\tthis._disposers.push(renderer.gridContainer.events.on(\"maxsizechanged\", this.invalidate, this, false));\r\n\r\n\t\t\tlet ghostLabel = this.renderer.labels.create();\r\n\t\t\tthis._disposers.push(ghostLabel);\r\n\t\t\tghostLabel.dataItem = this.dataItems.template.clone(); // just for the adapters not to fail\r\n\t\t\tghostLabel.text = \"L\";\r\n\t\t\tghostLabel.parent = this.renderer;\r\n\t\t\tghostLabel.shouldClone = false;\r\n\t\t\tghostLabel.fillOpacity = 0;\r\n\t\t\tghostLabel.opacity = 0;\r\n\t\t\tghostLabel.strokeOpacity = 0;\r\n\t\t\tghostLabel.interactionsEnabled = false;\r\n\t\t\tghostLabel.validate();\r\n\r\n\t\t\tthis.ghostLabel = ghostLabel;\r\n\r\n\t\t\tthis.events.on(\"beforedatavalidated\", () => {\r\n\t\t\t\tghostLabel.text = \"L\";\r\n\t\t\t}, undefined, false);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Renderer\r\n\t */\r\n\tpublic get renderer(): this[\"_renderer\"] {\r\n\t\treturn this._renderer;\r\n\t}\r\n\r\n\t/**\r\n\t * Converts a relative position to angle. (for circular axes)\r\n\t *\r\n\t * @param position Position (0-1)\r\n\t * @return Angle\r\n\t */\r\n\tpublic positionToAngle(position: number): number {\r\n\t\treturn this.renderer.positionToAngle(position);\r\n\t}\r\n\r\n\t/**\r\n\t * Converts pixel coordinates to a relative position. (0-1)\r\n\t *\r\n\t * @param point Coorinates (px)\r\n\t * @return Position (0-1)\r\n\t */\r\n\tpublic pointToPosition(point: IPoint): number {\r\n\t\treturn this.renderer.pointToPosition(point);\r\n\t}\r\n\r\n\t/**\r\n\t * Converts relative position to coordinate.\r\n\t *\r\n\t * @since 4.7.15\r\n\t * @param position (0-1)\r\n\t * @return coordinate (px)\r\n\t */\r\n\tpublic positionToCoordinate(position: number): number {\r\n\t\treturn this.renderer.positionToCoordinate(position);\r\n\t}\r\n\r\n\t/**\r\n\t * [getAnyRangePath description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @param start [description]\r\n\t * @param end [description]\r\n\t * @return [description]\r\n\t */\r\n\tpublic getAnyRangePath(start: any, end: any): string {\r\n\t\treturn this.renderer.getPositionRangePath(start, end);\r\n\t}\r\n\r\n\t/**\r\n\t * Converts any positional parameter to a relative position on axis.\r\n\t *\r\n\t * @todo Description (review)\r\n\t * @param value Pisition\r\n\t * @return Position (0-1)\r\n\t */\r\n\tpublic anyToPosition(value: any): number {\r\n\t\treturn 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Converts any positional parameter to a relative position on axis.\r\n\t *\r\n\t * @todo Description (review)\r\n\t * @param value Pisition\r\n\t * @return Orientation point\r\n\t */\r\n\tpublic anyToPoint(value: any): IOrientationPoint {\r\n\t\treturn { x: 0, y: 0, angle: 0 };\r\n\t}\r\n\r\n\t/**\r\n\t * [getPositionRangePath description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @param startPosition [description]\r\n\t * @param endPosition [description]\r\n\t * @return [description]\r\n\t */\r\n\tpublic getPositionRangePath(startPosition: number, endPosition: number): string {\r\n\t\tif (this.renderer) {\r\n\t\t\treturn this.renderer.getPositionRangePath(startPosition, endPosition);\r\n\t\t}\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\t/**\r\n\t * Actual axis length in pixels.\r\n\t *\r\n\t * @return Axis length (px)\r\n\t */\r\n\tpublic get axisLength(): number {\r\n\t\tif (this.renderer) {\r\n\t\t\treturn this.renderer.axisLength;\r\n\t\t}\r\n\t\treturn 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates if axis should display a tooltip for chart's cursor.\r\n\t *\r\n\t * @param value Display tooltip?\r\n\t */\r\n\tpublic set cursorTooltipEnabled(value: boolean) {\r\n\t\tif (this.setPropertyValue(\"cursorTooltipEnabled\", value)) {\r\n\t\t\tif (value && this.renderer) {\r\n\t\t\t\tthis.renderer.updateTooltip();\r\n\t\t\t}\r\n\t\t\telse if (this.tooltip) {\r\n\t\t\t\tthis.tooltip.hide(0);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Normally, when axis is zoomed in, a zoom out button is shown by a chart,\r\n\t * and vice versa: when axis is zoomed out completely, zoom out button is\r\n\t * hidden.\r\n\t *\r\n\t * Setting this to `false` will disable this behavior. Zooming in our out\r\n\t * this axis will not reveal or hide zoom out button.\r\n\t *\r\n\t * @default true\r\n\t * @since 4.6.2\r\n\t * @param value Toggle zoom out button?\r\n\t */\r\n\tpublic set toggleZoomOutButton(value: boolean) {\r\n\t\tthis.setPropertyValue(\"toggleZoomOutButton\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Toggle zoom out button?\r\n\t */\r\n\tpublic get toggleZoomOutButton(): boolean {\r\n\t\treturn this.getPropertyValue(\"toggleZoomOutButton\");\r\n\t}\r\n\r\n\t/**\r\n\t * @return Display tooltip?\r\n\t */\r\n\tpublic get cursorTooltipEnabled(): boolean {\r\n\t\treturn this.getPropertyValue(\"cursorTooltipEnabled\");\r\n\t}\r\n\r\n\t/**\r\n\t * Hides element's [[Tooltip]].\r\n\t *\r\n\t * @see {@link Tooltip}\r\n\t */\r\n\tpublic hideTooltip(duration?: number): void {\r\n\t\tsuper.hideTooltip(duration);\r\n\t\tthis._tooltipPosition = undefined;\r\n\t}\r\n\r\n\t/**\r\n\t * Shows Axis tooltip at specific relative position within Axis. (0-1)\r\n\t *\r\n\t * @param position Position (0-1)\r\n\t * @param local or global position\r\n\t */\r\n\tpublic showTooltipAtPosition(position: number, local?: boolean) {\r\n\t\tlet tooltip: Tooltip = this._tooltip;\r\n\r\n\t\tif (!tooltip || this.dataItems.length <= 0) {\r\n\t\t\tthis._tooltipPosition = undefined;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (!local) {\r\n\t\t\t\tposition = this.toAxisPosition(position);\r\n\t\t\t}\r\n\r\n\t\t\tif (!$type.isNumber(position) || position < this.start || position > this.end) {\r\n\t\t\t\ttooltip.hide(0);\r\n\t\t\t\tthis._tooltipPosition = undefined;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet renderer = this.renderer;\r\n\r\n\t\t\t//@todo: think of how to solve this better\r\n\t\t\tif (!tooltip.parent) {\r\n\t\t\t\ttooltip.parent = this.tooltipContainer;\r\n\t\t\t}\r\n\r\n\t\t\tlet tooltipLocation = renderer.tooltipLocation;\r\n\r\n\t\t\tlet startPosition: number = this.getCellStartPosition(position);\r\n\t\t\tlet endPosition: number = this.getCellEndPosition(position);\r\n\r\n\t\t\tif (this.tooltipPosition == \"fixed\") {\r\n\t\t\t\tposition = startPosition + (endPosition - startPosition) * tooltipLocation;\r\n\t\t\t}\r\n\r\n\t\t\tposition = $math.fitToRange(position, this.start, this.end);\r\n\r\n\t\t\tif (this._tooltipPosition != position) {\r\n\t\t\t\tthis._tooltipPosition = position;\r\n\r\n\t\t\t\tlet tooltipLocation2 = renderer.tooltipLocation2;\r\n\r\n\t\t\t\tlet startPoint: IPoint = renderer.positionToPoint(startPosition, tooltipLocation2);\r\n\t\t\t\tlet endPoint: IPoint = renderer.positionToPoint(endPosition, tooltipLocation2);\r\n\r\n\t\t\t\t// save values so cursor could use them\r\n\t\t\t\tthis.currentItemStartPoint = startPoint;\r\n\t\t\t\tthis.currentItemEndPoint = endPoint;\r\n\r\n\t\t\t\tif (renderer.fullWidthTooltip) {\r\n\t\t\t\t\ttooltip.width = endPoint.x - startPoint.x;\r\n\t\t\t\t\ttooltip.height = endPoint.y - startPoint.y;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet point: IPoint = renderer.positionToPoint(position, tooltipLocation2);\r\n\t\t\t\tlet globalPoint: IPoint = $utils.spritePointToSvg(point, this.renderer.line);\r\n\t\t\t\ttooltip.text = this.getTooltipText(position);\r\n\r\n\t\t\t\tif (tooltip.text) {\r\n\t\t\t\t\ttooltip.delayedPointTo(globalPoint);\r\n\t\t\t\t\ttooltip.show();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (!this.cursorTooltipEnabled || this.tooltip.disabled) {\r\n\t\t\t\ttooltip.hide(0);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Converts relative position (0-1) to Axis position with zoom level and\r\n\t * inversed taken into account.\r\n\t *\r\n\t * @param position Global position (0-1)\r\n\t * @return Position within Axis (0-1)\r\n\t */\r\n\tpublic toAxisPosition(position: number): number {\r\n\r\n\t\tposition = this.renderer.toAxisPosition(position);\r\n\r\n\t\tif (position == undefined) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tposition = position * (this.end - this.start);\r\n\t\tif (this.renderer.inversed) {\r\n\t\t\tposition = this.end - position;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tposition = this.start + position;\r\n\t\t}\r\n\r\n\t\treturn position;\r\n\t}\r\n\r\n\t/**\r\n\t * Converts position on the axis with zoom level and\r\n\t * inversed taken into account to global position.\r\n\t *\r\n\t * @param position Axis position (0-1)\r\n\t * @return Global position (0-1)\r\n\t */\r\n\tpublic toGlobalPosition(position: number): number {\r\n\t\tif (this.renderer.inversed) {\r\n\t\t\tposition = this.end - position;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tposition = position - this.start;\r\n\t\t}\r\n\r\n\t\treturn position / (this.end - this.start);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns text to be used for cursor's Axis tooltip.\r\n\t *\r\n\t * This is a placeholder to override for extending classes.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param position Position coordinate (px)\r\n\t * @return Label text\r\n\t */\r\n\tpublic getTooltipText(position: number): string {\r\n\t\treturn;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates Axis' tooltip's position and possibly size, and pointer (stem)\r\n\t * place.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param pointerOrientation Pointer (stem) orientation\r\n\t * @param boundingRectangle A rectangle for tooltip to fit within\r\n\t */\r\n\tpublic updateTooltip(pointerOrientation: PointerOrientation, boundingRectangle: IRectangle): void {\r\n\t\tlet tooltip: Tooltip = this._tooltip;\r\n\t\tif (tooltip) {\r\n\t\t\ttooltip.fixDoc = false;\r\n\t\t\ttooltip.pointerOrientation = pointerOrientation;\r\n\t\t\ttooltip.setBounds($utils.spriteRectToSvg(boundingRectangle, this.renderer.line));\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * [roundPosition description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @param position Relative position\r\n\t * @param location Location on axis\r\n\t * @return Rounded position\r\n\t */\r\n\tpublic roundPosition(position: number, location: AxisItemLocation, axisLocation?: number): number {\r\n\t\treturn position;\r\n\t}\r\n\r\n\t/**\r\n\t * [getCellStartPosition description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @param position [description]\r\n\t * @return [description]\r\n\t */\r\n\tpublic getCellStartPosition(position: number): number {\r\n\t\treturn position;\r\n\t}\r\n\r\n\t/**\r\n\t * [getCellEndPosition description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @param position [description]\r\n\t * @return [description]\r\n\t */\r\n\tpublic getCellEndPosition(position: number): number {\r\n\t\treturn position;\r\n\t}\r\n\r\n\t/**\r\n\t * A list of axis ranges for this Axis.\r\n\t *\r\n\t * @return Axis ranges\r\n\t */\r\n\tpublic get axisRanges(): ListTemplate<this[\"_dataItem\"]> {\r\n\t\tif (!this._axisRanges) {\r\n\t\t\tlet dataItem: AxisDataItem = this.createDataItem();\r\n\t\t\tdataItem.isRange = true;\r\n\t\t\tdataItem.axisFill = this.renderer.axisFills.template.clone();\r\n\t\t\tdataItem.grid = this.renderer.grid.template.clone();\r\n\t\t\tdataItem.tick = this.renderer.ticks.template.clone();\r\n\t\t\tdataItem.label = this.renderer.labels.template.clone();\r\n\r\n\t\t\tdataItem.isTemplate = true;\r\n\t\t\tdataItem.component = this;\r\n\t\t\tdataItem.axisFill.disabled = false;\r\n\t\t\tdataItem.tick.disabled = false;\r\n\t\t\tdataItem.grid.disabled = false;\r\n\t\t\tdataItem.label.disabled = false;\r\n\r\n\t\t\tthis._axisRanges = new ListTemplate<this[\"_dataItem\"]>(dataItem);\r\n\t\t\tthis._axisRanges.events.on(\"inserted\", this.processAxisRange, this, false);\r\n\t\t\tthis._disposers.push(new ListDisposer(this._axisRanges));\r\n\t\t\tthis._disposers.push(this._axisRanges.template);\r\n\t\t}\r\n\t\treturn this._axisRanges;\r\n\t}\r\n\r\n\t/**\r\n\t * Decorates an axis range after it has been added to the axis range list.\r\n\t *\r\n\t * @param event Event\r\n\t */\r\n\tprotected processAxisRange(event: IListEvents<this[\"_dataItem\"]>[\"inserted\"]) {\r\n\t\tlet axisRange: AxisDataItem = event.newValue;\r\n\t\taxisRange.component = this;\r\n\t\taxisRange.isRange = true;\r\n\t}\r\n\r\n\t/**\r\n\t * A list of axis breaks on this Axis.\r\n\t *\r\n\t * @return Axis breaks.\r\n\t */\r\n\tpublic get axisBreaks(): SortedListTemplate<this[\"_axisBreak\"]> {\r\n\t\tif (!this._axisBreaks) {\r\n\t\t\tthis._axisBreaks = new SortedListTemplate<this[\"_axisBreak\"]>(this.createAxisBreak(), (a, b) => {\r\n\t\t\t\treturn $number.order(a.adjustedStartValue, b.adjustedStartValue);\r\n\t\t\t});\r\n\r\n\t\t\tthis._axisBreaks.events.on(\"inserted\", this.processBreak, this, false);\r\n\t\t\tthis._disposers.push(new ListDisposer(this._axisBreaks));\r\n\t\t\tthis._disposers.push(this._axisBreaks.template);\r\n\t\t}\r\n\t\treturn this._axisBreaks;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a new axis break.\r\n\t *\r\n\t * @return Axis break\r\n\t */\r\n\tprotected createAxisBreak(): this[\"_axisBreak\"] {\r\n\t\treturn new AxisBreak();\r\n\t}\r\n\r\n\t/**\r\n\t * A list of Series currently associated with this Axis.\r\n\t *\r\n\t * @return Series\r\n\t */\r\n\tpublic get series(): List<XYSeries> {\r\n\t\tif (!this._series) {\r\n\t\t\tthis._series = new List<XYSeries>();\r\n\t\t}\r\n\t\treturn this._series;\r\n\t}\r\n\r\n\t/**\r\n\t * Processes Series' data items.\r\n\t *\r\n\t * This is a placeholder to override for extending classes.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic processSeriesDataItems(): void {\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Processes Series' single data item.\r\n\t *\r\n\t * This is a placeholder to override for extending classes.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param dataItem Data item\r\n\t */\r\n\tpublic processSeriesDataItem(dataItem: XYSeriesDataItem, axisLetter?: string): void {\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Post-processes Serie's data items.\r\n\t *\r\n\t * This is a placeholder to override for extending classes.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic postProcessSeriesDataItems(series?: XYSeries): void {\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Post-processes Serie's single data item.\r\n\t *\r\n\t * This is a placeholder to override for extending classes.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param dataItem Data item\r\n\t */\r\n\tpublic postProcessSeriesDataItem(dataItem: XYSeriesDataItem): void {\r\n\r\n\t}\r\n\r\n\t//\r\n\r\n\t/**\r\n\t * Updates Axis based on all Series that might influence it.\r\n\t *\r\n\t * Called by Series after Series data is validated.\r\n\t *\r\n\t * This is a placeholder to override for extending classes.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic updateAxisBySeries(): void {\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Hides unused data items.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic hideUnusedDataItems(): void {\r\n\t\t// hide all unused\r\n\t\tlet dataItemsIterator: $iter.ListIterator<this[\"_dataItem\"]> = this._dataItemsIterator;\r\n\r\n\t\tdataItemsIterator.createNewItems = false;\r\n\r\n\t\t$iter.each(dataItemsIterator.iterator(), (dataItem) => {\r\n\t\t\tthis.validateDataElement(dataItem); // solves shrinking\r\n\t\t\tdataItem.__disabled = true;\r\n\t\t});\r\n\r\n\t\tdataItemsIterator.clear();\r\n\t\tdataItemsIterator.createNewItems = true;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a Series' data item that corresponds to specific position on Axis.\r\n\t *\r\n\t * This is a placeholder to override for extending classes.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param series Series\r\n\t * @param position Position (0-1)\r\n\t * @param findNearest Should axis try to find nearest tooltip if there is no data item at exact position\r\n\t * @return Data item\r\n\t */\r\n\tpublic getSeriesDataItem(series: XYSeries, position: number, findNearest?: boolean): XYSeriesDataItem {\r\n\t\treturn;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an angle that corresponds to specific position on axis.\r\n\t *\r\n\t * This is a placeholder to override for extending classes.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t * @param dataItem Data item\r\n\t * @param key ???\r\n\t * @param location Location\r\n\t * @param stackKey ???\r\n\t * @return Angle\r\n\t */\r\n\tpublic getAngle(dataItem: XYSeriesDataItem, key: string, location?: number, stackKey?: string, range?: IRange): number {\r\n\t\treturn;\r\n\t}\r\n\r\n\t/**\r\n\t * [getX description]\r\n\t *\r\n\t * This is a placeholder to override for extending classes.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t * @param dataItem [description]\r\n\t * @param key [description]\r\n\t * @param location [description]\r\n\t * @param stackKey [description]\r\n\t * @return [description]\r\n\t */\r\n\tpublic getX(dataItem: XYSeriesDataItem, key: string, location?: number, stackKey?: string, range?: IRange): number {\r\n\t\treturn;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * [getX description]\r\n\t *\r\n\t * This is a placeholder to override for extending classes.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t * @param dataItem [description]\r\n\t * @param key [description]\r\n\t * @param location [description]\r\n\t * @param stackKey [description]\r\n\t * @return [description]\r\n\t */\r\n\tpublic getPositionX(dataItem: XYSeriesDataItem, key: string, location?: number, stackKey?: string, range?: IRange): number {\r\n\t\treturn;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * [getY description]\r\n\t *\r\n\t * This is a placeholder to override for extending classes.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t * @param dataItem [description]\r\n\t * @param key [description]\r\n\t * @param location [description]\r\n\t * @param stackKey [description]\r\n\t * @return [description]\r\n\t */\r\n\tpublic getY(dataItem: XYSeriesDataItem, key: string, location?: number, stackKey?: string, range?: IRange): number {\r\n\t\treturn;\r\n\t}\r\n\r\n\t/**\r\n\t * [getY description]\r\n\t *\r\n\t * This is a placeholder to override for extending classes.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t * @param dataItem [description]\r\n\t * @param key [description]\r\n\t * @param location [description]\r\n\t * @param stackKey [description]\r\n\t * @return [description]\r\n\t */\r\n\tpublic getPositionY(dataItem: XYSeriesDataItem, key: string, location?: number, stackKey?: string, range?: IRange): number {\r\n\t\treturn;\r\n\t}\r\n\r\n\t/**\r\n\t * Coordinates of the actual axis start.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Base point coordinates\r\n\t */\r\n\tpublic get basePoint(): IPoint {\r\n\t\treturn { x: 0, y: 0 };\r\n\t}\r\n\r\n\t/**\r\n\t * [dataChangeUpdate description]\r\n\t *\r\n\t * This is a placeholder to override for extending classes.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t */\r\n\tpublic dataChangeUpdate(): void {\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * [dataChangeUpdate description]\r\n\t *\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t */\r\n\tpublic seriesDataChangeUpdate(series: XYSeries): void {\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Removes axis breaks that fall between `min` and `max` (???)\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t * @param min Start value\r\n\t * @param max End value\r\n\t * @return Spread o\r\n\t */\r\n\tprotected adjustDifference(min: number, max: number): number {\r\n\t\tlet difference: number = max - min;\r\n\t\tif ($type.isNumber(difference)) {\r\n\t\t\tif (this._axisBreaks) {\r\n\t\t\t\t$iter.eachContinue(this._axisBreaks.iterator(), (axisBreak) => {\r\n\t\t\t\t\tlet startValue: number = axisBreak.adjustedStartValue;\r\n\t\t\t\t\tlet endValue: number = axisBreak.adjustedEndValue;\r\n\t\t\t\t\tif ($type.isNumber(startValue) && $type.isNumber(endValue)) {\r\n\t\t\t\t\t\t// breaks are sorted, we don't need go further anymore\r\n\t\t\t\t\t\tif (startValue > max) {\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (endValue >= min) {\r\n\t\t\t\t\t\t\tif ($type.isNumber(startValue) && $type.isNumber(endValue)) {\r\n\t\t\t\t\t\t\t\tlet breakSize: number = axisBreak.breakSize;\r\n\r\n\t\t\t\t\t\t\t\tlet intersection: IRange = $math.intersection({ start: startValue, end: endValue }, { start: min, end: max });\r\n\r\n\t\t\t\t\t\t\t\tif (intersection) {\r\n\t\t\t\t\t\t\t\t\tdifference -= (intersection.end - intersection.start) * (1 - breakSize);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\treturn difference;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if specific value falls within a break.\r\n\t *\r\n\t * Returns [[AxisBreak]] the value falls into.\r\n\t *\r\n\t * @param value Value to check\r\n\t * @return Axis break\r\n\t */\r\n\tprotected isInBreak(value: number): this[\"_axisBreak\"] {\r\n\t\tif (this._axisBreaks) {\r\n\t\t\treturn $iter.find(this._axisBreaks.iterator(), (axisBreak) =>\r\n\t\t\t\tvalue >= axisBreak.adjustedStartValue &&\r\n\t\t\t\tvalue <= axisBreak.adjustedEndValue);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * [fixAxisBreaks description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t */\r\n\tprotected fixAxisBreaks(): void {\r\n\t\tif (this._axisBreaks) {\r\n\t\t\tlet axisBreaks: SortedListTemplate<this[\"_axisBreak\"]> = this._axisBreaks;\r\n\t\t\tif (axisBreaks.length > 0) {\r\n\t\t\t\t// first make sure that startValue is <= end value\r\n\t\t\t\t// This needs to make a copy of axisBreaks because it mutates the list while traversing\r\n\t\t\t\t// TODO very inefficient\r\n\t\t\t\t$array.each($iter.toArray(axisBreaks.iterator()), (axisBreak) => {\r\n\t\t\t\t\tlet startValue: number = $math.min(axisBreak.startValue, axisBreak.endValue);\r\n\t\t\t\t\tlet endValue: number = $math.max(axisBreak.startValue, axisBreak.endValue);\r\n\r\n\t\t\t\t\taxisBreak.adjustedStartValue = startValue;\r\n\t\t\t\t\taxisBreak.adjustedEndValue = endValue;\r\n\r\n\t\t\t\t\tthis._axisBreaks.update(axisBreak);\r\n\t\t\t\t});\r\n\r\n\r\n\t\t\t\tlet firstAxisBreak: this[\"_axisBreak\"] = axisBreaks.first;\r\n\t\t\t\tlet previousEndValue: number = Math.min(firstAxisBreak.startValue, firstAxisBreak.endValue);\r\n\r\n\t\t\t\t// process breaks\r\n\t\t\t\t// TODO does this need to call axisBreaks.update ?\r\n\t\t\t\t$iter.each(axisBreaks.iterator(), (axisBreak) => {\r\n\t\t\t\t\tlet startValue: number = axisBreak.adjustedStartValue;\r\n\t\t\t\t\tlet endValue: number = axisBreak.adjustedEndValue;\r\n\r\n\t\t\t\t\t// breaks can't overlap\r\n\t\t\t\t\t// if break starts before previous break ends\r\n\t\t\t\t\tif (startValue < previousEndValue) {\r\n\t\t\t\t\t\tstartValue = previousEndValue;\r\n\r\n\t\t\t\t\t\tif (endValue < previousEndValue) {\r\n\t\t\t\t\t\t\tendValue = previousEndValue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\taxisBreak.adjustedStartValue = startValue;\r\n\t\t\t\t\taxisBreak.adjustedEndValue = endValue;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * We need start/end indexes of axes to be 0 - `dataItems.length`.\r\n\t *\r\n\t * Yes, also for category axis, this helps to avoid jumping of categories\r\n\t * while scrolling and does not do a lot of extra work as we use\r\n\t * protected `_startIndex` and `_endIndex` when working with items.\r\n\t *\r\n\t * @hidden\r\n\t */\r\n\r\n\t/**\r\n\t * [startIndex description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @param value [description]\r\n\t */\r\n\tpublic set startIndex(value: number) {\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t * @return [description]\r\n\t */\r\n\tpublic get startIndex(): number {\r\n\t\treturn 0;\r\n\t}\r\n\r\n\t/**\r\n\t * [endIndex description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @param value [description]\r\n\t */\r\n\tpublic set endIndex(value: number) {\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t * @return [description]\r\n\t */\r\n\tpublic get endIndex(): number {\r\n\t\treturn this.dataItems.length;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Returns a formatted label based on position.\r\n\t *\r\n\t * Individual axis types should override this method to generate a label\r\n\t * that is relevant to axis type.\r\n\t *\r\n\t * Please note that `position` represents position within axis which may be\r\n\t * zoomed and not correspond to Cursor's `position`.\r\n\t *\r\n\t * To convert Cursor's `position` to Axis' `position` use `toAxisPosition()` method.\r\n\t *\r\n\t * @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\t * @param position Relative position on axis (0-1)\r\n\t * @return Position label\r\n\t */\r\n\tpublic getPositionLabel(position: number): string {\r\n\t\treturn Math.round(position * 100) + \"%x\";\r\n\t}\r\n\r\n\t/**\r\n\t * A Chart this Axis belongs to.\r\n\t *\r\n\t * @param value Chart\r\n\t */\r\n\tpublic set chart(value: Chart) {\r\n\t\tthis._chart = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Chart\r\n\t */\r\n\tpublic get chart(): Chart {\r\n\t\treturn this._chart;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a data item for a Series range.\r\n\t *\r\n\t * @param series Target Series\r\n\t * @return Range data item\r\n\t */\r\n\tpublic createSeriesRange(series: XYSeries): this[\"_dataItem\"] {\r\n\t\tlet range = this.axisRanges.create();\r\n\t\trange.component = this;\r\n\t\trange.axisFill = this.renderer.axisFills.template.clone();\r\n\t\trange.axisFill.disabled = false;\r\n\t\trange.axisFill.fillOpacity = 0;\r\n\r\n\t\trange.grid = this.renderer.grid.template.clone();\r\n\t\trange.grid.disabled = true;\r\n\r\n\t\trange.tick = this.renderer.ticks.template.clone();\r\n\t\trange.tick.disabled = true;\r\n\r\n\t\trange.label = this.renderer.labels.template.clone();\r\n\t\trange.label.disabled = true;\r\n\r\n\t\trange.addDisposer(new Disposer(() => {\r\n\t\t\tseries.axisRanges.removeValue(range);\r\n\t\t}))\r\n\r\n\t\tseries.axisRanges.push(range);\r\n\t\treturn range;\r\n\t}\r\n\r\n\t/**\r\n\t * Copies all properties and related data from a different instance of Axis.\r\n\t *\r\n\t * @param source Source Axis\r\n\t */\r\n\tpublic copyFrom(source: this): void {\r\n\t\tsuper.copyFrom(source);\r\n\t\tif (this.renderer) {\r\n\t\t\tthis.renderer.copyFrom(source.renderer);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (source.renderer) {\r\n\t\t\t\tthis.renderer = source.renderer.clone();\r\n\t\t\t\tthis._disposers.push(this.renderer);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (source.title) {\r\n\t\t\tif (!this.title) {\r\n\t\t\t\tthis.title = source.title.clone();\r\n\t\t\t\tthis.title.parent = this;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.title.copyFrom(source.title);\r\n\t\t\t}\r\n\t\t\tthis._disposers.push(this.title);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Resets internal iterator.\r\n\t */\r\n\tprotected resetIterators(): void {\r\n\t\tthis._dataItemsIterator.reset();\r\n\t}\r\n\r\n\t/**\r\n\t * Processes JSON-based config before it is applied to the object.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param config Config\r\n\t */\r\n\tpublic processConfig(config?: { [index: string]: any }): void {\r\n\r\n\t\tif (config) {\r\n\r\n\t\t\t// Set up axis ranges\r\n\t\t\tif ($type.hasValue(config.axisRanges) && $type.isArray(config.axisRanges)) {\r\n\t\t\t\tfor (let i = 0, len = config.axisRanges.length; i < len; i++) {\r\n\t\t\t\t\tlet range = config.axisRanges[i];\r\n\r\n\t\t\t\t\t// If `series` is set, we know it's a series range\r\n\t\t\t\t\tif ($type.hasValue(range[\"series\"])) {\r\n\t\t\t\t\t\tif ($type.isString(range[\"series\"])) {\r\n\t\t\t\t\t\t\tif (this.map.hasKey(range[\"series\"])) {\r\n\t\t\t\t\t\t\t\t//range[\"series\"] = this.map.getKey(range[\"series\"]);\r\n\t\t\t\t\t\t\t\tconfig.axisRanges[i] = this.createSeriesRange(this.map.getKey(range[\"series\"]));\r\n\t\t\t\t\t\t\t\tdelete (range[\"series\"]);\r\n\t\t\t\t\t\t\t\tconfig.axisRanges[i].config = range;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tsuper.processConfig(config);\r\n\t}\r\n\r\n\t/**\r\n\t * Ordering function used in JSON setup.\r\n\t *\r\n\t * @param a Item A\r\n\t * @param b Item B\r\n\t * @return Order\r\n\t */\r\n\tprotected configOrder(a: string, b: string): Ordering {\r\n\t\tif (a == b) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\t// last\r\n\t\telse if (a == \"title\") {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\telse if (b == \"title\") {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\r\n\t\t// first\r\n\t\telse if (a == \"component\") {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\telse if (b == \"component\") {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn super.configOrder(a, b);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Axis start location. Works on Date/Category axis, doesn't work on Value axis.\r\n\t *\r\n\t * * 0 - Full first cell is shown.\r\n\t * * 0.5 - Half of first cell is shown.\r\n\t * * 1 - None of the first cell is visible. (you probably don't want that)\r\n\t *\r\n\t * @param value Location (0-1)\r\n\t */\r\n\tpublic set startLocation(value: number) {\r\n\t\tthis.setPropertyValue(\"startLocation\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Location (0-1)\r\n\t */\r\n\tpublic get startLocation(): number {\r\n\t\treturn this.getPropertyValue(\"startLocation\");\r\n\t}\r\n\r\n\t/**\r\n\t * Axis end location. Works on Date/Category axis, doesn't work on Value axis.\r\n\t *\r\n\t * * 0 - None of the last cell is shown. (don't do that)\r\n\t * * 0.5 - Half of the last cell is shown.\r\n\t * * 1 - Full last cell is shown.\r\n\t *\r\n\t * @param value Location (0-1)\r\n\t */\r\n\tpublic set endLocation(value: number) {\r\n\t\tthis.setPropertyValue(\"endLocation\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Location (0-1)\r\n\t */\r\n\tpublic get endLocation(): number {\r\n\t\treturn this.getPropertyValue(\"endLocation\");\r\n\t}\r\n\r\n\r\n\tprotected setDisabled(value: boolean) {\r\n\t\tlet changed = super.setDisabled(value);\r\n\t\tif (this.renderer) {\r\n\t\t\tthis.renderer.gridContainer.disabled = value;\r\n\t\t}\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t/**\r\n\t * A reference to a [[Label]] element which serves as a title to the axis.\r\n\t *\r\n\t * When axis is created it aleready has an element, so you can just modify\r\n\t * it.\r\n\t *\r\n\t * Or you can replace it with your own instance of `Label`.\r\n\t * \r\n\t * @param value Title label\r\n\t */\r\n\tpublic set title(value: Label) {\r\n\t\tif (this._title && this._title != value) {\r\n\t\t\tthis._title.dispose();\r\n\t\t}\r\n\t\tif (value) {\r\n\t\t\tthis._title = value;\r\n\t\t\tvalue.parent = this;\r\n\t\t\tvalue.shouldClone = false;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Title label\r\n\t */\r\n\tpublic get title(): Label {\r\n\t\treturn this._title;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Indicates if axis' tooltip should be hidden while axis range is animating\r\n\t * (zooming)\r\n\t * \r\n\t * @default true\r\n\t * @since 4.7.16\r\n\t * @param value Hide tooltip while zooming?\r\n\t */\r\n\tpublic set hideTooltipWhileZooming(value: boolean) {\r\n\t\tthis.setPropertyValue(\"hideTooltipWhileZooming\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Hide tooltip while zooming?\r\n\t */\r\n\tpublic get hideTooltipWhileZooming(): boolean {\r\n\t\treturn this.getPropertyValue(\"hideTooltipWhileZooming\");\r\n\t}\r\n\r\n\t/**\r\n\t * Should the axis be zoomed with scrollbar/cursor?\r\n\t *\r\n\t * @default true\r\n\t * @since 4.9.28\r\n\t * @param value Zoomable?\r\n\t */\r\n\tpublic set zoomable(value: boolean) {\r\n\t\tthis.setPropertyValue(\"zoomable\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Zoomable?\r\n\t */\r\n\tpublic get zoomable(): boolean {\r\n\t\treturn this.getPropertyValue(\"zoomable\");\r\n\t}\r\n\r\n}\r\n\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/**\r\n * Add default responsive rules\r\n */\r\n\r\n/**\r\n * Disable axis tooltips.\r\n */\r\ndefaultRules.push({\r\n\trelevant: ResponsiveBreakpoints.maybeXS,\r\n\tstate: function(target, stateId) {\r\n\t\tif (target instanceof Axis && target.tooltip) {\r\n\t\t\tlet state = target.states.create(stateId);\r\n\t\t\tstate.properties.cursorTooltipEnabled = false;\r\n\t\t\treturn state;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n});"]}
\No newline at end of file