scichart 3.2.0-beta → 3.2.442

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/Builder/buildSurface.d.ts +2 -2
  2. package/Builder/chartBuilder.d.ts +4 -4
  3. package/Charting/ChartModifiers/ChartModifierBase.d.ts +5 -5
  4. package/Charting/ChartModifiers/ChartModifierBase.js +2 -3
  5. package/Charting/ChartModifiers/CursorModifier.d.ts +9 -9
  6. package/Charting/ChartModifiers/CursorModifier.js +1 -1
  7. package/Charting/ChartModifiers/DataPointSelectionModifier.d.ts +1 -0
  8. package/Charting/ChartModifiers/DataPointSelectionModifier.js +6 -1
  9. package/Charting/ChartModifiers/LegendModifier.d.ts +9 -24
  10. package/Charting/ChartModifiers/LegendModifier.js +9 -21
  11. package/Charting/ChartModifiers/MouseWheelZoomModifier.js +20 -11
  12. package/Charting/ChartModifiers/OverviewRangeSelectionModifier.d.ts +5 -5
  13. package/Charting/ChartModifiers/PinchZoomModifier.js +9 -9
  14. package/Charting/ChartModifiers/RubberBandXyZoomModifier.d.ts +4 -7
  15. package/Charting/ChartModifiers/RubberBandXyZoomModifier.js +6 -8
  16. package/Charting/ChartModifiers/SeriesSelectionModifier.js +10 -8
  17. package/Charting/ChartModifiers/XAxisDragModifier.d.ts +1 -1
  18. package/Charting/ChartModifiers/XAxisDragModifier.js +3 -3
  19. package/Charting/ChartModifiers/YAxisDragModifier.d.ts +2 -4
  20. package/Charting/ChartModifiers/YAxisDragModifier.js +7 -8
  21. package/Charting/Drawing/BaseCache.js +13 -8
  22. package/Charting/Model/BaseDataSeries.d.ts +2 -2
  23. package/Charting/Model/Filters/HlcFilterBase.d.ts +6 -2
  24. package/Charting/Model/Filters/HlcFilterBase.js +17 -1
  25. package/Charting/Model/Filters/IFilterBase.d.ts +24 -0
  26. package/Charting/Model/Filters/IFilterBase.js +2 -0
  27. package/Charting/Model/Filters/OhlcFilterBase.d.ts +6 -2
  28. package/Charting/Model/Filters/OhlcFilterBase.js +17 -1
  29. package/Charting/Model/Filters/XyFilterBase.d.ts +6 -5
  30. package/Charting/Model/Filters/XyFilterBase.js +17 -1
  31. package/Charting/Model/Filters/XyyFilterBase.d.ts +6 -2
  32. package/Charting/Model/Filters/XyyFilterBase.js +17 -1
  33. package/Charting/Model/Filters/XyzFilterBase.d.ts +6 -2
  34. package/Charting/Model/Filters/XyzFilterBase.js +17 -1
  35. package/Charting/Model/XyyDataSeries.js +15 -16
  36. package/Charting/Visuals/Annotations/CursorTooltipSvgAnnotation.js +0 -4
  37. package/Charting/Visuals/Annotations/NativeTextAnnotation.js +4 -0
  38. package/Charting/Visuals/Axis/AxisBase2D.d.ts +3 -3
  39. package/Charting/Visuals/Axis/AxisCore.d.ts +2 -2
  40. package/Charting/Visuals/Axis/DeltaCalculator/DateTimeDeltaCalculator.js +15 -1
  41. package/Charting/Visuals/Legend/ManualLegend.d.ts +57 -0
  42. package/Charting/Visuals/Legend/ManualLegend.js +150 -0
  43. package/Charting/Visuals/Legend/SciChartLegend.js +4 -3
  44. package/Charting/Visuals/Legend/SciChartLegendBase.d.ts +62 -3
  45. package/Charting/Visuals/Legend/SciChartLegendBase.js +70 -11
  46. package/Charting/Visuals/PointMarkers/BasePointMarker.js +13 -8
  47. package/Charting/Visuals/RenderableSeries/BaseRenderableSeries.d.ts +1 -1
  48. package/Charting/Visuals/RenderableSeries/BaseRenderableSeries.js +3 -3
  49. package/Charting/Visuals/RenderableSeries/BaseStackedCollection.js +8 -3
  50. package/Charting/Visuals/RenderableSeries/DrawingProviders/BandSeriesDrawingProvider.js +6 -10
  51. package/Charting/Visuals/RenderableSeries/DrawingProviders/BaseSeriesDrawingProvider.d.ts +14 -3
  52. package/Charting/Visuals/RenderableSeries/DrawingProviders/BaseSeriesDrawingProvider.js +34 -10
  53. package/Charting/Visuals/RenderableSeries/DrawingProviders/BubbleSeriesDrawingProvider.js +3 -8
  54. package/Charting/Visuals/RenderableSeries/DrawingProviders/ColumnSeriesDrawingProvider.js +5 -10
  55. package/Charting/Visuals/RenderableSeries/DrawingProviders/LineSeriesDrawingProvider.js +5 -10
  56. package/Charting/Visuals/RenderableSeries/DrawingProviders/MountainSeriesDrawingProvider.js +5 -9
  57. package/Charting/Visuals/RenderableSeries/DrawingProviders/OhlcSeriesDrawingProvider.js +3 -8
  58. package/Charting/Visuals/RenderableSeries/DrawingProviders/PointMarkerDrawingProvider.js +5 -9
  59. package/Charting/Visuals/RenderableSeries/HoveredChangedArgs.d.ts +6 -1
  60. package/Charting/Visuals/RenderableSeries/HoveredChangedArgs.js +2 -1
  61. package/Charting/Visuals/RenderableSeries/IRenderableSeries.d.ts +1 -1
  62. package/Charting/Visuals/RenderableSeries/SelectionChangedArgs.d.ts +6 -1
  63. package/Charting/Visuals/RenderableSeries/SelectionChangedArgs.js +2 -1
  64. package/Charting/Visuals/RenderableSeries/SplineBandRenderableSeries.js +43 -1
  65. package/Charting/Visuals/RenderableSeries/SplineLineRenderableSeries.js +6 -1
  66. package/Charting/Visuals/RenderableSeries/SplineMountainRenderableSeries.js +6 -1
  67. package/Charting/Visuals/RubberBandSvgRect/RubberBandSvgRect.d.ts +4 -0
  68. package/Charting/Visuals/RubberBandSvgRect/RubberBandSvgRect.js +8 -2
  69. package/Charting/Visuals/SciChartPieSurface/SciChartPieSurface.d.ts +6 -0
  70. package/Charting/Visuals/SciChartPieSurface/SciChartPieSurface.js +7 -0
  71. package/Charting/Visuals/SciChartSurface.d.ts +0 -5
  72. package/Charting/Visuals/SciChartSurface.js +11 -12
  73. package/Charting/Visuals/SciChartSurfaceBase.d.ts +19 -1
  74. package/Charting/Visuals/SciChartSurfaceBase.js +45 -23
  75. package/Charting/Visuals/createMaster.d.ts +3 -0
  76. package/Charting/Visuals/createMaster.js +54 -23
  77. package/Charting/Visuals/createSingle.js +2 -2
  78. package/Charting/Visuals/licenseManager2D.js +9 -4
  79. package/Charting3D/ChartModifiers/ResetCamera3DModifier.d.ts +1 -1
  80. package/Charting3D/ChartModifiers/ResetCamera3DModifier.js +1 -2
  81. package/Charting3D/ChartModifiers/TooltipModifier3D.d.ts +35 -0
  82. package/Charting3D/ChartModifiers/TooltipModifier3D.js +41 -5
  83. package/Charting3D/Model/DataSeries/BaseGridDataSeries3D.d.ts +1 -1
  84. package/Charting3D/Model/DataSeries/BaseGridDataSeries3D.js +2 -2
  85. package/Charting3D/Model/DataSeries/IPointMetadata3D.d.ts +7 -2
  86. package/Charting3D/Visuals/Axis/AxisBase3D.d.ts +8 -1
  87. package/Charting3D/Visuals/Axis/AxisBase3D.js +0 -2
  88. package/Charting3D/Visuals/Axis/NumericAxis3D.d.ts +3 -2
  89. package/Charting3D/Visuals/Axis/NumericAxis3D.js +7 -3
  90. package/Charting3D/Visuals/Primitives/PointLine3DSceneEntity.js +4 -2
  91. package/Charting3D/Visuals/Primitives/ScatterPointsSceneEntity.js +5 -2
  92. package/Charting3D/Visuals/Primitives/SurfaceMeshSceneEntity.js +2 -1
  93. package/Charting3D/Visuals/RenderableSeries/BaseRenderableSeries3D.d.ts +5 -0
  94. package/Charting3D/Visuals/RenderableSeries/BaseRenderableSeries3D.js +19 -5
  95. package/Charting3D/Visuals/SciChart3DRenderer.d.ts +0 -1
  96. package/Charting3D/Visuals/SciChart3DRenderer.js +3 -26
  97. package/Charting3D/Visuals/SciChart3DSurface.d.ts +12 -5
  98. package/Charting3D/Visuals/SciChart3DSurface.js +35 -6
  99. package/Charting3D/Visuals/createMaster3d.js +9 -4
  100. package/Core/BuildStamp.d.ts +1 -1
  101. package/Core/BuildStamp.js +2 -2
  102. package/Core/DeletableEntity.d.ts +11 -5
  103. package/Core/DeletableEntity.js +42 -45
  104. package/Core/Mouse/MouseManager.js +6 -0
  105. package/Core/OneTimePerformanceWarning.d.ts +1 -1
  106. package/Core/OneTimePerformanceWarning.js +2 -1
  107. package/_wasm/scichart.browser.js +1 -1
  108. package/_wasm/scichart2d.js +1 -1
  109. package/_wasm/scichart2d.wasm +0 -0
  110. package/_wasm/scichart3d.js +1 -1
  111. package/_wasm/scichart3d.wasm +0 -0
  112. package/constants/performanceWarnings.d.ts +1 -0
  113. package/constants/performanceWarnings.js +2 -1
  114. package/index.d.ts +5 -6
  115. package/index.dev.js +68886 -0
  116. package/index.js +13 -21
  117. package/index.min.js +1 -1
  118. package/package.json +1 -1
  119. package/utils/MemoryUsageHelper.d.ts +55 -8
  120. package/utils/MemoryUsageHelper.js +64 -14
  121. package/utils/colorUtil.d.ts +7 -0
  122. package/utils/colorUtil.js +13 -1
  123. package/utils/parseColor.js +19 -4
@@ -60,6 +60,17 @@ export declare abstract class BaseSeriesDrawingProvider<T extends IRenderableSer
60
60
  * @param parentSeries the parent {@link IRenderableSeries | Renderable Series} which this drawing provider is attached to
61
61
  */
62
62
  protected constructor(webAssemblyContext: TSciChart, parentSeries: T, ySelector?: (ps: IPointSeries) => SCRTDoubleVector, xSelector?: (ps: IPointSeries) => SCRTDoubleVector);
63
+ /**
64
+ * Returns the startIndex and count to be passed to the native drawing provider.
65
+ * If renderPassData exists and contains an indexRange, this will be used, otherwise the full size of the xValues will be used
66
+ * @param renderPassData
67
+ * @param xValues
68
+ * @returns
69
+ */
70
+ getStartAndCount(renderPassData: RenderPassData, xValues: SCRTDoubleVector): {
71
+ startIndex: number;
72
+ count: number;
73
+ };
63
74
  /**
64
75
  * Helper function to apply color-paletting to a {@link UIntVector} - where each element in the vector
65
76
  * is an ARGB color that defines stroke of the series
@@ -67,7 +78,7 @@ export declare abstract class BaseSeriesDrawingProvider<T extends IRenderableSer
67
78
  * @returns the new {@link UIntVector} with ARGB colors
68
79
  */
69
80
  applyStrokePaletting(strokePen: ISCRTPen): void;
70
- applyStrokeFillPaletting(stroke: string, strokePen: ISCRTPen, fill: string, fillBrush: ISCRTBrush, opacity: number, usePalette?: boolean, resetPenBrushColors?: boolean): void;
81
+ applyStrokeFillPaletting(stroke: string, strokePen: ISCRTPen | undefined, fill: string, fillBrush: ISCRTBrush | undefined, opacity: number, usePalette?: boolean, resetPenBrushColors?: boolean): void;
71
82
  /**
72
83
  * Creates a native {@link SCRTBrush} Solid Color Brush from html color code string passed in
73
84
  * @param htmlColorCode The HTML Color code
@@ -100,8 +111,8 @@ export declare abstract class BaseSeriesDrawingProvider<T extends IRenderableSer
100
111
  onDetachSeries(): void;
101
112
  protected seriesHasDataChanges(): void;
102
113
  protected overridePaletteProviderColors(rs: IRenderableSeries, xValue: number, yValue: number, index: number, opacity?: number, metadata?: IPointMetadata): {
103
- stroke: number;
104
- fill: number;
114
+ stroke: number | undefined;
115
+ fill: number | undefined;
105
116
  };
106
117
  protected isGradientFillPaletting(rs: IRenderableSeries): boolean;
107
118
  }
@@ -59,6 +59,27 @@ var BaseSeriesDrawingProvider = /** @class */ (function (_super) {
59
59
  (_a = _this.parentDataSeries) === null || _a === void 0 ? void 0 : _a.dataChanged.subscribe(_this.seriesHasDataChanges);
60
60
  return _this;
61
61
  }
62
+ /**
63
+ * Returns the startIndex and count to be passed to the native drawing provider.
64
+ * If renderPassData exists and contains an indexRange, this will be used, otherwise the full size of the xValues will be used
65
+ * @param renderPassData
66
+ * @param xValues
67
+ * @returns
68
+ */
69
+ BaseSeriesDrawingProvider.prototype.getStartAndCount = function (renderPassData, xValues) {
70
+ var _a;
71
+ var pointSeries = renderPassData === null || renderPassData === void 0 ? void 0 : renderPassData.pointSeries;
72
+ var xCount = xValues.size();
73
+ var count = Math.min(pointSeries ? pointSeries.indexes.size() : xCount, xCount);
74
+ var startIndex = 0;
75
+ if (!(pointSeries === null || pointSeries === void 0 ? void 0 : pointSeries.resampled) && ((_a = renderPassData === null || renderPassData === void 0 ? void 0 : renderPassData.indexRange) === null || _a === void 0 ? void 0 : _a.diff) > 0) {
76
+ if (renderPassData.indexRange.diff + 1 < count) {
77
+ startIndex = renderPassData.indexRange.min;
78
+ }
79
+ count = Math.min(renderPassData.indexRange.diff + 1, count);
80
+ }
81
+ return { startIndex: startIndex, count: count };
82
+ };
62
83
  /**
63
84
  * Helper function to apply color-paletting to a {@link UIntVector} - where each element in the vector
64
85
  * is an ARGB color that defines stroke of the series
@@ -66,7 +87,7 @@ var BaseSeriesDrawingProvider = /** @class */ (function (_super) {
66
87
  * @returns the new {@link UIntVector} with ARGB colors
67
88
  */
68
89
  BaseSeriesDrawingProvider.prototype.applyStrokePaletting = function (strokePen) {
69
- var _a, _b, _c, _d;
90
+ var _a, _b, _c;
70
91
  if (this.parentSeries.hasStrokePaletteProvider()) {
71
92
  var strokeColorArgb = (0, colorUtil_1.uintArgbColorMultiplyOpacity)((0, parseColor_1.parseColorToUIntArgb)(this.parentSeries.stroke), this.parentSeries.opacity);
72
93
  if (isNaN(strokeColorArgb)) {
@@ -80,23 +101,22 @@ var BaseSeriesDrawingProvider = /** @class */ (function (_super) {
80
101
  var pointSeries = renderPassData === null || renderPassData === void 0 ? void 0 : renderPassData.pointSeries;
81
102
  var xValues = (_a = (pointSeries ? this.xSelector(pointSeries) : undefined)) !== null && _a !== void 0 ? _a : dataSeries.getNativeXValues();
82
103
  var yValues = (_b = (pointSeries ? this.ySelector(pointSeries) : undefined)) !== null && _b !== void 0 ? _b : dataSeries.getNativeYValues();
83
- var drawCount = pointSeries ? pointSeries.indexes.size() : xValues.size();
84
- var indexStart = 0;
85
- if (!(pointSeries === null || pointSeries === void 0 ? void 0 : pointSeries.resampled) && ((_c = renderPassData === null || renderPassData === void 0 ? void 0 : renderPassData.indexRange) === null || _c === void 0 ? void 0 : _c.diff) > 0) {
86
- drawCount = renderPassData.indexRange.diff + 1;
87
- indexStart = renderPassData.indexRange.min;
88
- }
104
+ var _d = this.getStartAndCount(renderPassData, xValues), startIndex = _d.startIndex, count = _d.count;
89
105
  if (!this.palettingState.palettedColors) {
90
106
  this.palettingState.palettedColors = new this.webAssemblyContext.UIntVector();
91
107
  }
92
108
  this.palettingState.palettedColors.clear();
93
- this.palettingState.palettedColors.reserve(drawCount);
109
+ this.palettingState.palettedColors.reserve(count);
94
110
  strokePen.m_bGradient = strokePaletteProvider.strokePaletteMode === IPaletteProvider_1.EStrokePaletteMode.GRADIENT;
95
111
  // For paletted series, we must pass 0xFFFFFFFF (white) to pen line
96
112
  this.palettingState.originalPenColor = strokePen.m_uiColor;
97
113
  strokePen.m_uiColor = 0xffffffff;
98
- for (var index = indexStart; index < indexStart + drawCount; index++) {
114
+ for (var index = startIndex; index < startIndex + count; index++) {
99
115
  var originalDataIndex = pointSeries ? pointSeries.indexes.get(index) : index;
116
+ if (originalDataIndex < 0)
117
+ originalDataIndex = 0;
118
+ else if (originalDataIndex >= dataSeries.count())
119
+ originalDataIndex = dataSeries.count() - 1;
100
120
  var overrideColor = strokePaletteProvider.overrideStrokeArgb(xValues.get(index), yValues.get(index), originalDataIndex, this.parentSeries.opacity, dataSeries.getMetadataAt(originalDataIndex));
101
121
  this.parentSeries.pushPalettedColors(overrideColor ? overrideColor : strokeColorArgb, this.palettingState);
102
122
  }
@@ -106,7 +126,7 @@ var BaseSeriesDrawingProvider = /** @class */ (function (_super) {
106
126
  strokePen.m_uiColor = this.palettingState.originalPenColor;
107
127
  this.palettingState.originalPenColor = undefined;
108
128
  }
109
- (_d = this.palettingState.palettedColors) === null || _d === void 0 ? void 0 : _d.clear();
129
+ (_c = this.palettingState.palettedColors) === null || _c === void 0 ? void 0 : _c.clear();
110
130
  }
111
131
  // Due to pass-by-pointer limitations of WASM binding, we pass an empty vector rather than null
112
132
  if (!this.palettingState.palettedColors) {
@@ -185,6 +205,10 @@ var BaseSeriesDrawingProvider = /** @class */ (function (_super) {
185
205
  var hashCode = 0;
186
206
  for (var index = indexStart; index < indexStart + drawCount; index++) {
187
207
  var originalDataIndex = pointSeries ? pointSeries.indexes.get(index) : index;
208
+ if (originalDataIndex < 0)
209
+ originalDataIndex = 0;
210
+ else if (originalDataIndex >= dataSeries.count())
211
+ originalDataIndex = dataSeries.count() - 1;
188
212
  var xValue = xValues.get(index);
189
213
  var yValue = yValues.get(index);
190
214
  var overriddenColors = this.overridePaletteProviderColors(this.parentSeries, xValue, yValue, originalDataIndex, opacity, dataSeries.getMetadataAt(originalDataIndex));
@@ -47,7 +47,6 @@ var BubbleSeriesDrawingProvider = /** @class */ (function (_super) {
47
47
  * @inheritDoc
48
48
  */
49
49
  BubbleSeriesDrawingProvider.prototype.draw = function (renderContext, renderPassData) {
50
- var _a;
51
50
  var pointMarker = this.parentSeries.pointMarker;
52
51
  if (pointMarker === undefined) {
53
52
  return;
@@ -59,13 +58,9 @@ var BubbleSeriesDrawingProvider = /** @class */ (function (_super) {
59
58
  var xValues = pointSeries.xValues;
60
59
  var yValues = pointSeries.yValues;
61
60
  var zValues = pointSeries.zValues;
62
- if (!pointSeries.resampled && ((_a = renderPassData.indexRange) === null || _a === void 0 ? void 0 : _a.diff) > 0) {
63
- this.args.count = Math.min(renderPassData.indexRange.diff + 1, yValues.size());
64
- this.args.startIndex = renderPassData.indexRange.min;
65
- }
66
- else {
67
- this.args.count = yValues.size();
68
- }
61
+ var _a = this.getStartAndCount(renderPassData, xValues), startIndex = _a.startIndex, count = _a.count;
62
+ this.args.count = count;
63
+ this.args.startIndex = startIndex;
69
64
  var _b = this.parentSeries.dataSeries, fifoCapacity = _b.fifoCapacity, fifoSweeping = _b.fifoSweeping, fifoSweepingGap = _b.fifoSweepingGap;
70
65
  var fifoStartIndex = pointSeries.fifoStartIndex;
71
66
  if (fifoSweeping && fifoCapacity === this.parentSeries.dataSeries.count()) {
@@ -65,7 +65,6 @@ var ColumnSeriesDrawingProvider = /** @class */ (function (_super) {
65
65
  * @inheritDoc
66
66
  */
67
67
  ColumnSeriesDrawingProvider.prototype.draw = function (renderContext, renderPassData) {
68
- var _a;
69
68
  var pointSeries = renderPassData.pointSeries;
70
69
  var viewRect = this.parentSeries.parentSurface.seriesViewRect;
71
70
  var strokeThickness = this.parentSeries.strokeThickness;
@@ -96,16 +95,12 @@ var ColumnSeriesDrawingProvider = /** @class */ (function (_super) {
96
95
  _super.prototype.applyStrokeFillPaletting.call(this, this.parentSeries.stroke, linesPen, this.parentSeries.fill, fillBrush, this.parentSeries.opacity, false, this.parentSeries.fillLinearGradient !== undefined);
97
96
  this.args.SetPalettedColors(this.palettingState.palettedColors);
98
97
  var isCategoryAxis = renderPassData.xCoordinateCalculator.isCategoryCoordinateCalculator;
99
- var xValues = pointSeries.xValues;
100
- var yValues = pointSeries.yValues;
98
+ var xValues = this.xSelector(pointSeries);
99
+ var yValues = this.ySelector(pointSeries);
101
100
  var xDrawValues = isCategoryAxis ? pointSeries.indexes : xValues;
102
- if (!pointSeries.resampled && ((_a = renderPassData.indexRange) === null || _a === void 0 ? void 0 : _a.diff) > 0) {
103
- this.args.count = Math.min(renderPassData.indexRange.diff + 1, yValues.size());
104
- this.args.startIndex = renderPassData.indexRange.min;
105
- }
106
- else {
107
- this.args.count = yValues.size();
108
- }
101
+ var _a = this.getStartAndCount(renderPassData, xDrawValues), startIndex = _a.startIndex, count = _a.count;
102
+ this.args.count = count;
103
+ this.args.startIndex = startIndex;
109
104
  var _b = this.parentSeries.dataSeries, fifoCapacity = _b.fifoCapacity, fifoSweeping = _b.fifoSweeping, fifoSweepingGap = _b.fifoSweepingGap;
110
105
  var fifoStartIndex = pointSeries.fifoStartIndex;
111
106
  if (fifoSweeping && fifoCapacity === this.parentSeries.dataSeries.count()) {
@@ -103,8 +103,7 @@ var LineSeriesDrawingProvider = /** @class */ (function (_super) {
103
103
  * @inheritDoc
104
104
  */
105
105
  LineSeriesDrawingProvider.prototype.draw = function (renderContext, renderPassData) {
106
- var _a;
107
- var _b = this.getProperties(this.parentSeries), stroke = _b.stroke, isDigitalLine = _b.isDigitalLine, lineType = _b.lineType, drawNaNAs = _b.drawNaNAs, containsNaNOverride = _b.containsNaN;
106
+ var _a = this.getProperties(this.parentSeries), stroke = _a.stroke, isDigitalLine = _a.isDigitalLine, lineType = _a.lineType, drawNaNAs = _a.drawNaNAs, containsNaNOverride = _a.containsNaN;
108
107
  var linesPen = (0, Pen2DCache_1.getScrtPenFromCache)(this.linesPenCache);
109
108
  if (!linesPen || !stroke) {
110
109
  return;
@@ -127,7 +126,7 @@ var LineSeriesDrawingProvider = /** @class */ (function (_super) {
127
126
  : this.webAssemblyContext.SCRTLineGapMode.Default;
128
127
  this.args.verticalChart = renderPassData.isVerticalChart;
129
128
  var isCategoryAxis = renderPassData.xCoordinateCalculator.isCategoryCoordinateCalculator;
130
- var _c = this.parentSeries.dataSeries, fifoCapacity = _c.fifoCapacity, fifoSweeping = _c.fifoSweeping, fifoSweepingGap = _c.fifoSweepingGap;
129
+ var _b = this.parentSeries.dataSeries, fifoCapacity = _b.fifoCapacity, fifoSweeping = _b.fifoSweeping, fifoSweepingGap = _b.fifoSweepingGap;
131
130
  var fifoStartIndex = pointSeries.fifoStartIndex;
132
131
  var xValues = this.xSelector(pointSeries);
133
132
  var xDrawValues = isCategoryAxis ? pointSeries.indexes : xValues;
@@ -142,13 +141,9 @@ var LineSeriesDrawingProvider = /** @class */ (function (_super) {
142
141
  xDrawValues = spline.xSplineValues;
143
142
  yDrawValues = spline.ySplineValues;
144
143
  }
145
- if (!isSplineLineSeries && !pointSeries.resampled && ((_a = renderPassData.indexRange) === null || _a === void 0 ? void 0 : _a.diff) > 0) {
146
- this.args.count = Math.min(renderPassData.indexRange.diff + 1, yDrawValues.size());
147
- this.args.startIndex = renderPassData.indexRange.min;
148
- }
149
- else {
150
- this.args.count = yDrawValues.size();
151
- }
144
+ var _c = this.getStartAndCount(isSplineLineSeries ? undefined : renderPassData, xDrawValues), startIndex = _c.startIndex, count = _c.count;
145
+ this.args.count = count;
146
+ this.args.startIndex = startIndex;
152
147
  //console.log(renderPassData.indexRange, yDrawValues.size(), this.args.count);
153
148
  if (fifoSweeping && fifoCapacity === this.parentSeries.dataSeries.count()) {
154
149
  this.args.count = fifoStartIndex;
@@ -58,7 +58,7 @@ var MountainSeriesDrawingProvider = /** @class */ (function (_super) {
58
58
  * @inheritDoc
59
59
  */
60
60
  MountainSeriesDrawingProvider.prototype.draw = function (renderContext, renderPassData) {
61
- var _a, _b;
61
+ var _a;
62
62
  var pointSeries = renderPassData.pointSeries;
63
63
  var containsNaN = this.parentSeries.dataSeries.dataDistributionCalculator.containsNaN;
64
64
  this.args.Reset();
@@ -86,7 +86,7 @@ var MountainSeriesDrawingProvider = /** @class */ (function (_super) {
86
86
  this.args.SetPalette(paletteTexture);
87
87
  }
88
88
  this.args.isSmoothColors = this.palettingState.gradientPaletting;
89
- var _c = this.parentSeries.dataSeries, fifoCapacity = _c.fifoCapacity, fifoSweeping = _c.fifoSweeping, fifoSweepingGap = _c.fifoSweepingGap;
89
+ var _b = this.parentSeries.dataSeries, fifoCapacity = _b.fifoCapacity, fifoSweeping = _b.fifoSweeping, fifoSweepingGap = _b.fifoSweepingGap;
90
90
  var fifoStartIndex = pointSeries.fifoStartIndex;
91
91
  var isCategoryAxis = renderPassData.xCoordinateCalculator.isCategoryCoordinateCalculator;
92
92
  var xValues = pointSeries.xValues;
@@ -101,13 +101,9 @@ var MountainSeriesDrawingProvider = /** @class */ (function (_super) {
101
101
  xDrawValues = rs.xSplineValues;
102
102
  yDrawValues = rs.ySplineValues;
103
103
  }
104
- if (!isSplineMountainSeries && !pointSeries.resampled && ((_b = renderPassData.indexRange) === null || _b === void 0 ? void 0 : _b.diff) > 0) {
105
- this.args.count = Math.min(renderPassData.indexRange.diff + 1, yDrawValues.size());
106
- this.args.startIndex = renderPassData.indexRange.min;
107
- }
108
- else {
109
- this.args.count = yDrawValues.size();
110
- }
104
+ var _c = this.getStartAndCount(isSplineMountainSeries ? undefined : renderPassData, xDrawValues), startIndex = _c.startIndex, count = _c.count;
105
+ this.args.count = count;
106
+ this.args.startIndex = startIndex;
111
107
  if (fifoSweeping && fifoCapacity === this.parentSeries.dataSeries.count()) {
112
108
  this.args.count = fifoStartIndex;
113
109
  }
@@ -96,7 +96,6 @@ var OhlcSeriesDrawingProvider = /** @class */ (function (_super) {
96
96
  * @inheritDoc
97
97
  */
98
98
  OhlcSeriesDrawingProvider.prototype.draw = function (renderContext, renderPassData) {
99
- var _a;
100
99
  var pointSeries = renderPassData.pointSeries;
101
100
  this.args.Reset();
102
101
  // Candles only requires brush up, down
@@ -132,13 +131,9 @@ var OhlcSeriesDrawingProvider = /** @class */ (function (_super) {
132
131
  var highValues = pointSeries.highValues;
133
132
  var lowValues = pointSeries.lowValues;
134
133
  var closeValues = pointSeries.closeValues;
135
- if (!pointSeries.resampled && ((_a = renderPassData.indexRange) === null || _a === void 0 ? void 0 : _a.diff) > 0) {
136
- this.args.count = Math.min(renderPassData.indexRange.diff + 1, closeValues.size());
137
- this.args.startIndex = renderPassData.indexRange.min;
138
- }
139
- else {
140
- this.args.count = closeValues.size();
141
- }
134
+ var _a = this.getStartAndCount(renderPassData, xValues), startIndex = _a.startIndex, count = _a.count;
135
+ this.args.count = count;
136
+ this.args.startIndex = startIndex;
142
137
  var _b = this.parentSeries.dataSeries, fifoCapacity = _b.fifoCapacity, fifoSweeping = _b.fifoSweeping, fifoSweepingGap = _b.fifoSweepingGap;
143
138
  var fifoStartIndex = pointSeries.fifoStartIndex;
144
139
  if (fifoSweeping && fifoCapacity === this.parentSeries.dataSeries.count()) {
@@ -54,7 +54,7 @@ var PointMarkerDrawingProvider = /** @class */ (function (_super) {
54
54
  * @inheritDoc
55
55
  */
56
56
  PointMarkerDrawingProvider.prototype.draw = function (renderContext, renderPassData) {
57
- var _a, _b;
57
+ var _a;
58
58
  var pointMarker = (_a = this.getProperties(this.parentSeries)) === null || _a === void 0 ? void 0 : _a.pointMarker;
59
59
  if (pointMarker === undefined) {
60
60
  return;
@@ -90,7 +90,7 @@ var PointMarkerDrawingProvider = /** @class */ (function (_super) {
90
90
  if (strokeMaskTexture) {
91
91
  this.args.SetStrokeMask(strokeMaskTexture.getTexture());
92
92
  }
93
- var _c = this.parentSeries.dataSeries, fifoCapacity = _c.fifoCapacity, fifoSweeping = _c.fifoSweeping, fifoSweepingGap = _c.fifoSweepingGap;
93
+ var _b = this.parentSeries.dataSeries, fifoCapacity = _b.fifoCapacity, fifoSweeping = _b.fifoSweeping, fifoSweepingGap = _b.fifoSweepingGap;
94
94
  var fifoStartIndex = pointSeries.fifoStartIndex;
95
95
  if (pointMarker.lastPointOnly && yValues.size() > 0) {
96
96
  this.args.count = 1;
@@ -100,13 +100,9 @@ var PointMarkerDrawingProvider = /** @class */ (function (_super) {
100
100
  : yValues.size() - 1;
101
101
  }
102
102
  else {
103
- if (!pointSeries.resampled && ((_b = renderPassData.indexRange) === null || _b === void 0 ? void 0 : _b.diff) > 0) {
104
- this.args.count = Math.min(renderPassData.indexRange.diff + 1, yValues.size());
105
- this.args.startIndex = renderPassData.indexRange.min;
106
- }
107
- else {
108
- this.args.count = yValues.size();
109
- }
103
+ var _c = this.getStartAndCount(renderPassData, xValues), startIndex = _c.startIndex, count = _c.count;
104
+ this.args.count = count;
105
+ this.args.startIndex = startIndex;
110
106
  if (fifoSweeping && fifoCapacity === this.parentSeries.dataSeries.count()) {
111
107
  this.args.count = fifoStartIndex;
112
108
  }
@@ -1,4 +1,5 @@
1
1
  import { SeriesSelectionModifier } from "../../ChartModifiers/SeriesSelectionModifier";
2
+ import { HitTestInfo } from "./HitTest/HitTestInfo";
2
3
  import { IRenderableSeries } from "./IRenderableSeries";
3
4
  /**
4
5
  * Arguments passed into the callback for {@link SeriesSelectionModifier.hoverChanged} event
@@ -16,6 +17,10 @@ export declare class HoveredChangedArgs {
16
17
  * The array of all series at the time of the event. Query {@link IRenderableSeries.isSelected} to determine if it is selected or not
17
18
  */
18
19
  readonly allSeries: IRenderableSeries[];
20
+ /**
21
+ * The hitTestInfo for this event, if available.
22
+ */
23
+ readonly hitTestInfo: HitTestInfo;
19
24
  /**
20
25
  * Creates an instance of SelectionChangedArgs -
21
26
  * arguments passed into the callback for {@link SeriesSelectionModifier.selectionChanged} event
@@ -23,5 +28,5 @@ export declare class HoveredChangedArgs {
23
28
  * @param hoveredSeries
24
29
  * @param allSeries
25
30
  */
26
- constructor(source: SeriesSelectionModifier, hoveredSeries: IRenderableSeries[], allSeries: IRenderableSeries[]);
31
+ constructor(source: SeriesSelectionModifier, hoveredSeries: IRenderableSeries[], allSeries: IRenderableSeries[], hitTestInfo: HitTestInfo);
27
32
  }
@@ -12,10 +12,11 @@ var HoveredChangedArgs = /** @class */ (function () {
12
12
  * @param hoveredSeries
13
13
  * @param allSeries
14
14
  */
15
- function HoveredChangedArgs(source, hoveredSeries, allSeries) {
15
+ function HoveredChangedArgs(source, hoveredSeries, allSeries, hitTestInfo) {
16
16
  this.source = source;
17
17
  this.hoveredSeries = hoveredSeries;
18
18
  this.allSeries = allSeries;
19
+ this.hitTestInfo = hitTestInfo;
19
20
  }
20
21
  return HoveredChangedArgs;
21
22
  }());
@@ -194,7 +194,7 @@ export interface IRenderableSeries extends IDeletable, IThemeable, INotifyOnDpiC
194
194
  /**
195
195
  * A {@link IPointMarker | Point Marker} which is used to draw an optional point-marker at each data-point. Applicable to some series types only
196
196
  */
197
- pointMarker: IPointMarker;
197
+ pointMarker: IPointMarker | undefined;
198
198
  /**
199
199
  * How to treat NAN (Not a number) values in the input {@link dataSeries}. See {@link ELineDrawMode} for a list of values.
200
200
  */
@@ -1,4 +1,5 @@
1
1
  import { SeriesSelectionModifier } from "../../ChartModifiers/SeriesSelectionModifier";
2
+ import { HitTestInfo } from "./HitTest/HitTestInfo";
2
3
  import { IRenderableSeries } from "./IRenderableSeries";
3
4
  /**
4
5
  * Arguments passed into the callback for {@link SeriesSelectionModifier.selectionChanged} event
@@ -16,6 +17,10 @@ export declare class SelectionChangedArgs {
16
17
  * The array of all series at the time of the event. Query {@link IRenderableSeries.isSelected} to determine if it is selected or not
17
18
  */
18
19
  readonly allSeries: IRenderableSeries[];
20
+ /**
21
+ * The hitTestInfo for this event, if available.
22
+ */
23
+ readonly hitTestInfo: HitTestInfo;
19
24
  /**
20
25
  * Creates an instance of SelectionChangedArgs -
21
26
  * arguments passed into the callback for {@link SeriesSelectionModifier.selectionChanged} event
@@ -23,5 +28,5 @@ export declare class SelectionChangedArgs {
23
28
  * @param selectedSeries
24
29
  * @param allSeries
25
30
  */
26
- constructor(source: SeriesSelectionModifier, selectedSeries: IRenderableSeries[], allSeries: IRenderableSeries[]);
31
+ constructor(source: SeriesSelectionModifier, selectedSeries: IRenderableSeries[], allSeries: IRenderableSeries[], hitTestInfo: HitTestInfo);
27
32
  }
@@ -12,10 +12,11 @@ var SelectionChangedArgs = /** @class */ (function () {
12
12
  * @param selectedSeries
13
13
  * @param allSeries
14
14
  */
15
- function SelectionChangedArgs(source, selectedSeries, allSeries) {
15
+ function SelectionChangedArgs(source, selectedSeries, allSeries, hitTestInfo) {
16
16
  this.source = source;
17
17
  this.selectedSeries = selectedSeries;
18
18
  this.allSeries = allSeries;
19
+ this.hitTestInfo = hitTestInfo;
19
20
  }
20
21
  return SelectionChangedArgs;
21
22
  }());
@@ -17,8 +17,11 @@ var __extends = (this && this.__extends) || (function () {
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.SplineBandRenderableSeries = void 0;
19
19
  var Deleter_1 = require("../../../Core/Deleter");
20
+ var NumberRange_1 = require("../../../Core/NumberRange");
20
21
  var SeriesType_1 = require("../../../types/SeriesType");
21
22
  var copyVector_1 = require("../../../utils/copyVector");
23
+ var isRealNumber_1 = require("../../../utils/isRealNumber");
24
+ var BaseDataSeries_1 = require("../../Model/BaseDataSeries");
22
25
  var animationHelpers_1 = require("./Animations/animationHelpers");
23
26
  var BaseBandRenderableSeries_1 = require("./BaseBandRenderableSeries");
24
27
  var constants_1 = require("./constants");
@@ -144,8 +147,47 @@ var SplineBandRenderableSeries = /** @class */ (function (_super) {
144
147
  };
145
148
  /** @inheritDoc */
146
149
  SplineBandRenderableSeries.prototype.getYRange = function (xVisibleRange, isXCategoryAxis) {
150
+ var _a;
147
151
  if (isXCategoryAxis === void 0) { isXCategoryAxis = false; }
148
- return this.dataSeries.getWindowedYRange(xVisibleRange, true, isXCategoryAxis);
152
+ if (this.isRunningAnimation) {
153
+ return this.dataSeries.getWindowedYRange(xVisibleRange, true, isXCategoryAxis);
154
+ }
155
+ this.updateSplineValues();
156
+ var xValues = this.xSplineValues;
157
+ var yValues = this.ySplineValues;
158
+ var y1Values = this.y1SplineValues;
159
+ // TODO: getPositiveRange
160
+ // if one point
161
+ if (xValues.size() === 1) {
162
+ var min = Math.min(yValues.get(0), y1Values.get(0));
163
+ var max = Math.max(yValues.get(0), y1Values.get(0));
164
+ return new NumberRange_1.NumberRange(min, max);
165
+ }
166
+ var indicesRange = isXCategoryAxis
167
+ ? xVisibleRange
168
+ : (0, BaseDataSeries_1.getIndicesRange)(this.webAssemblyContext, xValues, xVisibleRange, (_a = this.dataSeries) === null || _a === void 0 ? void 0 : _a.dataDistributionCalculator.isSortedAscending);
169
+ var iMin = Math.max(Math.floor(indicesRange.min), 0);
170
+ var iMax = Math.min(Math.ceil(indicesRange.max), xValues.size() - 1);
171
+ if (iMax < iMin) {
172
+ return undefined;
173
+ }
174
+ var minMax;
175
+ var minMaxy1;
176
+ try {
177
+ minMax = this.webAssemblyContext.NumberUtil.MinMaxWithIndex(yValues, iMin, iMax - iMin + 1);
178
+ if (!(0, isRealNumber_1.isRealNumber)(minMax.minD) || !(0, isRealNumber_1.isRealNumber)(minMax.maxD)) {
179
+ return undefined;
180
+ }
181
+ minMaxy1 = this.webAssemblyContext.NumberUtil.MinMaxWithIndex(y1Values, iMin, iMax - iMin + 1);
182
+ if (!(0, isRealNumber_1.isRealNumber)(minMaxy1.minD) || !(0, isRealNumber_1.isRealNumber)(minMaxy1.maxD)) {
183
+ return undefined;
184
+ }
185
+ return new NumberRange_1.NumberRange(Math.min(minMax.minD, minMaxy1.minD), Math.max(minMax.maxD, minMaxy1.maxD));
186
+ }
187
+ finally {
188
+ (0, Deleter_1.deleteSafe)(minMax);
189
+ (0, Deleter_1.deleteSafe)(minMaxy1);
190
+ }
149
191
  };
150
192
  /** @inheritDoc */
151
193
  SplineBandRenderableSeries.prototype.toJSON = function (excludeData) {
@@ -19,6 +19,7 @@ exports.SplineLineRenderableSeries = void 0;
19
19
  var Deleter_1 = require("../../../Core/Deleter");
20
20
  var SeriesType_1 = require("../../../types/SeriesType");
21
21
  var copyVector_1 = require("../../../utils/copyVector");
22
+ var BaseDataSeries_1 = require("../../Model/BaseDataSeries");
22
23
  var animationHelpers_1 = require("./Animations/animationHelpers");
23
24
  var BaseLineRenderableSeries_1 = require("./BaseLineRenderableSeries");
24
25
  var constants_1 = require("./constants");
@@ -136,7 +137,11 @@ var SplineLineRenderableSeries = /** @class */ (function (_super) {
136
137
  /** @inheritDoc */
137
138
  SplineLineRenderableSeries.prototype.getYRange = function (xVisibleRange, isXCategoryAxis) {
138
139
  if (isXCategoryAxis === void 0) { isXCategoryAxis = false; }
139
- return this.dataSeries.getWindowedYRange(xVisibleRange, true, isXCategoryAxis);
140
+ if (this.isRunningAnimation) {
141
+ return this.dataSeries.getWindowedYRange(xVisibleRange, true, isXCategoryAxis);
142
+ }
143
+ this.updateSplineValues();
144
+ return (0, BaseDataSeries_1.getWindowedYRange)(this.webAssemblyContext, this.xSplineValues, this.ySplineValues, xVisibleRange, true, isXCategoryAxis, this.dataSeries.dataDistributionCalculator.isSortedAscending);
140
145
  };
141
146
  /** @inheritDoc */
142
147
  SplineLineRenderableSeries.prototype.toJSON = function (excludeData) {
@@ -19,6 +19,7 @@ exports.SplineMountainRenderableSeries = void 0;
19
19
  var Deleter_1 = require("../../../Core/Deleter");
20
20
  var SeriesType_1 = require("../../../types/SeriesType");
21
21
  var copyVector_1 = require("../../../utils/copyVector");
22
+ var BaseDataSeries_1 = require("../../Model/BaseDataSeries");
22
23
  var animationHelpers_1 = require("./Animations/animationHelpers");
23
24
  var BaseMountainRenderableSeries_1 = require("./BaseMountainRenderableSeries");
24
25
  var constants_1 = require("./constants");
@@ -136,7 +137,11 @@ var SplineMountainRenderableSeries = /** @class */ (function (_super) {
136
137
  /** @inheritDoc */
137
138
  SplineMountainRenderableSeries.prototype.getYRange = function (xVisibleRange, isXCategoryAxis) {
138
139
  if (isXCategoryAxis === void 0) { isXCategoryAxis = false; }
139
- return this.dataSeries.getWindowedYRange(xVisibleRange, true, isXCategoryAxis);
140
+ if (this.isRunningAnimation) {
141
+ return this.dataSeries.getWindowedYRange(xVisibleRange, true, isXCategoryAxis);
142
+ }
143
+ this.updateSplineValues();
144
+ return (0, BaseDataSeries_1.getWindowedYRange)(this.webAssemblyContext, this.xSplineValues, this.ySplineValues, xVisibleRange, true, isXCategoryAxis, this.dataSeries.dataDistributionCalculator.isSortedAscending);
140
145
  };
141
146
  /** @inheritDoc */
142
147
  SplineMountainRenderableSeries.prototype.toJSON = function (excludeData) {
@@ -53,6 +53,10 @@ export declare class RubberBandSvgRect extends DeletableEntity implements IDelet
53
53
  * Sets isHidden property
54
54
  */
55
55
  set isHidden(value: boolean);
56
+ /**
57
+ * Clear the rect svg
58
+ */
59
+ clear(): void;
56
60
  /**
57
61
  * Deletes the rect
58
62
  */
@@ -121,16 +121,22 @@ var RubberBandSvgRect = /** @class */ (function (_super) {
121
121
  enumerable: false,
122
122
  configurable: true
123
123
  });
124
+ /**
125
+ * Clear the rect svg
126
+ */
127
+ RubberBandSvgRect.prototype.clear = function () {
128
+ this.svgRoot.removeChild(this.svg);
129
+ };
124
130
  /**
125
131
  * Deletes the rect
126
132
  */
127
133
  RubberBandSvgRect.prototype.delete = function () {
128
- this.svgRoot.removeChild(this.svg);
134
+ this.clear();
129
135
  };
130
136
  // PRIVATE
131
137
  RubberBandSvgRect.prototype.create = function (fill, stroke, strokeThickness) {
132
138
  if (this.svg) {
133
- this.delete();
139
+ this.clear();
134
140
  }
135
141
  if (this.svgRoot) {
136
142
  var svgString = this.svgTemplate(fill, stroke, strokeThickness, 0, 0);
@@ -1,5 +1,6 @@
1
1
  import { ISciChartPieDefinition } from "../../../Builder/buildSurface";
2
2
  import { DeletableEntity } from "../../../Core/DeletableEntity";
3
+ import { EventHandler } from "../../../Core/EventHandler";
3
4
  import { IDeletable } from "../../../Core/IDeletable";
4
5
  import { ObservableArray } from "../../../Core/ObservableArray";
5
6
  import { Thickness } from "../../../Core/Thickness";
@@ -77,6 +78,11 @@ export declare class SciChartPieSurface extends DeletableEntity implements ISciC
77
78
  legend: SciChartPieLegend;
78
79
  onCreatedName: string;
79
80
  id: string;
81
+ /**
82
+ * An event handler which notifies its subscribers when a render operation has finished. Use this
83
+ * to time render performance, or to update elements of the chart or your UI on redraw.
84
+ */
85
+ rendered: EventHandler<void>;
80
86
  protected widthAspect: number;
81
87
  protected heightAspect: number;
82
88
  protected labelProviderProperty: PieLabelProvider;
@@ -42,6 +42,7 @@ var app_1 = require("../../../constants/app");
42
42
  var EasingFunctions_1 = require("../../../Core/Animations/EasingFunctions");
43
43
  var DeletableEntity_1 = require("../../../Core/DeletableEntity");
44
44
  var Deleter_1 = require("../../../Core/Deleter");
45
+ var EventHandler_1 = require("../../../Core/EventHandler");
45
46
  var Globals_1 = require("../../../Core/Globals");
46
47
  var ObservableArray_1 = require("../../../Core/ObservableArray");
47
48
  var Rect_1 = require("../../../Core/Rect");
@@ -106,6 +107,11 @@ var SciChartPieSurface = /** @class */ (function (_super) {
106
107
  _this.animate = true;
107
108
  /* The number of frames for the animation. Default 30. A frame will be trigged every 20ms. */
108
109
  _this.animationFrames = 30;
110
+ /**
111
+ * An event handler which notifies its subscribers when a render operation has finished. Use this
112
+ * to time render performance, or to update elements of the chart or your UI on redraw.
113
+ */
114
+ _this.rendered = new EventHandler_1.EventHandler();
109
115
  _this.pieTypeProperty = EPieType.Pie;
110
116
  _this.holeRadiusProperty = 0.5;
111
117
  _this.holeRadiusSizingModeProperty = ESizingMode.Relative;
@@ -690,6 +696,7 @@ var SciChartPieSurface = /** @class */ (function (_super) {
690
696
  }
691
697
  });
692
698
  }
699
+ this.rendered.raiseEvent();
693
700
  };
694
701
  /**
695
702
  * @description Draws pie chart itself
@@ -159,11 +159,6 @@ export declare class SciChartSurface extends SciChartSurfaceBase {
159
159
  /**
160
160
  * Used internally - the {@link RenderContext2D} for drawing
161
161
  */
162
- /**
163
- * An event handler which notifies its subscribers when a render operation has finished. Use this
164
- * to time render performance, or to update elements of the chart or your UI on redraw.
165
- */
166
- rendered: EventHandler<void>;
167
162
  /**
168
163
  * An event handler which notifies its subscribers when a render operation starts. Use this
169
164
  * to update elements of the chart for the current render. Any updates made here will not trigger a subsequent render.