scichart 2.0.2139 → 2.0.2144

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 (74) hide show
  1. package/Builder/buildSeries.d.ts +1 -1
  2. package/Charting/ChartModifiers/LegendModifier.js +1 -0
  3. package/Charting/ChartModifiers/OverviewRangeSelectionModifier.d.ts +2 -2
  4. package/Charting/ChartModifiers/OverviewRangeSelectionModifier.js +3 -2
  5. package/Charting/Model/BaseDataSeries.d.ts +2 -2
  6. package/Charting/Model/OhlcDataSeries.d.ts +2 -2
  7. package/Charting/Model/XyyDataSeries.d.ts +2 -2
  8. package/Charting/Model/XyzDataSeries.d.ts +2 -2
  9. package/Charting/Services/SciChartRenderer.js +14 -4
  10. package/Charting/Visuals/Axis/AxisBase2D.d.ts +75 -52
  11. package/Charting/Visuals/Axis/AxisBase2D.js +53 -34
  12. package/Charting/Visuals/Axis/AxisCore.d.ts +7 -4
  13. package/Charting/Visuals/Axis/AxisCore.js +21 -5
  14. package/Charting/Visuals/Axis/LogarithmicAxis.d.ts +1 -3
  15. package/Charting/Visuals/Axis/LogarithmicAxis.js +4 -11
  16. package/Charting/Visuals/RenderableSeries/Animations/BandAnimation.d.ts +2 -2
  17. package/Charting/Visuals/RenderableSeries/Animations/BandAnimation.js +2 -2
  18. package/Charting/Visuals/RenderableSeries/Animations/BubbleAnimation.d.ts +2 -2
  19. package/Charting/Visuals/RenderableSeries/Animations/BubbleAnimation.js +2 -2
  20. package/Charting/Visuals/RenderableSeries/Animations/CandlestickAnimation.d.ts +1 -1
  21. package/Charting/Visuals/RenderableSeries/Animations/ColumnAnimation.d.ts +2 -2
  22. package/Charting/Visuals/RenderableSeries/Animations/ColumnAnimation.js +2 -2
  23. package/Charting/Visuals/RenderableSeries/Animations/FadeAnimation.d.ts +2 -2
  24. package/Charting/Visuals/RenderableSeries/Animations/FadeAnimation.js +2 -2
  25. package/Charting/Visuals/RenderableSeries/Animations/LineAnimation.d.ts +2 -2
  26. package/Charting/Visuals/RenderableSeries/Animations/LineAnimation.js +2 -2
  27. package/Charting/Visuals/RenderableSeries/Animations/MountainAnimation.d.ts +2 -2
  28. package/Charting/Visuals/RenderableSeries/Animations/MountainAnimation.js +2 -2
  29. package/Charting/Visuals/RenderableSeries/Animations/OhlcAnimation.d.ts +2 -2
  30. package/Charting/Visuals/RenderableSeries/Animations/OhlcAnimation.js +2 -2
  31. package/Charting/Visuals/RenderableSeries/Animations/ScaleAnimation.d.ts +2 -2
  32. package/Charting/Visuals/RenderableSeries/Animations/ScaleAnimation.js +2 -2
  33. package/Charting/Visuals/RenderableSeries/Animations/ScatterAnimation.d.ts +2 -2
  34. package/Charting/Visuals/RenderableSeries/Animations/ScatterAnimation.js +2 -2
  35. package/Charting/Visuals/RenderableSeries/Animations/{BaseAnimation.d.ts → SeriesAnimation.d.ts} +3 -2
  36. package/Charting/Visuals/RenderableSeries/Animations/{BaseAnimation.js → SeriesAnimation.js} +13 -13
  37. package/Charting/Visuals/RenderableSeries/Animations/SweepAnimation.d.ts +2 -2
  38. package/Charting/Visuals/RenderableSeries/Animations/SweepAnimation.js +2 -2
  39. package/Charting/Visuals/RenderableSeries/Animations/WaveAnimation.d.ts +2 -2
  40. package/Charting/Visuals/RenderableSeries/Animations/WaveAnimation.js +2 -2
  41. package/Charting/Visuals/RenderableSeries/Animations/animationHelpers.d.ts +8 -8
  42. package/Charting/Visuals/RenderableSeries/BaseRenderableSeries.d.ts +9 -9
  43. package/Charting/Visuals/RenderableSeries/BaseRenderableSeries.js +3 -3
  44. package/Charting/Visuals/RenderableSeries/BaseStackedCollection.d.ts +7 -7
  45. package/Charting/Visuals/RenderableSeries/BaseStackedCollection.js +1 -1
  46. package/Charting/Visuals/RenderableSeries/BaseStackedRenderableSeries.d.ts +7 -7
  47. package/Charting/Visuals/RenderableSeries/BaseStackedRenderableSeries.js +1 -1
  48. package/Charting/Visuals/RenderableSeries/IBaseRenderableSeriesOptions.d.ts +2 -2
  49. package/Charting/Visuals/RenderableSeries/IRenderableSeries.d.ts +3 -3
  50. package/Charting/Visuals/RenderableSeries/RolloverModifier/RolloverModifierRenderableSeriesProps.d.ts +5 -0
  51. package/Charting/Visuals/RenderableSeries/RolloverModifier/RolloverModifierRenderableSeriesProps.js +29 -5
  52. package/Charting/Visuals/RenderableSeries/SplineBandRenderableSeries.d.ts +4 -4
  53. package/Charting/Visuals/RenderableSeries/SplineLineRenderableSeries.d.ts +4 -4
  54. package/Charting/Visuals/RenderableSeries/SplineMountainRenderableSeries.d.ts +4 -4
  55. package/Charting/Visuals/SciChartSurface.d.ts +13 -0
  56. package/Charting/Visuals/SciChartSurface.js +38 -3
  57. package/Charting3D/Visuals/SciChart3DRenderer.js +1 -0
  58. package/Core/Animations/AnimationFiniteStateMachine.d.ts +27 -14
  59. package/Core/Animations/AnimationFiniteStateMachine.js +48 -15
  60. package/Core/Animations/Animator.d.ts +1 -9
  61. package/Core/Animations/Animator.js +1 -9
  62. package/Core/Animations/DoubleAnimator.d.ts +2 -8
  63. package/Core/Animations/DoubleAnimator.js +1 -7
  64. package/Core/Animations/GenericAnimation.d.ts +74 -0
  65. package/Core/Animations/GenericAnimation.js +74 -0
  66. package/Core/Animations/NumberRangeAnimator.d.ts +4 -3
  67. package/Core/Animations/NumberRangeAnimator.js +23 -3
  68. package/Core/NumberRange.js +4 -5
  69. package/_wasm/scichart.browser.js +1 -1
  70. package/_wasm/scichart2d.js +95 -95
  71. package/_wasm/scichart2d.wasm +0 -0
  72. package/_wasm/scichart3d.js +95 -95
  73. package/_wasm/scichart3d.wasm +0 -0
  74. package/package.json +1 -1
@@ -2,7 +2,7 @@ import { ISelectedPointOptions } from "../Charting/Model/DataPointSelectionPalet
2
2
  import { IUniformHeatmapSeriesOptions } from "../Charting/Model/UniformHeatmapDataSeries";
3
3
  import { IPointMarkerOptions } from "../Charting/Visuals/PointMarkers/BasePointMarker";
4
4
  import { ISpritePointMarkerOptions } from "../Charting/Visuals/PointMarkers/SpritePointMarker";
5
- import { IBaseAnimationOptions } from "../Charting/Visuals/RenderableSeries/Animations/BaseAnimation";
5
+ import { IBaseAnimationOptions } from "../Charting/Visuals/RenderableSeries/Animations/SeriesAnimation";
6
6
  import { IFadeAnimationOptions } from "../Charting/Visuals/RenderableSeries/Animations/FadeAnimation";
7
7
  import { IScaleAnimationOptions } from "../Charting/Visuals/RenderableSeries/Animations/ScaleAnimation";
8
8
  import { ISweepAnimationOptions } from "../Charting/Visuals/RenderableSeries/Animations/SweepAnimation";
@@ -84,6 +84,7 @@ var LegendModifier = /** @class */ (function (_super) {
84
84
  /** @inheritDoc */
85
85
  LegendModifier.prototype.onDetach = function () {
86
86
  _super.prototype.onDetach.call(this);
87
+ this.sciChartLegend.delete();
87
88
  this.sciChartLegend.setRootDiv(undefined);
88
89
  this.sciChartLegend.setRenderableSeriesArray([]);
89
90
  this.sciChartLegend.setInvalidateParentSurface(undefined);
@@ -1,4 +1,4 @@
1
- import { AnimationToken } from "../../Core/AnimationToken";
1
+ import { IGenericAnimation } from "../../Core/Animations/GenericAnimation";
2
2
  import { NumberRange } from "../../Core/NumberRange";
3
3
  import { Point } from "../../Core/Point";
4
4
  import { EChart2DModifierType } from "../../types/ChartModifierType";
@@ -29,7 +29,7 @@ export interface IRangeSelectionModifierOptions extends IChartModifierBaseOption
29
29
  export declare class OverviewRangeSelectionModifier extends ChartModifierBase2D {
30
30
  readonly type = EChart2DModifierType.OverviewRangeSelection;
31
31
  onSelectedAreaChanged: (area?: NumberRange) => void;
32
- overviewPositionAnimation: AnimationToken;
32
+ overviewPositionAnimation: IGenericAnimation;
33
33
  animationDuration: number;
34
34
  animate: boolean;
35
35
  protected pointTo: Point;
@@ -112,7 +112,7 @@ var OverviewRangeSelectionModifier = /** @class */ (function (_super) {
112
112
  }
113
113
  if (this.isClicked) {
114
114
  args.handled = true;
115
- (_a = this.overviewPositionAnimation) === null || _a === void 0 ? void 0 : _a.cancelAnimation();
115
+ (_a = this.overviewPositionAnimation) === null || _a === void 0 ? void 0 : _a.cancel();
116
116
  var seriesViewRect = this.parentSurface.seriesViewRect;
117
117
  this.pointTo = translate_1.translateFromCanvasToSeriesViewRect(Rect_1.Rect.clipPointToRect(args.mousePoint, seriesViewRect), seriesViewRect);
118
118
  this.isClicked = false;
@@ -131,6 +131,7 @@ var OverviewRangeSelectionModifier = /** @class */ (function (_super) {
131
131
  };
132
132
  if (this.animate) {
133
133
  this.overviewPositionAnimation = NumberRangeAnimator_1.NumberRangeAnimator.animate(initialCoordinatesRange, finalCoordinatesRange, this.animationDuration, updateAnnotationCoordinates, null);
134
+ this.parentSurface.addAnimation(this.overviewPositionAnimation);
134
135
  }
135
136
  else {
136
137
  updateAnnotationCoordinates(finalCoordinatesRange);
@@ -201,7 +202,7 @@ var OverviewRangeSelectionModifier = /** @class */ (function (_super) {
201
202
  if (this.parentSurface) {
202
203
  var onDrag = function () {
203
204
  var _a;
204
- (_a = _this.overviewPositionAnimation) === null || _a === void 0 ? void 0 : _a.cancelAnimation();
205
+ (_a = _this.overviewPositionAnimation) === null || _a === void 0 ? void 0 : _a.cancel();
205
206
  var selectedArea = new NumberRange_1.NumberRange(_this.rangeSelectionAnnotation.x1, _this.rangeSelectionAnnotation.x2);
206
207
  _this.selectedAreaProperty = selectedArea;
207
208
  _this.annotationBeforeSelectedAreaProperty.x2 = _this.rangeSelectionAnnotation.x1;
@@ -1,7 +1,7 @@
1
1
  import { EventHandler } from "../../Core/EventHandler";
2
2
  import { NumberRange } from "../../Core/NumberRange";
3
3
  import { DoubleVector, TSciChart } from "../../types/TSciChart";
4
- import { BaseAnimation } from "../Visuals/RenderableSeries/Animations/BaseAnimation";
4
+ import { SeriesAnimation } from "../Visuals/RenderableSeries/Animations/SeriesAnimation";
5
5
  import { EDataChangeType, EDataSeriesType, EDataSeriesValueType, IDataChangeArgs, IDataSeries } from "./IDataSeries";
6
6
  import { IMetadataGenerator, IPointMetadata } from "./IPointMetadata";
7
7
  /**
@@ -166,7 +166,7 @@ export declare abstract class BaseDataSeries implements IDataSeries {
166
166
  * @param progress The animation progress from 0 to 1
167
167
  * @param animation The animation
168
168
  */
169
- updateAnimationProperties(progress: number, animation: BaseAnimation): void;
169
+ updateAnimationProperties(progress: number, animation: SeriesAnimation): void;
170
170
  /** @inheritDoc */
171
171
  toJSON(excludeData?: boolean): any;
172
172
  protected validateIndex(index: number, message?: string): void;
@@ -1,7 +1,7 @@
1
1
  import { NumberRange } from "../../Core/NumberRange";
2
2
  import { NumberArray } from "../../types/NumberArray";
3
3
  import { DoubleVector, TSciChart } from "../../types/TSciChart";
4
- import { BaseAnimation } from "../Visuals/RenderableSeries/Animations/BaseAnimation";
4
+ import { SeriesAnimation } from "../Visuals/RenderableSeries/Animations/SeriesAnimation";
5
5
  import { BaseDataSeries, IBaseDataSeriesOptions } from "./BaseDataSeries";
6
6
  import { EDataSeriesType, EDataSeriesValueType } from "./IDataSeries";
7
7
  import { IPointMetadata } from "./IPointMetadata";
@@ -206,7 +206,7 @@ export declare class OhlcDataSeries extends BaseDataSeries {
206
206
  /** @inheritDoc */
207
207
  validateAnimationVectors(): void;
208
208
  /** @inheritDoc */
209
- updateAnimationProperties(progress: number, animation: BaseAnimation): void;
209
+ updateAnimationProperties(progress: number, animation: SeriesAnimation): void;
210
210
  /** @inheritDoc */
211
211
  toJSON(excludeData?: boolean): any;
212
212
  private getOHLCValues;
@@ -1,7 +1,7 @@
1
1
  import { NumberRange } from "../../Core/NumberRange";
2
2
  import { NumberArray } from "../../types/NumberArray";
3
3
  import { DoubleVector, TSciChart } from "../../types/TSciChart";
4
- import { BaseAnimation } from "../Visuals/RenderableSeries/Animations/BaseAnimation";
4
+ import { SeriesAnimation } from "../Visuals/RenderableSeries/Animations/SeriesAnimation";
5
5
  import { BaseDataSeries, IBaseDataSeriesOptions } from "./BaseDataSeries";
6
6
  import { EDataSeriesType, EDataSeriesValueType } from "./IDataSeries";
7
7
  import { IPointMetadata } from "./IPointMetadata";
@@ -158,7 +158,7 @@ export declare class XyyDataSeries extends BaseDataSeries {
158
158
  /** @inheritDoc */
159
159
  validateAnimationVectors(): void;
160
160
  /** @inheritDoc */
161
- updateAnimationProperties(progress: number, animation: BaseAnimation): void;
161
+ updateAnimationProperties(progress: number, animation: SeriesAnimation): void;
162
162
  /** @inheritDoc */
163
163
  toJSON(excludeData?: boolean): any;
164
164
  private getYY1Values;
@@ -1,6 +1,6 @@
1
1
  import { NumberArray } from "../../types/NumberArray";
2
2
  import { DoubleVector, TSciChart } from "../../types/TSciChart";
3
- import { BaseAnimation } from "../Visuals/RenderableSeries/Animations/BaseAnimation";
3
+ import { SeriesAnimation } from "../Visuals/RenderableSeries/Animations/SeriesAnimation";
4
4
  import { BaseDataSeries, IBaseDataSeriesOptions } from "./BaseDataSeries";
5
5
  import { EDataSeriesType } from "./IDataSeries";
6
6
  import { IPointMetadata } from "./IPointMetadata";
@@ -155,7 +155,7 @@ export declare class XyzDataSeries extends BaseDataSeries {
155
155
  /** @inheritDoc */
156
156
  validateAnimationVectors(): void;
157
157
  /** @inheritDoc */
158
- updateAnimationProperties(progress: number, animation: BaseAnimation): void;
158
+ updateAnimationProperties(progress: number, animation: SeriesAnimation): void;
159
159
  /** @inheritDoc */
160
160
  toJSON(excludeData?: boolean): any;
161
161
  private getYZValues;
@@ -15,6 +15,7 @@ var AutoRange_1 = require("../../types/AutoRange");
15
15
  var AxisAlignment_1 = require("../../types/AxisAlignment");
16
16
  var RenderLayer_1 = require("../../types/RenderLayer");
17
17
  var IAnnotation_1 = require("../Visuals/Annotations/IAnnotation");
18
+ var SciChartSurfaceBase_1 = require("../Visuals/SciChartSurfaceBase");
18
19
  var DpiHelper_1 = require("../Visuals/TextureManager/DpiHelper");
19
20
  var RenderPassData_1 = require("./RenderPassData");
20
21
  /**
@@ -93,7 +94,7 @@ var SciChartRenderer = /** @class */ (function () {
93
94
  this.drawSvgAnnotations(svgAnnotations, xyAxesById[0], xyAxesById[1]);
94
95
  // Update watermark
95
96
  var left = seriesViewRect.x;
96
- var bottom = renderContext.viewportSize.height - (seriesViewRect.top + seriesViewRect.height);
97
+ var bottom = SciChartSurfaceBase_1.SciChartSurfaceBase.domMasterCanvas.height - (seriesViewRect.top + seriesViewRect.height);
97
98
  this.sciChartSurface.updateWatermark(left, bottom);
98
99
  // Step 10 Call OnParentSurfaceRendered
99
100
  this.onParentSurfaceRendered();
@@ -145,6 +146,8 @@ var SciChartRenderer = /** @class */ (function () {
145
146
  });
146
147
  };
147
148
  SciChartRenderer.prototype.validate = function () {
149
+ this.sciChartSurface.xAxes.asArray().forEach(function (axis) { return (axis.isMeasured = false); });
150
+ this.sciChartSurface.yAxes.asArray().forEach(function (axis) { return (axis.isMeasured = false); });
148
151
  // TODO: Check the surface is valid and output error codes to console
149
152
  // Checks would include
150
153
  // Is XAxes and YAxes collection null or empty
@@ -238,13 +241,20 @@ var SciChartRenderer = /** @class */ (function () {
238
241
  });
239
242
  };
240
243
  SciChartRenderer.prototype.tryPerformAutoRangeOn = function (axis, sciChartSurface) {
241
- var shouldAutoRange = axis.autoRange === AutoRange_1.EAutoRange.Always ||
242
- (axis.autoRange === AutoRange_1.EAutoRange.Once && (!axis.hasValidVisibleRange() || axis.hasDefaultVisibleRange()));
244
+ var firstRange = !axis.hasValidVisibleRange() || axis.hasDefaultVisibleRange();
245
+ var shouldAutoRange = axis.autoRange === AutoRange_1.EAutoRange.Always || (axis.autoRange === AutoRange_1.EAutoRange.Once && firstRange);
243
246
  if (shouldAutoRange) {
244
247
  // Different implementation for YAxis and XAxis because of windowing
245
248
  var newRange = axis.getMaximumRange();
246
249
  if (!newRange.equals(axis.visibleRange)) {
247
- axis.visibleRange = newRange;
250
+ if (!axis.autoRangeAnimation ||
251
+ (firstRange && !axis.autoRangeAnimation.animateInitialRanging) ||
252
+ (!firstRange && !axis.autoRangeAnimation.animateSubsequentRanging)) {
253
+ axis.visibleRange = newRange;
254
+ }
255
+ else if (!newRange.equals(axis.animatedVisibleRange)) {
256
+ sciChartSurface.addAnimation(axis.animateVisibleRange(newRange, axis.autoRangeAnimation.duration, axis.autoRangeAnimation.easing));
257
+ }
248
258
  }
249
259
  }
250
260
  };
@@ -70,6 +70,16 @@ export declare type TTickObject = {
70
70
  */
71
71
  minorTickCoords: number[];
72
72
  };
73
+ export interface IAutoRangeAnimationOptions {
74
+ /** Whether to animate the first autorange Default false */
75
+ animateInitialRanging: boolean;
76
+ /** Whether to animate all other autoRanges */
77
+ animateSubsequentRanging: boolean;
78
+ /** The length of the animation */
79
+ duration: number;
80
+ /** The easing function to use */
81
+ easing?: TEasingFn;
82
+ }
73
83
  export interface IAxisBase2dOptions extends IAxisCoreOptions {
74
84
  /**
75
85
  * Limits {@link AxisCore.visibleRange}, meaning the chart cannot autorange outside that range
@@ -116,6 +126,10 @@ export interface IAxisBase2dOptions extends IAxisCoreOptions {
116
126
  * as the bounding box of ratoated text may overlap even if the text itself does not.
117
127
  */
118
128
  hideOverlappingLabels?: boolean;
129
+ /**
130
+ * Options to configure if and how the axis should animate when autoRanging
131
+ */
132
+ autoRangeAnimation?: IAutoRangeAnimationOptions;
119
133
  }
120
134
  /**
121
135
  * The base class for 2D Chart Axis within SciChart - High Performance {@link https://www.scichart.com/javascript-chart-features | JavaScript Charts}.
@@ -128,28 +142,6 @@ export interface IAxisBase2dOptions extends IAxisCoreOptions {
128
142
  * Set axis on the {@link SciChartSurface.xAxes} or {@link SciChartSurface.yAxes} collections in 2D Charts.
129
143
  */
130
144
  export declare abstract class AxisBase2D extends AxisCore implements IThemeable {
131
- abstract type: EAxisType.CategoryAxis | EAxisType.LogarithmicAxis | EAxisType.NumericAxis;
132
- /**
133
- * Gets the parent {@link SciChartSurface} that this axis is attached to
134
- */
135
- parentSurface: SciChartSurface;
136
- /**
137
- * Gets the {@link AxisTitleRenderer} instance responsible for drawing the axis title
138
- */
139
- readonly axisTitleRenderer: AxisTitleRenderer;
140
- /**
141
- * Gets the {@link AxisLayoutState} class which manages layout
142
- */
143
- readonly axisLayoutState: AxisLayoutState;
144
- /**
145
- * Gets the {@link Rect | ViewRect} - a rectangle defining the location of the axis within the parent {@link SciChartSurface}
146
- */
147
- viewRect: Rect;
148
- /**
149
- * The {@link TSciChart | SciChart 2D WebAssembly Context} containing native methods and
150
- * access to our WebGL2 Engine and WebAssembly numerical methods
151
- */
152
- protected axisRendererProperty: AxisRenderer;
153
145
  /**
154
146
  * Gets or sets a {@link LabelProvider} - a class which is responsible for formatting axis labels and cursor labels from numeric values
155
147
  */
@@ -158,36 +150,6 @@ export declare abstract class AxisBase2D extends AxisCore implements IThemeable
158
150
  * Gets or sets a {@link LabelProvider} - a class which is responsible for formatting axis labels and cursor labels from numeric values
159
151
  */
160
152
  set labelProvider(labelProvider: LabelProviderBase2D);
161
- protected readonly webAssemblyContext2D: TSciChart;
162
- private labelStyleProperty;
163
- private axisAlignmentProperty;
164
- private isInnerAxisProperty;
165
- private visibleRangeLimitProperty;
166
- private zoomExtentsRangeProperty;
167
- private isPrimaryAxisProperty;
168
- private isStackedAxisProperty;
169
- private penCacheForMajorGridLines;
170
- private penCacheForMinorGridLines;
171
- private penCacheForMajorTickLines;
172
- private penCacheForMinorTickLines;
173
- private solidBrushCacheAxisBands;
174
- private axisBorderProperty;
175
- private solidBrushCacheBorder;
176
- private axisLengthProperty;
177
- private offsetProperty;
178
- private tickCache;
179
- /**
180
- * Creates an instance of the {@link AxisBase2D}
181
- * @param webAssemblyContext The {@link TSciChart | SciChart 2D WebAssembly Context} containing native methods and
182
- * access to our WebGL2 Engine and WebAssembly numerical methods
183
- * @param options Optional parameters of type {@link IAxisBase2dOptions} used to configure the axis at instantiation time
184
- */
185
- protected constructor(webAssemblyContext: TSciChart, options?: IAxisBase2dOptions);
186
- /**
187
- * @inheritDoc
188
- */
189
- applyTheme(themeProvider: IThemeProvider): void;
190
- onAttach(parentSurface: SciChartSurface, isXAxis: boolean, isPrimaryAxis: boolean): void;
191
153
  /**
192
154
  * Gets the {@link AxisRenderer} instance responsible for drawing the axis
193
155
  */
@@ -304,6 +266,67 @@ export declare abstract class AxisBase2D extends AxisCore implements IThemeable
304
266
  * Gets or sets the Axis Border properties
305
267
  */
306
268
  set axisBorder(border: TBorder);
269
+ /**
270
+ * Gets or sets a {@link IAutoRangeAnimationOptions} object that controls if and how the visible range is animated during autoRanging
271
+ */
272
+ get autoRangeAnimation(): IAutoRangeAnimationOptions;
273
+ /**
274
+ * Gets or sets a {@link IAutoRangeAnimationOptions} object that controls if and how the visible range is animated during autoRanging
275
+ */
276
+ set autoRangeAnimation(autoRangeAnimation: IAutoRangeAnimationOptions);
277
+ abstract type: EAxisType.CategoryAxis | EAxisType.LogarithmicAxis | EAxisType.NumericAxis;
278
+ /**
279
+ * Gets the parent {@link SciChartSurface} that this axis is attached to
280
+ */
281
+ parentSurface: SciChartSurface;
282
+ /**
283
+ * Gets the {@link AxisTitleRenderer} instance responsible for drawing the axis title
284
+ */
285
+ readonly axisTitleRenderer: AxisTitleRenderer;
286
+ /**
287
+ * Gets the {@link AxisLayoutState} class which manages layout
288
+ */
289
+ readonly axisLayoutState: AxisLayoutState;
290
+ /**
291
+ * Gets the {@link Rect | ViewRect} - a rectangle defining the location of the axis within the parent {@link SciChartSurface}
292
+ */
293
+ viewRect: Rect;
294
+ protected axisRendererProperty: AxisRenderer;
295
+ protected autoRangeAnimationProperty: IAutoRangeAnimationOptions;
296
+ /**
297
+ * The {@link TSciChart | SciChart 2D WebAssembly Context} containing native methods and
298
+ * access to our WebGL2 Engine and WebAssembly numerical methods
299
+ */
300
+ protected readonly webAssemblyContext2D: TSciChart;
301
+ private labelStyleProperty;
302
+ private axisAlignmentProperty;
303
+ private isInnerAxisProperty;
304
+ private visibleRangeLimitProperty;
305
+ private zoomExtentsRangeProperty;
306
+ private isPrimaryAxisProperty;
307
+ private isStackedAxisProperty;
308
+ private penCacheForMajorGridLines;
309
+ private penCacheForMinorGridLines;
310
+ private penCacheForMajorTickLines;
311
+ private penCacheForMinorTickLines;
312
+ private solidBrushCacheAxisBands;
313
+ private axisBorderProperty;
314
+ private solidBrushCacheBorder;
315
+ private axisLengthProperty;
316
+ private offsetProperty;
317
+ private tickCache;
318
+ /**
319
+ * Creates an instance of the {@link AxisBase2D}
320
+ * @param webAssemblyContext The {@link TSciChart | SciChart 2D WebAssembly Context} containing native methods and
321
+ * access to our WebGL2 Engine and WebAssembly numerical methods
322
+ * @param options Optional parameters of type {@link IAxisBase2dOptions} used to configure the axis at instantiation time
323
+ */
324
+ protected constructor(webAssemblyContext: TSciChart, options?: IAxisBase2dOptions);
325
+ /**
326
+ * @inheritDoc
327
+ */
328
+ applyTheme(themeProvider: IThemeProvider): void;
329
+ onAttach(parentSurface: SciChartSurface, isXAxis: boolean, isPrimaryAxis: boolean): void;
307
330
  /**
308
331
  * Called internally - measures the axis as part of the layout phase
309
332
  */
@@ -32,6 +32,7 @@ var NumberRange_1 = require("../../../Core/NumberRange");
32
32
  var Thickness_1 = require("../../../Core/Thickness");
33
33
  var AxisAlignment_1 = require("../../../types/AxisAlignment");
34
34
  var BaseType_1 = require("../../../types/BaseType");
35
+ var LabelAlignment_1 = require("../../../types/LabelAlignment");
35
36
  var RenderLayer_1 = require("../../../types/RenderLayer");
36
37
  var XyDirection_1 = require("../../../types/XyDirection");
37
38
  var parseColor_1 = require("../../../utils/parseColor");
@@ -48,7 +49,6 @@ var AxisLayoutState_1 = require("./AxisLayoutState");
48
49
  var AxisRenderer_1 = require("./AxisRenderer");
49
50
  var AxisTitleRenderer_1 = require("./AxisTitleRenderer");
50
51
  var constants_1 = require("./constants");
51
- var LabelAlignment_1 = require("../../../types/LabelAlignment");
52
52
  /**
53
53
  * Defines the clipping mode for scrolling operations found on {@link AxisBase2D.scroll}
54
54
  */
@@ -149,6 +149,7 @@ var AxisBase2D = /** @class */ (function (_super) {
149
149
  options.labelProvider = classFactory_1.createType(BaseType_1.EBaseType.LabelProvider, options.labelProvider.type, webAssemblyContext, options.labelProvider.options);
150
150
  }
151
151
  }
152
+ _this.autoRangeAnimationProperty = options === null || options === void 0 ? void 0 : options.autoRangeAnimation;
152
153
  return _this;
153
154
  }
154
155
  Object.defineProperty(AxisBase2D.prototype, "labelProvider", {
@@ -168,38 +169,6 @@ var AxisBase2D = /** @class */ (function (_super) {
168
169
  enumerable: false,
169
170
  configurable: true
170
171
  });
171
- /**
172
- * @inheritDoc
173
- */
174
- AxisBase2D.prototype.applyTheme = function (themeProvider) {
175
- var previousThemeProvider = this.parentSurface.previousThemeProvider;
176
- if (this.axisBandsFill === previousThemeProvider.axisBandsFill) {
177
- this.axisBandsFill = themeProvider.axisBandsFill;
178
- }
179
- if (this.labelStyle.color === previousThemeProvider.tickTextBrush) {
180
- this.labelStyle = { color: themeProvider.tickTextBrush };
181
- }
182
- if (this.minorGridLineStyle.color === previousThemeProvider.minorGridLineBrush) {
183
- this.minorGridLineStyle = { color: themeProvider.minorGridLineBrush };
184
- }
185
- if (this.majorGridLineStyle.color === previousThemeProvider.majorGridLineBrush) {
186
- this.majorGridLineStyle = { color: themeProvider.majorGridLineBrush };
187
- }
188
- if (this.minorTickLineStyle.color === previousThemeProvider.minorGridLineBrush) {
189
- this.minorTickLineStyle = { color: themeProvider.minorGridLineBrush };
190
- }
191
- if (this.majorTickLineStyle.color === previousThemeProvider.majorGridLineBrush) {
192
- this.majorTickLineStyle = { color: themeProvider.majorGridLineBrush };
193
- }
194
- if (this.axisTitleStyle.color === previousThemeProvider.axisTitleColor) {
195
- this.axisTitleStyle = { color: themeProvider.axisTitleColor };
196
- }
197
- };
198
- AxisBase2D.prototype.onAttach = function (parentSurface, isXAxis, isPrimaryAxis) {
199
- this.parentSurface = parentSurface;
200
- this.setIsXAxis(isXAxis);
201
- this.isPrimaryAxisProperty = isPrimaryAxis;
202
- };
203
172
  Object.defineProperty(AxisBase2D.prototype, "axisRenderer", {
204
173
  /**
205
174
  * Gets the {@link AxisRenderer} instance responsible for drawing the axis
@@ -469,6 +438,55 @@ var AxisBase2D = /** @class */ (function (_super) {
469
438
  enumerable: false,
470
439
  configurable: true
471
440
  });
441
+ Object.defineProperty(AxisBase2D.prototype, "autoRangeAnimation", {
442
+ /**
443
+ * Gets or sets a {@link IAutoRangeAnimationOptions} object that controls if and how the visible range is animated during autoRanging
444
+ */
445
+ get: function () {
446
+ return this.autoRangeAnimationProperty;
447
+ },
448
+ /**
449
+ * Gets or sets a {@link IAutoRangeAnimationOptions} object that controls if and how the visible range is animated during autoRanging
450
+ */
451
+ set: function (autoRangeAnimation) {
452
+ this.autoRangeAnimationProperty = __assign(__assign({}, this.autoRangeAnimation), autoRangeAnimation);
453
+ // No need to trigger a redraw. This will take effect anyway if the chart redraws.
454
+ },
455
+ enumerable: false,
456
+ configurable: true
457
+ });
458
+ /**
459
+ * @inheritDoc
460
+ */
461
+ AxisBase2D.prototype.applyTheme = function (themeProvider) {
462
+ var previousThemeProvider = this.parentSurface.previousThemeProvider;
463
+ if (this.axisBandsFill === previousThemeProvider.axisBandsFill) {
464
+ this.axisBandsFill = themeProvider.axisBandsFill;
465
+ }
466
+ if (this.labelStyle.color === previousThemeProvider.tickTextBrush) {
467
+ this.labelStyle = { color: themeProvider.tickTextBrush };
468
+ }
469
+ if (this.minorGridLineStyle.color === previousThemeProvider.minorGridLineBrush) {
470
+ this.minorGridLineStyle = { color: themeProvider.minorGridLineBrush };
471
+ }
472
+ if (this.majorGridLineStyle.color === previousThemeProvider.majorGridLineBrush) {
473
+ this.majorGridLineStyle = { color: themeProvider.majorGridLineBrush };
474
+ }
475
+ if (this.minorTickLineStyle.color === previousThemeProvider.minorGridLineBrush) {
476
+ this.minorTickLineStyle = { color: themeProvider.minorGridLineBrush };
477
+ }
478
+ if (this.majorTickLineStyle.color === previousThemeProvider.majorGridLineBrush) {
479
+ this.majorTickLineStyle = { color: themeProvider.majorGridLineBrush };
480
+ }
481
+ if (this.axisTitleStyle.color === previousThemeProvider.axisTitleColor) {
482
+ this.axisTitleStyle = { color: themeProvider.axisTitleColor };
483
+ }
484
+ };
485
+ AxisBase2D.prototype.onAttach = function (parentSurface, isXAxis, isPrimaryAxis) {
486
+ this.parentSurface = parentSurface;
487
+ this.setIsXAxis(isXAxis);
488
+ this.isPrimaryAxisProperty = isPrimaryAxis;
489
+ };
472
490
  /**
473
491
  * Called internally - measures the axis as part of the layout phase
474
492
  */
@@ -491,6 +509,7 @@ var AxisBase2D = /** @class */ (function (_super) {
491
509
  this.axisTitleRenderer.desiredHeight = 0;
492
510
  this.axisTitleRenderer.desiredWidth = 0;
493
511
  }
512
+ this.isMeasured = true;
494
513
  };
495
514
  /**
496
515
  * Called internally - prepares render data before a draw operation
@@ -694,7 +713,7 @@ var AxisBase2D = /** @class */ (function (_super) {
694
713
  var toValue = coordCalc.getDataValue(toCoord);
695
714
  var min = fromValue < toValue ? fromValue : toValue;
696
715
  var max = fromValue < toValue ? toValue : fromValue;
697
- this.animateVisibleRange(new NumberRange_1.NumberRange(min, max), duration, easingFunction);
716
+ this.parentSurface.addAnimation(this.animateVisibleRange(new NumberRange_1.NumberRange(min, max), duration, easingFunction));
698
717
  };
699
718
  AxisBase2D.prototype.scale = function (initialRange, delta, isMoreThanHalf) {
700
719
  var deltaRange = initialRange.max - initialRange.min;
@@ -1,16 +1,16 @@
1
1
  import { TEasingFn } from "../../../Core/Animations/EasingFunctions";
2
- import { AnimationToken } from "../../../Core/AnimationToken";
2
+ import { IGenericAnimation } from "../../../Core/Animations/GenericAnimation";
3
3
  import { EventHandler } from "../../../Core/EventHandler";
4
4
  import { IDeletable } from "../../../Core/IDeletable";
5
5
  import { NumberRange } from "../../../Core/NumberRange";
6
6
  import { Thickness } from "../../../Core/Thickness";
7
7
  import { EAutoRange } from "../../../types/AutoRange";
8
8
  import { EAxisType } from "../../../types/AxisType";
9
+ import { ELabelAlignment } from "../../../types/LabelAlignment";
9
10
  import { CoordinateCalculatorBase } from "../../Numerics/CoordinateCalculators/CoordinateCalculatorBase";
10
11
  import { TickCoordinatesProvider } from "../../Numerics/TickCoordinateProviders/TickCoordinatesProvider";
11
12
  import { TickProvider } from "../../Numerics/TickProviders/TickProvider";
12
13
  import { DeltaCalculator } from "./DeltaCalculator/DeltaCalculator";
13
- import { ELabelAlignment } from "../../../types/LabelAlignment";
14
14
  import { IAxisCoreOptions } from "./IAxisCoreOptions";
15
15
  import { LabelProvider } from "./LabelProvider/LabelProvider";
16
16
  import { VisibleRangeChangedArgs } from "./VisibleRangeChangedArgs";
@@ -136,6 +136,8 @@ export declare abstract class AxisCore implements IAxisParams, IDeletable {
136
136
  * @desc
137
137
  */
138
138
  visibleRangeChanged: EventHandler<VisibleRangeChangedArgs>;
139
+ /** A flag to indicate if measure has been called this frame. Properties updated after measure must trigger a redraw */
140
+ isMeasured: boolean;
139
141
  /**
140
142
  * Internal backing property for {@link AxisCore.id}. To fire {@link AxisCore.invalidateParentCallback}, set the public property
141
143
  */
@@ -271,7 +273,7 @@ export declare abstract class AxisCore implements IAxisParams, IDeletable {
271
273
  * Internal backing property for {@link AxisCore.maxAutoTicks}. To fire {@link AxisCore.invalidateParentCallback}, set the public property
272
274
  */
273
275
  protected maxAutoTicksProperty: number;
274
- protected visibleRangeAnimationToken: AnimationToken;
276
+ protected visibleRangeAnimationToken: IGenericAnimation;
275
277
  protected readonly defaultVisibleRange: NumberRange;
276
278
  /**
277
279
  * Creates an instance of an {@link AxisCore}
@@ -396,6 +398,7 @@ export declare abstract class AxisCore implements IAxisParams, IDeletable {
396
398
  * for {@link CategoryAxis} types.
397
399
  */
398
400
  set visibleRange(visibleRange: NumberRange);
401
+ get animatedVisibleRange(): NumberRange;
399
402
  /**
400
403
  * Sets and animates the visibleRange of the axis from the current value to the provided value over the duration and with
401
404
  * {@link TEasingFn | Easing Function} provided
@@ -404,7 +407,7 @@ export declare abstract class AxisCore implements IAxisParams, IDeletable {
404
407
  * @param easingFunction the {@link TEasingFn | Easing Function to use}. Default value is outCubic
405
408
  * @param onCompleted the callback function
406
409
  */
407
- animateVisibleRange(visibleRange: NumberRange, durationMs: number, easingFunction?: TEasingFn, onCompleted?: () => void): AnimationToken;
410
+ animateVisibleRange(visibleRange: NumberRange, durationMs: number, easingFunction?: TEasingFn, onCompleted?: () => void): IGenericAnimation;
408
411
  /**
409
412
  * The MajorDelta is the spacing between major gridlines and axis labels.
410
413
  * @remarks
@@ -20,11 +20,11 @@ var Guard_1 = require("../../../Core/Guard");
20
20
  var NumberRange_1 = require("../../../Core/NumberRange");
21
21
  var Thickness_1 = require("../../../Core/Thickness");
22
22
  var AutoRange_1 = require("../../../types/AutoRange");
23
+ var LabelAlignment_1 = require("../../../types/LabelAlignment");
23
24
  var isRealNumber_1 = require("../../../utils/isRealNumber");
24
25
  var SciChartSurfaceBase_1 = require("../SciChartSurfaceBase");
25
26
  var DpiHelper_1 = require("../TextureManager/DpiHelper");
26
27
  var constants_1 = require("./constants");
27
- var LabelAlignment_1 = require("../../../types/LabelAlignment");
28
28
  var VisibleRangeChangedArgs_1 = require("./VisibleRangeChangedArgs");
29
29
  /** @ignore */
30
30
  var ZeroRangeGrowBy = 0.01;
@@ -52,6 +52,8 @@ var AxisCore = /** @class */ (function () {
52
52
  * @desc
53
53
  */
54
54
  this.visibleRangeChanged = new EventHandler_1.EventHandler();
55
+ /** A flag to indicate if measure has been called this frame. Properties updated after measure must trigger a redraw */
56
+ this.isMeasured = false;
55
57
  /**
56
58
  * Internal backing property for {@link AxisCore.id}. To fire {@link AxisCore.invalidateParentCallback}, set the public property
57
59
  */
@@ -364,6 +366,17 @@ var AxisCore = /** @class */ (function () {
364
366
  enumerable: false,
365
367
  configurable: true
366
368
  });
369
+ Object.defineProperty(AxisCore.prototype, "animatedVisibleRange", {
370
+ get: function () {
371
+ if (!this.visibleRangeAnimationToken) {
372
+ return this.visibleRange;
373
+ }
374
+ var animation = this.visibleRangeAnimationToken;
375
+ return animation.to;
376
+ },
377
+ enumerable: false,
378
+ configurable: true
379
+ });
367
380
  /**
368
381
  * Sets and animates the visibleRange of the axis from the current value to the provided value over the duration and with
369
382
  * {@link TEasingFn | Easing Function} provided
@@ -383,10 +396,13 @@ var AxisCore = /** @class */ (function () {
383
396
  onCompleted();
384
397
  return undefined;
385
398
  }
386
- (_a = this.visibleRangeAnimationToken) === null || _a === void 0 ? void 0 : _a.cancelAnimation();
399
+ (_a = this.visibleRangeAnimationToken) === null || _a === void 0 ? void 0 : _a.cancel();
387
400
  this.visibleRangeAnimationToken = NumberRangeAnimator_1.NumberRangeAnimator.animate(this.visibleRange, visibleRange, durationMs, function (range) {
388
- _this.visibleRange = range;
389
- }, onCompleted, easingFunction);
401
+ _this.visibleRangeProperty = range;
402
+ }, function () {
403
+ _this.visibleRangeAnimationToken = undefined;
404
+ onCompleted();
405
+ }, easingFunction);
390
406
  return this.visibleRangeAnimationToken;
391
407
  };
392
408
  Object.defineProperty(AxisCore.prototype, "majorDelta", {
@@ -1012,7 +1028,7 @@ var AxisCore = /** @class */ (function () {
1012
1028
  if (propertyName === constants_1.PROPERTY.TICK_COORDINATES_CALCULATOR) {
1013
1029
  (_d = this.tickCoordinatesProvider) === null || _d === void 0 ? void 0 : _d.attachedToAxis(this);
1014
1030
  }
1015
- if (this.invalidateParentCallback) {
1031
+ if (this.isMeasured && this.invalidateParentCallback) {
1016
1032
  this.invalidateParentCallback();
1017
1033
  }
1018
1034
  };
@@ -1,5 +1,4 @@
1
1
  import { TEasingFn } from "../../../Core/Animations/EasingFunctions";
2
- import { AnimationToken } from "../../../Core/AnimationToken";
3
2
  import { Dictionary } from "../../../Core/Dictionary";
4
3
  import { NumberRange } from "../../../Core/NumberRange";
5
4
  import { EAxisType } from "../../../types/AxisType";
@@ -96,12 +95,11 @@ export declare class LogarithmicAxis extends AxisBase2D {
96
95
  /**
97
96
  * @inheritdoc
98
97
  */
99
- animateVisibleRange(visibleRange: NumberRange, durationMs: number, easingFunction?: TEasingFn, onCompleted?: () => void): AnimationToken;
98
+ animateVisibleRange(visibleRange: NumberRange, durationMs: number, easingFunction?: TEasingFn, onCompleted?: () => void): import("../../../Core/Animations/GenericAnimation").IGenericAnimation;
100
99
  scale(initialRange: NumberRange, delta: number, isMoreThanHalf: boolean): void;
101
100
  toJSON(): import("../../../Builder/buildAxis").TAxisDefinition;
102
101
  protected getCurrentCoordinateCalculatorInternal(): CoordinateCalculatorBase;
103
102
  protected getMaxXRange(): NumberRange;
104
103
  private get logTickProvider();
105
104
  private updateLogarithmicBase;
106
- private interpolateLog;
107
105
  }