{"version":3,"sources":["webpack:///../../../../../src/.internal/plugins/timeline/CurveLineSeries.ts","webpack:///../../../../../src/.internal/plugins/timeline/AxisRendererCurveX.ts","webpack:///../../../../../src/.internal/plugins/timeline/AxisRendererCurveY.ts","webpack:///../../../../../src/.internal/plugins/timeline/CurveChart.ts","webpack:///../../../../../src/.internal/plugins/timeline/SerpentineChart.ts","webpack:///../../../../../src/.internal/plugins/timeline/SpiralChart.ts","webpack:///../../../../../src/.internal/plugins/timeline/CurveColumn.ts","webpack:///../../../../../src/.internal/plugins/timeline/CurveColumnSeries.ts","webpack:///../../../../../src/.internal/plugins/timeline/CurveStepLineSeries.ts","webpack:///../../../../../src/.internal/plugins/timeline/CurveCursor.ts","webpack:///./plugins/timeline.js"],"names":["CurveLineSeries_CurveLineSeriesDataItem","_super","CurveLineSeriesDataItem","_this","call","this","className","applyTheme","Object","tslib_es6","LineSeries","CurveLineSeries_CurveLineSeries","CurveLineSeries","connectEnds","bulletsContainer","mask","Sprite","topOffset","bottomOffset","prototype","createDataItem","getPoint","dataItem","xKey","yKey","locationX","locationY","stackKeyX","stackKeyY","renderer","yAxis","radius","utils_Math","getY","innerRadius","xx","xAxis","getX","xy","angle","getAngle","x","y","addPoints","points","xField","yField","backwards","point","locations","push","getMaskPath","path","getPositionRangePath","start","end","chart","maskBullets","undefined","drawSegment","segment","closePoints","dataFields","_xOpenField","_yOpenField","stacked","length","unshift","defineProperty","getPropertyValue","value","setPropertyValue","positionBulletReal","bullet","positionX","positionY","visible","moveTo","positionToPoint","setXAxis","axis","updateRendererRefs","setYAxis","rendererX","rendererY","axisRendererY","axisRendererX","Registry","registeredClasses","AxisRendererCurveX_AxisRendererCurveX","AxisRendererCurveX","pixelRadiusReal","autoScaleScale","layout","autoScale","autoCenter","isMeasured","line","strokeOpacity","precisionStep","_tempSprite","createChild","polyspline","distance","updateAxisLine","Polyspline","tensionX","tensionY","parent","_pointsChanged","segments","setAxis","_disposers","curveContainer","events","on","handleSizeChange","pp","mw","plotContainer","maxWidth","pixelPaddingLeft","pixelPaddingRight","mh","maxHeight","pixelPaddingTop","pixelPaddingBottom","bbox","element","getBBox","centerPoint_1","width","height","scale_1","modifiedPoints_1","utils_Array","position","position2","Type","positionToAngle","updateGridElement","grid","endPosition","location","zIndex","getGridPath","toggleVisibility","Path","updateTickElement","tick","tickLength","inside","updateLabelElement","label","minLabelPosition","maxLabelPosition","startPosition","temp","startY","endY","startX","endX","startRadius","endRadius","count","Math","ceil","axisLength","i","pos","updateBaseGridElement","updateBullet","AxisBullet","updateBreakElement","axisBreak","startAngle","startPoint","endAngle","endPoint","startLine","endLine","fillShape","pixelMarginTop","pixelMarginBottom","p1","p2","p3","p4","Smoothing","waveLength","waveHeight","tension","toAxisPosition","coordinateToPosition","coordinate","coordinate2","allPoints","closestPoint","getClosestPointIndex","updateTooltip","AxisRendererX","AxisRendererCurveY_AxisRendererCurveY","AxisRendererCurveY","_chart","Disposer","minGridDistance","labels","template","horizontalCenter","validate","invalid","abs","get","set","positionToCoordinate","axisLocation","title","rotation","positionItem","replace","round","pixelPerfect","fitsToBounds","createBreakSprites","WavedCircle","axisFullLength","inversed","invalidateAxisItems","processRenderer","verticalCenter","AxisRendererY","CurveChart_CurveChartDataItem","CurveChartDataItem","XYChart","CurveChart_CurveChart","CurveChart","_axisRendererX","_axisRendererY","curvedContainer","Container","shouldClone","align","valign","seriesContainer","axisBulletsContainer","_cursorContainer","_bulletMask","applyInternalDefaults","readerTitle","processAxis","gridContainer","breakContainer","toBack","processConfig","config","cursor","type","series","len","createSeries","updateXAxis","updateYAxis","hasLicense","Options","licenses","match","SerpentineChart_SerpentineChartDataItem","SerpentineChartDataItem","SerpentineChart_SerpentineChart","SerpentineChart","orientation","levelCount","yAxisRadius","Percent","yAxisInnerRadius","w","h","axisRadius","yAxes","each","centerPoint","i_1","i_2","i_3","i_4","xAxes","yInnerRadius","Utils","yRadius","SpiralChart_SpiralChartDataItem","SpiralChartDataItem","SpiralChart_SpiralChart","SpiralChart","radiusStep","reverse","CurveColumn_CurveColumn","CurveColumn","createAssets","curveColumn","column","copyFrom","source","CurveColumnSeries_CurveColumnSeriesDataItem","CurveColumnSeriesDataItem","ColumnSeries","CurveColumnSeries_CurveColumnSeries","CurveColumnSeries","createColumnTemplate","validateDataElementReal","yOpenField","xOpenField","startLocation","getStartLocation","endLocation","getEndLocation","columns","percentWidth","percentHeight","middlePoint","baseAxis","offset","step","endIndex","startIndex","bottomLocation","topLocation","ValueAxis","CategoryAxis","offset_1","rangeX","rangeY","rightLocation","leftLocation","openPositionX","getPositionX","openPositionY","getPositionY","create","utils_Object","addSprite","setColumnStates","paper","__disabled","columnsContainer","tooltipX","tooltipY","axisRanges","axisRange","rangeColumn","rangesColumns","getKey","uid","sprites","setKey","contents","range","CurveStepLineSeries_CurveStepLineSeriesDataItem","CurveStepLineSeriesDataItem","CurveStepLineSeries_CurveStepLineSeries","CurveStepLineSeries","previousPosition","_previousPosition","xRenderer","DateAxis","index","nextDataItem","dataItems","getIndex","baseDuration","nextTime","dateX","getTime","currentTime","CurveCursor_CurveCursor","CurveCursor","xAxisRenderer","yAxisRenderer","triggerMoveReal","cursorTooltipEnabled","tooltip","disabled","updateLineX","updateLineY","updateSelection","lineX","pointToPosition","lineY","_usesSelection","downPoint","selection","behavior","toGlobalPosition","xRange","min","max","yRange","hide","getPositions","xPosition","yPosition","updatePoint","handleXTooltipPosition","event","pixelX","pixelY","handleYTooltipPosition","updateLinePositions","getRanges","updateSize","fixPoint","window","am4plugins_timeline","timeline_namespaceObject"],"mappings":"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","file":"./plugins/timeline.js","sourcesContent":["/**\r\n * Curve line series module.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { LineSeries, LineSeriesDataItem, ILineSeriesDataFields, ILineSeriesProperties, ILineSeriesAdapters, ILineSeriesEvents } from \"../../charts/series/LineSeries\";\r\nimport { LineSeriesSegment } from \"../../charts/series/LineSeriesSegment\";\r\nimport { Axis } from \"../../charts/axes/Axis\";\r\nimport { IPoint } from \"../../core/defs/IPoint\";\r\nimport { CurveChart } from \"./CurveChart\";\r\nimport { AxisRendererCurveY } from \"./AxisRendererCurveY\";\r\nimport { AxisRendererCurveX } from \"./AxisRendererCurveX\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport * as $math from \"../../core/utils/Math\";\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 [[CurveLineSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nexport class CurveLineSeriesDataItem extends LineSeriesDataItem {\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!: CurveLineSeries;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"CurveLineSeriesDataItem\";\r\n\t\tthis.applyTheme();\r\n\t}\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 data fields for [[CurveLineSeries]].\r\n */\r\nexport interface ICurveLineSeriesDataFields extends ILineSeriesDataFields { }\r\n\r\n/**\r\n * Defines properties for [[CurveLineSeries]].\r\n */\r\nexport interface ICurveLineSeriesProperties extends ILineSeriesProperties {\r\n\r\n\t/**\r\n\t * Should the last and and first data points be connected, forming a complete\r\n\t * closed circle?\r\n\t *\r\n\t * @default false\r\n\t */\r\n\tconnectEnds?: boolean;\r\n\r\n\t/**\r\n\t * A relative part of an series elements allowed outside of the outer edge of\r\n\t * the \"plot area\".\r\n\t */\r\n\ttopOffset?: number;\r\n\r\n\t/**\r\n\t * A relative part of an series elements allowed outside of the inner edge of\r\n\t * the \"plot area\".\r\n\t */\r\n\tbottomOffset?: number;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[CurveLineSeries]].\r\n */\r\nexport interface ICurveLineSeriesEvents extends ILineSeriesEvents { }\r\n\r\n/**\r\n * Defines adapters for [[CurveLineSeries]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface ICurveLineSeriesAdapters extends ILineSeriesAdapters, ICurveLineSeriesProperties { }\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 * Defines [[Series]] for a radar graph.\r\n *\r\n * @see {@link ICurveLineSeriesEvents} for a list of available Events\r\n * @see {@link ICurveLineSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\r\nexport class CurveLineSeries extends LineSeries {\r\n\r\n\t/**\r\n\t * Defines the type of data fields used for the series.\r\n\t */\r\n\tpublic _dataFields: ICurveLineSeriesDataFields;\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: ICurveLineSeriesProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: ICurveLineSeriesAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: ICurveLineSeriesEvents;\r\n\r\n\t/**\r\n\t * Defines the type of data item.\r\n\t */\r\n\tpublic _dataItem: CurveLineSeriesDataItem;\r\n\r\n\t/**\r\n\t * A chart series belongs to.\r\n\t */\r\n\tpublic _chart: CurveChart;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"CurveLineSeries\";\r\n\t\tthis.connectEnds = false;\r\n\r\n\t\tthis.bulletsContainer.mask = new Sprite();\r\n\r\n\t\tthis.topOffset = 0.2;\r\n\t\tthis.bottomOffset = 0.2;\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 CurveLineSeriesDataItem();\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an [[IPoint]] coordinates of the specific Serie's data point.\r\n\t *\r\n\t * @param dataItem Data item\r\n\t * @param xKey Name of X data field\r\n\t * @param yKey Name of Y data field\r\n\t * @param locationX X location\r\n\t * @param locationY Y location\r\n\t * @param stackKeyX ?\r\n\t * @param stackKeyY ?\r\n\t * @returns Coordinates\r\n\t */\r\n\tpublic getPoint(dataItem: CurveLineSeriesDataItem, xKey: string, yKey: string, locationX?: number, locationY?: number, stackKeyX?: string, stackKeyY?: string) {\r\n\t\tif (!stackKeyX) {\r\n\t\t\tstackKeyX = \"valueX\";\r\n\t\t}\r\n\t\tif (!stackKeyY) {\r\n\t\t\tstackKeyY = \"valueY\";\r\n\t\t}\r\n\r\n\t\tlet renderer: AxisRendererCurveY = this.yAxis.renderer;\r\n\r\n\t\tlet radius: number = $math.fitToRange(this.yAxis.getY(dataItem, yKey, locationY, stackKeyY), -renderer.radius * (1 + this.bottomOffset), -renderer.innerRadius * (1 + this.topOffset));\r\n\r\n\t\tlet xx: number = this.xAxis.getX(dataItem, xKey, locationX, stackKeyX);\r\n\t\tlet xy: number = this.xAxis.getY(dataItem, xKey, locationX, stackKeyX);\r\n\r\n\t\tlet angle: number = this.xAxis.getAngle(dataItem, xKey, locationX, stackKeyX);\r\n\r\n\t\treturn { x: xx + radius * $math.cos(angle), y: xy + radius * $math.sin(angle) };\r\n\t}\r\n\r\n\t/**\r\n\t * [addPoints description]\r\n\t *\r\n\t * @todo Description\r\n\t * @param points [description]\r\n\t * @param dataItem [description]\r\n\t * @param xField [description]\r\n\t * @param yField [description]\r\n\t * @param backwards [description]\r\n\t */\r\n\tprotected addPoints(points: IPoint[], dataItem: this[\"_dataItem\"], xField: string, yField: string, backwards?: boolean): void {\r\n\t\tlet point = this.getPoint(dataItem, xField, yField, dataItem.locations[xField], dataItem.locations[yField]);\r\n\t\tif (point) {\r\n\t\t\tpoints.push(point);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an SVG path to be used as a mask for the series.\r\n\t *\r\n\t * @return SVG path\r\n\t */\r\n\tprotected getMaskPath(): string {\r\n\t\tlet rendererY = this.yAxis.renderer;\r\n\t\tlet path = rendererY.getPositionRangePath(this.yAxis.start, this.yAxis.end);\r\n\r\n\t\tlet bulletsContainer = this.bulletsContainer;\r\n\t\tif (this.chart && this.chart.maskBullets) {\r\n\t\t\tif (!bulletsContainer.mask) {\r\n\t\t\t\tbulletsContainer.mask = new Sprite();\r\n\t\t\t}\r\n\t\t\tbulletsContainer.mask.path = path;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tbulletsContainer.mask = undefined;\r\n\t\t}\r\n\r\n\t\treturn path;\r\n\t}\r\n\r\n\t/**\r\n\t * [drawSegment description]\r\n\t *\r\n\t * @todo Description\r\n\t * @param segment [description]\r\n\t * @param points [description]\r\n\t * @param closePoints [description]\r\n\t */\r\n\tprotected drawSegment(segment: LineSeriesSegment, points: IPoint[], closePoints: IPoint[]): void {\r\n\t\tif (this.connectEnds) {\r\n\t\t\t// adds one point to the beginning of closePoints array, if needed\r\n\t\t\tif (this.dataFields[this._xOpenField] ||\r\n\t\t\t\tthis.dataFields[this._yOpenField] ||\r\n\t\t\t\tthis.stacked) {\r\n\t\t\t\tpoints.push(points[0]);\r\n\t\t\t\tif (closePoints.length > 0) {\r\n\t\t\t\t\tclosePoints.unshift(closePoints[closePoints.length - 1]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tsuper.drawSegment(segment, points, closePoints);\r\n\t}\r\n\r\n\t/**\r\n\t * Should the last and and first data points be connected, forming a complete\r\n\t * closed circle?\r\n\t *\r\n\t * @default false\r\n\t * @param value Connect?\r\n\t */\r\n\tpublic set connectEnds(value: boolean) {\r\n\t\tthis.setPropertyValue(\"connectEnds\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Connect?\r\n\t */\r\n\tpublic get connectEnds(): boolean {\r\n\t\treturn this.getPropertyValue(\"connectEnds\");\r\n\t}\r\n\r\n\t/**\r\n\t * A relative part of an series elements allowed outside of the outer edge of\r\n\t * the \"plot area\".\r\n\t * \r\n\t * @default 0.2\r\n\t * @param value Top offset\r\n\t */\r\n\tpublic set topOffset(value: number) {\r\n\t\tthis.setPropertyValue(\"topOffset\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Top offset\r\n\t */\r\n\tpublic get topOffset(): number {\r\n\t\treturn this.getPropertyValue(\"topOffset\");\r\n\t}\r\n\r\n\t/**\r\n\t * A relative part of an series elements allowed outside of the inner edge of\r\n\t * the \"plot area\".\r\n\t * \r\n\t * @default 0.2\r\n\t * @param value Bottom offset\r\n\t */\r\n\tpublic set bottomOffset(value: number) {\r\n\t\tthis.setPropertyValue(\"bottomOffset\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Bottom offset\r\n\t */\r\n\tpublic get bottomOffset(): number {\r\n\t\treturn this.getPropertyValue(\"bottomOffset\");\r\n\t}\r\n\r\n\t/**\r\n\t * [positionBulletReal description]\r\n\t *\r\n\t * @param {Sprite} bullet [description]\r\n\t * @param {number} positionX [description]\r\n\t * @param {number} positionY [description]\r\n\t */\r\n\tprotected positionBulletReal(bullet: Sprite, positionX: number, positionY: number) {\r\n\t\tlet xAxis = this.xAxis;\r\n\t\tlet yAxis = this.yAxis;\r\n\r\n\t\tif (positionX < xAxis.start || positionX > xAxis.end || positionY < yAxis.start || positionY > yAxis.end) {\r\n\t\t\tbullet.visible = false;\r\n\t\t}\r\n\r\n\t\tbullet.moveTo(this.xAxis.renderer.positionToPoint(positionX, positionY));\r\n\t}\r\n\r\n\tprotected setXAxis(axis:Axis){\r\n\t\tsuper.setXAxis(axis);\r\n\t\tthis.updateRendererRefs();\r\n\t}\r\n\r\n\tprotected setYAxis(axis:Axis){\r\n\t\tsuper.setYAxis(axis);\r\n\t\tthis.updateRendererRefs();\r\n\t}\t\r\n\r\n\tprotected updateRendererRefs(){\r\n\t\tlet rendererX = this.xAxis.renderer;\r\n\t\tlet rendererY = this.yAxis.renderer;\r\n\r\n\t\trendererX.axisRendererY = rendererY;\r\n\t\trendererY.axisRendererX = rendererX;\t\t\r\n\t}\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[\"CurveLineSeries\"] = CurveLineSeries;\r\nregistry.registeredClasses[\"CurveLineSeriesDataItem\"] = CurveLineSeriesDataItem;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/plugins/timeline/CurveLineSeries.ts","/**\r\n * Module, defining Axis Renderer for curved axes.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AxisRendererX, IAxisRendererXAdapters, IAxisRendererXEvents, IAxisRendererXProperties } from \"../../charts/axes/AxisRendererX\";\r\n//import { AxisFillCircular } from \"./AxisFillCircular\";\r\nimport { AxisRendererCurveY } from \"./AxisRendererCurveY\";\r\nimport { CurveChart } from \"./CurveChart\";\r\nimport { Axis } from \"../../charts/axes/Axis\";\r\nimport { IPoint, IOrientationPoint } from \"../../core/defs/IPoint\";\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { GridCircular } from \"../../charts/axes/GridCircular\";\r\nimport { AxisLabelCircular } from \"../../charts/axes/AxisLabelCircular\";\r\nimport { AxisFillCircular } from \"../../charts/axes/AxisFillCircular\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { Polyspline } from \"../../core/elements/Polyspline\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $array from \"../../core/utils/Array\";\r\nimport { AxisTick } from \"../../charts/axes/AxisTick\";\r\nimport { AxisBullet } from \"../../charts/axes/AxisBullet\";\r\nimport { AxisBreak } from \"../../charts/axes/AxisBreak\";\r\nimport { wavedLine } from \"../../core/rendering/Smoothing\";\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 properties for [[AxisRendererCurveX]].\r\n */\r\nexport interface IAxisRendererCurveXProperties extends IAxisRendererXProperties {\r\n\r\n\t/**\r\n\t * A line object representing curve of the axis.\r\n\t */\r\n\tpolyspline?: Polyspline;\r\n\r\n\t/**\r\n\t * Precision setting to use when drawing chart objects. Basically, it's\r\n\t * number of pixels that a control point should be added at.\r\n\t *\r\n\t * The smaller the number, the finer line. However, small number will impact\r\n\t * the performace.\r\n\t *\r\n\t * Depending on actual chart configuration, you might need to find the best\r\n\t * possible value to balance between detail and good performance.\r\n\t *\r\n\t * @default 10\r\n\t */\r\n\tprecisionStep?: number;\r\n\r\n\t/**\r\n\t * Should the chart be scaled automatically, to fit into container?\r\n\t *\r\n\t * @default true\r\n\t */\r\n\tautoScale?: boolean;\r\n\r\n\t/**\r\n\t * Should chart be centered within chart area?\r\n\t *\r\n\t * @default true\r\n\t */\r\n\tautoCenter?: boolean;\r\n\r\n\t/**\r\n\t * Array of control points to draw axis curve along.\r\n\t */\r\n\tpoints?: IPoint[];\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[AxisRendererCurveX]].\r\n */\r\nexport interface IAxisRendererCurveXEvents extends IAxisRendererXEvents { }\r\n\r\n/**\r\n * Defines adapters for [[AxisRenderer]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IAxisRendererCurveXAdapters extends IAxisRendererXAdapters, IAxisRendererCurveXProperties { }\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 renderer for \"horizontal\" curve axis.\r\n */\r\nexport class AxisRendererCurveX extends AxisRendererX {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IAxisRendererCurveXProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IAxisRendererCurveXAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IAxisRendererCurveXEvents;\r\n\r\n\t/**\r\n\t * Defines type of the grid elements.\r\n\t */\r\n\tpublic _gridType: GridCircular;\r\n\r\n\t/**\r\n\t * Defines type for the fill elements.\r\n\t */\r\n\tpublic _fillType: AxisFillCircular;\r\n\r\n\t/**\r\n\t * Defines type for the label elements.\r\n\t */\r\n\tpublic _labelType: AxisLabelCircular;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic pixelRadiusReal: number = 0;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic axisRendererY: AxisRendererCurveY;\r\n\r\n\t/**\r\n\t * @readonly\r\n\t * @ignore\r\n\t */\r\n\tpublic autoScaleScale: number = 1;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected _tempSprite: Sprite;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected _pointsChanged: boolean;\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\r\n\t\t// axis.layout = \"none\"; // does not trigger redraw when size changes\r\n\r\n\t\t// axis.layout = \"none\"; // does not trigger redraw when size changes\r\n\t\tthis.layout = \"none\";\r\n\r\n\t\tthis.autoScale = true;\r\n\r\n\t\tthis.autoCenter = true;\r\n\r\n\t\tthis.isMeasured = false;\r\n\r\n\t\tthis.className = \"AxisRendererCurveX\";\r\n\r\n\t\tthis.line.strokeOpacity = 1;\r\n\r\n\t\tthis.precisionStep = 10;\r\n\r\n\t\tthis.line.isMeasured = false;\r\n\r\n\t\tthis.points = [{ x: -300, y: 0 }, { x: 300, y: 0 }];\r\n\r\n\t\tthis._tempSprite = this.createChild(Sprite);\r\n\t\tthis._tempSprite.visible = false;\r\n\r\n\t\tthis.applyTheme();\r\n\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns actual length of the Axis, in pixels.\r\n\t *\r\n\t * @return Length (px)\r\n\t */\r\n\tpublic get axisLength(): number {\r\n\t\treturn this.polyspline.distance;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates and positions the axis line element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic updateAxisLine() {\r\n\t\tthis.line.path = this.polyspline.path;\r\n\t}\r\n\r\n\t/**\r\n\t * A [[Polyspline]] elment that represents axis shape / curve.\r\n\t * \r\n\t * @param value Polyspline\r\n\t */\r\n\tpublic set polyspline(value: Polyspline) {\r\n\t\tthis.setPropertyValue(\"polyspline\", value, true);\r\n\t\tvalue.parent = this;\r\n\t}\r\n\r\n\t/**\r\n\t * @return Polyspline\r\n\t */\r\n\tpublic get polyspline(): Polyspline {\r\n\t\tlet polyspline = this.getPropertyValue(\"polyspline\");\r\n\t\tif (!polyspline) {\r\n\t\t\tpolyspline = this.createChild(Polyspline);\r\n\t\t\tpolyspline.tensionX = 1;\r\n\t\t\tpolyspline.tensionY = 1;\r\n\r\n\t\t\tthis.polyspline = polyspline;\r\n\t\t}\r\n\t\treturn polyspline;\r\n\t}\r\n\r\n\t/**\r\n\t * Should the chart be scaled automatically, to fit into container?\r\n\t *\r\n\t * @default true\r\n\t * @param value Auto-scale?\r\n\t */\r\n\tpublic set autoScale(value: boolean) {\r\n\t\tthis.setPropertyValue(\"autoScale\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Auto-scale?\r\n\t */\r\n\tpublic get autoScale(): boolean {\r\n\t\treturn this.getPropertyValue(\"autoScale\");\r\n\t}\r\n\r\n\t/**\r\n\t * Should chart be centered within chart area?\r\n\t *\r\n\t * @default true\r\n\t * @param value Auto-center?\r\n\t */\r\n\tpublic set autoCenter(value: boolean) {\r\n\t\tthis.setPropertyValue(\"autoCenter\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return {boolean} Auto-center?\r\n\t */\r\n\tpublic get autoCenter(): boolean {\r\n\t\treturn this.getPropertyValue(\"autoCenter\");\r\n\t}\r\n\r\n\t/**\r\n\t * Precision setting to use when drawing chart objects. Basically, it's\r\n\t * number of pixels that a control point should be added at.\r\n\t *\r\n\t * The smaller the number, the finer line. However, small number will impact\r\n\t * the performace.\r\n\t *\r\n\t * Depending on actual chart configuration, you might need to find the best\r\n\t * possible value to balance between detail and good performance.\r\n\t *\r\n\t * @default 10\r\n\t * @param value Precision step\r\n\t */\r\n\tpublic set precisionStep(value: number) {\r\n\t\tthis.setPropertyValue(\"precisionStep\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Precision step\r\n\t */\r\n\tpublic get precisionStep(): number {\r\n\t\treturn this.getPropertyValue(\"precisionStep\");\r\n\t}\r\n\r\n\t/**\r\n\t * An array of control points that define axis curve.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v4/chart-types/timeline/#Control_points} for more info\r\n\t * @param value Control points\r\n\t */\r\n\tpublic set points(value: IPoint[]) {\r\n\t\tif (this.setPropertyValue(\"points\", value, true)) {\r\n\t\t\tthis._pointsChanged = true;\r\n\t\t\tthis.polyspline.segments = [value];\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Control points\r\n\t */\r\n\tpublic get points(): IPoint[] {\r\n\t\treturn this.getPropertyValue(\"points\");\r\n\t}\r\n\r\n\t/**\r\n\t* @ignore\r\n\t*/\r\n\tpublic setAxis(axis: Axis): void {\r\n\t\tsuper.setAxis(axis);\r\n\t\tif (axis && axis.chart) {\r\n\t\t\tlet chart = axis.chart;\r\n\t\t\tthis._disposers.push(chart.curveContainer.events.on(\"positionchanged\", () => {\r\n\t\t\t\tthis.handleSizeChange();\r\n\t\t\t}))\r\n\r\n\t\t\tthis._disposers.push(chart.events.on(\"maxsizechanged\", () => {\r\n\t\t\t\tthis.handleSizeChange();\r\n\t\t\t}))\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A handler for when axis size changes.\r\n\t */\r\n\tprotected handleSizeChange(): void {\r\n\r\n\t\tif (this._pointsChanged) {\r\n\t\t\tlet pp = this.axis.getPositionRangePath(0, 1);\r\n\t\t\tthis._tempSprite.path = pp;\r\n\t\t\tthis._pointsChanged = false;\r\n\t\t}\r\n\r\n\t\tif (this.points) {\r\n\t\t\tlet chart = this.axis.chart;\r\n\t\t\tlet curveContainer = chart.curveContainer;\r\n\r\n\t\t\tlet mw = chart.plotContainer.maxWidth - curveContainer.pixelPaddingLeft - curveContainer.pixelPaddingRight;\r\n\t\t\tlet mh = chart.plotContainer.maxHeight - curveContainer.pixelPaddingTop - curveContainer.pixelPaddingBottom;\r\n\r\n\t\t\tlet bbox = this._tempSprite.element.getBBox();\r\n\t\t\tlet centerPoint = { x: 0, y: 0 };\r\n\r\n\t\t\tif (this.autoCenter) {\r\n\t\t\t\tcenterPoint = { x: bbox.x + bbox.width / 2, y: bbox.y + bbox.height / 2 };\r\n\t\t\t}\r\n\r\n\t\t\tlet scale = 1;\r\n\t\t\tif (this.autoScale) {\r\n\t\t\t\tscale = $math.min(mw / bbox.width, mh / bbox.height);\r\n\t\t\t}\r\n\r\n\t\t\tlet modifiedPoints: IPoint[] = [];\r\n\t\t\t$array.each(this.points, (point) => {\r\n\t\t\t\tmodifiedPoints.push({ x: (point.x - centerPoint.x) * scale, y: (point.y - centerPoint.y) * scale });\r\n\t\t\t})\r\n\r\n\t\t\tthis.polyspline.segments = [modifiedPoints];\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Converts relative position on axis to point coordinates.\r\n\t *\r\n\t * @param position Position (0-1)\r\n\t * @param position2 Position (0-1) Position on the second axis\r\n\t * @return Point\r\n\t */\r\n\tpublic positionToPoint(position: number, position2?: number): IOrientationPoint {\r\n\r\n\t\tlet axis = this.axis;\r\n\r\n\t\tposition = (position - axis.start) / (axis.end - axis.start);\r\n\r\n\t\tlet point = this.polyspline.positionToPoint(position, true);\r\n\t\tpoint.angle += 90;\r\n\r\n\t\tlet axisRendererY = this.axisRendererY;\r\n\r\n\t\tif ($type.isNumber(position2) && axisRendererY) {\r\n\t\t\tlet radius = axisRendererY.positionToPoint(position2).y;\r\n\r\n\t\t\tpoint.x += radius * $math.cos(point.angle);\r\n\t\t\tpoint.y += radius * $math.sin(point.angle);\r\n\t\t}\r\n\r\n\t\treturn point;\r\n\t}\r\n\r\n\t/**\r\n\t * Converts relative position (0-1) on axis to angle in degrees (0-360).\r\n\t *\r\n\t * @param position Position (0-1)\r\n\t * @return Angle (0-360)\r\n\t */\r\n\tpublic positionToAngle(position: number): number {\r\n\r\n\t\tlet axis = this.axis;\r\n\t\tposition = $math.max(0, (position - axis.start) / (axis.end - axis.start));\r\n\r\n\t\treturn this.polyspline.positionToPoint(position, true).angle + 90;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates and positions a grid element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param grid Grid element\r\n\t * @param position Starting position\r\n\t * @param endPosition End position\r\n\t */\r\n\tpublic updateGridElement(grid: GridCircular, position: number, endPosition: number) {\r\n\t\tif (grid.element) {\r\n\t\t\tposition = position + (endPosition - position) * grid.location;\r\n\r\n\t\t\tgrid.zIndex = 0;\r\n\r\n\t\t\tgrid.path = this.getGridPath(position);\r\n\r\n\t\t\tthis.toggleVisibility(grid, position, 0, 1);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * [getGridPath description]\r\n\t *\r\n\t * @ignore\r\n\t * @todo description\r\n\t * @param position Position\r\n\t * @return SVG path\r\n\t */\r\n\tpublic getGridPath(position: number): string {\r\n\r\n\t\tlet point = this.positionToPoint(position);\r\n\r\n\t\tlet angle: number = point.angle;\r\n\t\tlet axisRendererY = this.axisRendererY;\r\n\t\tif (axisRendererY) {\r\n\t\t\tlet radius: number = -axisRendererY.radius;\r\n\t\t\tlet innerRadius: number = -axisRendererY.innerRadius;\r\n\r\n\t\t\treturn $path.moveTo({ x: point.x + innerRadius * $math.cos(angle), y: point.y + innerRadius * $math.sin(angle) }) + $path.lineTo({ x: point.x + radius * $math.cos(angle), y: point.y + radius * $math.sin(angle) });\r\n\t\t}\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\t/**\r\n\t * Updates and positions a tick element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param tick Tick element\r\n\t * @param position Position\r\n\t */\r\n\tpublic updateTickElement(tick: AxisTick, position: number): void {\r\n\t\tif (tick.element) {\r\n\r\n\t\t\tlet point = this.positionToPoint(position);\r\n\t\t\tlet angle = point.angle;\r\n\r\n\t\t\tlet tickLength = tick.length;\r\n\t\t\tif (tick.inside) {\r\n\t\t\t\ttickLength *= -1;\r\n\t\t\t}\r\n\r\n\t\t\ttick.path = $path.moveTo({ x: point.x, y: point.y }) + $path.lineTo({ x: point.x + tickLength * $math.cos(angle), y: point.y + tickLength * $math.sin(angle) });\r\n\t\t\tthis.toggleVisibility(tick, position, 0, 1);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Updates and positions a label element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param label Label element\r\n\t * @param position Starting position\r\n\t * @param endPosition Ending position\r\n\t */\r\n\tpublic updateLabelElement(label: this[\"_labelType\"], position: number, endPosition: number, location?: number) {\r\n\r\n\t\tif (!$type.hasValue(location)) {\r\n\t\t\tlocation = label.location;\r\n\t\t}\r\n\r\n\t\tposition = position + (endPosition - position) * location;\r\n\r\n\t\tlet point: IPoint = this.positionToPoint(position);\r\n\r\n\t\tlabel.x = point.x;\r\n\t\tlabel.y = point.y;\r\n\t\tlabel.zIndex = 2;\r\n\r\n\t\tthis.toggleVisibility(label, position, this.minLabelPosition, this.maxLabelPosition);\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 Starting position\r\n\t * @param endPosition End position\r\n\t * @return SVG path\r\n\t */\r\n\tpublic getPositionRangePath(startPosition: number, endPosition: number): string {\r\n\t\tlet path = \"\";\r\n\r\n\t\tlet axisRendererY = this.axisRendererY;\r\n\t\tif (axisRendererY) {\r\n\r\n\t\t\tif (startPosition > endPosition) {\r\n\t\t\t\tlet temp = startPosition;\r\n\t\t\t\tstartPosition = endPosition;\r\n\t\t\t\tendPosition = temp;\r\n\t\t\t}\r\n\r\n\t\t\tlet startY = axisRendererY.axis.start;\r\n\t\t\tlet endY = axisRendererY.axis.end;\r\n\r\n\t\t\tlet startX = this.axis.start;\r\n\t\t\tlet endX = this.axis.end;\r\n\r\n\t\t\tif ((startPosition <= startX && endPosition <= startX) || (startPosition >= endX && endPosition >= endX)) {\r\n\t\t\t\treturn path;\r\n\t\t\t}\r\n\r\n\t\t\tstartPosition = $math.fitToRange(startPosition, startX, endX);\r\n\t\t\tendPosition = $math.fitToRange(endPosition, startX, endX);\r\n\r\n\t\t\tif (endPosition == startX || startPosition == endX) {\r\n\t\t\t\treturn path;\r\n\t\t\t}\r\n\r\n\t\t\tif (endPosition == startPosition) {\r\n\t\t\t\treturn path;\r\n\t\t\t}\r\n\r\n\t\t\tlet startRadius = $math.round(axisRendererY.positionToPoint(startY).y, 1) | 0;\r\n\t\t\tlet endRadius = $math.round(axisRendererY.positionToPoint(endY).y, 1) | 0;\r\n\r\n\t\t\tlet point = this.positionToPoint(startPosition);\r\n\t\t\tlet angle = point.angle;\r\n\r\n\t\t\tpath = $path.moveTo(point);\r\n\r\n\t\t\tlet count = Math.ceil(this.axisLength / this.precisionStep * (endPosition - startPosition) / (endX - startX));\r\n\r\n\t\t\tfor (let i = 0; i <= count; i++) {\r\n\r\n\t\t\t\tlet pos = startPosition + i / count * (endPosition - startPosition);\r\n\r\n\t\t\t\tpoint = this.positionToPoint(pos);\r\n\r\n\t\t\t\tangle = point.angle;\r\n\r\n\t\t\t\tlet x = point.x + startRadius * $math.cos(angle);\r\n\t\t\t\tlet y = point.y + startRadius * $math.sin(angle);\r\n\r\n\t\t\t\tpath += $path.lineTo({ x: x, y: y });\r\n\t\t\t}\r\n\t\t\tfor (let i = count; i >= 0; i--) {\r\n\r\n\t\t\t\tlet pos = startPosition + i / count * (endPosition - startPosition);\r\n\r\n\t\t\t\tpoint = this.positionToPoint(pos);\r\n\t\t\t\tangle = point.angle;\r\n\r\n\t\t\t\tlet x = point.x + endRadius * $math.cos(angle);\r\n\t\t\t\tlet y = point.y + endRadius * $math.sin(angle);\r\n\r\n\t\t\t\tpath += $path.lineTo({ x: x, y: y });\r\n\t\t\t}\r\n\r\n\t\t\tpath += $path.closePath();\r\n\t\t}\r\n\t\treturn path;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates and positions the base grid element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic updateBaseGridElement(): void {\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Updates and positions axis bullet.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param bullet AxisBullet element\r\n\t * @param position Starting position\r\n\t * @param endPosition End position\r\n\t */\r\n\tpublic updateBullet(bullet: Sprite, position: number, endPosition: number): void {\r\n\t\tlet location = 0.5;\r\n\t\tif (bullet instanceof AxisBullet) {\r\n\t\t\tlocation = bullet.location;\r\n\t\t}\r\n\r\n\t\tposition = position + (endPosition - position) * location;\r\n\r\n\t\tlet point = this.positionToPoint(position);\r\n\t\t//let angle = point.angle;\r\n\r\n\t\tbullet.moveTo({ x: point.x, y: point.y });\r\n\t\t//bullet.rotation = angle - 90;\r\n\r\n\t\tthis.toggleVisibility(bullet, position, 0, 1);\r\n\t}\r\n\r\n\t/**\r\n\t * Updates and positions an axis break element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param axisBreak Break element\r\n\t */\r\n\tpublic updateBreakElement(axisBreak: AxisBreak): void {\r\n\t\tlet axisRendererY = this.axisRendererY;\r\n\r\n\t\tif (axisRendererY) {\r\n\r\n\t\t\tlet startPosition = axisBreak.startPosition;\r\n\t\t\tlet endPosition = axisBreak.endPosition;\r\n\r\n\t\t\tlet startAngle = this.positionToAngle(startPosition);\r\n\t\t\tlet startPoint = this.positionToPoint(startPosition);\r\n\r\n\t\t\tlet endAngle = this.positionToAngle(endPosition);\r\n\t\t\tlet endPoint = this.positionToPoint(endPosition);\r\n\r\n\t\t\tlet startLine = axisBreak.startLine;\r\n\t\t\tlet endLine = axisBreak.endLine;\r\n\t\t\tlet fillShape = axisBreak.fillShape;\r\n\r\n\t\t\tlet radius: number = -axisRendererY.radius + axisBreak.pixelMarginTop;\r\n\t\t\tlet innerRadius: number = -axisRendererY.innerRadius - axisBreak.pixelMarginBottom;\r\n\r\n\t\t\tlet x1 = startPoint.x + innerRadius * $math.cos(startAngle);\r\n\t\t\tlet y1 = startPoint.y + innerRadius * $math.sin(startAngle);\r\n\r\n\t\t\tlet x2 = startPoint.x + radius * $math.cos(startAngle);\r\n\t\t\tlet y2 = startPoint.y + radius * $math.sin(startAngle);\r\n\r\n\t\t\tlet x3 = endPoint.x + innerRadius * $math.cos(endAngle);\r\n\t\t\tlet y3 = endPoint.y + innerRadius * $math.sin(endAngle);\r\n\r\n\t\t\tlet x4 = endPoint.x + radius * $math.cos(endAngle);\r\n\t\t\tlet y4 = endPoint.y + radius * $math.sin(endAngle);\r\n\r\n\t\t\tlet p1 = { x: x1, y: y1 };\r\n\t\t\tlet p2 = { x: x2, y: y2 };\r\n\r\n\t\t\tlet p3 = { x: x3, y: y3 };\r\n\t\t\tlet p4 = { x: x4, y: y4 };\r\n\r\n\t\t\tstartLine.path = $path.moveTo(p1) + wavedLine(p1, p2, startLine.waveLength, startLine.waveHeight, startLine.tension, true);\r\n\t\t\tendLine.path = $path.moveTo(p4) + wavedLine(p4, p3, endLine.waveLength, endLine.waveHeight, endLine.tension, true);\r\n\r\n\t\t\tlet path = $path.moveTo(p1);\r\n\t\t\tpath += wavedLine(p1, p2, fillShape.waveLength, fillShape.waveHeight, fillShape.tension, true);\r\n\r\n\t\t\tlet startX = this.axis.start;\r\n\t\t\tlet endX = this.axis.end;\r\n\r\n\t\t\tlet count = Math.ceil(this.axisLength / this.precisionStep * (endPosition - startPosition) / (endX - startX));\r\n\r\n\t\t\tfor (let i = 0; i <= count; i++) {\r\n\r\n\t\t\t\tlet pos = startPosition + i / count * (endPosition - startPosition);\r\n\r\n\t\t\t\tlet point = this.positionToPoint(pos);\r\n\t\t\t\tlet angle = point.angle;\r\n\r\n\t\t\t\tlet x = point.x + radius * $math.cos(angle);\r\n\t\t\t\tlet y = point.y + radius * $math.sin(angle);\r\n\r\n\t\t\t\tpath += $path.lineTo({ x: x, y: y });\r\n\t\t\t}\r\n\r\n\t\t\tpath += wavedLine(p4, p3, fillShape.waveLength, fillShape.waveHeight, fillShape.tension, true);\r\n\r\n\t\t\tfor (let i = count; i >= 0; i--) {\r\n\r\n\t\t\t\tlet pos = startPosition + i / count * (endPosition - startPosition);\r\n\r\n\r\n\t\t\t\tlet point = this.positionToPoint(pos);\r\n\t\t\t\tlet angle = point.angle;\r\n\r\n\t\t\t\tlet x = point.x + innerRadius * $math.cos(angle);\r\n\t\t\t\tlet y = point.y + innerRadius * $math.sin(angle);\r\n\r\n\t\t\t\tpath += $path.lineTo({ x: x, y: y });\r\n\t\t\t}\r\n\r\n\t\t\tfillShape.path = path;\r\n\r\n\t\t\tthis.toggleVisibility(axisBreak.startLine, axisBreak.startPosition, 0, 1);\r\n\t\t\tthis.toggleVisibility(axisBreak.endLine, axisBreak.endPosition, 0, 1);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic toAxisPosition(value: number): number {\r\n\t\treturn value;\r\n\t}\r\n\r\n\t/**\r\n\t * Converts a coordinate in pixels to a relative position. (0-1)\r\n\t *\r\n\t * @param coordinate Coordinate (px)\r\n\t * @param coordinate2 Coordinate (px) Some more complicated axes need two coordinates\r\n\t * @return Position (0-1)\r\n\t */\r\n\tpublic coordinateToPosition(coordinate: number, coordinate2?: number): number {\r\n\t\tlet points = this.polyspline.allPoints;\r\n\r\n\t\tlet closestPoint = this.polyspline.getClosestPointIndex({ x: coordinate, y: coordinate2 });\r\n\r\n\t\treturn super.coordinateToPosition(closestPoint / (points.length - 1) * this.axisLength);\r\n\t}\r\n\r\n\t/**\r\n\t * Updates some of the Axis tooltip's visual properties, related to\r\n\t * rendering of the Axis.\r\n\t *\r\n\t * @todo Description (review)\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic updateTooltip(): void {\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * [[CurveChart]] does not support inversed X axes. This setting will be\r\n\t * ignored.\r\n\t * @param value Flip axis?\r\n\t */\r\n\tpublic set inversed(value: boolean) {\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * @return Flip axis?\r\n\t */\r\n\tpublic get inversed(): boolean {\r\n\t\treturn false;\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[\"AxisRendererCurveX\"] = AxisRendererCurveX;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/plugins/timeline/AxisRendererCurveX.ts","/**\r\n * Module, defining Axis Renderer for curved axes.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AxisRendererY, IAxisRendererYProperties, IAxisRendererYAdapters, IAxisRendererYEvents } from \"../../charts/axes/AxisRendererY\";\r\nimport { AxisRendererCurveX } from \"./AxisRendererCurveX\";\r\nimport { Axis } from \"../../charts/axes/Axis\";\r\nimport { AxisTick } from \"../../charts/axes/AxisTick\";\r\nimport { IPoint } from \"../../core/defs/IPoint\";\r\nimport { Grid } from \"../../charts/axes/Grid\";\r\nimport { AxisBreak } from \"../../charts/axes/AxisBreak\";\r\nimport { WavedCircle } from \"../../core/elements/WavedCircle\";\r\nimport { MutableValueDisposer } from \"../../core/utils/Disposer\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { CurveChart } from \"./CurveChart\"\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { AxisBullet } from \"../../charts/axes/AxisBullet\";\r\nimport { Sprite } from \"../../core/Sprite\";\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[AxisRendererCurveY]].\r\n */\r\nexport interface IAxisRendererCurveYProperties extends IAxisRendererYProperties {\r\n\r\n\t/**\r\n\t * Outer radius of the vertical (Y) axis in pixels.\r\n\t *\r\n\t * Indicate distance from the charts X axis control curve.\r\n\t */\r\n\tradius?: number;\r\n\r\n\t/**\r\n\t * Inner radius of the vertical (Y) axis in pixels.\r\n\t *\r\n\t * Indicate distance from the charts X axis control curve.\r\n\t */\r\n\tinnerRadius?: number;\r\n\r\n\t/**\r\n\t * Relative location of the Y axis along the length of the X axis.\r\n\t *\r\n\t * Values range from 0 (default) which means start of the X axis, to 1 meaning\r\n\t * end of the X axis.\r\n\t */\r\n\taxisLocation?: number;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[AxisRendererCurveY]].\r\n */\r\nexport interface IAxisRendererCurveYEvents extends IAxisRendererYEvents { }\r\n\r\n/**\r\n * Defines adapters for [[AxisRenderer]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IAxisRendererCurveYAdapters extends IAxisRendererYAdapters, IAxisRendererCurveYProperties { }\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 renderer for radial axis.\r\n */\r\nexport class AxisRendererCurveY extends AxisRendererY {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IAxisRendererCurveYProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IAxisRendererCurveYAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IAxisRendererCurveYEvents;\r\n\r\n\t/**\r\n\t * A related chart.\r\n\t */\r\n\tprotected _chart = new MutableValueDisposer();\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic axisRendererX: AxisRendererCurveX; // @todo automatic\r\n\r\n\r\n\t/**\r\n\t * Constructor.\r\n\t *\r\n\t * @param axis Related axis\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"AxisRendererCurveY\";\r\n\t\tthis.isMeasured = false;\r\n\t\tthis.minGridDistance = 30;\r\n\t\tthis.isMeasured = false;\r\n\t\tthis.layout = \"none\";\r\n\r\n\t\tthis.radius = 40;\r\n\t\tthis.innerRadius = -40;\r\n\r\n\t\tthis.line.strokeOpacity = 0;\r\n\r\n\t\tthis.labels.template.horizontalCenter = \"right\";\r\n\r\n\t\tthis._disposers.push(this._chart);\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Validates Axis renderer.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validate() {\r\n\t\t// so that radius would be updated\r\n\t\tif (this.chart && this.chart.invalid) {\r\n\t\t\tthis.chart.validate();\r\n\t\t}\r\n\r\n\t\tsuper.validate();\r\n\t}\r\n\r\n\t/**\r\n\t * Actual length of the Axis, in pixels.\r\n\t *\r\n\t * @return Length (px)\r\n\t */\r\n\tpublic get axisLength(): number {\r\n\t\treturn Math.abs(this.radius - this.innerRadius);\r\n\t}\r\n\r\n\t/**\r\n\t * Outer radius of the vertical (Y) axis in pixels.\r\n\t *\r\n\t * Indicate distance from the charts X axis control curve.\r\n\t *\r\n\t * Negative number means inside/below the X axis.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v4/chart-types/timeline/#Axis_radii} for more info\r\n\t * @param value Outer radius\r\n\t */\r\n\tpublic set radius(value: number) {\r\n\t\tthis.setPropertyValue(\"radius\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Outer radius\r\n\t */\r\n\tpublic get radius(): number {\r\n\t\treturn this.getPropertyValue(\"radius\");\r\n\t}\r\n\r\n\t/**\r\n\t * Inner radius of the vertical (Y) axis in pixels.\r\n\t *\r\n\t * Indicate distance from the charts X axis control curve.\r\n\t *\r\n\t * Negative number means inside/below the X axis.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v4/chart-types/timeline/#Axis_radii} for more info\r\n\t * @param value Outer radius\r\n\t */\r\n\tpublic set innerRadius(value: number) {\r\n\t\tthis.setPropertyValue(\"innerRadius\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Inner radius\r\n\t */\r\n\tpublic get innerRadius(): number {\r\n\t\treturn this.getPropertyValue(\"innerRadius\");\r\n\t}\r\n\r\n\t/**\r\n\t * Chart, associated with the Axis.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param value Chart\r\n\t */\r\n\tpublic set chart(chart: CurveChart) {\r\n\t\tthis._chart.set(chart, null);\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t * @return Chart\r\n\t */\r\n\tpublic get chart(): CurveChart {\r\n\t\treturn this._chart.get();\r\n\t}\r\n\r\n\t/**\r\n\t * Converts relative position on axis to point coordinates.\r\n\t *\r\n\t * @param position Position (0-1)\r\n\t * @return Point\r\n\t */\r\n\tpublic positionToPoint(position: number): IPoint {\r\n\t\treturn { x: 0, y: this.positionToCoordinate(position) };\r\n\t}\r\n\r\n\t/**\r\n\t * Updates and positions the axis line element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic updateAxisLine() {\r\n\t\tlet axisRendererX = this.axisRendererX;\r\n\t\tif (axisRendererX) {\r\n\t\t\tlet axis = axisRendererX.axis;\r\n\t\t\tlet point = axisRendererX.positionToPoint(axis.start + (axis.end - axis.start) * this.axisLocation);\r\n\t\t\tlet angle = point.angle;\r\n\r\n\t\t\tlet radius = -this.radius;\r\n\t\t\tlet innerRadius = -this.innerRadius;\r\n\r\n\t\t\tthis.line.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\t\t\tthis.line.moveTo(point);\r\n\r\n\t\t\tlet title = this.axis.title;\r\n\t\t\ttitle.moveTo({ x: point.x + radius / 2 * $math.cos(angle), y: point.y + radius / 2 * $math.sin(angle) });\r\n\t\t\ttitle.rotation = angle - 180;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Updates and positions a grid element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param grid Grid element\r\n\t * @param position Starting position\r\n\t * @param endPosition End position\r\n\t */\r\n\tpublic updateGridElement(grid: Grid, position: number, endPosition: number) {\r\n\r\n\t\tlet axisRendererX = this.axisRendererX;\r\n\t\tif (axisRendererX) {\r\n\t\t\tposition = position + (endPosition - position) * grid.location;\r\n\r\n\t\t\tif (position >= 0 && position <= 1) {\r\n\t\t\t\tgrid.path = this.getGridPath(position);\r\n\t\t\t}\r\n\r\n\t\t\tthis.positionItem(grid, { x: 0, y: 0 });\r\n\t\t\tthis.toggleVisibility(grid, position, 0, 1);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * [getGridPath description]\r\n\t *\r\n\t * @ignore\r\n\t * @todo description\r\n\t * @param position Position\r\n\t * @return SVG path\r\n\t */\r\n\tpublic getGridPath(position: number): string {\r\n\t\tlet axisRendererX = this.axisRendererX;\r\n\t\tlet path = \"\";\r\n\t\tif (axisRendererX && $type.isNumber(position)) {\r\n\r\n\t\t\tlet radius = $math.round(this.positionToPoint(position).y, 1);\r\n\r\n\t\t\tlet point = axisRendererX.positionToPoint(axisRendererX.axis.start);\r\n\t\t\tlet angle = point.angle;\r\n\r\n\t\t\tlet count = Math.ceil(axisRendererX.axisLength / axisRendererX.precisionStep);\r\n\t\t\tlet start = axisRendererX.axis.start;\r\n\t\t\tlet end = axisRendererX.axis.end;\r\n\r\n\t\t\tfor (let i = 0; i <= count; i++) {\r\n\r\n\t\t\t\tlet pos = start + i / count * (end - start);\r\n\t\t\t\tpoint = axisRendererX.positionToPoint(pos);\r\n\t\t\t\tangle = point.angle;\r\n\r\n\t\t\t\tlet x = point.x + radius * $math.cos(angle);\r\n\t\t\t\tlet y = point.y + radius * $math.sin(angle);\r\n\r\n\t\t\t\tpath += $path.lineTo({ x: x, y: y });\r\n\t\t\t}\r\n\r\n\t\t\tpath = path.replace(\"L\", \"M\");\r\n\t\t}\r\n\t\treturn path;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates and positions a label element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param label Label element\r\n\t * @param position Starting position\r\n\t * @param endPosition Ending position\r\n\t */\r\n\tpublic updateLabelElement(label: this[\"_labelType\"], position: number, endPosition: number, location?: number) {\r\n\t\tif (!$type.hasValue(location)) {\r\n\t\t\tlocation = label.location;\r\n\t\t}\r\n\r\n\t\tposition = position + (endPosition - position) * location;\r\n\t\tlet radius = this.positionToPoint(position).y;\r\n\r\n\t\tlet axisRendererX = this.axisRendererX;\r\n\t\tif (axisRendererX) {\r\n\t\t\tlet axis = axisRendererX.axis;\r\n\t\t\tlet point = axisRendererX.positionToPoint(axis.start + (axis.end - axis.start) * this.axisLocation);\r\n\t\t\tlet angle = point.angle;\r\n\r\n\t\t\tpoint.x += radius * $math.cos(angle);\r\n\t\t\tpoint.y += radius * $math.sin(angle);\r\n\r\n\t\t\tthis.positionItem(label, point);\r\n\t\t\tthis.toggleVisibility(label, position, this.minLabelPosition, this.maxLabelPosition);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Updates and positions a tick element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param tick Tick element\r\n\t * @param position Position\r\n\t */\r\n\tpublic updateTickElement(tick: AxisTick, position: number): void {\r\n\t\tif (tick.element) {\r\n\t\t\tlet axisRendererX = this.axisRendererX;\r\n\t\t\tif (axisRendererX) {\r\n\t\t\t\tlet point = axisRendererX.positionToPoint(this.axisLocation);\r\n\t\t\t\tlet angle = point.angle;\r\n\r\n\t\t\t\tlet radius = this.positionToPoint(position).y;\r\n\r\n\t\t\t\tpoint.x += radius * $math.cos(angle);\r\n\t\t\t\tpoint.y += radius * $math.sin(angle);\r\n\r\n\t\t\t\tangle = $math.normalizeAngle(angle + 90);\r\n\t\t\t\tif (angle / 90 != Math.round(angle / 90)) {\r\n\t\t\t\t\ttick.pixelPerfect = false;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\ttick.pixelPerfect = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet tickLength = tick.length;\r\n\t\t\t\tif (tick.inside) {\r\n\t\t\t\t\ttickLength *= -1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttick.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: tickLength * $math.cos(angle), y: tickLength * $math.sin(angle) });\r\n\t\t\t\tthis.positionItem(tick, point);\r\n\r\n\t\t\t\tthis.toggleVisibility(tick, position, 0, 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Updates and positions axis bullet.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param bullet AxisBullet element\r\n\t * @param position Starting position\r\n\t * @param endPosition End position\r\n\t */\r\n\tpublic updateBullet(bullet: Sprite, position: number, endPosition: number): void {\r\n\t\tlet location = 0.5;\r\n\t\tif (bullet instanceof AxisBullet) {\r\n\t\t\tlocation = bullet.location;\r\n\t\t}\r\n\r\n\t\tposition = position + (endPosition - position) * location;\r\n\r\n\t\tlet axisRendererX = this.axisRendererX;\r\n\t\tif (axisRendererX) {\r\n\t\t\tlet point = axisRendererX.positionToPoint(this.axisLocation);\r\n\t\t\tlet angle = point.angle;\r\n\r\n\t\t\tlet radius = this.positionToPoint(position).y;\r\n\r\n\t\t\tpoint.x += radius * $math.cos(angle);\r\n\t\t\tpoint.y += radius * $math.sin(angle);\r\n\r\n\t\t\tangle = $math.normalizeAngle(angle + 90);\r\n\r\n\t\t\tthis.positionItem(bullet, point);\r\n\r\n\t\t\tthis.toggleVisibility(bullet, position, 0, 1);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Updates and positions the base grid element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic updateBaseGridElement(): void {\r\n\t\t// @todo? zero grid for curve chart, is it needed?\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if point is within bounds of a container.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param point Point coordinates\r\n\t * @return Fits?\r\n\t */\r\n\tpublic fitsToBounds(point: IPoint): boolean {\r\n\t\treturn true;\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 Starting position\r\n\t * @param endPosition End position\r\n\t * @return SVG path\r\n\t */\r\n\tpublic getPositionRangePath(startPosition: number, endPosition: number): string {\r\n\r\n\t\tlet path = \"\";\r\n\t\tlet axisRendererX = this.axisRendererX;\r\n\r\n\t\tif (axisRendererX) {\r\n\t\t\tlet startX = axisRendererX.axis.start;\r\n\t\t\tlet endX = axisRendererX.axis.end;\r\n\r\n\t\t\tlet startY = this.axis.start;\r\n\t\t\tlet endY = this.axis.end;\r\n\r\n\t\t\tif ((startPosition <= startY && endPosition <= startY) || (startPosition >= endY && endPosition >= endY)) {\r\n\t\t\t\treturn path;\r\n\t\t\t}\r\n\r\n\t\t\tstartPosition = $math.fitToRange(startPosition, startY, endY);\r\n\t\t\tendPosition = $math.fitToRange(endPosition, startY, endY);\r\n\r\n\t\t\tlet startRadius = $math.round(this.positionToPoint(startPosition).y, 1);\r\n\t\t\tlet endRadius = $math.round(this.positionToPoint(endPosition).y, 1);\r\n\r\n\t\t\tif ($type.isNaN(startRadius) || $type.isNaN(endRadius)) {\r\n\t\t\t\treturn \"\";\r\n\t\t\t}\r\n\r\n\t\t\tlet point = axisRendererX.positionToPoint(startX);\r\n\t\t\tlet angle = point.angle;\r\n\r\n\t\t\tpath = $path.moveTo(point);\r\n\r\n\t\t\tlet count = Math.ceil(axisRendererX.axisLength / axisRendererX.precisionStep);\r\n\t\t\tfor (let i = 0; i <= count; i++) {\r\n\r\n\t\t\t\tlet pos = startX + i / count * (endX - startX);\r\n\r\n\t\t\t\tpoint = axisRendererX.positionToPoint(pos);\r\n\t\t\t\tangle = point.angle;\r\n\r\n\t\t\t\tlet x = point.x + startRadius * $math.cos(angle);\r\n\t\t\t\tlet y = point.y + startRadius * $math.sin(angle);\r\n\r\n\t\t\t\tpath += $path.lineTo({ x: x, y: y });\r\n\t\t\t}\r\n\t\t\tfor (let i = count; i >= 0; i--) {\r\n\r\n\t\t\t\tlet pos = startX + i / count * (endX - startX);\r\n\r\n\t\t\t\tpoint = axisRendererX.positionToPoint(pos);\r\n\t\t\t\tangle = point.angle;\r\n\r\n\t\t\t\tlet x = point.x + endRadius * $math.cos(angle);\r\n\t\t\t\tlet y = point.y + endRadius * $math.sin(angle);\r\n\r\n\t\t\t\tpath += $path.lineTo({ x: x, y: y });\r\n\t\t\t}\r\n\r\n\t\t\tpath += $path.closePath();\r\n\r\n\t\t}\r\n\r\n\t\treturn path;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates and positions an axis break element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param axisBreak Break element\r\n\t */\r\n\tpublic updateBreakElement(axisBreak: AxisBreak): void {\r\n\t\tlet axisRendererX = this.axisRendererX;\r\n\r\n\t\tif (axisRendererX) {\r\n\r\n\t\t\taxisBreak.fillShape.path = this.getPositionRangePath(axisBreak.startPosition, axisBreak.endPosition);\r\n\r\n\t\t\tthis.toggleVisibility(axisBreak.startLine, axisBreak.startPosition, 0, 1);\r\n\t\t\tthis.toggleVisibility(axisBreak.endLine, axisBreak.endPosition, 0, 1);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Creates visual elements for and axis break.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param axisBreak Axis break\r\n\t */\r\n\tpublic createBreakSprites(axisBreak: AxisBreak): void {\r\n\t\taxisBreak.startLine = new WavedCircle();\r\n\t\taxisBreak.endLine = new WavedCircle();\r\n\t\taxisBreak.fillShape = new WavedCircle();\r\n\t}\r\n\r\n\t/**\r\n\t * Updates some of the Axis tooltip's visual properties, related to\r\n\t * rendering of the Axis.\r\n\t *\r\n\t * @todo Description (review)\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic updateTooltip(): void {\r\n\t\tlet axis: Axis = this.axis;\r\n\t\tif (axis) {\r\n\t\t\t/*\r\n\t\t\tlet bigNum: number = 4000;\r\n\t\t\tlet bbx: number = -4000;\r\n\t\t\tlet bby: number = -4000;\r\n\t\t\tlet bbw: number = bigNum * 2;\r\n\t\t\tlet bbh: number = bigNum * 2;\r\n\r\n\t\t\tthis.axis.updateTooltip(tooltipOrientation, { x: bbx, y: bby, width: bbw, height: bbh }); */\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Converts a position on the axis to a coordinate in pixels.\r\n\t *\r\n\t * @param position Position (0-1)\r\n\t * @return Coordinate (px)\r\n\t */\r\n\tpublic positionToCoordinate(position: number): number {\r\n\t\tlet coordinate: number;\r\n\t\tlet axis: Axis = this.axis;\r\n\t\tlet axisFullLength = axis.axisFullLength;\r\n\r\n\t\tif (axis.renderer.inversed) {\r\n\t\t\tcoordinate = (axis.end - position) * axisFullLength;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tcoordinate = (position - axis.start) * axisFullLength;\r\n\t\t}\r\n\r\n\t\treturn $math.round(-this.innerRadius - coordinate, 4);\r\n\t}\r\n\r\n\r\n\t// TODO: make this universal?\r\n\r\n\t/**\r\n\t * Relative location of the Y axis along the length of the X axis.\r\n\t *\r\n\t * Values range from 0 (default) which means start of the X axis, to 1 meaning\r\n\t * end of the X axis.\r\n\t *\r\n\t * @default 0\r\n\t * @param value Axis location\r\n\t */\r\n\tpublic set axisLocation(value: number) {\r\n\t\tthis.setPropertyValue(\"axisLocation\", value);\r\n\t\tthis.invalidateAxisItems();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Axis location\r\n\t */\r\n\tpublic get axisLocation(): number {\r\n\t\treturn this.getPropertyValue(\"axisLocation\");\r\n\t}\r\n\r\n\t/**\r\n\t * Called when rendered is attached to an Axis, as well as a property of\r\n\t * Axis that might affect the appearance is updated.\r\n\t *\r\n\t * E.g. `axis.opposite`, `axis.inside`, etc.\r\n\t *\r\n\t * This method is called **before** draw, so that any related setting\r\n\t * changed in this method can be changed.\r\n\t *\r\n\t * @todo Description (review)\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic processRenderer(): void {\r\n\t\tsuper.processRenderer();\r\n\r\n\t\t// can not do this in init, as axis is set later\r\n\t\tlet axis = this.axis;\r\n\r\n\t\tif (axis) {\r\n\t\t\tlet title = axis.title;\r\n\t\t\tif (title) {\r\n\t\t\t\ttitle.isMeasured = false;\r\n\t\t\t\ttitle.horizontalCenter = \"middle\";\r\n\t\t\t\ttitle.verticalCenter = \"bottom\";\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Converts a coordinate in pixels to a relative position. (0-1)\r\n\t *\r\n\t * @param coordinate Coordinate (px)\r\n\t * @param coordinate2 Coordinate (px) Some more complicated axes need two coordinates\r\n\t * @return Position (0-1)\r\n\t */\r\n\tpublic coordinateToPosition(coordinate: number, coordinate2?: number): number {\r\n\t\tlet axisRendererX = this.axisRendererX;\r\n\t\tlet distance = coordinate;\r\n\t\tif (axisRendererX) {\r\n\t\t\tlet closestPoint = axisRendererX.polyspline.allPoints[axisRendererX.polyspline.getClosestPointIndex({ x: coordinate2, y: coordinate })];\r\n\t\t\tlet angle = closestPoint.angle - 90;\r\n\r\n\t\t\tdistance = $math.getDistance({ x: closestPoint.x + this.innerRadius * $math.cos(angle), y: closestPoint.y + this.innerRadius * $math.sin(angle) }, { x: coordinate2, y: coordinate });\r\n\t\t}\r\n\r\n\t\treturn super.coordinateToPosition(distance);\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic toAxisPosition(value: number): number {\r\n\t\treturn value;\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[\"AxisRendererCurveY\"] = AxisRendererCurveY;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/plugins/timeline/AxisRendererCurveY.ts","/**\r\n * Curve chart module.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { XYChart, IXYChartProperties, IXYChartDataFields, IXYChartAdapters, IXYChartEvents, XYChartDataItem } from \"../../charts/types/XYChart\";\r\nimport { CurveLineSeries } from \"./CurveLineSeries\";\r\nimport { CurveColumnSeries } from \"./CurveColumnSeries\";\r\nimport { Container } from \"../../core/Container\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { CurveCursor } from \"./CurveCursor\";\r\nimport { Axis } from \"../../charts/axes/Axis\";\r\nimport { AxisRenderer } from \"../../charts/axes/AxisRenderer\";\r\nimport { AxisRendererCurveX } from \"./AxisRendererCurveX\";\r\nimport { AxisRendererCurveY } from \"./AxisRendererCurveY\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { options } from \"../../core/Options\";\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 [[CurveChart]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nexport class CurveChartDataItem extends XYChartDataItem {\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!: CurveChart;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"CurveChartDataItem\";\r\n\t\tthis.applyTheme();\r\n\t}\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 data fields for [[CurveChart]].\r\n */\r\nexport interface ICurveChartDataFields extends IXYChartDataFields { }\r\n\r\n/**\r\n * Defines properties for [[CurveChart]].\r\n */\r\nexport interface ICurveChartProperties extends IXYChartProperties { }\r\n\r\n/**\r\n * Defines events for [[CurveChart]].\r\n */\r\nexport interface ICurveChartEvents extends IXYChartEvents { }\r\n\r\n/**\r\n * Defines adapters for [[CurveChart]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface ICurveChartAdapters extends IXYChartAdapters, ICurveChartProperties { }\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 * Creates a Curve chart.\r\n *\r\n * @see {@link ICurveChartEvents} for a list of available Events\r\n * @see {@link ICurveChartAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/timeline/} for documentation\r\n * @important\r\n */\r\nexport class CurveChart extends XYChart {\r\n\r\n\t/**\r\n\t * Defines available data fields.\r\n\t */\r\n\tpublic _dataFields: ICurveChartDataFields;\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: ICurveChartProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: ICurveChartAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: ICurveChartEvents;\r\n\r\n\t/**\r\n\t * Defines a type of series that this chart uses.\r\n\t */\r\n\tpublic _seriesType: CurveLineSeries | CurveColumnSeries;\r\n\r\n\t/**\r\n\t * Defines X axis renderer type.\r\n\t */\r\n\tpublic _xAxisRendererType: AxisRendererCurveX;\r\n\r\n\t/**\r\n\t * Defines Y axis renderer type.\r\n\t */\r\n\tpublic _yAxisRendererType: AxisRendererCurveY;\r\n\r\n\t/**\r\n\t * Defines X axis renderer type.\r\n\t */\r\n\tprotected _axisRendererX: typeof AxisRendererCurveX = AxisRendererCurveX;\r\n\r\n\t/**\r\n\t * Defines Y axis renderer type.\r\n\t */\r\n\tprotected _axisRendererY: typeof AxisRendererCurveY = AxisRendererCurveY;\r\n\r\n\t/**\r\n\t * Defines type of the cursor used in this chart.\r\n\t */\r\n\tpublic _cursor: CurveCursor;\r\n\r\n\t/**\r\n\t * A container that holds chart's visual elements.\r\n\t */\r\n\tpublic curveContainer: Container;\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\tthis.className = \"CurveChart\";\r\n\r\n\t\tlet curvedContainer = this.plotContainer.createChild(Container);\r\n\t\tcurvedContainer.shouldClone = false;\r\n\t\tcurvedContainer.layout = \"absolute\";\r\n\t\tcurvedContainer.align = \"center\";\r\n\t\tcurvedContainer.valign = \"middle\";\r\n\r\n\t\tthis.seriesContainer.parent = curvedContainer;\r\n\t\tthis.curveContainer = curvedContainer;\r\n\t\tthis.bulletsContainer.parent = curvedContainer;\r\n\t\tthis.axisBulletsContainer.parent = curvedContainer;\r\n\t\tthis._cursorContainer = curvedContainer;\r\n\r\n\t\tthis._bulletMask = undefined;\r\n\t\t//this._bulletMask.shouldClone = false;\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets defaults that instantiate some objects that rely on parent, so they\r\n\t * cannot be set in constructor.\r\n\t */\r\n\tprotected applyInternalDefaults(): void {\r\n\r\n\t\tsuper.applyInternalDefaults();\r\n\r\n\t\t// Add a default screen reader title for accessibility\r\n\t\t// This will be overridden in screen reader if there are any `titles` set\r\n\t\tif (!$type.hasValue(this.readerTitle)) {\r\n\t\t\t//this.readerTitle = this.language.translate(\"Curved chart\");\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Decorates Axis with required properties for this chart.\r\n\t *\r\n\t * @param axis Axis\r\n\t */\r\n\tprotected processAxis(axis: Axis): void {\r\n\t\tsuper.processAxis(axis);\r\n\t\tlet renderer: AxisRenderer = axis.renderer;\r\n\t\trenderer.gridContainer.parent = renderer;\r\n\t\trenderer.breakContainer.parent = renderer;\r\n\t\taxis.parent = this.curveContainer;\r\n\t\trenderer.toBack();\r\n\t}\r\n\r\n\t/**\r\n\t * Updates all X axes after range change event.\r\n\t */\r\n\t/*\r\n protected handleXAxisRangeChange() {\r\n\t super.handleXAxisRangeChange();\r\n\t $iter.each(this.yAxes.iterator(), (axis) => {\r\n\t\t axis.invalidate();\r\n\t });\r\n }*/\r\n\r\n\t/**\r\n\t * Updates all Y axes after range change event.\r\n\t */\r\n\t/*\r\n protected handleYAxisRangeChange() {\r\n\t super.handleYAxisRangeChange();\r\n\t $iter.each(this.xAxes.iterator(), (axis) => {\r\n\t\t axis.invalidate();\r\n\t });\r\n }*/\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 cursor\r\n\t\t\tif ($type.hasValue(config.cursor) && !$type.hasValue(config.cursor.type)) {\r\n\t\t\t\tconfig.cursor.type = \"CurveCursor\";\r\n\t\t\t}\r\n\r\n\t\t\t// Set up series\r\n\t\t\tif ($type.hasValue(config.series) && $type.isArray(config.series)) {\r\n\t\t\t\tfor (let i = 0, len = config.series.length; i < len; i++) {\r\n\t\t\t\t\tconfig.series[i].type = config.series[i].type || \"CurveLineSeries\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsuper.processConfig(config);\r\n\t}\r\n\r\n\t/**\r\n\t * Creates and returns a new Series, suitable for [[CurveChart]].\r\n\t *\r\n\t * @return New Series\r\n\t */\r\n\tprotected createSeries(): this[\"_seriesType\"] {\r\n\t\treturn new CurveLineSeries();\r\n\t}\r\n\r\n\t/**\r\n\t * Triggers (re)rendering of the horizontal (X) axis.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param axis Axis\r\n\t */\r\n\tpublic updateXAxis(renderer: AxisRenderer) {\r\n\t\t//do not call super!\r\n\t\tif (renderer) {\r\n\t\t\trenderer.processRenderer();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Triggers (re)rendering of the vertical (Y) axis.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param axis Axis\r\n\t */\r\n\tpublic updateYAxis(renderer: AxisRenderer) {\r\n\t\t// do not call super!\r\n\t\tif (renderer) {\r\n\t\t\trenderer.processRenderer();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t * @return Has license?\r\n\t */\r\n\tpublic hasLicense(): boolean {\r\n\t\tif (!super.hasLicense()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfor (let i = 0; i < options.licenses.length; i++) {\r\n\t\t\tif (options.licenses[i].match(/^TL.{5,}/i)) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\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[\"CurveChart\"] = CurveChart;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/plugins/timeline/CurveChart.ts","/**\r\n * Serpentine chart module.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { CurveChart, ICurveChartProperties, ICurveChartDataFields, ICurveChartAdapters, ICurveChartEvents, CurveChartDataItem } from \"./CurveChart\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { Orientation } from \"../../core/defs/Orientation\";\r\nimport { IPoint } from \"../../core/defs/IPoint\";\r\nimport { percent, Percent } from \"../../core/utils/Percent\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport { AxisRendererCurveY } from \"./AxisRendererCurveY\";\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 [[SerpentineChart]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nexport class SerpentineChartDataItem extends CurveChartDataItem {\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!: SerpentineChart;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"SerpentineChartDataItem\";\r\n\t\tthis.applyTheme();\r\n\t}\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 data fields for [[SerpentineChart]].\r\n */\r\nexport interface ISerpentineChartDataFields extends ICurveChartDataFields { }\r\n\r\n/**\r\n * Defines properties for [[SerpentineChart]].\r\n */\r\nexport interface ISerpentineChartProperties extends ICurveChartProperties {\r\n\r\n\t/**\r\n\t * Orientation (direction) of the chart.\r\n\t *\r\n\t * @default vertical\r\n\t */\r\n\torientation?: Orientation;\r\n\r\n\t/**\r\n\t * How many \"turns\" (levels) the chart will have.\r\n\t *\r\n\t * @default 3\r\n\t */\r\n\tlevelCount?: number;\r\n\r\n\t/**\r\n\t * Outer radius of the Y axis.\r\n\t *\r\n\t * It can be fixed number of pixels or percentage of the radius of distance\r\n\t * between rings of the spiral.\r\n\t *\r\n\t * @default 25%\r\n\t */\r\n\tyAxisRadius?: number | Percent;\r\n\r\n\t/**\r\n\t * Inner radius of the Y axis.\r\n\t *\r\n\t * It can be fixed number of pixels or percentage of the radius of distance\r\n\t * between rings of the spiral.\r\n\t *\r\n\t * @default -25%\r\n\t */\r\n\tyAxisInnerRadius?: number | Percent;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[SerpentineChart]].\r\n */\r\nexport interface ISerpentineChartEvents extends ICurveChartEvents { }\r\n\r\n/**\r\n * Defines adapters for [[SerpentineChart]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface ISerpentineChartAdapters extends ICurveChartAdapters, ISerpentineChartProperties { }\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 * Creates a Serpentine chart.\r\n *\r\n * @see {@link ISerpentineChartEvents} for a list of available Events\r\n * @see {@link ISerpentineChartAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/timeline/#Serpentine} for documentation\r\n * @important\r\n */\r\nexport class SerpentineChart extends CurveChart {\r\n\r\n\r\n\t/**\r\n\t * Defines available data fields.\r\n\t */\r\n\tpublic _dataFields: ISerpentineChartDataFields;\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: ISerpentineChartProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: ISerpentineChartAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: ISerpentineChartEvents;\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\tthis.className = \"SerpentineChart\";\r\n\r\n\t\tthis.orientation = \"vertical\";\r\n\t\tthis.levelCount = 3;\r\n\r\n\t\tthis.yAxisRadius = percent(25);\r\n\t\tthis.yAxisInnerRadius = percent(-25);\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Orientation (direction) of the chart.\r\n\t *\r\n\t * Options: \"vertical\" (default) or \"horizontal\".\r\n\t *\r\n\t * @default vertical\r\n\t * @param value Orientaiton\r\n\t */\r\n\tpublic set orientation(value: Orientation) {\r\n\t\tthis.setPropertyValue(\"orientation\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Orientation\r\n\t */\r\n\tpublic get orientation(): Orientation {\r\n\t\treturn this.getPropertyValue(\"orientation\");\r\n\t}\r\n\r\n\t/**\r\n\t * How many \"turns\" (levels) the chart will have.\r\n\t *\r\n\t * @default 3\r\n\t * @param value Level count\r\n\t */\r\n\tpublic set levelCount(value: number) {\r\n\t\tthis.setPropertyValue(\"levelCount\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Level count\r\n\t */\r\n\tpublic get levelCount(): number {\r\n\t\treturn this.getPropertyValue(\"levelCount\");\r\n\t}\r\n\r\n\t/**\r\n\t * Outer radius of the Y axis.\r\n\t *\r\n\t * It can be fixed number of pixels or percentage of the radius of distance\r\n\t * between rings of the spiral.\r\n\t *\r\n\t * IMPORTANT: this will override `radius` setting set on directly on the\r\n\t * Y axis renderer.\r\n\t *\r\n\t * @default 25%\r\n\t * @param value Outer radius\r\n\t */\r\n\tpublic set yAxisRadius(value: number | Percent) {\r\n\t\tthis.setPropertyValue(\"yAxisRadius\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return {number} Outer radius\r\n\t */\r\n\tpublic get yAxisRadius(): number | Percent {\r\n\t\treturn this.getPropertyValue(\"yAxisRadius\");\r\n\t}\r\n\r\n\t/**\r\n\t * Inner radius of the Y axis.\r\n\t *\r\n\t * It can be fixed number of pixels or percentage of the radius of distance\r\n\t * between rings of the spiral.\r\n\t *\r\n\t * IMPORTANT: this will override `innerRadius` setting set on directly on the\r\n\t * Y axis renderer.\r\n\t *\r\n\t * @default -25%\r\n\t * @param value Inner radius\r\n\t */\r\n\tpublic set yAxisInnerRadius(value: number | Percent) {\r\n\t\tthis.setPropertyValue(\"yAxisInnerRadius\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Inner radius\r\n\t */\r\n\tpublic get yAxisInnerRadius(): number | Percent {\r\n\t\treturn this.getPropertyValue(\"yAxisInnerRadius\");\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the chart.\r\n\t * \r\n\t * @ignore\r\n\t */\r\n\tpublic validate() {\r\n\t\tsuper.validate();\r\n\r\n\t\tlet curveContainer = this.curveContainer;\r\n\r\n\t\tlet w = this.plotContainer.maxWidth - curveContainer.pixelPaddingLeft - curveContainer.pixelPaddingRight;\r\n\t\tlet h = this.plotContainer.maxHeight - curveContainer.pixelPaddingTop - curveContainer.pixelPaddingBottom;\r\n\r\n\t\tlet axisRadius = 0;\r\n\t\tthis.yAxes.each((axis) => {\r\n\t\t\taxisRadius = $math.max(axis.renderer.radius, axisRadius);\r\n\t\t})\r\n\r\n\t\tw -= 2 * axisRadius;\r\n\t\th -= 2 * axisRadius;\r\n\r\n\t\tlet points: IPoint[] = [];\r\n\r\n\t\tlet levelCount = this.levelCount;\r\n\r\n\t\tlet radius: number;\r\n\r\n\t\tif (this.orientation == \"vertical\") {\r\n\r\n\t\t\tradius = $math.min(h / (levelCount - 1) / 2, w / 2);\r\n\r\n\t\t\th = $math.min(radius * (levelCount - 1) * 2, h);\r\n\r\n\t\t\tfor (let i = 0; i < this.levelCount; i++) {\r\n\r\n\t\t\t\tif (i % 2 === 0) {\r\n\t\t\t\t\tpoints.push({ x: -w / 2 + radius, y: -h / 2 + h / (levelCount - 1) * i })\r\n\t\t\t\t\tpoints.push({ x: w / 2 - radius, y: -h / 2 + h / (levelCount - 1) * i })\r\n\r\n\t\t\t\t\tlet centerPoint = { x: w / 2 - radius, y: -h / 2 + h / (levelCount - 1) * (i + 0.5) }\r\n\t\t\t\t\tif (i < this.levelCount - 1) {\r\n\t\t\t\t\t\tfor (let i = 0; i < 50; i++) {\r\n\t\t\t\t\t\t\tlet angle = -90 + i / 50 * 180;\r\n\t\t\t\t\t\t\tpoints.push({ x: centerPoint.x + radius * $math.cos(angle), y: centerPoint.y + radius * $math.sin(angle) });\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\telse {\r\n\t\t\t\t\tpoints.push({ x: w / 2 - radius, y: -h / 2 + h / (levelCount - 1) * i })\r\n\t\t\t\t\tpoints.push({ x: -w / 2 + radius, y: -h / 2 + h / (levelCount - 1) * i })\r\n\t\t\t\t\tlet centerPoint = { x: -w / 2 + radius, y: -h / 2 + h / (levelCount - 1) * (i + 0.5) }\r\n\t\t\t\t\tif (i < this.levelCount - 1) {\r\n\t\t\t\t\t\tfor (let i = 0; i < 50; i++) {\r\n\t\t\t\t\t\t\tlet angle = -90 - i / 50 * 180;\r\n\t\t\t\t\t\t\tpoints.push({ x: centerPoint.x + radius * $math.cos(angle), y: centerPoint.y + radius * $math.sin(angle) });\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\telse {\r\n\r\n\t\t\tradius = $math.min(w / (levelCount - 1) / 2, h / 2);\r\n\r\n\t\t\tw = $math.min(radius * (levelCount - 1) * 2, w);\r\n\r\n\t\t\tfor (let i = 0; i < this.levelCount; i++) {\r\n\r\n\t\t\t\tif (i % 2 === 0) {\r\n\t\t\t\t\tpoints.push({ y: -h / 2 + radius, x: -w / 2 + w / (levelCount - 1) * i })\r\n\t\t\t\t\tpoints.push({ y: h / 2 - radius, x: -w / 2 + w / (levelCount - 1) * i })\r\n\r\n\t\t\t\t\tlet centerPoint = { y: h / 2 - radius, x: -w / 2 + w / (levelCount - 1) * (i + 0.5) }\r\n\t\t\t\t\tif (i < this.levelCount - 1) {\r\n\t\t\t\t\t\tfor (let i = 0; i < 50; i++) {\r\n\t\t\t\t\t\t\tlet angle = -90 + i / 50 * 180;\r\n\t\t\t\t\t\t\tpoints.push({ y: centerPoint.y + radius * $math.cos(angle), x: centerPoint.x + radius * $math.sin(angle) });\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\telse {\r\n\t\t\t\t\tpoints.push({ y: h / 2 - radius, x: -w / 2 + w / (levelCount - 1) * i })\r\n\t\t\t\t\tpoints.push({ y: -h / 2 + radius, x: -w / 2 + w / (levelCount - 1) * i })\r\n\t\t\t\t\tlet centerPoint = { y: -h / 2 + radius, x: -w / 2 + w / (levelCount - 1) * (i + 0.5) }\r\n\t\t\t\t\tif (i < this.levelCount - 1) {\r\n\t\t\t\t\t\tfor (let i = 0; i < 50; i++) {\r\n\t\t\t\t\t\t\tlet angle = -90 - i / 50 * 180;\r\n\t\t\t\t\t\t\tpoints.push({ y: centerPoint.y + radius * $math.cos(angle), x: centerPoint.x + radius * $math.sin(angle) });\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\tthis.xAxes.each((axis) => {\r\n\t\t\taxis.renderer.points = points;\r\n\t\t\taxis.renderer.autoScale = false;\r\n\t\t\taxis.renderer.autoCenter = false;\t\t\t\r\n\t\t\taxis.renderer.polyspline.tensionX = 1;\r\n\t\t\taxis.renderer.polyspline.tensionY = 1;\r\n\t\t})\r\n\r\n\t\tlet yInnerRadius = $utils.relativeRadiusToValue(this.yAxisInnerRadius, radius * 2);\r\n\t\tlet yRadius = $utils.relativeRadiusToValue(this.yAxisRadius, radius * 2);\r\n\r\n\t\tthis.yAxes.each((axis) => {\r\n\t\t\taxis.renderer.radius = yRadius;\r\n\t\t\taxis.renderer.innerRadius = yInnerRadius;\r\n\t\t})\r\n\t}\r\n\r\n\t/**\r\n\t * Triggers (re)rendering of the vertical (Y) axis.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param axis Axis\r\n\t */\r\n\tpublic updateYAxis(renderer: AxisRendererCurveY) {\r\n\t\tsuper.updateYAxis(renderer);\r\n\t\trenderer.innerRadius = undefined;\r\n\t\trenderer.radius = undefined;\r\n\t}\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[\"SerpentineChart\"] = SerpentineChart;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/plugins/timeline/SerpentineChart.ts","/**\r\n * Radar chart module.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { CurveChart, ICurveChartProperties, ICurveChartDataFields, ICurveChartAdapters, ICurveChartEvents, CurveChartDataItem } from \"./CurveChart\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport { percent, Percent } from \"../../core/utils/Percent\";\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 { AxisRendererCurveY } from \"./AxisRendererCurveY\";\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 [[SpiralChart]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nexport class SpiralChartDataItem extends CurveChartDataItem {\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!: SpiralChart;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"SpiralChartDataItem\";\r\n\t\tthis.applyTheme();\r\n\t}\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 data fields for [[SpiralChart]].\r\n */\r\nexport interface ISpiralChartDataFields extends ICurveChartDataFields { }\r\n\r\n/**\r\n * Defines properties for [[SpiralChart]].\r\n */\r\nexport interface ISpiralChartProperties extends ICurveChartProperties {\r\n\r\n\t/**\r\n\t * Inner radius of the spiral.\r\n\t *\r\n\t * Can be either fixed number in pixels, or in percent.\r\n\t *\r\n\t * @default 25%\r\n\t */\r\n\tinnerRadius?: number | Percent;\r\n\r\n\t/**\r\n\t * Number of rings the spiral will consist of.\r\n\t *\r\n\t * @default 3\r\n\t */\r\n\tlevelCount?: number;\r\n\r\n\t/**\r\n\t * An angle the spiral will start at.\r\n\t *\r\n\t * @default 0\r\n\t */\r\n\tstartAngle?: number;\r\n\r\n\t/**\r\n\t * An angle the spiral will end at.\r\n\t *\r\n\t * @default 0\r\n\t */\r\n\tendAngle?: number;\r\n\r\n\t/**\r\n\t * Number of pixels the spiral diameter will increase by each full rotation.\r\n\t *\r\n\t * Normally the chart will calculate it by itself. You can override it by\r\n\t * setting your own value of `radiusStep`.\r\n\t *\r\n\t * In such case the chart might be bigger or smaller than chart container.\r\n\t */\r\n\tradiusStep?: number;\r\n\r\n\t/**\r\n\t * Precision setting to use when automatically generating axis points for the\r\n\t * spiral.\r\n\t *\r\n\t * The smaller the number, the finer line. However, small number will impact\r\n\t * the performace.\r\n\t *\r\n\t * Depending on actual chart configuration, you might need to find the best\r\n\t * possible value to balance between detail and good performance.\r\n\t *\r\n\t * @default 5\r\n\t */\r\n\tprecisionStep?: number;\r\n\r\n\t/**\r\n\t * Outer radius of the Y axis.\r\n\t *\r\n\t * It can be fixed number of pixels or percentage of the radius of distance\r\n\t * between rings of the spiral.\r\n\t *\r\n\t * @default 35%\r\n\t */\r\n\tyAxisRadius?: number | Percent;\r\n\r\n\t/**\r\n\t * Inner radius of the Y axis.\r\n\t *\r\n\t * It can be fixed number of pixels or percentage of the radius of distance\r\n\t * between rings of the spiral.\r\n\t *\r\n\t * @default -35%\r\n\t */\r\n\tyAxisInnerRadius?: number | Percent;\r\n\r\n\t/**\r\n\t * Normally the spiral will start at the center.\r\n\t *\r\n\t * Set this to `true` to start at the outer end.\r\n\t * \r\n\t * @default false\r\n\t */\r\n\tinversed?: boolean;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[SpiralChart]].\r\n */\r\nexport interface ISpiralChartEvents extends ICurveChartEvents { }\r\n\r\n/**\r\n * Defines adapters for [[SpiralChart]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface ISpiralChartAdapters extends ICurveChartAdapters, ISpiralChartProperties { }\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 * Creates a Spiral chart.\r\n *\r\n * @see {@link ISpiralChartEvents} for a list of available Events\r\n * @see {@link ISpiralChartAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/timeline/#Spiral} for documentation\r\n * @important\r\n */\r\nexport class SpiralChart extends CurveChart {\r\n\r\n\t/**\r\n\t * Defines available data fields.\r\n\t */\r\n\tpublic _dataFields: ISpiralChartDataFields;\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: ISpiralChartProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: ISpiralChartAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: ISpiralChartEvents;\r\n\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\tthis.className = \"SpiralChart\";\r\n\r\n\t\tthis.levelCount = 3;\r\n\t\tthis.precisionStep = 5;\r\n\t\tthis.startAngle = 0;\r\n\t\tthis.endAngle = 0;\r\n\t\tthis.innerRadius = percent(25);\r\n\r\n\t\tthis.yAxisRadius = percent(35);\r\n\t\tthis.yAxisInnerRadius = percent(-35);\r\n\r\n\t\tthis.inversed = false;\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Number of rings the spiral will consist of.\r\n\t *\r\n\t * @default 3\r\n\t * @param value Number of circles\r\n\t */\r\n\tpublic set levelCount(value: number) {\r\n\t\tthis.setPropertyValue(\"levelCount\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Number of circles\r\n\t */\r\n\tpublic get levelCount(): number {\r\n\t\treturn this.getPropertyValue(\"levelCount\");\r\n\t}\r\n\r\n\t/**\r\n\t * An angle the spiral will start at.\r\n\t *\r\n\t * @default 0\r\n\t * @param value Start angle\r\n\t */\r\n\tpublic set startAngle(value: number) {\r\n\t\tthis.setPropertyValue(\"startAngle\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return End angle\r\n\t */\r\n\tpublic get startAngle(): number {\r\n\t\treturn this.getPropertyValue(\"startAngle\");\r\n\t}\r\n\r\n\t/**\r\n\t * An angle the spiral will end at.\r\n\t *\r\n\t * @default 0\r\n\t * @param value End angle\r\n\t */\r\n\tpublic set endAngle(value: number) {\r\n\t\tthis.setPropertyValue(\"endAngle\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return End angle\r\n\t */\r\n\tpublic get endAngle(): number {\r\n\t\treturn this.getPropertyValue(\"endAngle\");\r\n\t}\r\n\r\n\t/**\r\n\t * Number of pixels the spiral diameter will increase by each full rotation.\r\n\t *\r\n\t * Normally the chart will calculate it by itself. You can override it by\r\n\t * setting your own value of `radiusStep`.\r\n\t *\r\n\t * In such case the chart might be bigger or smaller than chart container.\r\n\t * \r\n\t * @param {number} value Radius step (px)\r\n\t */\r\n\tpublic set radiusStep(value: number) {\r\n\t\tthis.setPropertyValue(\"radiusStep\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Radius step (px)\r\n\t */\r\n\tpublic get radiusStep(): number {\r\n\t\treturn this.getPropertyValue(\"radiusStep\");\r\n\t}\r\n\r\n\t/**\r\n\t * Precision setting to use when automatically generating axis points for the\r\n\t * spiral.\r\n\t *\r\n\t * The smaller the number, the finer line. However, small number will impact\r\n\t * the performace.\r\n\t *\r\n\t * Depending on actual chart configuration, you might need to find the best\r\n\t * possible value to balance between detail and good performance.\r\n\t *\r\n\t * @default 5\r\n\t * @param value Precision\r\n\t */\r\n\tpublic set precisionStep(value: number) {\r\n\t\tthis.setPropertyValue(\"precisionStep\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Precision\r\n\t */\r\n\tpublic get precisionStep(): number {\r\n\t\treturn this.getPropertyValue(\"precisionStep\");\r\n\t}\r\n\r\n\t/**\r\n\t * Inner radius of the spiral.\r\n\t *\r\n\t * Can be either fixed number in pixels, or in percent.\r\n\t *\r\n\t * @default 25%\r\n\t * @param value Inner radius\r\n\t */\r\n\tpublic set innerRadius(value: number | Percent) {\r\n\t\tthis.setPropertyValue(\"innerRadius\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Inner radius\r\n\t */\r\n\tpublic get innerRadius(): number | Percent {\r\n\t\treturn this.getPropertyValue(\"innerRadius\");\r\n\t}\r\n\r\n\t/**\r\n\t * Outer radius of the Y axis.\r\n\t *\r\n\t * It can be fixed number of pixels or percentage of the radius of distance\r\n\t * between rings of the spiral.\r\n\t *\r\n\t * IMPORTANT: this will override `radius` setting set on directly on the\r\n\t * Y axis renderer.\r\n\t *\r\n\t * @default 35%\r\n\t * @param value Outer radius\r\n\t */\r\n\tpublic set yAxisRadius(value: number | Percent) {\r\n\t\tthis.setPropertyValue(\"yAxisRadius\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Outer radius\r\n\t */\r\n\tpublic get yAxisRadius(): number | Percent {\r\n\t\treturn this.getPropertyValue(\"yAxisRadius\");\r\n\t}\r\n\r\n\t/**\r\n\t * Inner radius of the Y axis.\r\n\t *\r\n\t * It can be fixed number of pixels or percentage of the radius of distance\r\n\t * between rings of the spiral.\r\n\t *\r\n\t * IMPORTANT: this will override `innerRadius` setting set on directly on the\r\n\t * Y axis renderer.\r\n\t *\r\n\t * @default -35%\r\n\t * @param value Inner radius\r\n\t */\r\n\tpublic set yAxisInnerRadius(value: number | Percent) {\r\n\t\tthis.setPropertyValue(\"yAxisInnerRadius\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Inner radius\r\n\t */\r\n\tpublic get yAxisInnerRadius(): number | Percent {\r\n\t\treturn this.getPropertyValue(\"yAxisInnerRadius\");\r\n\t}\r\n\r\n\t/**\r\n\t * Normally the spiral will start at the center.\r\n\t *\r\n\t * Set this to `true` to start at the outer end.\r\n\t *\r\n\t * @default false\r\n\t * @param value Inversed?\r\n\t */\r\n\tpublic set inversed(value: boolean) {\r\n\t\tthis.setPropertyValue(\"inversed\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Inversed?\r\n\t */\r\n\tpublic get inversed(): boolean {\r\n\t\treturn this.getPropertyValue(\"inversed\");\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the chart.\r\n\t * \r\n\t * @ignore\r\n\t */\r\n\tpublic validate() {\r\n\t\tsuper.validate();\r\n\r\n\t\tlet curveContainer = this.curveContainer;\r\n\r\n\t\tlet w = this.plotContainer.maxWidth - curveContainer.pixelPaddingLeft - curveContainer.pixelPaddingRight;\r\n\t\tlet h = this.plotContainer.maxHeight - curveContainer.pixelPaddingTop - curveContainer.pixelPaddingBottom;\r\n\r\n\t\tlet radius = $math.min(w, h) / 2;\r\n\r\n\t\tlet radiusStep = this.radiusStep;\r\n\r\n\t\tlet innerRadius = $utils.relativeRadiusToValue(this.innerRadius, radius);\r\n\r\n\t\tif (!$type.isNumber(radiusStep)) {\r\n\t\t\tradiusStep = (radius - innerRadius) / this.levelCount;\r\n\t\t}\r\n\r\n\t\tlet points = $path.spiralPoints(0, 0, radius, radius, innerRadius, this.precisionStep, radiusStep, this.startAngle, this.endAngle);\r\n\r\n\t\tlet yInnerRadius = $utils.relativeRadiusToValue(this.yAxisInnerRadius, radiusStep);\r\n\t\tlet yRadius = $utils.relativeRadiusToValue(this.yAxisRadius, radiusStep);\r\n\r\n\t\tif (this.inversed) {\r\n\t\t\tpoints.reverse();\r\n\t\t}\r\n\r\n\t\tthis.xAxes.each((axis) => {\r\n\t\t\taxis.renderer.points = points;\r\n\t\t\taxis.renderer.autoScale = false;\r\n\t\t\taxis.renderer.autoCenter = false;\r\n\t\t\taxis.renderer.polyspline.tensionX = 1;\r\n\t\t\taxis.renderer.polyspline.tensionY = 1;\t\t\t\r\n\t\t})\r\n\r\n\t\tthis.yAxes.each((axis) => {\r\n\t\t\taxis.renderer.radius = yRadius;\r\n\t\t\taxis.renderer.innerRadius = yInnerRadius;\r\n\t\t})\r\n\t}\r\n\r\n\t/**\r\n\t * Triggers (re)rendering of the vertical (Y) axis.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param axis Axis\r\n\t */\r\n\tpublic updateYAxis(renderer: AxisRendererCurveY) {\r\n\t\tsuper.updateYAxis(renderer);\r\n\t\trenderer.innerRadius = undefined;\r\n\t\trenderer.radius = undefined;\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[\"SpiralChart\"] = SpiralChart;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/plugins/timeline/SpiralChart.ts","/**\r\n * Module that defines everything related to building CurveColumns.\r\n * It is a container which has CurveColumn element which is a Slice.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Column, IColumnProperties, IColumnAdapters, IColumnEvents } from \"../../charts/elements/Column\";\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { registry } from \"../../core/Registry\";\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[CurveColumn]].\r\n */\r\nexport interface ICurveColumnProperties extends IColumnProperties { }\r\n\r\n/**\r\n * Defines events for [[CurveColumn]].\r\n */\r\nexport interface ICurveColumnEvents extends IColumnEvents { }\r\n\r\n/**\r\n * Defines adapters for [[CurveColumn]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface ICurveColumnAdapters extends IColumnAdapters, ICurveColumnProperties { }\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 * Class used to create CurveColumns.\r\n *\r\n * @see {@link ICurveColumnEvents} for a list of available events\r\n * @see {@link ICurveColumnAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nexport class CurveColumn extends Column {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: ICurveColumnProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: ICurveColumnAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: ICurveColumnEvents;\r\n\r\n\r\n\t/**\r\n\t * Radar column element\r\n\t */\r\n\tpublic curveColumn: Sprite;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic CurveColumn: Sprite;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"CurveColumn\";\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected createAssets() {\r\n\t\tthis.curveColumn = this.createChild(Sprite);\r\n\t\tthis.CurveColumn = this.curveColumn; // because of an inital mistake, leave ref\r\n\t\tthis.curveColumn.shouldClone = false;\r\n\t\tthis.curveColumn.strokeOpacity = undefined;\r\n\t\t// some dirty hack so that if user access column, it won't get error\r\n\t\tthis.column = this.curveColumn;\r\n\t}\r\n\r\n\t/**\r\n\t * Copies all parameters from another [[CurveColumn]].\r\n\t *\r\n\t * @param source Source CurveColumn\r\n\t */\r\n\tpublic copyFrom(source: this) {\r\n\t\tsuper.copyFrom(source)\r\n\t\tif (this.curveColumn) {\r\n\t\t\tthis.curveColumn.copyFrom(source.curveColumn)\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Regiscolumn system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"CurveColumn\"] = CurveColumn;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/plugins/timeline/CurveColumn.ts","/**\r\n * Curve column series module.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { ColumnSeries, IColumnSeriesProperties, IColumnSeriesDataFields, IColumnSeriesAdapters, IColumnSeriesEvents, ColumnSeriesDataItem } from \"../../charts/series/ColumnSeries\";\r\nimport { Sprite, visualProperties } from \"../../core/Sprite\";\r\nimport { CurveChart } from \"./CurveChart\";\r\nimport { AxisRendererCurveX } from \"./AxisRendererCurveX\";\r\nimport { AxisRendererCurveY } from \"./AxisRendererCurveY\";\r\nimport { Axis } from \"../../charts/axes/Axis\";\r\n//import { AxisRendererCircular } from \"../axes/AxisRendererCircular\";\r\nimport { CurveColumn } from \"./CurveColumn\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { ValueAxis } from \"../../charts/axes/ValueAxis\";\r\nimport { CategoryAxis } from \"../../charts/axes/CategoryAxis\";\r\nimport { IPoint } from \"../../core/defs/IPoint\";\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 $array from \"../../core/utils/Array\";\r\nimport * as $object from \"../../core/utils/Object\";\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 [[CurveColumnSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nexport class CurveColumnSeriesDataItem extends ColumnSeriesDataItem {\r\n\r\n\t/**\r\n\t * A sprite used to draw the column.\r\n\t */\r\n\tpublic _column: CurveColumn;\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!: CurveColumnSeries;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"ColumnSeriesDataItem\";\r\n\t\tthis.applyTheme();\r\n\t}\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 data fields for [[CurveColumnSeries]].\r\n */\r\nexport interface ICurveColumnSeriesDataFields extends IColumnSeriesDataFields { }\r\n\r\n/**\r\n * Defines properties for [[CurveColumnSeries]].\r\n */\r\nexport interface ICurveColumnSeriesProperties extends IColumnSeriesProperties {\r\n\r\n\t/**\r\n\t * A relative part of an series elements allowed outside of the outer edge of\r\n\t * the \"plot area\".\r\n\t */\r\n\ttopOffset?: number;\r\n\r\n\t/**\r\n\t * A relative part of an series elements allowed outside of the inner edge of\r\n\t * the \"plot area\".\r\n\t */\r\n\tbottomOffset?: number;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[CurveColumnSeries]].\r\n */\r\nexport interface ICurveColumnSeriesEvents extends IColumnSeriesEvents { }\r\n\r\n/**\r\n * Defines adapters for [[CurveColumnSeries]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface ICurveColumnSeriesAdapters extends IColumnSeriesAdapters, ICurveColumnSeriesProperties { }\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 * Defines [[Series]] for a 3D column graph.\r\n *\r\n * @see {@link ICurveColumnSeriesEvents} for a list of available Events\r\n * @see {@link ICurveColumnSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\r\nexport class CurveColumnSeries extends ColumnSeries {\r\n\r\n\t/**\r\n\t */\r\n\tpublic _dataItem: CurveColumnSeriesDataItem;\r\n\r\n\t/**\r\n\t */\r\n\tpublic _column: CurveColumn;\r\n\r\n\t/**\r\n\t * Defines the type of data fields used for the series.\r\n\t */\r\n\tpublic _dataFields: ICurveColumnSeriesDataFields;\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: ICurveColumnSeriesProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: ICurveColumnSeriesAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: ICurveColumnSeriesEvents;\r\n\r\n\t/**\r\n\t * A chart series belongs to.\r\n\t */\r\n\tpublic _chart: CurveChart;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"CurveColumnSeries\";\r\n\r\n\t\tthis.bulletsContainer.mask = new Sprite();\r\n\r\n\t\tthis.topOffset = 0.2;\r\n\t\tthis.bottomOffset = 0.2;\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Creates and returns a CurveColumn element to use as column in radar chart.\r\n\t *\r\n\t * @return CurveColumn.\r\n\t */\r\n\tprotected createColumnTemplate(): this[\"_column\"] {\r\n\t\treturn new CurveColumn();\r\n\t}\r\n\r\n\t/**\r\n\t * Validates data item's element, effectively redrawing it.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param dataItem Data item\r\n\t */\r\n\tpublic validateDataElementReal(dataItem: this[\"_dataItem\"]): void {\r\n\t\t//let startAngle = this.chart.startAngle;\r\n\t\t//let endAngle = this.chart.endAngle;\r\n\r\n\t\tlet yField: string = this.yField;\r\n\t\tlet yOpenField: string = this.yOpenField;\r\n\t\tlet xField: string = this.xField;\r\n\t\tlet xOpenField: string = this.xOpenField;\r\n\r\n\t\tlet startLocation = this.getStartLocation(dataItem);\r\n\t\tlet endLocation = this.getEndLocation(dataItem);\r\n\r\n\t\t//let cellAngle = (endAngle - startAngle) / (this.dataItems.length * (this.end - this.start));\r\n\r\n\t\tlet template: Sprite = this.columns.template;\r\n\r\n\t\tlet percentWidth: number = template.percentWidth;\r\n\t\tlet percentHeight: number = template.percentHeight;\r\n\r\n\t\tif ($type.isNaN(percentWidth)) {\r\n\t\t\tpercentWidth = 100;\r\n\t\t}\r\n\r\n\t\tlet points: IPoint[] = [];\r\n\r\n\t\tlet xAxis = this.xAxis;\r\n\t\tlet yAxis = this.yAxis;\r\n\r\n\t\tlet axisRendererX: AxisRendererCurveX = xAxis.renderer;\r\n\t\tlet middlePoint: IPoint;\r\n\r\n\t\tif (this.baseAxis == this.xAxis) {\r\n\r\n\t\t\tlet offset: number = $math.round((endLocation - startLocation) * (1 - percentWidth / 100) / 2, 5);\r\n\t\t\tstartLocation += offset;\r\n\t\t\tendLocation -= offset;\r\n\r\n\t\t\tlet count = Math.ceil(this.xAxis.axisLength / axisRendererX.precisionStep / (this.endIndex - this.startIndex)) + 2;\r\n\r\n\t\t\tlet step = (endLocation - startLocation) / count;\r\n\r\n\t\t\tlet bottomLocation = dataItem.locations[yOpenField];\r\n\t\t\tlet topLocation = dataItem.locations[yField];\r\n\t\t\t// otherwise gantt chart will start items in the middle of a cell\r\n\t\t\tif (this.yAxis instanceof ValueAxis) {\r\n\t\t\t\tif ((this.dataFields)[this.yField] != (this.dataFields)[this.yOpenField]) {\r\n\t\t\t\t\tbottomLocation = 0;\r\n\t\t\t\t\ttopLocation = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse if (this.yAxis instanceof CategoryAxis) {\r\n\t\t\t\tif (!$type.isNaN(percentHeight)) {\r\n\t\t\t\t\ttopLocation = 0;\r\n\t\t\t\t\tbottomLocation = 1;\r\n\t\t\t\t\tlet offset: number = $math.round((1 - percentHeight / 100) / 2, 5);\r\n\t\t\t\t\ttopLocation += offset;\r\n\t\t\t\t\tbottomLocation -= offset;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfor (let i = startLocation; i <= endLocation; i = i + step) {\r\n\t\t\t\tif (i > endLocation) {\r\n\t\t\t\t\ti = endLocation;\r\n\t\t\t\t}\r\n\t\t\t\tpoints.push(this.getPoint(dataItem, xField, yField, i, topLocation));\r\n\t\t\t}\r\n\t\t\tpoints.push(this.getPoint(dataItem, xField, yField, endLocation, topLocation));\r\n\r\n\t\t\tfor (let i = endLocation; i >= startLocation; i = i - step) {\r\n\t\t\t\tif (i < startLocation) {\r\n\t\t\t\t\ti = startLocation;\r\n\t\t\t\t}\r\n\t\t\t\tpoints.push(this.getPoint(dataItem, xOpenField, yOpenField, i, bottomLocation));\r\n\t\t\t}\r\n\t\t\tpoints.push(this.getPoint(dataItem, xOpenField, yOpenField, startLocation, bottomLocation));\r\n\r\n\t\t\tmiddlePoint = this.getPoint(dataItem, xField, yField, startLocation + (endLocation - startLocation) / 2, 0.5);\r\n\t\t}\r\n\t\telse {\r\n\r\n\t\t\tlet offset: number = $math.round((endLocation - startLocation) * (1 - percentHeight / 100) / 2, 5);\r\n\t\t\tstartLocation += offset;\r\n\t\t\tendLocation -= offset;\r\n\r\n\t\t\tlet rangeX = { start: xAxis.start, end: xAxis.end };\r\n\t\t\tlet rangeY = { start: yAxis.start, end: yAxis.end };\r\n\r\n\t\t\tlet rightLocation = dataItem.locations[xField];\r\n\t\t\tlet leftLocation = dataItem.locations[xOpenField];\r\n\r\n\t\t\t// otherwise gantt chart will start items in the middle of a cell\r\n\t\t\tif (this.xAxis instanceof ValueAxis) {\r\n\t\t\t\tif ((this.dataFields)[this.xField] != (this.dataFields)[this.xOpenField]) {\r\n\t\t\t\t\trightLocation = 0;\r\n\t\t\t\t\tleftLocation = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlet openPositionX = xAxis.getPositionX(dataItem, xOpenField, leftLocation, \"valueX\", rangeX);\r\n\t\t\tlet positionX = xAxis.getPositionX(dataItem, xField, rightLocation, \"valueX\", rangeX);\r\n\r\n\t\t\tlet openPositionY = yAxis.getPositionY(dataItem, yOpenField, startLocation, \"valueY\", rangeY)\r\n\t\t\tlet positionY = yAxis.getPositionY(dataItem, yField, endLocation, \"valueY\", rangeY)\r\n\r\n\t\t\tlet count = Math.ceil((xAxis.axisLength / axisRendererX.precisionStep) * (positionX - openPositionX) / (xAxis.end - xAxis.start)) + 2;\r\n\t\t\tlet step = (positionX - openPositionX) / count;\r\n\r\n\t\t\tif (positionX > openPositionX) {\r\n\t\t\t\tfor (let i = openPositionX; i <= positionX; i = i + step) {\r\n\t\t\t\t\tif (i > positionX) {\r\n\t\t\t\t\t\ti = positionX;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tpoints.push(xAxis.renderer.positionToPoint(i, openPositionY));\r\n\t\t\t\t}\r\n\t\t\t\tpoints.push(xAxis.renderer.positionToPoint(positionX, openPositionY));\r\n\r\n\t\t\t\tfor (let i = positionX; i >= openPositionX; i = i - step) {\r\n\t\t\t\t\tif (i < openPositionX) {\r\n\t\t\t\t\t\ti = openPositionX;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tpoints.push(xAxis.renderer.positionToPoint(i, positionY));\r\n\t\t\t\t}\r\n\t\t\t\tpoints.push(xAxis.renderer.positionToPoint(openPositionX, positionY));\r\n\t\t\t}\r\n\r\n\t\t\tmiddlePoint = xAxis.renderer.positionToPoint(openPositionX + (positionX - openPositionX) / 2, openPositionY + (positionY - openPositionY) / 2);\r\n\t\t}\r\n\r\n\t\tlet column = dataItem.column;\r\n\r\n\t\tif (!column) {\r\n\t\t\tcolumn = this.columns.create();\r\n\t\t\t$object.copyProperties(this, column, visualProperties); // need this because 3d columns are not in the same container\r\n\t\t\t$object.copyProperties(this.columns.template, column, visualProperties); // second time, no force, so that columns.template would override series properties\t\t\t\r\n\t\t\tdataItem.column = column;\r\n\t\t\tdataItem.addSprite(column);\r\n\t\t\tthis.setColumnStates(column);\r\n\t\t\tcolumn.paper = this.paper;\r\n\t\t}\r\n\r\n\t\tlet curveColumn = column.curveColumn;\r\n\t\tif (points.length > 0) {\r\n\t\t\tpoints.push(points[0]);\r\n\t\t}\r\n\t\tcurveColumn.path = $path.pointsToPath(points);\r\n\r\n\t\tcolumn.__disabled = false;\r\n\t\tcolumn.parent = this.columnsContainer;\r\n\r\n\t\tcolumn.tooltipX = middlePoint.x;\r\n\t\tcolumn.tooltipY = middlePoint.y;\r\n\r\n\t\tcolumn.curveColumn.tooltipX = middlePoint.x;\r\n\t\tcolumn.curveColumn.tooltipY = middlePoint.y;\r\n\r\n\t\tthis.axisRanges.each((axisRange) => {\r\n\t\t\tlet rangeColumn = dataItem.rangesColumns.getKey(axisRange.uid);\r\n\t\t\tif (!rangeColumn) {\r\n\t\t\t\trangeColumn = this.columns.create();\r\n\r\n\t\t\t\tif (rangeColumn.dataItem) {\r\n\t\t\t\t\t$array.remove(rangeColumn.dataItem.sprites, rangeColumn);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdataItem.addSprite(rangeColumn);\r\n\t\t\t\trangeColumn.paper = this.paper;\r\n\t\t\t\tthis.setColumnStates(rangeColumn);\r\n\t\t\t\tdataItem.rangesColumns.setKey(axisRange.uid, rangeColumn);\r\n\t\t\t}\r\n\r\n\t\t\tlet rangeCurveColumn = rangeColumn.curveColumn;\r\n\t\t\trangeCurveColumn.path = curveColumn.path;\r\n\r\n\t\t\trangeColumn.__disabled = false;\r\n\t\t\trangeColumn.parent = axisRange.contents;\r\n\t\t});\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an [[IPoint]] coordinates of the specific Serie's data point.\r\n\t *\r\n\t * @param dataItem Data item\r\n\t * @param xKey Name of X data field\r\n\t * @param yKey Name of Y data field\r\n\t * @param locationX X location\r\n\t * @param locationY Y location\r\n\t * @param stackKeyX ?\r\n\t * @param stackKeyY ?\r\n\t * @returns Coordinates\r\n\t */\r\n\tpublic getPoint(dataItem: CurveColumnSeriesDataItem, xKey: string, yKey: string, locationX?: number, locationY?: number, stackKeyX?: string, stackKeyY?: string) {\r\n\r\n\t\tif (!stackKeyX) {\r\n\t\t\tstackKeyX = \"valueX\";\r\n\t\t}\r\n\t\tif (!stackKeyY) {\r\n\t\t\tstackKeyY = \"valueY\";\r\n\t\t}\r\n\t\tlet renderer: AxisRendererCurveY = this.yAxis.renderer;\r\n\t\t//let radius = $math.fitToRange(this.yAxis.getY(dataItem, yKey, locationY, stackKeyY), renderer.innerRadius * (1 + this.bottomOffset), renderer.radius * (1 + this.topOffset));\r\n\r\n\t\t//let radius = this.yAxis.getY(dataItem, yKey, locationY, stackKeyY);\r\n\r\n\t\tlet radius = $math.fitToRange(this.yAxis.getY(dataItem, yKey, locationY, stackKeyY), -renderer.radius * (1 + this.topOffset), -renderer.innerRadius * (1 + this.bottomOffset));\r\n\t\tlet range = { start: this.xAxis.start, end: this.xAxis.end };\r\n\r\n\t\tlet xx: number = this.xAxis.getX(dataItem, xKey, locationX, stackKeyX, range);\r\n\t\tlet xy: number = this.xAxis.getY(dataItem, xKey, locationX, stackKeyX, range);\r\n\r\n\t\tlet angle: number = this.xAxis.getAngle(dataItem, xKey, locationX, stackKeyX, range);\r\n\r\n\t\treturn { x: xx + radius * $math.cos(angle), y: xy + radius * $math.sin(angle) };\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an SVG path to be used as a mask for the series.\r\n\t *\r\n\t * @return SVG path\r\n\t */\r\n\tprotected getMaskPath(): string {\r\n\t\tlet renderer: AxisRendererCurveY = this.yAxis.renderer;\r\n\t\tlet path = renderer.getPositionRangePath(renderer.axis.start, renderer.axis.end);\r\n\r\n\t\tlet bulletsContainer = this.bulletsContainer;\r\n\t\tif (this.chart && this.chart.maskBullets) {\r\n\t\t\tif (!bulletsContainer.mask) {\r\n\t\t\t\tbulletsContainer.mask = new Sprite();\r\n\t\t\t}\r\n\t\t\tbulletsContainer.mask.path = path;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tbulletsContainer.mask = undefined;\r\n\t\t}\r\n\r\n\t\treturn path;\r\n\t}\r\n\r\n\t/**\r\n\t * A relative part of an series elements allowed outside of the outer edge of\r\n\t * the \"plot area\".\r\n\t *\r\n\t * @default 0.2\r\n\t * @param value Top offset\r\n\t */\r\n\tpublic set topOffset(value: number) {\r\n\t\tthis.setPropertyValue(\"topOffset\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Top offset\r\n\t */\r\n\tpublic get topOffset(): number {\r\n\t\treturn this.getPropertyValue(\"topOffset\");\r\n\t}\r\n\r\n\t/**\r\n\t * A relative part of an series elements allowed outside of the inner edge of\r\n\t * the \"plot area\".\r\n\t * \r\n\t * @default 0.2\r\n\t * @param value Bottom offset\r\n\t */\r\n\tpublic set bottomOffset(value: number) {\r\n\t\tthis.setPropertyValue(\"bottomOffset\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Bottom offset\r\n\t */\r\n\tpublic get bottomOffset(): number {\r\n\t\treturn this.getPropertyValue(\"bottomOffset\");\r\n\t}\r\n\r\n\t/**\r\n\t * [positionBulletReal description]\r\n\t * \r\n\t * @ignore\r\n\t * @param {Sprite} bullet [description]\r\n\t * @param {number} positionX [description]\r\n\t * @param {number} positionY [description]\r\n\t */\r\n\tprotected positionBulletReal(bullet: Sprite, positionX: number, positionY: number) {\r\n\r\n\t\tlet xAxis = this.xAxis;\r\n\t\tlet yAxis = this.yAxis;\r\n\r\n\t\tif (positionX < xAxis.start || positionX > xAxis.end || positionY < yAxis.start || positionY > yAxis.end) {\r\n\t\t\tbullet.visible = false;\r\n\t\t}\r\n\r\n\t\tbullet.moveTo(this.xAxis.renderer.positionToPoint(positionX, positionY));\r\n\t}\r\n\r\n\tprotected setXAxis(axis: Axis) {\r\n\t\tsuper.setXAxis(axis);\r\n\t\tthis.updateRendererRefs();\r\n\t}\r\n\r\n\tprotected setYAxis(axis: Axis) {\r\n\t\tsuper.setYAxis(axis);\r\n\t\tthis.updateRendererRefs();\r\n\t}\r\n\r\n\tprotected updateRendererRefs() {\r\n\t\tlet rendererX = this.xAxis.renderer;\r\n\t\tlet rendererY = this.yAxis.renderer;\r\n\r\n\t\trendererX.axisRendererY = rendererY;\r\n\t\trendererY.axisRendererX = rendererX;\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[\"CurveColumnSeries\"] = CurveColumnSeries;\r\nregistry.registeredClasses[\"CurveColumnSeriesDataItem\"] = CurveColumnSeriesDataItem;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/plugins/timeline/CurveColumnSeries.ts","/**\r\n * Curve step line series module.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { CurveLineSeries, CurveLineSeriesDataItem, ICurveLineSeriesAdapters, ICurveLineSeriesDataFields, ICurveLineSeriesEvents, ICurveLineSeriesProperties } from \"./CurveLineSeries\";\r\nimport { AxisRendererCurveX } from \"./AxisRendererCurveX\";\r\nimport { StepLineSeriesSegment } from \"../../charts/series/StepLineSeriesSegment\";\r\nimport { IPoint } from \"../../core/defs/IPoint\";\r\nimport { CurveChart } from \"./CurveChart\";\r\nimport { DateAxis } from \"../../charts/axes/DateAxis\";\r\nimport { registry } from \"../../core/Registry\";\r\n//import * as $math from \"../../core/utils/Math\";\r\nimport * as $type from \"../../core/utils/Type\";\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 [[CurveStepLineSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nexport class CurveStepLineSeriesDataItem extends CurveLineSeriesDataItem {\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!: CurveStepLineSeries;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"CurveStepLineSeriesDataItem\";\r\n\t\tthis.applyTheme();\r\n\t}\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 data fields for [[CurveStepLineSeries]].\r\n */\r\nexport interface ICurveStepLineSeriesDataFields extends ICurveLineSeriesDataFields { }\r\n\r\n/**\r\n * Defines properties for [[CurveStepLineSeries]].\r\n */\r\nexport interface ICurveStepLineSeriesProperties extends ICurveLineSeriesProperties {\r\n\r\n\t/**\r\n\t * Relative location in cell where step should start.\r\n\t *\r\n\t * @default 0\r\n\t */\r\n\tstartLocation?: number;\r\n\r\n\t/**\r\n\t * Relative location in cell where step should end.\r\n\t *\r\n\t * @default 1\r\n\t */\r\n\tendLocation?: number;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[CurveStepLineSeries]].\r\n */\r\nexport interface ICurveStepLineSeriesEvents extends ICurveLineSeriesEvents { }\r\n\r\n/**\r\n * Defines adapters for [[CurveStepLineSeries]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface ICurveStepLineSeriesAdapters extends ICurveLineSeriesAdapters, ICurveStepLineSeriesProperties { }\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 * Defines [[Series]] for a radar graph.\r\n *\r\n * @see {@link ICurveStepLineSeriesEvents} for a list of available Events\r\n * @see {@link ICurveStepLineSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\r\nexport class CurveStepLineSeries extends CurveLineSeries {\r\n\r\n\t/**\r\n\t * Defines the type of data fields used for the series.\r\n\t */\r\n\tpublic _dataFields: ICurveStepLineSeriesDataFields;\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: ICurveStepLineSeriesProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: ICurveStepLineSeriesAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: ICurveStepLineSeriesEvents;\r\n\r\n\t/**\r\n\t * Defines the type of data item.\r\n\t */\r\n\tpublic _dataItem: CurveStepLineSeriesDataItem;\r\n\r\n\t/**\r\n\t * A chart series belongs to.\r\n\t */\r\n\tpublic _chart: CurveChart;\r\n\r\n\t/**\r\n\t * Defines type for segment.\r\n\t */\r\n\tpublic _segment: StepLineSeriesSegment;\r\n\r\n\tprotected _previousPosition: number;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"CurveStepLineSeries\";\r\n\r\n\t\tthis.startLocation = 0;\r\n\t\tthis.endLocation = 1;\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 CurveStepLineSeriesDataItem();\r\n\t}\r\n\r\n\t/**\r\n\t * [addPoints description]\r\n\t *\r\n\t * @ignore\r\n\t * @todo Description\r\n\t * @param points [description]\r\n\t * @param dataItem [description]\r\n\t * @param xField [description]\r\n\t * @param yField [description]\r\n\t * @param backwards [description]\r\n\t */\r\n\tprotected addPoints(points: IPoint[], dataItem: this[\"_dataItem\"], xField: string, yField: string, backwards?: boolean): void {\r\n\r\n\t\tlet startLocation = this.startLocation;\r\n\t\tlet endLocation = this.endLocation;\r\n\t\tif (backwards) {\r\n\t\t\tstartLocation = this.endLocation;\r\n\t\t\tendLocation = this.startLocation;\r\n\t\t}\r\n\r\n\t\tlet xAxis = this.xAxis;\r\n\t\tlet yAxis = this.yAxis;\r\n\r\n\t\tlet previousPosition = this._previousPosition;\r\n\r\n\t\tlet rangeX = { start: xAxis.start, end: xAxis.end };\r\n\t\tlet rangeY = { start: yAxis.start, end: yAxis.end };\r\n\r\n\t\tlet xRenderer = xAxis.renderer;\r\n\r\n\t\tif (this.baseAxis == this.xAxis) {\r\n\t\t\tlet count = Math.ceil(this.xAxis.axisLength / xRenderer.precisionStep / (this.endIndex - this.startIndex)) + 2;\r\n\r\n\t\t\tlet step = Math.abs(endLocation - startLocation) / count;\r\n\r\n\t\t\t// this solves issues with missing values\r\n\t\t\t// this is not done for when y is date axis due to unlikely situation\r\n\t\t\tif (this.xAxis instanceof DateAxis) {\r\n\t\t\t\tlet index = dataItem.index;\r\n\t\t\t\tif (backwards) {\r\n\t\t\t\t\tlet nextDataItem = this.dataItems.getIndex(index - 1);\r\n\t\t\t\t\tlet baseDuration = this.xAxis.baseDuration;\r\n\r\n\t\t\t\t\tif (nextDataItem) {\r\n\t\t\t\t\t\tlet nextTime = nextDataItem.dateX.getTime();\r\n\t\t\t\t\t\tlet currentTime = dataItem.dateX.getTime()\r\n\t\t\t\t\t\tif (nextTime < currentTime - baseDuration) {\r\n\t\t\t\t\t\t\tendLocation -= (currentTime - nextTime) / baseDuration - 1;\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\telse {\r\n\t\t\t\t\tlet nextDataItem = this.dataItems.getIndex(index + 1);\r\n\t\t\t\t\tlet baseDuration = this.xAxis.baseDuration;\r\n\r\n\t\t\t\t\tif (nextDataItem) {\r\n\t\t\t\t\t\tlet nextTime = nextDataItem.dateX.getTime();\r\n\t\t\t\t\t\tlet currentTime = dataItem.dateX.getTime()\r\n\t\t\t\t\t\tif (nextTime > currentTime + baseDuration) {\r\n\t\t\t\t\t\t\tendLocation += (nextTime - currentTime) / baseDuration - 1;\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\r\n\t\t\tif (backwards) {\r\n\t\t\t\tfor (let i = startLocation; i >= endLocation; i = i - step) {\r\n\t\t\t\t\tif (i < endLocation) {\r\n\t\t\t\t\t\ti = endLocation;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tpoints.push(this.getPoint(dataItem, xField, yField, i, dataItem.locations[yField]));\r\n\t\t\t\t}\r\n\t\t\t\tpoints.push(this.getPoint(dataItem, xField, yField, endLocation, dataItem.locations[yField]));\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tfor (let i = startLocation; i <= endLocation; i = i + step) {\r\n\t\t\t\t\tif (i > endLocation) {\r\n\t\t\t\t\t\ti = endLocation;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tpoints.push(this.getPoint(dataItem, xField, yField, i, dataItem.locations[yField]));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tpoints.push(this.getPoint(dataItem, xField, yField, endLocation, dataItem.locations[yField]));\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlet positionX = xAxis.getPositionX(dataItem, xField, dataItem.locations[xField], \"valueX\", rangeX);\r\n\t\t\tlet positionY = yAxis.getPositionY(dataItem, yField, startLocation, \"valueY\", rangeY);\r\n\r\n\t\t\tif ($type.isNumber(previousPosition)) {\r\n\t\t\t\tlet count = Math.ceil((xAxis.axisLength / xRenderer.precisionStep) * (positionX - previousPosition) / (xAxis.end - xAxis.start)) + 2;\r\n\t\t\t\tlet step = Math.abs((positionX - previousPosition) / count);\r\n\r\n\t\t\t\tif (positionX > previousPosition) {\r\n\t\t\t\t\tfor (let i = previousPosition; i <= positionX; i = i + step) {\r\n\t\t\t\t\t\tif (i > positionX) {\r\n\t\t\t\t\t\t\ti = positionX;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tpoints.push(xAxis.renderer.positionToPoint(i, positionY));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse if (positionX < previousPosition) {\r\n\t\t\t\t\tfor (let i = previousPosition; i >= positionX; i = i - step) {\r\n\t\t\t\t\t\tif (i < positionX) {\r\n\t\t\t\t\t\t\ti = positionX;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tpoints.push(xAxis.renderer.positionToPoint(i, positionY));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlet startPoint = this.getPoint(dataItem, xField, yField, dataItem.locations[xField], startLocation);\r\n\t\t\tif (startPoint) {\r\n\t\t\t\tpoints.push(startPoint);\r\n\t\t\t}\r\n\t\t\tlet endPoint = this.getPoint(dataItem, xField, yField, dataItem.locations[xField], endLocation);\r\n\t\t\tif (endPoint) {\r\n\t\t\t\tpoints.push(endPoint);\r\n\t\t\t}\r\n\r\n\t\t\tthis._previousPosition = positionX;\r\n\t\t}\r\n\t}\r\n\r\n\t//protected createSegment(): this[\"_segment\"] {\r\n\t//\treturn new StepLineSeriesSegment();\r\n\t//}\t\r\n\r\n\t/**\r\n\t * Relative location in cell where step should start.\r\n\t *\r\n\t * @default 0\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 * Relative location in cell where step should end.\r\n\t *\r\n\t * @default 1\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/**\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[\"CurveStepLineSeries\"] = CurveStepLineSeries;\r\nregistry.registeredClasses[\"CurveStepLineSeriesDataItem\"] = CurveStepLineSeriesDataItem;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/plugins/timeline/CurveStepLineSeries.ts","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { CurveChart } from \"./CurveChart\";\r\nimport { XYCursor, IXYCursorAdapters, IXYCursorEvents, IXYCursorProperties } from \"../../charts/cursors/XYCursor\";\r\nimport { IPoint } from \"../../core/defs/IPoint\";\r\nimport { ISpriteEvents } from \"../../core/Sprite\";\r\nimport { Tooltip } from \"../../core/elements/Tooltip\";\r\n//import { Percent, percent } from \"../../core/utils/Percent\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport { AxisRendererCurveX } from \"./AxisRendererCurveX\";\r\nimport { AxisRendererCurveY } from \"./AxisRendererCurveY\";\r\n//import * as $type from \"../../core/utils/Type\";\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 properties for [[CurveCursor]].\r\n */\r\nexport interface ICurveCursorProperties extends IXYCursorProperties { }\r\n\r\n/**\r\n * Defines events for [[CurveCursor]].\r\n */\r\nexport interface ICurveCursorEvents extends IXYCursorEvents { }\r\n\r\n/**\r\n * Defines adapters for [[CurveCursor]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface ICurveCursorAdapters extends IXYCursorAdapters, ICurveCursorProperties { }\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 * Cursor for [[CurveChart]].\r\n *\r\n * @see {@link ICurveCursorEvents} for a list of available events\r\n * @see {@link ICurveCursorAdapters} for a list of available Adapters\r\n */\r\nexport class CurveCursor extends XYCursor {\r\n\r\n\t/**\r\n\t * Defines available properties\r\n\t */\r\n\tpublic _properties!: ICurveCursorProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters\r\n\t */\r\n\tpublic _adapter!: ICurveCursorAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: ICurveCursorEvents;\r\n\r\n\t/**\r\n\t * A reference to chart cursor belongs to.\r\n\t */\r\n\tpublic _chart: CurveChart;\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\tthis.className = \"CurveCursor\";\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\r\n\t\tthis.mask = undefined;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if point is within bounds of a container.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param point Point to check\r\n\t * @return Fits within container?\r\n\t */\r\n\tpublic fitsToBounds(point: IPoint): boolean {\r\n\t\tif (this.xAxis && this.yAxis) {\r\n\t\t\tlet xAxisRenderer: AxisRendererCurveX = this.xAxis.renderer;\r\n\t\t\tlet yAxisRenderer: AxisRendererCurveY = this.yAxis.renderer;\r\n\t\t\tlet index = xAxisRenderer.polyspline.getClosestPointIndex(point);\r\n\t\t\tlet distance = $math.getDistance(point, xAxisRenderer.polyspline.allPoints[index]);\r\n\t\t\tif (distance >= Math.abs(yAxisRenderer.radius) && distance >= Math.abs(yAxisRenderer.innerRadius)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * [triggerMoveReal description]\r\n\t * \r\n\t * @param point Target point\r\n\t */\r\n\tprotected triggerMoveReal(point: IPoint) {\r\n\t\tif (!this.xAxis || (this.xAxis && (!this.xAxis.cursorTooltipEnabled || this.xAxis.tooltip.disabled))) {\r\n\t\t\tthis.updateLineX(this.point);\r\n\t\t}\r\n\t\tif (!this.yAxis || (this.yAxis && (!this.yAxis.cursorTooltipEnabled || this.yAxis.tooltip.disabled))) {\r\n\t\t\tthis.updateLineY(this.point);\r\n\t\t}\r\n\r\n\t\tthis.updateSelection();\r\n\t\tsuper.triggerMoveReal(point);\r\n\t}\r\n\r\n\t/**\r\n\t * (Re)draws the x cursor's line.\r\n\t *\r\n\t * @param point New target point\r\n\t */\r\n\tprotected updateLineX(point: IPoint) {\r\n\t\tlet lineX = this.lineX;\r\n\t\tlet xAxis = this.xAxis;\r\n\r\n\t\tif (!xAxis) {\r\n\t\t\tthis.xAxis = this.chart.xAxes.getIndex(0);\r\n\t\t\txAxis = this.xAxis;\r\n\t\t}\r\n\r\n\t\tif (lineX && lineX.visible && !lineX.disabled && xAxis) {\r\n\t\t\tlet position = xAxis.renderer.pointToPosition(point);\r\n\t\t\tlet axisRendererX = xAxis.renderer;\r\n\t\t\tlineX.path = axisRendererX.getGridPath($math.fitToRange(position, xAxis.start, xAxis.end));\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * (Re)draws the vertical (radial) cursor's line.\r\n\t *\r\n\t * @param point New target point\r\n\t */\r\n\tprotected updateLineY(point: IPoint) {\r\n\t\tlet lineY = this.lineY;\r\n\t\tlet yAxis = this.yAxis;\r\n\r\n\t\tif (!yAxis) {\r\n\t\t\tthis.yAxis = this.chart.yAxes.getIndex(0);\r\n\t\t\tyAxis = this.yAxis;\r\n\t\t}\r\n\r\n\t\tif (lineY && lineY.visible && !lineY.disabled && yAxis) {\r\n\r\n\t\t\tlet position = yAxis.renderer.pointToPosition(point);\r\n\r\n\t\t\tlet axisRendererY = yAxis.renderer;\r\n\t\t\tlineY.path = axisRendererY.getGridPath($math.fitToRange(position, yAxis.start, yAxis.end));\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Updates selection dimensions on size change.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic updateSelection(): void {\r\n\t\tif (this._usesSelection) {\r\n\t\t\tlet downPoint: IPoint = this.downPoint;\r\n\r\n\t\t\tlet xAxis = this.xAxis;\r\n\t\t\tlet yAxis = this.yAxis;\r\n\r\n\t\t\tif (xAxis && yAxis && downPoint) {\r\n\t\t\t\tlet point: IPoint = this.point;\r\n\r\n\r\n\t\t\t\tlet selection = this.selection;\r\n\t\t\t\tselection.x = 0;\r\n\t\t\t\tselection.y = 0;\r\n\t\t\t\tlet path = \"\";\r\n\r\n\t\t\t\tlet behavior = this.behavior;\r\n\r\n\t\t\t\tif (behavior == \"zoomX\" || behavior == \"selectX\") {\r\n\t\t\t\t\tlet startPosition = xAxis.renderer.pointToPosition(downPoint);\r\n\t\t\t\t\tlet endPosition = xAxis.renderer.pointToPosition(point);\r\n\r\n\t\t\t\t\tpath += xAxis.renderer.getPositionRangePath(startPosition, endPosition);\r\n\r\n\t\t\t\t\tstartPosition = xAxis.toGlobalPosition(startPosition);\r\n\t\t\t\t\tendPosition = xAxis.toGlobalPosition(endPosition);\r\n\r\n\t\t\t\t\tthis.xRange = { start: Math.min(startPosition, endPosition), end: Math.max(endPosition, startPosition) };\r\n\t\t\t\t}\r\n\r\n\t\t\t\telse if (behavior == \"zoomY\" || behavior == \"selectY\") {\r\n\t\t\t\t\tlet startPosition = yAxis.renderer.pointToPosition(downPoint);\r\n\t\t\t\t\tlet endPosition = yAxis.renderer.pointToPosition(point);\r\n\r\n\t\t\t\t\tpath += yAxis.renderer.getPositionRangePath(startPosition, endPosition);\r\n\r\n\t\t\t\t\tstartPosition = yAxis.toGlobalPosition(startPosition);\r\n\t\t\t\t\tendPosition = yAxis.toGlobalPosition(endPosition);\r\n\r\n\t\t\t\t\tthis.yRange = { start: Math.min(startPosition, endPosition), end: Math.max(endPosition, startPosition) };\r\n\t\t\t\t}\r\n\r\n\t\t\t\tselection.path = path;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.selection.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Updates cursors current positions.\r\n\t */\r\n\tprotected getPositions(): void {\r\n\t\t// positions are used by axes or series\r\n\t\tif (this.xAxis) {\r\n\t\t\tthis.xPosition = this.xAxis.toGlobalPosition(this.xAxis.renderer.pointToPosition(this.point));\r\n\t\t}\r\n\r\n\t\tif (this.yAxis) {\r\n\t\t\tthis.yPosition = this.yAxis.toGlobalPosition(this.yAxis.renderer.pointToPosition(this.point));\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Overriding inherited method, so that nothing happens when it's triggered.\r\n\t */\r\n\tprotected updatePoint(point: IPoint): void {\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Updates Cursor's position when axis tooltip changes horizontal position.\r\n\t *\r\n\t * @param event Axis event\r\n\t */\r\n\tprotected handleXTooltipPosition(event: ISpriteEvents[\"positionchanged\"]): void {\r\n\t\tif (this.xAxis.cursorTooltipEnabled) {\r\n\t\t\tlet tooltip: Tooltip = this.xAxis.tooltip;\r\n\t\t\tthis.updateLineX($utils.svgPointToSprite({ x: tooltip.pixelX, y: tooltip.pixelY }, this));\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Updates Cursor's position when axis tooltip changes vertical position.\r\n\t *\r\n\t * @todo Description\r\n\t * @param event Axis event\r\n\t */\r\n\tprotected handleYTooltipPosition(event: ISpriteEvents[\"positionchanged\"]): void {\r\n\t\tif (this.yAxis.cursorTooltipEnabled) {\r\n\t\t\tlet tooltip: Tooltip = this.yAxis.tooltip;\r\n\t\t\tthis.updateLineY($utils.svgPointToSprite({ x: tooltip.pixelX, y: tooltip.pixelY }, this));\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Overriding so that nothing happens when it's called.\r\n\t * \r\n\t * @param point Point\r\n\t */\r\n\tprotected updateLinePositions(point: IPoint): void {\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * [getRanges description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected getRanges(): void { }\r\n\r\n\t/**\r\n\t * Overriding inherited method, so that nothing happens when `updateSize`\r\n\t * is triggered.\r\n\t *\r\n\t * CurveCursor is quite complicated and needs own sizing logic.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic updateSize(): void { }\r\n\r\n\t/**\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\r\n\tprotected fixPoint(point: IPoint): IPoint {\r\n\t\t// overriding xy method\r\n\t\treturn point;\r\n\t}\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[\"CurveCursor\"] = CurveCursor;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/plugins/timeline/CurveCursor.ts","import * as m from \"../../es2015/plugins/timeline\";\nwindow.am4plugins_timeline = m;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./plugins/timeline.js\n// module id = null\n// module chunks = "],"sourceRoot":""}