hyperprop-charting-library 0.1.28 → 0.1.29

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.
@@ -2665,9 +2665,11 @@ function createChart(element, options = {}) {
2665
2665
  };
2666
2666
  const setData = (nextData) => {
2667
2667
  const hadData = data.length > 0;
2668
+ const previousCount = data.length;
2668
2669
  const previousCenterRounded = hadData ? Math.round(xCenter) : 0;
2669
2670
  const previousCenterFraction = hadData ? xCenter - previousCenterRounded : 0;
2670
2671
  const previousCenterTimeMs = hadData && previousCenterRounded >= 0 && previousCenterRounded < data.length ? data[previousCenterRounded]?.time.getTime() ?? null : null;
2672
+ const wasAtRightEdge = hadData && xCenter + xSpan / 2 >= previousCount - 1;
2671
2673
  data = parseData(nextData);
2672
2674
  if (data.length === 0) {
2673
2675
  xCenter = 0;
@@ -2681,7 +2683,9 @@ function createChart(element, options = {}) {
2681
2683
  resetYViewport();
2682
2684
  } else {
2683
2685
  if (mergedOptions.preserveViewportOnDataUpdate) {
2684
- if (previousCenterTimeMs !== null) {
2686
+ if (wasAtRightEdge) {
2687
+ xCenter = data.length - xSpan / 2 + rightEdgePaddingBars;
2688
+ } else if (previousCenterTimeMs !== null) {
2685
2689
  const nextCenter = findNearestIndexForTimeMs(previousCenterTimeMs);
2686
2690
  if (nextCenter !== null) {
2687
2691
  xCenter = nextCenter + previousCenterFraction;
@@ -2641,9 +2641,11 @@ function createChart(element, options = {}) {
2641
2641
  };
2642
2642
  const setData = (nextData) => {
2643
2643
  const hadData = data.length > 0;
2644
+ const previousCount = data.length;
2644
2645
  const previousCenterRounded = hadData ? Math.round(xCenter) : 0;
2645
2646
  const previousCenterFraction = hadData ? xCenter - previousCenterRounded : 0;
2646
2647
  const previousCenterTimeMs = hadData && previousCenterRounded >= 0 && previousCenterRounded < data.length ? data[previousCenterRounded]?.time.getTime() ?? null : null;
2648
+ const wasAtRightEdge = hadData && xCenter + xSpan / 2 >= previousCount - 1;
2647
2649
  data = parseData(nextData);
2648
2650
  if (data.length === 0) {
2649
2651
  xCenter = 0;
@@ -2657,7 +2659,9 @@ function createChart(element, options = {}) {
2657
2659
  resetYViewport();
2658
2660
  } else {
2659
2661
  if (mergedOptions.preserveViewportOnDataUpdate) {
2660
- if (previousCenterTimeMs !== null) {
2662
+ if (wasAtRightEdge) {
2663
+ xCenter = data.length - xSpan / 2 + rightEdgePaddingBars;
2664
+ } else if (previousCenterTimeMs !== null) {
2661
2665
  const nextCenter = findNearestIndexForTimeMs(previousCenterTimeMs);
2662
2666
  if (nextCenter !== null) {
2663
2667
  xCenter = nextCenter + previousCenterFraction;
package/dist/index.cjs CHANGED
@@ -2665,9 +2665,11 @@ function createChart(element, options = {}) {
2665
2665
  };
2666
2666
  const setData = (nextData) => {
2667
2667
  const hadData = data.length > 0;
2668
+ const previousCount = data.length;
2668
2669
  const previousCenterRounded = hadData ? Math.round(xCenter) : 0;
2669
2670
  const previousCenterFraction = hadData ? xCenter - previousCenterRounded : 0;
2670
2671
  const previousCenterTimeMs = hadData && previousCenterRounded >= 0 && previousCenterRounded < data.length ? data[previousCenterRounded]?.time.getTime() ?? null : null;
2672
+ const wasAtRightEdge = hadData && xCenter + xSpan / 2 >= previousCount - 1;
2671
2673
  data = parseData(nextData);
2672
2674
  if (data.length === 0) {
2673
2675
  xCenter = 0;
@@ -2681,7 +2683,9 @@ function createChart(element, options = {}) {
2681
2683
  resetYViewport();
2682
2684
  } else {
2683
2685
  if (mergedOptions.preserveViewportOnDataUpdate) {
2684
- if (previousCenterTimeMs !== null) {
2686
+ if (wasAtRightEdge) {
2687
+ xCenter = data.length - xSpan / 2 + rightEdgePaddingBars;
2688
+ } else if (previousCenterTimeMs !== null) {
2685
2689
  const nextCenter = findNearestIndexForTimeMs(previousCenterTimeMs);
2686
2690
  if (nextCenter !== null) {
2687
2691
  xCenter = nextCenter + previousCenterFraction;
package/dist/index.js CHANGED
@@ -2641,9 +2641,11 @@ function createChart(element, options = {}) {
2641
2641
  };
2642
2642
  const setData = (nextData) => {
2643
2643
  const hadData = data.length > 0;
2644
+ const previousCount = data.length;
2644
2645
  const previousCenterRounded = hadData ? Math.round(xCenter) : 0;
2645
2646
  const previousCenterFraction = hadData ? xCenter - previousCenterRounded : 0;
2646
2647
  const previousCenterTimeMs = hadData && previousCenterRounded >= 0 && previousCenterRounded < data.length ? data[previousCenterRounded]?.time.getTime() ?? null : null;
2648
+ const wasAtRightEdge = hadData && xCenter + xSpan / 2 >= previousCount - 1;
2647
2649
  data = parseData(nextData);
2648
2650
  if (data.length === 0) {
2649
2651
  xCenter = 0;
@@ -2657,7 +2659,9 @@ function createChart(element, options = {}) {
2657
2659
  resetYViewport();
2658
2660
  } else {
2659
2661
  if (mergedOptions.preserveViewportOnDataUpdate) {
2660
- if (previousCenterTimeMs !== null) {
2662
+ if (wasAtRightEdge) {
2663
+ xCenter = data.length - xSpan / 2 + rightEdgePaddingBars;
2664
+ } else if (previousCenterTimeMs !== null) {
2661
2665
  const nextCenter = findNearestIndexForTimeMs(previousCenterTimeMs);
2662
2666
  if (nextCenter !== null) {
2663
2667
  xCenter = nextCenter + previousCenterFraction;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hyperprop-charting-library",
3
- "version": "0.1.28",
3
+ "version": "0.1.29",
4
4
  "description": "Lightweight TypeScript charting core",
5
5
  "type": "module",
6
6
  "main": "./dist/hyperprop-charting-library.cjs",