@pipsend/charts 2.3.1 → 2.3.2

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.1
3
+ * Pipsend Charts v2.3.2
4
4
  * Copyright (c) 2026 Pipsend
5
5
  * Licensed under MIT License
6
6
  * Built on TradingView Lightweight Charts™ (Apache 2.0)
@@ -27586,7 +27586,7 @@
27586
27586
  if (this._private__isOverAnotherDrawing()) {
27587
27587
  return;
27588
27588
  }
27589
- const point = this._private__toPanePoint(event);
27589
+ const point = this._private__toPanePoint(event, false);
27590
27590
  if (point === null) {
27591
27591
  return;
27592
27592
  }
@@ -27605,7 +27605,7 @@
27605
27605
  if (!this._private__isDrawing) {
27606
27606
  return;
27607
27607
  }
27608
- const point = this._private__toPanePoint(event);
27608
+ const point = this._private__toPanePoint(event, true);
27609
27609
  if (point === null) {
27610
27610
  return;
27611
27611
  }
@@ -27676,13 +27676,51 @@
27676
27676
  }
27677
27677
  this._private__pointerId = null;
27678
27678
  }
27679
- _private__toPanePoint(event) {
27679
+ /**
27680
+ * Where a press lands relative to the drawing area, or null if it lands
27681
+ * outside it. `clamp` pins the point to the edge instead, for a stroke that
27682
+ * is already under way.
27683
+ */
27684
+ _private__toPanePoint(event, clamp) {
27685
+ const area = this._private__drawArea();
27686
+ if (area === null) {
27687
+ return null;
27688
+ }
27689
+ const x = event.clientX - area._internal_left;
27690
+ const y = event.clientY - area._internal_top;
27691
+ if (clamp) {
27692
+ return {
27693
+ _internal_x: Math.max(0, Math.min(area._internal_width, x)),
27694
+ _internal_y: Math.max(0, Math.min(area._internal_height, y)),
27695
+ };
27696
+ }
27697
+ if (x < 0 || x > area._internal_width || y < 0 || y > area._internal_height) {
27698
+ return null;
27699
+ }
27700
+ return { _internal_x: x, _internal_y: y };
27701
+ }
27702
+ /**
27703
+ * The pane's element is the whole row, price axis cells included, so its
27704
+ * bounds are not the drawing area's. Taking them for it is what let a press
27705
+ * on an axis start a stroke — and be swallowed, leaving the chart unable to
27706
+ * be stretched while the brush was armed.
27707
+ */
27708
+ _private__drawArea() {
27680
27709
  const paneElement = this._private__paneElement();
27681
27710
  if (paneElement === null) {
27682
27711
  return null;
27683
27712
  }
27684
27713
  const rect = paneElement.getBoundingClientRect();
27685
- return { _internal_x: event.clientX - rect.left, _internal_y: event.clientY - rect.top };
27714
+ let left = 0;
27715
+ let width = rect.width;
27716
+ // The time scale measures the drawing area; the left axis, when shown, is
27717
+ // what stands between it and the row's edge.
27718
+ const paneWidth = this._chart.timeScale().width();
27719
+ if (paneWidth > 0) {
27720
+ left = this._chart.priceScale('left').width();
27721
+ width = paneWidth;
27722
+ }
27723
+ return { _internal_left: rect.left + left, _internal_top: rect.top, _internal_width: width, _internal_height: rect.height };
27686
27724
  }
27687
27725
  _private__paneElement() {
27688
27726
  try {
@@ -31041,7 +31079,7 @@
31041
31079
  * Returns the current version as a string. For example `'1.0.0'`.
31042
31080
  */
31043
31081
  function version() {
31044
- return "2.3.1";
31082
+ return "2.3.2";
31045
31083
  }
31046
31084
 
31047
31085
  var PipsendChartsModule = /*#__PURE__*/Object.freeze({
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * @license
3
- * Pipsend Charts v2.3.1
3
+ * Pipsend Charts v2.3.2
4
4
  * Copyright (c) 2026 Pipsend
5
5
  * Licensed under MIT License
6
6
  * Built on TradingView Lightweight Charts™ (Apache 2.0)
@@ -27583,7 +27583,7 @@ class BrushTool extends DrawingToolBase {
27583
27583
  if (this._private__isOverAnotherDrawing()) {
27584
27584
  return;
27585
27585
  }
27586
- const point = this._private__toPanePoint(event);
27586
+ const point = this._private__toPanePoint(event, false);
27587
27587
  if (point === null) {
27588
27588
  return;
27589
27589
  }
@@ -27602,7 +27602,7 @@ class BrushTool extends DrawingToolBase {
27602
27602
  if (!this._private__isDrawing) {
27603
27603
  return;
27604
27604
  }
27605
- const point = this._private__toPanePoint(event);
27605
+ const point = this._private__toPanePoint(event, true);
27606
27606
  if (point === null) {
27607
27607
  return;
27608
27608
  }
@@ -27673,13 +27673,51 @@ class BrushTool extends DrawingToolBase {
27673
27673
  }
27674
27674
  this._private__pointerId = null;
27675
27675
  }
27676
- _private__toPanePoint(event) {
27676
+ /**
27677
+ * Where a press lands relative to the drawing area, or null if it lands
27678
+ * outside it. `clamp` pins the point to the edge instead, for a stroke that
27679
+ * is already under way.
27680
+ */
27681
+ _private__toPanePoint(event, clamp) {
27682
+ const area = this._private__drawArea();
27683
+ if (area === null) {
27684
+ return null;
27685
+ }
27686
+ const x = event.clientX - area._internal_left;
27687
+ const y = event.clientY - area._internal_top;
27688
+ if (clamp) {
27689
+ return {
27690
+ _internal_x: Math.max(0, Math.min(area._internal_width, x)),
27691
+ _internal_y: Math.max(0, Math.min(area._internal_height, y)),
27692
+ };
27693
+ }
27694
+ if (x < 0 || x > area._internal_width || y < 0 || y > area._internal_height) {
27695
+ return null;
27696
+ }
27697
+ return { _internal_x: x, _internal_y: y };
27698
+ }
27699
+ /**
27700
+ * The pane's element is the whole row, price axis cells included, so its
27701
+ * bounds are not the drawing area's. Taking them for it is what let a press
27702
+ * on an axis start a stroke — and be swallowed, leaving the chart unable to
27703
+ * be stretched while the brush was armed.
27704
+ */
27705
+ _private__drawArea() {
27677
27706
  const paneElement = this._private__paneElement();
27678
27707
  if (paneElement === null) {
27679
27708
  return null;
27680
27709
  }
27681
27710
  const rect = paneElement.getBoundingClientRect();
27682
- return { _internal_x: event.clientX - rect.left, _internal_y: event.clientY - rect.top };
27711
+ let left = 0;
27712
+ let width = rect.width;
27713
+ // The time scale measures the drawing area; the left axis, when shown, is
27714
+ // what stands between it and the row's edge.
27715
+ const paneWidth = this._chart.timeScale().width();
27716
+ if (paneWidth > 0) {
27717
+ left = this._chart.priceScale('left').width();
27718
+ width = paneWidth;
27719
+ }
27720
+ return { _internal_left: rect.left + left, _internal_top: rect.top, _internal_width: width, _internal_height: rect.height };
27683
27721
  }
27684
27722
  _private__paneElement() {
27685
27723
  try {
@@ -31038,7 +31076,7 @@ const customSeriesDefaultOptions = {
31038
31076
  * Returns the current version as a string. For example `'1.0.0'`.
31039
31077
  */
31040
31078
  function version() {
31041
- return "2.3.1";
31079
+ return "2.3.2";
31042
31080
  }
31043
31081
 
31044
31082
  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 };