Your IP : 3.144.98.61


Current Path : /var/www/www-root/data/www/monolith-realty.ru/bitrix/js/main/amcharts/4.8.5/plugins/
Upload File :
Current File : /var/www/www-root/data/www/monolith-realty.ru/bitrix/js/main/amcharts/4.8.5/plugins/timeline.js.map

{"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","toAxisPosition","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","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","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","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 = <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[<keyof this[\"_dataFields\"]>this._xOpenField] ||\r\n\t\t\t\tthis.dataFields[<keyof this[\"_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 = <AxisRendererCurveX>this.xAxis.renderer;\r\n\t\tlet rendererY = <AxisRendererCurveY>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.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 = <CurveChart>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 = <CurveChart>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\tposition2 = axisRendererY.axis.toAxisPosition(position2);\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<CurveChart>();\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 * 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.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 = <any>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 } 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\n\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 = <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 ((<any>this.dataFields)[this.yField] != (<any>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 ((<any>this.dataFields)[this.xField] != (<any>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\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 = <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 = <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 = <AxisRendererCurveX>this.xAxis.renderer;\r\n\t\tlet rendererY = <AxisRendererCurveY>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 = <AxisRendererCurveX>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 = <AxisRendererCurveX>this.xAxis.renderer;\r\n\t\t\tlet yAxisRenderer: AxisRendererCurveY = <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 = <AxisRendererCurveX>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 = <AxisRendererCurveY>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":""}