@pipsend/charts 2.3.14 → 2.3.16

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.
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * @license
3
- * Pipsend Charts v2.3.14
3
+ * Pipsend Charts v2.3.16-dev+202610080459
4
4
  * Copyright (c) 2026 Pipsend
5
5
  * Licensed under MIT License
6
6
  * Built on TradingView Lightweight Charts™ (Apache 2.0)
@@ -4574,18 +4574,16 @@ class PriceScale {
4574
4574
  this._private__invalidateInternalHeightCache();
4575
4575
  }
4576
4576
  if (priceRange !== null) {
4577
- // keep current range is new is empty
4578
- if (priceRange._internal_minValue() === priceRange._internal_maxValue()) {
4579
- // if price range is degenerated to 1 point let's extend it by 10 min move values
4580
- // to avoid incorrect range and empty (blank) scale (in case of min tick much greater than 1)
4581
- const extendValue = 5 * this._internal_minMove();
4582
- if (this._internal_isLog()) {
4583
- priceRange = convertPriceRangeFromLog(priceRange, this._private__logFormula);
4584
- }
4585
- priceRange = new PriceRangeImpl(priceRange._internal_minValue() - extendValue, priceRange._internal_maxValue() + extendValue);
4586
- if (this._internal_isLog()) {
4587
- priceRange = convertPriceRangeToLog(priceRange, this._private__logFormula);
4588
- }
4577
+ // a range flat or narrower than 10 min moves leaves room for one tick mark at most,
4578
+ // so widen it around its center to keep a readable scale
4579
+ const isLog = this._internal_isLog();
4580
+ const rawRange = isLog ? convertPriceRangeFromLog(priceRange, this._private__logFormula) : priceRange;
4581
+ const minimumLength = this._internal_isPercentage() || this._internal_isIndexedTo100() ? 0 : 10 * this._internal_minMove();
4582
+ if (rawRange._internal_minValue() === rawRange._internal_maxValue() || rawRange._internal_length() < minimumLength) {
4583
+ const extendValue = Math.max(5 * this._internal_minMove(), minimumLength / 2);
4584
+ const center = (rawRange._internal_minValue() + rawRange._internal_maxValue()) / 2;
4585
+ const widened = new PriceRangeImpl(center - extendValue, center + extendValue);
4586
+ priceRange = isLog ? convertPriceRangeToLog(widened, this._private__logFormula) : widened;
4589
4587
  }
4590
4588
  if (this._internal_isLog()) {
4591
4589
  const rawRange = convertPriceRangeFromLog(priceRange, this._private__logFormula);
@@ -14291,6 +14289,9 @@ function calculateShapeHeight(barSpacing) {
14291
14289
  function shapeMargin(barSpacing) {
14292
14290
  return Math.max(size(barSpacing, 0.1), 3 /* Constants.MinShapeMargin */);
14293
14291
  }
14292
+ function barGap(barSpacing) {
14293
+ return Math.max(shapeMargin(barSpacing), 10 /* Constants.MinBarGap */);
14294
+ }
14294
14295
  function calculateAdjustedMargin(margin, hasSide, hasInBar) {
14295
14296
  if (hasSide) {
14296
14297
  return margin;
@@ -14917,17 +14918,18 @@ class SeriesMarkersPaneView {
14917
14918
  }
14918
14919
  let prevTimeIndex = NaN;
14919
14920
  const shapeMargin$1 = shapeMargin(timeScale.options().barSpacing);
14921
+ const barGap$1 = barGap(timeScale.options().barSpacing);
14920
14922
  const offsets = {
14921
- _internal_aboveBar: shapeMargin$1,
14922
- _internal_belowBar: shapeMargin$1,
14923
+ _internal_aboveBar: barGap$1,
14924
+ _internal_belowBar: barGap$1,
14923
14925
  };
14924
14926
  this._private__data._internal_visibleRange = visibleTimedValues(this._private__data._internal_items, visibleBarsRange, true);
14925
14927
  for (let index = this._private__data._internal_visibleRange.from; index < this._private__data._internal_visibleRange.to; index++) {
14926
14928
  const marker = seriesMarkers[index];
14927
14929
  if (marker.time !== prevTimeIndex) {
14928
14930
  // new bar, reset stack counter
14929
- offsets._internal_aboveBar = shapeMargin$1;
14930
- offsets._internal_belowBar = shapeMargin$1;
14931
+ offsets._internal_aboveBar = barGap$1;
14932
+ offsets._internal_belowBar = barGap$1;
14931
14933
  prevTimeIndex = marker.time;
14932
14934
  }
14933
14935
  const rendererItem = this._private__data._internal_items[index];
@@ -15044,7 +15046,7 @@ class SeriesMarkersPrimitive {
15044
15046
  this._private__cachedBarSpacing = barSpacing;
15045
15047
  if (this._private__markers.length > 0) {
15046
15048
  const shapeMargin$1 = shapeMargin(barSpacing);
15047
- const marginValue = calculateShapeHeight(barSpacing) * 1.5 + shapeMargin$1 * 2;
15049
+ const marginValue = calculateShapeHeight(barSpacing) * 1.5 + shapeMargin$1 + barGap(barSpacing);
15048
15050
  const positions = this._private__getMarkerPositions();
15049
15051
  this._private__autoScaleMargins = {
15050
15052
  above: calculateAdjustedMargin(marginValue, positions.aboveBar, positions.inBar),
@@ -17547,10 +17549,13 @@ function applyHeikinAshi(series, chart, options = {}) {
17547
17549
  const blankSource = (blank) => {
17548
17550
  if (blank && restoreSourcePaint === null) {
17549
17551
  restoreSourcePaint = hideSeriesPaint(series);
17552
+ // Under the blank source, so what hangs off it draws over the candles.
17553
+ haSeries.setSeriesOrder(series.seriesOrder());
17550
17554
  }
17551
17555
  else if (!blank && restoreSourcePaint !== null) {
17552
17556
  restoreSourcePaint();
17553
17557
  restoreSourcePaint = null;
17558
+ haSeries.setSeriesOrder(series.seriesOrder() + 1);
17554
17559
  }
17555
17560
  };
17556
17561
  const runtime = bindIndicator({
@@ -17579,8 +17584,9 @@ function applyHeikinAshi(series, chart, options = {}) {
17579
17584
  blankSource(current.hideSource === true);
17580
17585
  },
17581
17586
  });
17582
- const handle = {
17583
- _internal_series: haSeries,
17587
+ // Returned as a literal: a local annotation would let the property renamer mangle `series`.
17588
+ return {
17589
+ series: haSeries,
17584
17590
  options: runtime.options,
17585
17591
  applyOptions: runtime.applyOptions,
17586
17592
  recalculate: runtime.recalculate,
@@ -17596,7 +17602,6 @@ function applyHeikinAshi(series, chart, options = {}) {
17596
17602
  }
17597
17603
  },
17598
17604
  };
17599
- return handle;
17600
17605
  }
17601
17606
 
17602
17607
  /**
@@ -31045,7 +31050,7 @@ const customSeriesDefaultOptions = {
31045
31050
  * Returns the current version as a string. For example `'1.0.0'`.
31046
31051
  */
31047
31052
  function version() {
31048
- return "2.3.14";
31053
+ return "2.3.16-dev+202610080459";
31049
31054
  }
31050
31055
 
31051
31056
  export { areaSeries as AreaSeries, ArrowTool, barSeries as BarSeries, baselineSeries as BaselineSeries, BrushTool, candlestickSeries as CandlestickSeries, CircleTool, ColorType, CrossLineTool, CrosshairMode, DEFAULT_SESSIONS, DraggablePriceLine, DrawingToolsManager, EXTENDED_FIBONACCI_RATIOS, FibonacciCalculator, FibonacciExtensionTool, FibonacciFanTool, FibonacciTool, GanttTool, histogramSeries as HistogramSeries, HorizontalLineTool, InteractiveLineManager, LastPriceAnimationMode, lineSeries as LineSeries, LineStyle, LineType, MismatchDirection, ParallelChannelTool, PitchforkTool, PolygonTool, PositionCalculator, PositionLine, PositionMarkersManager, PositionTool, PriceLineSource, PriceScaleMode, RectangleTool, RulerCalculator, RulerTool, STANDARD_FIBONACCI_RATIOS, TextTool, TickMarkType, TrackingModeExitMode, TradingSessionsIndicator, TrendLineTool, VerticalLineTool, VolumeProfileIndicator, applyADX, applyATR, applyBollingerBands, applyCCI, applyDonchianChannels, applyEMA, applyHeikinAshi, applyIchimoku, applyKeltnerChannels, applyMACD, applyMFI, applyOBV, applyParabolicSAR, applyPivotPoints, applyRSI, applySMA, applyStochastic, applySuperTrend, applyVWAP, applyVolume, applyWMA, applyWilliamsR, calculateHeikinAshi, calculatePipConfig, coordinateFromTime, createArrowTool, createBrushTool, createChart, createChartEx, createCircleTool, createCrossLineTool, createFibonacciExtensionTool, createFibonacciFanTool, createFibonacciTool, createGanttTool, createHorizontalLineTool, createImageWatermark, createInteractiveLineManager, createOptionsChart, createParallelChannelTool, createPitchforkTool, createPolygonTool, createPositionLine, createPositionMarkers, createPositionTool, createRectangleTool, createRulerTool, createSeriesMarkers, createTextTool, createTextWatermark, createTradingLine, createTradingSessionsIndicator, createTrendLineTool, createUpDownMarkers, createVerticalLineTool, createVolumeProfileIndicator, createYieldCurveChart, customSeriesDefaultOptions, defaultHorzScaleBehavior, getPipConfig, hideSeriesPaint, isBusinessDay, isUTCTimestamp, setSeriesVolumes, setVolumeProfileData, timeFromCoordinate, version };