scichart 3.2.446 → 3.2.461

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 (30) hide show
  1. package/Charting/Model/BaseDataSeries.d.ts +1 -1
  2. package/Charting/Model/BaseDataSeries.js +21 -5
  3. package/Charting/Model/HlcDataSeries.js +4 -1
  4. package/Charting/Model/OhlcDataSeries.js +4 -1
  5. package/Charting/Model/XyyDataSeries.js +4 -1
  6. package/Charting/Visuals/Axis/AxisBase2D.d.ts +16 -0
  7. package/Charting/Visuals/Axis/AxisBase2D.js +26 -2
  8. package/Charting/Visuals/Axis/constants.d.ts +2 -1
  9. package/Charting/Visuals/Axis/constants.js +1 -0
  10. package/Charting/Visuals/PointMarkers/BasePointMarker.js +3 -1
  11. package/Charting/Visuals/RenderableSeries/Animations/animationHelpers.d.ts +1 -1
  12. package/Charting/Visuals/RenderableSeries/BaseBandRenderableSeries.js +0 -2
  13. package/Charting/Visuals/RenderableSeries/BaseRenderableSeries.js +4 -2
  14. package/Charting/Visuals/RenderableSeries/BaseStackedRenderableSeries.js +1 -1
  15. package/Charting/Visuals/RenderableSeries/DrawingProviders/BaseSeriesDrawingProvider.js +13 -16
  16. package/Charting/Visuals/SciChartSurfaceBase.js +3 -0
  17. package/Charting/Visuals/createMaster.js +1 -0
  18. package/Charting/Visuals/licenseManager2D.d.ts +1 -0
  19. package/Charting/Visuals/licenseManager2D.js +11 -11
  20. package/Charting3D/Visuals/createMaster3d.js +1 -0
  21. package/Charting3D/Visuals/licenseManager3D.d.ts +1 -0
  22. package/Charting3D/Visuals/licenseManager3D.js +5 -1
  23. package/Core/BuildStamp.d.ts +1 -1
  24. package/Core/BuildStamp.js +2 -2
  25. package/_wasm/scichart.browser.js +1 -1
  26. package/_wasm/scichart2d.wasm +0 -0
  27. package/_wasm/scichart3d.wasm +0 -0
  28. package/index.dev.js +104 -52
  29. package/index.min.js +1 -1
  30. package/package.json +1 -1
@@ -286,5 +286,5 @@ export declare abstract class BaseDataSeries extends DeletableEntity implements
286
286
  private getYValues;
287
287
  }
288
288
  /** @ignore */
289
- export declare const getIndicesRange: (webAssemblyContext: TSciChart, xValues: SCRTDoubleVector, xRange: NumberRange, isSorted: boolean) => NumberRange;
289
+ export declare const getIndicesRange: (webAssemblyContext: TSciChart, xValues: SCRTDoubleVector, xRange: NumberRange, isSorted: boolean, downSearchMode?: ESearchMode, upSearchMode?: ESearchMode) => NumberRange;
290
290
  export declare const getWindowedYRange: (webAssemblyContext: TSciChart, xValues: SCRTDoubleVector, yValues: SCRTDoubleVector, xRange: NumberRange, getPositiveRange: boolean, isXCategoryAxis: boolean, isSorted: boolean) => NumberRange;
@@ -352,7 +352,7 @@ var BaseDataSeries = /** @class */ (function (_super) {
352
352
  if (upSearchMode === void 0) { upSearchMode = SearchMode_1.ESearchMode.RoundUp; }
353
353
  // TODO SearchMode downSearchMode = SearchMode.RoundDown, SearchMode upSearchMode = SearchMode.RoundUp
354
354
  var vector = isCategoryData ? this.getNativeIndexes() : this.xValues;
355
- return (0, exports.getIndicesRange)(this.webAssemblyContext, vector, xRange, this.dataDistributionCalculator.isSortedAscending);
355
+ return (0, exports.getIndicesRange)(this.webAssemblyContext, vector, xRange, this.dataDistributionCalculator.isSortedAscending, downSearchMode, upSearchMode);
356
356
  };
357
357
  Object.defineProperty(BaseDataSeries.prototype, "hasValues", {
358
358
  /** @inheritDoc */
@@ -665,7 +665,9 @@ var BaseDataSeries = /** @class */ (function (_super) {
665
665
  }(DeletableEntity_1.DeletableEntity));
666
666
  exports.BaseDataSeries = BaseDataSeries;
667
667
  /** @ignore */
668
- var getIndicesRange = function (webAssemblyContext, xValues, xRange, isSorted) {
668
+ var getIndicesRange = function (webAssemblyContext, xValues, xRange, isSorted, downSearchMode, upSearchMode) {
669
+ if (downSearchMode === void 0) { downSearchMode = SearchMode_1.ESearchMode.RoundDown; }
670
+ if (upSearchMode === void 0) { upSearchMode = SearchMode_1.ESearchMode.RoundUp; }
669
671
  var count = xValues.size();
670
672
  var result = new NumberRange_1.NumberRange(0, -1);
671
673
  if (count > 0) {
@@ -673,9 +675,21 @@ var getIndicesRange = function (webAssemblyContext, xValues, xRange, isSorted) {
673
675
  if (!isSorted) {
674
676
  return new NumberRange_1.NumberRange(0, count - 1);
675
677
  }
678
+ var convertSearchMode = function (mode) {
679
+ switch (mode) {
680
+ case SearchMode_1.ESearchMode.Exact:
681
+ return webAssemblyContext.SCRTFindIndexSearchMode.Exact;
682
+ case SearchMode_1.ESearchMode.Nearest:
683
+ return webAssemblyContext.SCRTFindIndexSearchMode.Nearest;
684
+ case SearchMode_1.ESearchMode.RoundDown:
685
+ return webAssemblyContext.SCRTFindIndexSearchMode.RoundDown;
686
+ case SearchMode_1.ESearchMode.RoundUp:
687
+ return webAssemblyContext.SCRTFindIndexSearchMode.RoundUp;
688
+ }
689
+ };
676
690
  // For sorted data, we search the points in the viewport
677
- var iMin = webAssemblyContext.NumberUtil.FindIndex(xValues, xRange.min, webAssemblyContext.SCRTFindIndexSearchMode.RoundDown, true);
678
- var iMax = webAssemblyContext.NumberUtil.FindIndex(xValues, xRange.max, webAssemblyContext.SCRTFindIndexSearchMode.RoundUp, true);
691
+ var iMin = webAssemblyContext.NumberUtil.FindIndex(xValues, xRange.min, convertSearchMode(downSearchMode), true);
692
+ var iMax = webAssemblyContext.NumberUtil.FindIndex(xValues, xRange.max, convertSearchMode(upSearchMode), true);
679
693
  result = new NumberRange_1.NumberRange(iMin, iMax);
680
694
  }
681
695
  return result;
@@ -691,7 +705,9 @@ isSorted) {
691
705
  var y = yValues.get(0);
692
706
  return new NumberRange_1.NumberRange(y, y);
693
707
  }
694
- var indicesRange = isXCategoryAxis ? xRange : (0, exports.getIndicesRange)(webAssemblyContext, xValues, xRange, isSorted);
708
+ var indicesRange = isXCategoryAxis
709
+ ? xRange
710
+ : (0, exports.getIndicesRange)(webAssemblyContext, xValues, xRange, isSorted, SearchMode_1.ESearchMode.RoundUp, SearchMode_1.ESearchMode.RoundDown);
695
711
  var iMin = Math.max(Math.floor(indicesRange.min), 0);
696
712
  var iMax = Math.min(Math.ceil(indicesRange.max), count - 1);
697
713
  if (iMax < iMin) {
@@ -20,6 +20,7 @@ var Deleter_1 = require("../../Core/Deleter");
20
20
  var Guard_1 = require("../../Core/Guard");
21
21
  var NumberRange_1 = require("../../Core/NumberRange");
22
22
  var NumberArray_1 = require("../../types/NumberArray");
23
+ var SearchMode_1 = require("../../types/SearchMode");
23
24
  var appendDoubleVectorFromJsArray_1 = require("../../utils/ccall/appendDoubleVectorFromJsArray");
24
25
  var isRealNumber_1 = require("../../utils/isRealNumber");
25
26
  var animationHelpers_1 = require("../Visuals/RenderableSeries/Animations/animationHelpers");
@@ -409,7 +410,9 @@ var HlcDataSeries = /** @class */ (function (_super) {
409
410
  return new NumberRange_1.NumberRange(min, max);
410
411
  }
411
412
  }
412
- var indicesRange = isXCategoryAxis ? xRange : this.getIndicesRange(xRange);
413
+ var indicesRange = isXCategoryAxis
414
+ ? xRange
415
+ : this.getIndicesRange(xRange, false, SearchMode_1.ESearchMode.RoundUp, SearchMode_1.ESearchMode.RoundDown);
413
416
  var yMin = Number.MAX_VALUE;
414
417
  var yMax = Number.MIN_VALUE;
415
418
  var iMin = Math.max(Math.floor(indicesRange.min), 0);
@@ -20,6 +20,7 @@ var Deleter_1 = require("../../Core/Deleter");
20
20
  var Guard_1 = require("../../Core/Guard");
21
21
  var NumberRange_1 = require("../../Core/NumberRange");
22
22
  var NumberArray_1 = require("../../types/NumberArray");
23
+ var SearchMode_1 = require("../../types/SearchMode");
23
24
  var appendDoubleVectorFromJsArray_1 = require("../../utils/ccall/appendDoubleVectorFromJsArray");
24
25
  var animationHelpers_1 = require("../Visuals/RenderableSeries/Animations/animationHelpers");
25
26
  var BaseDataSeries_1 = require("./BaseDataSeries");
@@ -360,7 +361,9 @@ var OhlcDataSeries = /** @class */ (function (_super) {
360
361
  var y = closeValues.get(0);
361
362
  return new NumberRange_1.NumberRange(y, y);
362
363
  }
363
- var indicesRange = isXCategoryAxis ? xRange : this.getIndicesRange(xRange);
364
+ var indicesRange = isXCategoryAxis
365
+ ? xRange
366
+ : this.getIndicesRange(xRange, false, SearchMode_1.ESearchMode.RoundUp, SearchMode_1.ESearchMode.RoundDown);
364
367
  var yMin = Number.MAX_VALUE;
365
368
  var yMax = Number.MIN_VALUE;
366
369
  var iMin = Math.max(indicesRange.min, 0);
@@ -20,6 +20,7 @@ var Deleter_1 = require("../../Core/Deleter");
20
20
  var Guard_1 = require("../../Core/Guard");
21
21
  var NumberRange_1 = require("../../Core/NumberRange");
22
22
  var NumberArray_1 = require("../../types/NumberArray");
23
+ var SearchMode_1 = require("../../types/SearchMode");
23
24
  var appendDoubleVectorFromJsArray_1 = require("../../utils/ccall/appendDoubleVectorFromJsArray");
24
25
  var isRealNumber_1 = require("../../utils/isRealNumber");
25
26
  var animationHelpers_1 = require("../Visuals/RenderableSeries/Animations/animationHelpers");
@@ -300,7 +301,9 @@ var XyyDataSeries = /** @class */ (function (_super) {
300
301
  var max = Math.max(yValues.get(0), y1Values.get(0));
301
302
  return new NumberRange_1.NumberRange(min, max);
302
303
  }
303
- var indicesRange = isXCategoryAxis ? xRange : this.getIndicesRange(xRange);
304
+ var indicesRange = isXCategoryAxis
305
+ ? xRange
306
+ : this.getIndicesRange(xRange, false, SearchMode_1.ESearchMode.RoundUp, SearchMode_1.ESearchMode.RoundDown);
304
307
  var iMin = Math.max(Math.floor(indicesRange.min), 0);
305
308
  var iMax = Math.min(Math.ceil(indicesRange.max), this.count() - 1);
306
309
  if (iMax < iMin) {
@@ -156,6 +156,11 @@ export interface IAxisBase2dOptions extends IAxisCoreOptions {
156
156
  * which is 0 for normal axes, but is used to position stacked axes.
157
157
  */
158
158
  overrideOffset?: number;
159
+ /**
160
+ * For an X Axis only - Determines whether the series will be clipped to the {@link visibleRange}. Defaults true.
161
+ * You may want to set this false if you have stacked horizontal axes, or are using {@link offsetOverride}.
162
+ */
163
+ clipToXRange?: boolean;
159
164
  }
160
165
  /**
161
166
  * The base class for 2D Chart Axis within SciChart - High Performance {@link https://www.scichart.com/javascript-chart-features | JavaScript Charts}.
@@ -323,6 +328,16 @@ export declare abstract class AxisBase2D extends AxisCore implements IThemeable
323
328
  * Gets or sets a {@link IAutoRangeAnimationOptions} object that controls if and how the visible range is animated during autoRanging
324
329
  */
325
330
  set autoRangeAnimation(autoRangeAnimation: IAutoRangeAnimationOptions);
331
+ /**
332
+ * For an X Axis only - Determines whether the series will be clipped to the {@link visibleRange}. Defaults true.
333
+ * You may want to set this false if you have stacked horizontal axes, or are using {@link offsetOverride}.
334
+ */
335
+ get clipToXRange(): boolean;
336
+ /**
337
+ * For an X Axis only - Determines whether the series will be clipped to the {@link visibleRange}. Defaults true.
338
+ * You may want to set this false if you have stacked horizontal axes, or are using {@link offsetOverride}.
339
+ */
340
+ set clipToXRange(clipToXRange: boolean);
326
341
  abstract type: EAxisType.CategoryAxis | EAxisType.LogarithmicAxis | EAxisType.NumericAxis | EAxisType.DateTimeNumericAxis;
327
342
  /**
328
343
  * Gets the parent {@link SciChartSurface} that this axis is attached to
@@ -369,6 +384,7 @@ export declare abstract class AxisBase2D extends AxisCore implements IThemeable
369
384
  private tickCache;
370
385
  private backgroundColorProperty;
371
386
  private dpiAdjustedLabelStyleCache;
387
+ private clipToXRangeProperty;
372
388
  /**
373
389
  * Creates an instance of the {@link AxisBase2D}
374
390
  * @param webAssemblyContext The {@link TSciChart | SciChart 2D WebAssembly Context} containing native methods and
@@ -102,7 +102,7 @@ var AxisBase2D = /** @class */ (function (_super) {
102
102
  */
103
103
  function AxisBase2D(webAssemblyContext, options) {
104
104
  var _this = this;
105
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
105
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
106
106
  _this = _super.call(this, options) || this;
107
107
  /**
108
108
  * Gets the {@link AxisLayoutState} class which manages layout
@@ -130,6 +130,7 @@ var AxisBase2D = /** @class */ (function (_super) {
130
130
  _this.offsetProperty = 0;
131
131
  _this.offsetOverrideProperty = undefined;
132
132
  _this.tickCache = undefined;
133
+ _this.clipToXRangeProperty = true;
133
134
  _this.webAssemblyContext2D = webAssemblyContext;
134
135
  _this.penCacheForMajorGridLines = new Pen2DCache_1.Pen2DCache(webAssemblyContext);
135
136
  _this.penCacheForMinorGridLines = new Pen2DCache_1.Pen2DCache(webAssemblyContext);
@@ -163,6 +164,7 @@ var AxisBase2D = /** @class */ (function (_super) {
163
164
  _this.autoRangeAnimationProperty = options === null || options === void 0 ? void 0 : options.autoRangeAnimation;
164
165
  _this.backgroundColor = (_k = options === null || options === void 0 ? void 0 : options.backgroundColor) !== null && _k !== void 0 ? _k : _this.backgroundColor;
165
166
  _this.offsetOverrideProperty = options === null || options === void 0 ? void 0 : options.overrideOffset; // undefined if not set
167
+ _this.clipToXRangeProperty = (_l = options === null || options === void 0 ? void 0 : options.clipToXRange) !== null && _l !== void 0 ? _l : _this.clipToXRange;
166
168
  return _this;
167
169
  }
168
170
  Object.defineProperty(AxisBase2D.prototype, "labelProvider", {
@@ -559,6 +561,27 @@ var AxisBase2D = /** @class */ (function (_super) {
559
561
  enumerable: false,
560
562
  configurable: true
561
563
  });
564
+ Object.defineProperty(AxisBase2D.prototype, "clipToXRange", {
565
+ /**
566
+ * For an X Axis only - Determines whether the series will be clipped to the {@link visibleRange}. Defaults true.
567
+ * You may want to set this false if you have stacked horizontal axes, or are using {@link offsetOverride}.
568
+ */
569
+ get: function () {
570
+ return this.clipToXRangeProperty;
571
+ },
572
+ /**
573
+ * For an X Axis only - Determines whether the series will be clipped to the {@link visibleRange}. Defaults true.
574
+ * You may want to set this false if you have stacked horizontal axes, or are using {@link offsetOverride}.
575
+ */
576
+ set: function (clipToXRange) {
577
+ if (this.clipToXRangeProperty !== clipToXRange) {
578
+ this.clipToXRangeProperty = clipToXRange;
579
+ this.notifyPropertyChanged(constants_1.PROPERTY.DRAW_ONLY_WITHIN_XRANGE);
580
+ }
581
+ },
582
+ enumerable: false,
583
+ configurable: true
584
+ });
562
585
  /** @inheritDoc */
563
586
  AxisBase2D.prototype.applyTheme = function (themeProvider) {
564
587
  var previousThemeProvider = this.parentSurface.previousThemeProvider;
@@ -974,7 +997,8 @@ var AxisBase2D = /** @class */ (function (_super) {
974
997
  minorDelta: this.minorDelta,
975
998
  // @ts-ignore
976
999
  labelProvider: this.labelProvider.toJSON(),
977
- keepLabelsWithinAxis: this.axisRenderer.keepLabelsWithinAxis
1000
+ keepLabelsWithinAxis: this.axisRenderer.keepLabelsWithinAxis,
1001
+ clipToXRange: this.clipToXRange
978
1002
  };
979
1003
  return { type: this.type, options: options };
980
1004
  };
@@ -45,5 +45,6 @@ export declare enum PROPERTY {
45
45
  VISIBLE_RANGE_SIZE_LIMIT = "VISIBLE_RANGE_SIZE_LIMIT",
46
46
  TICK_PROVIDER = "TICK_PROVIDER",
47
47
  VIEW_RECT = "VIEW_RECT",
48
- ZOOMEXTENTS_RANGE = "ZOOMEXTENTS_RANGE"
48
+ ZOOMEXTENTS_RANGE = "ZOOMEXTENTS_RANGE",
49
+ DRAW_ONLY_WITHIN_XRANGE = "DRAW_ONLY_WITHIN_XRANGE"
49
50
  }
@@ -50,4 +50,5 @@ var PROPERTY;
50
50
  PROPERTY["TICK_PROVIDER"] = "TICK_PROVIDER";
51
51
  PROPERTY["VIEW_RECT"] = "VIEW_RECT";
52
52
  PROPERTY["ZOOMEXTENTS_RANGE"] = "ZOOMEXTENTS_RANGE";
53
+ PROPERTY["DRAW_ONLY_WITHIN_XRANGE"] = "DRAW_ONLY_WITHIN_XRANGE";
53
54
  })(PROPERTY = exports.PROPERTY || (exports.PROPERTY = {}));
@@ -300,7 +300,9 @@ var BasePointMarker = /** @class */ (function (_super) {
300
300
  strokeMask.copyTexture();
301
301
  var fillMask = new CanvasTexture_1.CanvasTexture(this.webAssemblyContext, widthPadded, heightPadded);
302
302
  fillMask.clear();
303
- this.drawSprite(fillMask.getContext(), this.width * DpiHelper_1.DpiHelper.PIXEL_RATIO, this.height * DpiHelper_1.DpiHelper.PIXEL_RATIO, "#00000000", 0, "#ffffffff");
303
+ this.drawSprite(fillMask.getContext(),
304
+ // Temporary fix for ring around pointmarkers with paletteProvider
305
+ this.width * DpiHelper_1.DpiHelper.PIXEL_RATIO - 3, this.height * DpiHelper_1.DpiHelper.PIXEL_RATIO - 3, "#00000000", 0, "#ffffffff");
304
306
  fillMask.copyTexture();
305
307
  return { spriteTexture: spriteTexture, strokeMask: strokeMask, fillMask: fillMask };
306
308
  };
@@ -14,7 +14,7 @@ export declare const animationHelpers: {
14
14
  checkCanDraw: (animationFSM: AnimationFiniteStateMachine) => boolean;
15
15
  checkIsAnimationRunning: (animationQueue: IAnimation[], animationFSM: AnimationFiniteStateMachine) => boolean;
16
16
  animationUpdate: (animationFSM: SeriesAnimationFiniteStateMachine, timeElapsed: number, beforeAnimationStart: () => void, afterAnimationComplete: () => void, updateAnimationProperties: (progress: number, animationFSM: SeriesAnimationFiniteStateMachine) => void) => void;
17
- createPointMarker: (wasmContext: TSciChart, pointMarkerStyle: BasePointMarkerStyle) => CrossPointMarker | EllipsePointMarker | SpritePointMarker | SquarePointMarker | TrianglePointMarker | XPointMarker;
17
+ createPointMarker: (wasmContext: TSciChart, pointMarkerStyle: BasePointMarkerStyle) => EllipsePointMarker | SpritePointMarker | CrossPointMarker | XPointMarker | SquarePointMarker | TrianglePointMarker;
18
18
  interpolateNumber: (from: number, to: number, progress: number) => number;
19
19
  interpolateColor: (from: number, to: number, progress: number) => number;
20
20
  copyVector: (sourceVector: SCRTDoubleVector, targetVector: SCRTDoubleVector) => void;
@@ -193,7 +193,6 @@ var BaseBandRenderableSeries = /** @class */ (function (_super) {
193
193
  else {
194
194
  this.pointSeries.xRange = rp.xVisibleRange;
195
195
  }
196
- console.log(rp.resamplingMode);
197
196
  var ps = this.pointSeries;
198
197
  var ds = this.dataSeries;
199
198
  var xValues = ds.getNativeXValues();
@@ -202,7 +201,6 @@ var BaseBandRenderableSeries = /** @class */ (function (_super) {
202
201
  var result = this.resamplerHelper.resampleIntoPointSeries(this.webAssemblyContext, rp, xValues, yValues, this.xyyTempPointSeries.intIndexes, undefined, this.xyyTempPointSeries.xValues, this.xyyTempPointSeries.yValues, false);
203
202
  this.pointSeries.fifoStartIndex = result.OutputSplitIndex;
204
203
  var xySize = this.xyyTempPointSeries.intIndexes.size();
205
- console.log(this.xyyTempPointSeries.xValues.size(), xySize);
206
204
  this.resamplerHelper.resampleIntoPointSeries(this.webAssemblyContext, rp, xValues, y1Values, this.xyyTempPointSeries.intIndexes, undefined, this.xyyTempPointSeries.xValues, this.xyyTempPointSeries.y1Values);
207
205
  // Because intIndexes vector is not cleared indexes for rpLow are appended at the end of rpHigh indexes
208
206
  var xy1Size = this.xyyTempPointSeries.intIndexes.size() - xySize;
@@ -454,7 +454,8 @@ var BaseRenderableSeries = /** @class */ (function (_super) {
454
454
  /** @inheritDoc */
455
455
  get: function () {
456
456
  var _this = this;
457
- return this.parentSurface.xAxes.asArray().find(function (el) { return el.id === _this.xAxisId; });
457
+ var _a;
458
+ return (_a = this.parentSurface) === null || _a === void 0 ? void 0 : _a.xAxes.asArray().find(function (el) { return el.id === _this.xAxisId; });
458
459
  },
459
460
  enumerable: false,
460
461
  configurable: true
@@ -463,7 +464,8 @@ var BaseRenderableSeries = /** @class */ (function (_super) {
463
464
  /** @inheritDoc */
464
465
  get: function () {
465
466
  var _this = this;
466
- return this.parentSurface.yAxes.asArray().find(function (el) { return el.id === _this.yAxisId; });
467
+ var _a;
468
+ return (_a = this.parentSurface) === null || _a === void 0 ? void 0 : _a.yAxes.asArray().find(function (el) { return el.id === _this.yAxisId; });
467
469
  },
468
470
  enumerable: false,
469
471
  configurable: true
@@ -76,7 +76,7 @@ var BaseStackedRenderableSeries = /** @class */ (function (_super) {
76
76
  * Called when the {@link BaseStackedRenderableSeries} is detached from its parent {@link BaseStackedCollection}
77
77
  */
78
78
  BaseStackedRenderableSeries.prototype.onDetachFromParentCollection = function () {
79
- console.log("onDetachFromParentCollection");
79
+ // console.log("onDetachFromParentCollection");
80
80
  this.parentCollection = undefined;
81
81
  this.getParentSurfaceFn = undefined;
82
82
  this.notifyParentPropertyChangedFn = undefined;
@@ -67,12 +67,14 @@ var BaseSeriesDrawingProvider = /** @class */ (function (_super) {
67
67
  * @returns
68
68
  */
69
69
  BaseSeriesDrawingProvider.prototype.getStartAndCount = function (renderPassData, xValues) {
70
- var _a;
70
+ var _a, _b, _c;
71
71
  var pointSeries = renderPassData === null || renderPassData === void 0 ? void 0 : renderPassData.pointSeries;
72
+ var xAxis = (_a = this.parentSeries) === null || _a === void 0 ? void 0 : _a.xAxis;
73
+ var shouldClip = (_b = xAxis === null || xAxis === void 0 ? void 0 : xAxis.clipToXRange) !== null && _b !== void 0 ? _b : true; // fo the sake of tests
72
74
  var xCount = xValues.size();
73
75
  var count = Math.min(pointSeries ? pointSeries.indexes.size() : xCount, xCount);
74
76
  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) {
77
+ if (shouldClip && !(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) {
76
78
  if (renderPassData.indexRange.diff + 1 < count) {
77
79
  startIndex = renderPassData.indexRange.min;
78
80
  }
@@ -134,7 +136,7 @@ var BaseSeriesDrawingProvider = /** @class */ (function (_super) {
134
136
  }
135
137
  };
136
138
  BaseSeriesDrawingProvider.prototype.applyStrokeFillPaletting = function (stroke, strokePen, fill, fillBrush, opacity, usePalette, resetPenBrushColors) {
137
- var _a, _b, _c, _d, _e, _f;
139
+ var _a, _b, _c, _d, _e;
138
140
  if (usePalette === void 0) { usePalette = false; }
139
141
  if (resetPenBrushColors === void 0) { resetPenBrushColors = true; }
140
142
  var hasStrokePaletteProvider = this.parentSeries.hasStrokePaletteProvider();
@@ -166,20 +168,15 @@ var BaseSeriesDrawingProvider = /** @class */ (function (_super) {
166
168
  var dataSeries = this.parentSeries.dataSeries;
167
169
  var renderPassData = this.parentSeries.getCurrentRenderPassData();
168
170
  var pointSeries = renderPassData === null || renderPassData === void 0 ? void 0 : renderPassData.pointSeries;
169
- var xValues = (_a = pointSeries === null || pointSeries === void 0 ? void 0 : pointSeries.xValues) !== null && _a !== void 0 ? _a : dataSeries.getNativeXValues();
170
- var yValues = (_b = pointSeries === null || pointSeries === void 0 ? void 0 : pointSeries.yValues) !== null && _b !== void 0 ? _b : dataSeries.getNativeYValues();
171
- var drawCount = pointSeries ? pointSeries.indexes.size() : xValues.size();
172
- var indexStart = 0;
173
- 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) {
174
- drawCount = renderPassData.indexRange.diff + 1;
175
- indexStart = renderPassData.indexRange.min;
176
- }
171
+ var xValues = (_a = (pointSeries ? this.xSelector(pointSeries) : undefined)) !== null && _a !== void 0 ? _a : dataSeries.getNativeXValues();
172
+ var yValues = (_b = (pointSeries ? this.ySelector(pointSeries) : undefined)) !== null && _b !== void 0 ? _b : dataSeries.getNativeYValues();
173
+ var _f = this.getStartAndCount(renderPassData, xValues), startIndex = _f.startIndex, count = _f.count;
177
174
  if (!this.palettingState.palettedColors) {
178
175
  this.palettingState.palettedColors = new this.webAssemblyContext.UIntVector();
179
176
  }
180
177
  this.palettingState.paletteTextureCache.reset();
181
178
  this.palettingState.palettedColors.clear();
182
- this.palettingState.palettedColors.reserve(drawCount * 2);
179
+ this.palettingState.palettedColors.reserve(count * 2);
183
180
  // Commented this code out, because I don't know what this code does
184
181
  if (resetPenBrushColors) {
185
182
  if (strokePen) {
@@ -203,7 +200,7 @@ var BaseSeriesDrawingProvider = /** @class */ (function (_super) {
203
200
  }
204
201
  // Override stroke and fill colors
205
202
  var hashCode = 0;
206
- for (var index = indexStart; index < indexStart + drawCount; index++) {
203
+ for (var index = startIndex; index < startIndex + count; index++) {
207
204
  var originalDataIndex = pointSeries ? pointSeries.indexes.get(index) : index;
208
205
  if (originalDataIndex < 0)
209
206
  originalDataIndex = 0;
@@ -212,8 +209,8 @@ var BaseSeriesDrawingProvider = /** @class */ (function (_super) {
212
209
  var xValue = xValues.get(index);
213
210
  var yValue = yValues.get(index);
214
211
  var overriddenColors = this.overridePaletteProviderColors(this.parentSeries, xValue, yValue, originalDataIndex, opacity, dataSeries.getMetadataAt(originalDataIndex));
215
- var overrideStrokeColor = (_d = overriddenColors.stroke) !== null && _d !== void 0 ? _d : strokeColor;
216
- var overrideFillColor = (_e = overriddenColors.fill) !== null && _e !== void 0 ? _e : fillColor;
212
+ var overrideStrokeColor = (_c = overriddenColors.stroke) !== null && _c !== void 0 ? _c : strokeColor;
213
+ var overrideFillColor = (_d = overriddenColors.fill) !== null && _d !== void 0 ? _d : fillColor;
217
214
  this.palettingState.palettedColors.push_back(overrideStrokeColor);
218
215
  this.palettingState.palettedColors.push_back(overrideFillColor);
219
216
  hashCode = (0, number_1.numericHashCode)(hashCode, overrideStrokeColor);
@@ -230,7 +227,7 @@ var BaseSeriesDrawingProvider = /** @class */ (function (_super) {
230
227
  }
231
228
  else {
232
229
  this.palettingState.paletteTextureCache.reset();
233
- (_f = this.palettingState.palettedColors) === null || _f === void 0 ? void 0 : _f.clear();
230
+ (_e = this.palettingState.palettedColors) === null || _e === void 0 ? void 0 : _e.clear();
234
231
  // This was needed for resetPenBrushColors, therefore commented out as well
235
232
  if (strokePen) {
236
233
  if (this.palettingState.originalPenColor) {
@@ -18,6 +18,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.getLocateFile = exports.copyToCanvas = exports.getMasterCanvas = exports.createChartDestination = exports.SciChartSurfaceBase = exports.ESurfaceType = exports.DebugForDpi = void 0;
19
19
  var classFactory_1 = require("../../Builder/classFactory");
20
20
  var licenseManager2D_1 = require("../../Charting/Visuals/licenseManager2D");
21
+ var licenseManager3D_1 = require("../../Charting3D/Visuals/licenseManager3D");
21
22
  var DeletableEntity_1 = require("../../Core/DeletableEntity");
22
23
  var Deleter_1 = require("../../Core/Deleter");
23
24
  var EventHandler_1 = require("../../Core/EventHandler");
@@ -160,6 +161,8 @@ var SciChartSurfaceBase = /** @class */ (function (_super) {
160
161
  SciChartSurfaceBase.domMasterCanvas = undefined;
161
162
  }
162
163
  }
164
+ (0, licenseManager2D_1.forceReapplyLicense2D)();
165
+ (0, licenseManager3D_1.forceReapplyLicense3D)();
163
166
  // try {
164
167
  // if (process.env.NODE_ENV !== "production") {
165
168
  // if (MemoryUsageHelper.isMemoryUsageDebugEnabled) {
@@ -111,6 +111,7 @@ var initializeChartEngine = function () { return __awaiter(void 0, void 0, void
111
111
  WebGlHelper_1.WebGlHelper.initialize();
112
112
  if (!(!sciChartMaster.wasmContext || !sciChartMaster.createChildSurface || !sciChartMaster.getChildSurfaces)) return [3 /*break*/, 2];
113
113
  if (!sciChartMasterPromise) {
114
+ (0, licenseManager2D_1.forceReapplyLicense2D)();
114
115
  sciChartMasterPromise = createMaster();
115
116
  }
116
117
  return [4 /*yield*/, sciChartMasterPromise];
@@ -34,6 +34,7 @@ interface ILicenseCookie {
34
34
  lastValidated: Date;
35
35
  }
36
36
  export declare const getLicenseCookie: () => ILicenseCookie;
37
+ export declare const forceReapplyLicense2D: () => void;
37
38
  export declare const applyLicense: (licenseContext: TLicenseContext, sciChartSurface: ISciChartSurfaceBase) => void;
38
39
  export declare type TLicenseContext = {
39
40
  SCRTCredentials: {
@@ -36,7 +36,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
36
36
  }
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.licenseManager = exports.updateLicenseDisplay = exports.getLicenseInfo = exports.applyLicense = exports.getLicenseCookie = exports.setCallbacks3D = exports.setUseLicenseWizard = exports.setRuntimeLicenseKey = exports.setLicenseCallback = exports.setIsDebugLicensing = exports.setDependencies = void 0;
39
+ exports.licenseManager = exports.updateLicenseDisplay = exports.getLicenseInfo = exports.applyLicense = exports.forceReapplyLicense2D = exports.getLicenseCookie = exports.setCallbacks3D = exports.setUseLicenseWizard = exports.setRuntimeLicenseKey = exports.setLicenseCallback = exports.setIsDebugLicensing = exports.setDependencies = void 0;
40
40
  var app_1 = require("../../constants/app");
41
41
  var BuildStamp_1 = require("../../Core/BuildStamp");
42
42
  var Dictionary_1 = require("../../Core/Dictionary");
@@ -406,6 +406,10 @@ var dolicenseChallenge = function (licenseContext, sciChartSurface) { return __a
406
406
  });
407
407
  }); };
408
408
  var shouldApplyLicense2D = true;
409
+ var forceReapplyLicense2D = function () {
410
+ shouldApplyLicense2D = true;
411
+ };
412
+ exports.forceReapplyLicense2D = forceReapplyLicense2D;
409
413
  var checkStatus = licensingClasses_1.LicenseCheckStatus.NoLicense;
410
414
  // let licenseContext2D: TLicenseContext;
411
415
  // let sciChartSurface2D: SciChartSurfaceBase;
@@ -675,11 +679,8 @@ var createLicenseModal = function (message, postFormMessage) {
675
679
  closeDiv.innerHTML = "&times;";
676
680
  closeDiv.className = "licenseModalClose";
677
681
  modalHeader.appendChild(closeDiv);
678
- var modalInfo = document.createElement("div");
679
- modalInfo.style.padding = "10px 26px 10px 16px";
680
- modalInfo.innerHTML = "<ol><li>If you have not done so already, download the SciChart Cross Platform Licensing Wizard for\n <a href=\"https://github.com/ABTSoftware/SciChart.LicenseWizard/releases/latest/download/SciChart-Licensing-Wizard.exe\" download> Windows</a> or\n <a href=\"https://github.com/ABTSoftware/SciChart.LicenseWizard/releases/latest/download/SciChart-Licensing-Wizard.dmg\" download> macOS</a></li>\n <li>Install it and sign in with your SciChart username and password</li>\n <li>Start a trial for SciChart Web</li>\n <li>This web page should pick up your license from the wizard in a few seconds, or refresh the page</li>";
681
682
  var buttonLabel = document.createElement("div");
682
- modalInfo.innerHTML = "To toggle License debug mode use button below and refresh the page.";
683
+ buttonLabel.innerHTML = "If you contact support with a licensing issue, we will ask you to send us the license debug log.\n To toggle License debug mode use the button below and refresh the page, then check the console output. \n When copying the log, make sure to start from the beginning, indicated by the reported version number";
683
684
  var toggleDebugModeButton = document.createElement("button");
684
685
  toggleDebugModeButton.style.margin = "10px";
685
686
  var setDebugModeSwitchLabel = function () {
@@ -690,7 +691,6 @@ var createLicenseModal = function (message, postFormMessage) {
690
691
  (0, exports.setIsDebugLicensing)(!isDebug, true);
691
692
  setDebugModeSwitchLabel();
692
693
  };
693
- modalContentForm.appendChild(modalInfo);
694
694
  modalContentForm.appendChild(buttonLabel);
695
695
  modalContentForm.appendChild(toggleDebugModeButton);
696
696
  var modalFooter = document.createElement("div");
@@ -842,7 +842,7 @@ var updateLicenseDisplayInternal = function (licenseInfo, sciChartSurface, is2D,
842
842
  return;
843
843
  }
844
844
  // Update license message text
845
- var licensingLink = "<a href=\"https://www.scichart.com/licensing-scichart\" target=\"_blank\" style=\"color: white\">www.scichart.com/licensing-scichart</a>";
845
+ var licensingLink = "<a href=\"https://www.scichart.com/licensing-scichart-js\" target=\"_blank\" style=\"color: white\">www.scichart.com/licensing-scichart-js</a>";
846
846
  var contactSupportLink = "<a href=\"https://www.scichart.com/contact-us/\" target=\"_blank\" style=\"color: orange\">contact support</a>";
847
847
  if (licenseType === licensingClasses_1.LicenseType.NoLicense) {
848
848
  premsg = "You need to have a license to use SciChart. ";
@@ -850,7 +850,7 @@ var updateLicenseDisplayInternal = function (licenseInfo, sciChartSurface, is2D,
850
850
  }
851
851
  else if (licenseType === licensingClasses_1.LicenseType.Invalid) {
852
852
  if (error.startsWith("License is not valid for this domain"))
853
- premsg = "Sorry! Your license key is invalid for this domain</br>Please ".concat(contactSupportLink, " with your OrderID if you believe this to be incorrect.");
853
+ premsg = "Sorry! The runtime license key is not valid for this domain</br>\n Please ".concat(contactSupportLink, " with your OrderID if you believe this to be incorrect. <u>Click for more information</u></br>\n For local development, make sure the Licensing Wizard is running and activated.</br>\n To use Community Edition, remove the call to setRuntimeLicenseKey");
854
854
  else if (error.startsWith("This version of SciChart can no longer be trialed"))
855
855
  premsg = "Sorry! This version of SciChart is too old to be trialed. Please update to the latest version";
856
856
  else if (error.startsWith("This version of SciChart can no longer be used for the community edition"))
@@ -902,18 +902,18 @@ var updateLicenseDisplayInternal = function (licenseInfo, sciChartSurface, is2D,
902
902
  if (licenseType === licensingClasses_1.LicenseType.Community) {
903
903
  (0, Telemetry_1.sendTelemetry)();
904
904
  }
905
- chartmsg = "<br>Looking for Licensing Wizard... <u>Please run it or click for download and installation instructions</u>.";
905
+ chartmsg = "<br>Looking for Licensing Wizard...";
906
906
  }
907
907
  else if (checkStatus === licensingClasses_1.LicenseCheckStatus.FailedToFindLicenseWizard)
908
908
  if (licenseManager2dState_1.licenseManager2dState.getIsDev()) {
909
- chartmsg = "<br><u>Could not connect to the Licensing Wizard. Please run it or click for download and installation instructions, then reload this page.</u>";
909
+ chartmsg = "<br><u>Could not connect to the Licensing Wizard. Please run it, then reload this page.</u>";
910
910
  }
911
911
  else {
912
912
  chartmsg = "<br><u>Could not connect to the server licensing endpoint</u>";
913
913
  }
914
914
  else if (checkStatus === licensingClasses_1.LicenseCheckStatus.ValidatingDeveloperLicense)
915
915
  if (licenseManager2dState_1.licenseManager2dState.getIsDev()) {
916
- chartmsg = "<br><u>Trying to validate your license... Please run the Licensing Wizard or click for download and installation instructions</u>.";
916
+ chartmsg = "<br><u>Trying to validate your license...";
917
917
  }
918
918
  else {
919
919
  chartmsg = "<br><u>Trying to validate your license with the server...</u>.";
@@ -78,6 +78,7 @@ var createMultichart3d = function (divElement, options) { return __awaiter(void
78
78
  !sciChartMaster3D.createChildSurface ||
79
79
  !sciChartMaster3D.getChildSurfaces)) return [3 /*break*/, 3];
80
80
  if (!sciChartMaster3DPromise) {
81
+ (0, licenseManager3D_1.forceReapplyLicense3D)();
81
82
  sciChartMaster3DPromise = createMaster();
82
83
  }
83
84
  return [4 /*yield*/, sciChartMaster3DPromise];
@@ -1,3 +1,4 @@
1
1
  import { TSciChart3D } from "../../types/TSciChart3D";
2
2
  import { SciChart3DSurface } from "./SciChart3DSurface";
3
+ export declare const forceReapplyLicense3D: () => void;
3
4
  export declare const applyLicense3D: (licenseContext: TSciChart3D, sciChartSurface: SciChart3DSurface, isSingle: boolean) => void;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.applyLicense3D = void 0;
3
+ exports.applyLicense3D = exports.forceReapplyLicense3D = void 0;
4
4
  var licenseManager2D_1 = require("../../Charting/Visuals/licenseManager2D");
5
5
  // tslint:disable: no-console
6
6
  var getCallbacks3D = function (licenseContext3D, sciChartSurface) {
@@ -27,6 +27,10 @@ var getCallbacks3D = function (licenseContext3D, sciChartSurface) {
27
27
  }
28
28
  };
29
29
  };
30
+ var forceReapplyLicense3D = function () {
31
+ shouldApplyLicense3D = true;
32
+ };
33
+ exports.forceReapplyLicense3D = forceReapplyLicense3D;
30
34
  var shouldApplyLicense3D = true;
31
35
  // let licenseContext3D: TSciChart3D;
32
36
  // let sciChartSurface3D: SciChart3DSurface;
@@ -1,4 +1,4 @@
1
1
  import { TSciChart } from "../types/TSciChart";
2
2
  import { TSciChart3D } from "../types/TSciChart3D";
3
- export declare const libraryVersion = "3.2.446";
3
+ export declare const libraryVersion = "3.2.461";
4
4
  export declare const checkBuildStamp: (wasmContext: TSciChart | TSciChart3D) => boolean;
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.checkBuildStamp = exports.libraryVersion = void 0;
4
- var buildStamp = "2023-07-28T00:00:00";
4
+ var buildStamp = "2023-08-28T00:00:00";
5
5
  var result;
6
6
  // tslint:disable-next-line:no-var-requires
7
- exports.libraryVersion = "3.2.446";
7
+ exports.libraryVersion = "3.2.461";
8
8
  var checkBuildStamp = function (wasmContext) {
9
9
  if (result !== undefined)
10
10
  return result;