@tradecanvas/core 1.1.0 → 1.3.0

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 (188) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +4 -6
  3. package/dist/axis/GridRenderer.d.ts.map +1 -1
  4. package/dist/axis/PriceAxis.d.ts +6 -0
  5. package/dist/axis/PriceAxis.d.ts.map +1 -1
  6. package/dist/axis/TimeAxis.d.ts.map +1 -1
  7. package/dist/drawings/DrawingManager.d.ts +39 -0
  8. package/dist/drawings/DrawingManager.d.ts.map +1 -1
  9. package/dist/drawings/tools/AnchoredVWAP.d.ts +7 -0
  10. package/dist/drawings/tools/AnchoredVWAP.d.ts.map +1 -1
  11. package/dist/drawings/tools/Circle.d.ts +14 -0
  12. package/dist/drawings/tools/Circle.d.ts.map +1 -0
  13. package/dist/drawings/tools/CrossLine.d.ts +13 -0
  14. package/dist/drawings/tools/CrossLine.d.ts.map +1 -0
  15. package/dist/drawings/tools/CyclicLines.d.ts +15 -0
  16. package/dist/drawings/tools/CyclicLines.d.ts.map +1 -0
  17. package/dist/drawings/tools/DateAndPriceRange.d.ts +17 -0
  18. package/dist/drawings/tools/DateAndPriceRange.d.ts.map +1 -0
  19. package/dist/drawings/tools/FibChannel.d.ts +19 -0
  20. package/dist/drawings/tools/FibChannel.d.ts.map +1 -0
  21. package/dist/drawings/tools/FibSpeedResistanceFan.d.ts +26 -0
  22. package/dist/drawings/tools/FibSpeedResistanceFan.d.ts.map +1 -0
  23. package/dist/drawings/tools/HorizontalRay.d.ts +18 -0
  24. package/dist/drawings/tools/HorizontalRay.d.ts.map +1 -0
  25. package/dist/drawings/tools/InfoLine.d.ts +15 -0
  26. package/dist/drawings/tools/InfoLine.d.ts.map +1 -0
  27. package/dist/drawings/tools/Pitchfork.d.ts +17 -6
  28. package/dist/drawings/tools/Pitchfork.d.ts.map +1 -1
  29. package/dist/drawings/tools/PriceLabel.d.ts +15 -0
  30. package/dist/drawings/tools/PriceLabel.d.ts.map +1 -0
  31. package/dist/drawings/tools/RiskReward.d.ts +20 -0
  32. package/dist/drawings/tools/RiskReward.d.ts.map +1 -0
  33. package/dist/drawings/tools/TrendAngle.d.ts +18 -0
  34. package/dist/drawings/tools/TrendAngle.d.ts.map +1 -0
  35. package/dist/drawings/tools/index.d.ts +13 -0
  36. package/dist/drawings/tools/index.d.ts.map +1 -1
  37. package/dist/drawings/tools/labels.d.ts +27 -0
  38. package/dist/drawings/tools/labels.d.ts.map +1 -0
  39. package/dist/drawings/tools/patterns.d.ts +64 -0
  40. package/dist/drawings/tools/patterns.d.ts.map +1 -0
  41. package/dist/engine/LayerManager.d.ts +8 -1
  42. package/dist/engine/LayerManager.d.ts.map +1 -1
  43. package/dist/engine/RenderEngine.d.ts +20 -4
  44. package/dist/engine/RenderEngine.d.ts.map +1 -1
  45. package/dist/engine/RenderLoop.d.ts.map +1 -1
  46. package/dist/features/AlertManager.d.ts.map +1 -1
  47. package/dist/features/MeasureOverlay.d.ts +1 -1
  48. package/dist/features/MeasureOverlay.d.ts.map +1 -1
  49. package/dist/features/SelectionBoxOverlay.d.ts +29 -0
  50. package/dist/features/SelectionBoxOverlay.d.ts.map +1 -0
  51. package/dist/features/UndoRedoManager.d.ts +3 -1
  52. package/dist/features/UndoRedoManager.d.ts.map +1 -1
  53. package/dist/features/index.d.ts +2 -0
  54. package/dist/features/index.d.ts.map +1 -1
  55. package/dist/finance/GaugeRenderer.d.ts +39 -1
  56. package/dist/finance/GaugeRenderer.d.ts.map +1 -1
  57. package/dist/index.cjs +11 -11
  58. package/dist/index.cjs.map +1 -1
  59. package/dist/index.js +3155 -1576
  60. package/dist/index.js.map +1 -1
  61. package/dist/indicators/IndicatorBase.d.ts +10 -1
  62. package/dist/indicators/IndicatorBase.d.ts.map +1 -1
  63. package/dist/indicators/IndicatorEngine.d.ts +19 -1
  64. package/dist/indicators/IndicatorEngine.d.ts.map +1 -1
  65. package/dist/indicators/IndicatorValueMap.d.ts +38 -0
  66. package/dist/indicators/IndicatorValueMap.d.ts.map +1 -0
  67. package/dist/indicators/index.d.ts +5 -0
  68. package/dist/indicators/index.d.ts.map +1 -1
  69. package/dist/indicators/overlay/Alligator.d.ts.map +1 -1
  70. package/dist/indicators/overlay/AnchoredVWAP.d.ts.map +1 -1
  71. package/dist/indicators/overlay/BollingerBands.d.ts +1 -0
  72. package/dist/indicators/overlay/BollingerBands.d.ts.map +1 -1
  73. package/dist/indicators/overlay/ChandelierExit.d.ts.map +1 -1
  74. package/dist/indicators/overlay/DonchianChannel.d.ts.map +1 -1
  75. package/dist/indicators/overlay/EMA.d.ts +1 -0
  76. package/dist/indicators/overlay/EMA.d.ts.map +1 -1
  77. package/dist/indicators/overlay/Envelope.d.ts +18 -0
  78. package/dist/indicators/overlay/Envelope.d.ts.map +1 -0
  79. package/dist/indicators/overlay/HullMA.d.ts.map +1 -1
  80. package/dist/indicators/overlay/Ichimoku.d.ts.map +1 -1
  81. package/dist/indicators/overlay/KeltnerChannel.d.ts.map +1 -1
  82. package/dist/indicators/overlay/LinearRegressionChannel.d.ts.map +1 -1
  83. package/dist/indicators/overlay/MTFMovingAverage.d.ts.map +1 -1
  84. package/dist/indicators/overlay/ParabolicSAR.d.ts.map +1 -1
  85. package/dist/indicators/overlay/PivotPoints.d.ts.map +1 -1
  86. package/dist/indicators/overlay/SMA.d.ts +1 -0
  87. package/dist/indicators/overlay/SMA.d.ts.map +1 -1
  88. package/dist/indicators/overlay/SessionVWAP.d.ts.map +1 -1
  89. package/dist/indicators/overlay/Supertrend.d.ts.map +1 -1
  90. package/dist/indicators/overlay/TEMA.d.ts +21 -0
  91. package/dist/indicators/overlay/TEMA.d.ts.map +1 -0
  92. package/dist/indicators/overlay/VWAP.d.ts.map +1 -1
  93. package/dist/indicators/overlay/VWMA.d.ts +17 -0
  94. package/dist/indicators/overlay/VWMA.d.ts.map +1 -0
  95. package/dist/indicators/overlay/WMA.d.ts +23 -0
  96. package/dist/indicators/overlay/WMA.d.ts.map +1 -0
  97. package/dist/indicators/overlay/ZigZag.d.ts.map +1 -1
  98. package/dist/indicators/panel/ADX.d.ts.map +1 -1
  99. package/dist/indicators/panel/ATR.d.ts +1 -0
  100. package/dist/indicators/panel/ATR.d.ts.map +1 -1
  101. package/dist/indicators/panel/AcceleratorOscillator.d.ts.map +1 -1
  102. package/dist/indicators/panel/AccumulationDistribution.d.ts.map +1 -1
  103. package/dist/indicators/panel/Aroon.d.ts.map +1 -1
  104. package/dist/indicators/panel/AwesomeOscillator.d.ts.map +1 -1
  105. package/dist/indicators/panel/BalanceOfPower.d.ts.map +1 -1
  106. package/dist/indicators/panel/CCI.d.ts.map +1 -1
  107. package/dist/indicators/panel/CMF.d.ts.map +1 -1
  108. package/dist/indicators/panel/ChaikinOscillator.d.ts.map +1 -1
  109. package/dist/indicators/panel/ChaikinVolatility.d.ts.map +1 -1
  110. package/dist/indicators/panel/ChandeMomentum.d.ts.map +1 -1
  111. package/dist/indicators/panel/ChoppinessIndex.d.ts.map +1 -1
  112. package/dist/indicators/panel/ConnorsRSI.d.ts.map +1 -1
  113. package/dist/indicators/panel/Coppock.d.ts.map +1 -1
  114. package/dist/indicators/panel/DetrendedPriceOscillator.d.ts.map +1 -1
  115. package/dist/indicators/panel/DisparityIndex.d.ts.map +1 -1
  116. package/dist/indicators/panel/EaseOfMovement.d.ts.map +1 -1
  117. package/dist/indicators/panel/ElderRay.d.ts.map +1 -1
  118. package/dist/indicators/panel/FisherTransform.d.ts.map +1 -1
  119. package/dist/indicators/panel/ForceIndex.d.ts.map +1 -1
  120. package/dist/indicators/panel/KST.d.ts.map +1 -1
  121. package/dist/indicators/panel/Klinger.d.ts.map +1 -1
  122. package/dist/indicators/panel/MACD.d.ts +3 -0
  123. package/dist/indicators/panel/MACD.d.ts.map +1 -1
  124. package/dist/indicators/panel/MFI.d.ts.map +1 -1
  125. package/dist/indicators/panel/MassIndex.d.ts.map +1 -1
  126. package/dist/indicators/panel/OBV.d.ts +1 -0
  127. package/dist/indicators/panel/OBV.d.ts.map +1 -1
  128. package/dist/indicators/panel/PercentagePriceOscillator.d.ts.map +1 -1
  129. package/dist/indicators/panel/PrettyGoodOscillator.d.ts.map +1 -1
  130. package/dist/indicators/panel/PriceVolumeTrend.d.ts.map +1 -1
  131. package/dist/indicators/panel/Qstick.d.ts.map +1 -1
  132. package/dist/indicators/panel/ROC.d.ts.map +1 -1
  133. package/dist/indicators/panel/RSI.d.ts +3 -0
  134. package/dist/indicators/panel/RSI.d.ts.map +1 -1
  135. package/dist/indicators/panel/RelativeMomentumIndex.d.ts.map +1 -1
  136. package/dist/indicators/panel/RelativeVigor.d.ts.map +1 -1
  137. package/dist/indicators/panel/SchaffTrendCycle.d.ts.map +1 -1
  138. package/dist/indicators/panel/StdDev.d.ts.map +1 -1
  139. package/dist/indicators/panel/Stochastic.d.ts +1 -0
  140. package/dist/indicators/panel/Stochastic.d.ts.map +1 -1
  141. package/dist/indicators/panel/StochasticRSI.d.ts.map +1 -1
  142. package/dist/indicators/panel/TRIX.d.ts.map +1 -1
  143. package/dist/indicators/panel/TSI.d.ts.map +1 -1
  144. package/dist/indicators/panel/UltimateOscillator.d.ts.map +1 -1
  145. package/dist/indicators/panel/VROC.d.ts.map +1 -1
  146. package/dist/indicators/panel/VolumeDelta.d.ts.map +1 -1
  147. package/dist/indicators/panel/VolumeProfile.d.ts.map +1 -1
  148. package/dist/indicators/panel/Vortex.d.ts.map +1 -1
  149. package/dist/indicators/panel/WilliamsAD.d.ts.map +1 -1
  150. package/dist/indicators/panel/WilliamsR.d.ts.map +1 -1
  151. package/dist/indicators/registry.d.ts.map +1 -1
  152. package/dist/indicators/tick.bench.d.ts +2 -0
  153. package/dist/indicators/tick.bench.d.ts.map +1 -0
  154. package/dist/indicators/worker/messages.d.ts +6 -0
  155. package/dist/indicators/worker/messages.d.ts.map +1 -1
  156. package/dist/interaction/AxisDragHandler.d.ts +1 -1
  157. package/dist/interaction/CrosshairHandler.d.ts +3 -2
  158. package/dist/interaction/CrosshairHandler.d.ts.map +1 -1
  159. package/dist/interaction/CrosshairTooltip.d.ts +49 -15
  160. package/dist/interaction/CrosshairTooltip.d.ts.map +1 -1
  161. package/dist/interaction/InteractionManager.d.ts +20 -1
  162. package/dist/interaction/InteractionManager.d.ts.map +1 -1
  163. package/dist/interaction/PanHandler.d.ts +11 -3
  164. package/dist/interaction/PanHandler.d.ts.map +1 -1
  165. package/dist/interaction/index.d.ts +2 -1
  166. package/dist/interaction/index.d.ts.map +1 -1
  167. package/dist/realtime/CurrentPriceLine.d.ts +5 -1
  168. package/dist/realtime/CurrentPriceLine.d.ts.map +1 -1
  169. package/dist/realtime/StreamManager.d.ts +2 -0
  170. package/dist/realtime/StreamManager.d.ts.map +1 -1
  171. package/dist/realtime/adapters/BinanceAdapter.d.ts.map +1 -1
  172. package/dist/realtime/adapters/WebSocketAdapter.d.ts.map +1 -1
  173. package/dist/trading/OrderRenderer.d.ts +1 -1
  174. package/dist/trading/PositionRenderer.d.ts +1 -1
  175. package/dist/trading/TradingManager.d.ts +4 -2
  176. package/dist/trading/TradingManager.d.ts.map +1 -1
  177. package/dist/trading/TradingRenderer.d.ts +1 -1
  178. package/dist/ui/ChartLegend.d.ts +9 -1
  179. package/dist/ui/ChartLegend.d.ts.map +1 -1
  180. package/dist/ui/SessionBreaks.d.ts +4 -0
  181. package/dist/ui/SessionBreaks.d.ts.map +1 -1
  182. package/dist/viewport/ScaleMapping.d.ts +20 -4
  183. package/dist/viewport/ScaleMapping.d.ts.map +1 -1
  184. package/dist/viewport/Viewport.d.ts +47 -2
  185. package/dist/viewport/Viewport.d.ts.map +1 -1
  186. package/dist/viewport/index.d.ts +1 -1
  187. package/dist/viewport/index.d.ts.map +1 -1
  188. package/package.json +3 -2
@@ -36,14 +36,16 @@ export declare class TradingManager {
36
36
  /** Emit `orderPlace` with the drafted order (type inferred vs the market). */
37
37
  confirmOrderDraft(): boolean;
38
38
  isOrderDraftActive(): boolean;
39
+ /** Whether `pos` is over an order line or a position's SL/TP that can be dragged. */
40
+ isOverDraggableLine(pos: Point, viewport: ViewportState, tolerance?: number): boolean;
39
41
  onPointerDown(pos: Point, viewport: ViewportState): boolean;
40
42
  onPointerMove(pos: Point, viewport: ViewportState): boolean;
41
43
  onPointerUp(): boolean;
42
44
  onContextMenu(pos: Point, viewport: ViewportState): boolean;
43
45
  render(ctx: CanvasRenderingContext2D, viewport: ViewportState, theme: Theme): void;
44
46
  /**
45
- * Draw position/order price badges on the price axis. Intended for the
46
- * UI layer so they paint ON TOP of the regular axis labels.
47
+ * Draw position/order price badges on the price axis. Drawn after the
48
+ * price axis so they paint ON TOP of the regular axis labels.
47
49
  */
48
50
  renderAxisBadges(ctx: CanvasRenderingContext2D, viewport: ViewportState, theme: Theme): void;
49
51
  destroy(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"TradingManager.d.ts","sourceRoot":"","sources":["../../src/trading/TradingManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,SAAS,EACT,aAAa,EACb,aAAa,EACb,KAAK,EACL,KAAK,EACN,MAAM,sBAAsB,CAAC;AAU9B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,MAAM,CAAgB;IAE9B,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,gBAAgB,CAA0B;IAClD,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,UAAU,CAAwB;IAE1C,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,aAAa,CAAyD;IAC9E,OAAO,CAAC,SAAS,CAA4B;gBAEjC,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC;IAS3C,YAAY,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;IAI1C,gBAAgB,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;IAItC,gBAAgB,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAMlE,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI;IAKvC,YAAY,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,IAAI;IAKhD,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI;IAK3C,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKpC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IAO/C,uEAAuE;IACvE,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAKlD,aAAa,IAAI,IAAI;IAMrB,kFAAkF;IAClF,cAAc,IAAI,OAAO;IAezB,eAAe,IAAI,OAAO;IAM1B,kEAAkE;IAClE,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAKrD,gBAAgB,IAAI,IAAI;IAMxB,8EAA8E;IAC9E,iBAAiB,IAAI,OAAO;IAS5B,kBAAkB,IAAI,OAAO;IAM7B,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,OAAO;IAc3D,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,OAAO;IAiB3D,WAAW,IAAI,OAAO;IA+BtB,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,OAAO;IAS3D,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IA6BlF;;;OAGG;IACH,gBAAgB,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAU5F,OAAO,IAAI,IAAI;CAGhB"}
1
+ {"version":3,"file":"TradingManager.d.ts","sourceRoot":"","sources":["../../src/trading/TradingManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,SAAS,EACT,aAAa,EACb,aAAa,EACb,KAAK,EACL,KAAK,EACN,MAAM,sBAAsB,CAAC;AAU9B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,MAAM,CAAgB;IAE9B,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,gBAAgB,CAA0B;IAClD,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,UAAU,CAAwB;IAE1C,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,aAAa,CAAyD;IAC9E,OAAO,CAAC,SAAS,CAA4B;gBAEjC,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC;IAS3C,YAAY,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;IAI1C,gBAAgB,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;IAItC,gBAAgB,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAMlE,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI;IAKvC,YAAY,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,IAAI;IAKhD,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI;IAK3C,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKpC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IAO/C,uEAAuE;IACvE,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAKlD,aAAa,IAAI,IAAI;IAMrB,kFAAkF;IAClF,cAAc,IAAI,OAAO;IAezB,eAAe,IAAI,OAAO;IAM1B,kEAAkE;IAClE,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAKrD,gBAAgB,IAAI,IAAI;IAMxB,8EAA8E;IAC9E,iBAAiB,IAAI,OAAO;IAS5B,kBAAkB,IAAI,OAAO;IAI7B,qFAAqF;IACrF,mBAAmB,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,SAAI,GAAG,OAAO;IAehF,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,OAAO;IAc3D,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,OAAO;IAiB3D,WAAW,IAAI,OAAO;IA+BtB,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,OAAO;IAS3D,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IA6BlF;;;OAGG;IACH,gBAAgB,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAU5F,OAAO,IAAI,IAAI;CAGhB"}
@@ -6,7 +6,7 @@ export declare class TradingRenderer {
6
6
  render(ctx: CanvasRenderingContext2D, viewport: ViewportState, theme: Theme): void;
7
7
  /**
8
8
  * Draw position/order price badges on the price axis. Call this from the
9
- * UI layer AFTER priceAxis.render() so the badges paint on top of the
9
+ * scene pass AFTER priceAxis.render() so the badges paint on top of the
10
10
  * regular tick labels — matching MT4/MT5 behaviour.
11
11
  */
12
12
  renderAxisBadges(ctx: CanvasRenderingContext2D, viewport: ViewportState, theme: Theme): void;
@@ -10,7 +10,7 @@ export interface LegendConfig {
10
10
  }
11
11
  export declare const DEFAULT_LEGEND_CONFIG: LegendConfig;
12
12
  /**
13
- * Renders an OHLCV legend overlay on the chart (like TradingView top-left).
13
+ * Renders an OHLCV legend overlay in the chart's top-left corner.
14
14
  * Shows: Symbol, O, H, L, C, Change%, Volume
15
15
  * Updates on crosshair hover or shows last bar by default.
16
16
  */
@@ -21,7 +21,15 @@ export declare class ChartLegend {
21
21
  private hoverBar;
22
22
  private indicators;
23
23
  private statusText;
24
+ private locale;
25
+ private pricePrecision;
24
26
  setConfig(config: Partial<LegendConfig>): void;
27
+ /**
28
+ * Fixed decimals for OHLC values (e.g. a market's `pricePrecision`); `null`
29
+ * follows the price axis.
30
+ */
31
+ setPricePrecision(precision: number | null): void;
32
+ setLocale(locale: string): void;
25
33
  setSymbol(symbol: string): void;
26
34
  setTimeframe(tf: string): void;
27
35
  setChartType(_type: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"ChartLegend.d.ts","sourceRoot":"","sources":["../../src/ui/ChartLegend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEtF,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,UAAU,GAAG,WAAW,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,qBAAqB,EAAE,YAQnC,CAAC;AAEF;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAA8C;IAC5D,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,UAAU,CAAwD;IAC1E,OAAO,CAAC,UAAU,CAAuB;IAEzC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI;IAI9C,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAI9B,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIjC,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI;IAItC,kBAAkB,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,IAAI;IAIlF,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIxC,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI;CAiGrG"}
1
+ {"version":3,"file":"ChartLegend.d.ts","sourceRoot":"","sources":["../../src/ui/ChartLegend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGtF,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,UAAU,GAAG,WAAW,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,qBAAqB,EAAE,YAQnC,CAAC;AAEF;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAA8C;IAC5D,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,UAAU,CAAwD;IAC1E,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,cAAc,CAAuB;IAE7C,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI;IAI9C;;;OAGG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIjD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAI9B,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIjC,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI;IAItC,kBAAkB,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,IAAI;IAIlF,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIxC,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI;CAsGrG"}
@@ -21,8 +21,12 @@ export interface SessionBreakConfig {
21
21
  export declare class SessionBreaks {
22
22
  private config;
23
23
  private cachedBreaksTyped;
24
+ private cachedMedianStep;
25
+ private cacheValid;
24
26
  private lastDataLength;
27
+ private locale;
25
28
  setConfig(config: Partial<SessionBreakConfig>): void;
29
+ setLocale(locale: string): void;
26
30
  isVisible(): boolean;
27
31
  setVisible(visible: boolean): void;
28
32
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"SessionBreaks.d.ts","sourceRoot":"","sources":["../../src/ui/SessionBreaks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAG7E,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,2FAA2F;IAC3F,YAAY,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC1C,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,iBAAiB,CAA8E;IACvG,OAAO,CAAC,cAAc,CAAK;IAE3B,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI;IAIpD,SAAS,IAAI,OAAO;IAIpB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIlC;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IA8B1B,OAAO,CAAC,IAAI;IAIZ,MAAM,CACJ,GAAG,EAAE,wBAAwB,EAC7B,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,UAAU,GACf,IAAI;IAqEP,yCAAyC;IACzC,eAAe,IAAI,IAAI;CAIxB"}
1
+ {"version":3,"file":"SessionBreaks.d.ts","sourceRoot":"","sources":["../../src/ui/SessionBreaks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAG7E,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,2FAA2F;IAC3F,YAAY,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC1C,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,iBAAiB,CAA8E;IACvG,OAAO,CAAC,gBAAgB,CAAK;IAI7B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,MAAM,CAAW;IAEzB,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI;IAIpD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,SAAS,IAAI,OAAO;IAIpB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIlC;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAgC1B,OAAO,CAAC,IAAI;IAIZ,MAAM,CACJ,GAAG,EAAE,wBAAwB,EAC7B,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,UAAU,GACf,IAAI;IAoEP,yCAAyC;IACzC,eAAe,IAAI,IAAI;CAMxB"}
@@ -3,14 +3,29 @@ export declare function barIndexToX(index: number, viewport: ViewportState): num
3
3
  export declare function priceToY(price: number, viewport: ViewportState): number;
4
4
  export declare function xToBarIndex(x: number, viewport: ViewportState): number;
5
5
  export declare function yToPrice(y: number, viewport: ViewportState): number;
6
+ type TimedSeries = ReadonlyArray<{
7
+ time: number;
8
+ }>;
9
+ /**
10
+ * Typical spacing between bar times — the median of the last ~20 intervals,
11
+ * so a weekend or halt gap doesn't skew it. Used to place times beyond either
12
+ * end of the data (the empty future the chart can be panned into). Cached per
13
+ * series and length; 0 when there are fewer than two bars.
14
+ */
15
+ export declare function barTimeStep(data: TimedSeries): number;
16
+ /**
17
+ * Time at bar index `index`, extrapolated by `barTimeStep` past either end of
18
+ * the data — e.g. the future area right of the newest bar.
19
+ */
20
+ export declare function barIndexToTime(index: number, data: TimedSeries): number;
6
21
  /**
7
22
  * Convert a bar timestamp to its data-array index via binary search.
8
- * Falls back to fractional interpolation when the timestamp falls between bars.
23
+ * Falls back to fractional interpolation when the timestamp falls between bars,
24
+ * and extrapolates (by `barTimeStep`) for times beyond either end — so a drawing
25
+ * anchored in the future keeps its place instead of collapsing onto the last bar.
9
26
  * Returns -1 if data is empty.
10
27
  */
11
- export declare function timestampToBarIndex(timestamp: number, data: ReadonlyArray<{
12
- time: number;
13
- }>): number;
28
+ export declare function timestampToBarIndex(timestamp: number, data: TimedSeries): number;
14
29
  /**
15
30
  * Resolve an anchor `time` value to a (possibly fractional) bar index in the
16
31
  * current series. When `viewport.data` is set, `time` is interpreted as a real
@@ -29,4 +44,5 @@ export declare function timeToX(time: number, viewport: ViewportState): number;
29
44
  * returns a bar index for legacy callers.
30
45
  */
31
46
  export declare function xToTime(x: number, viewport: ViewportState): number;
47
+ export {};
32
48
  //# sourceMappingURL=ScaleMapping.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ScaleMapping.d.ts","sourceRoot":"","sources":["../../src/viewport/ScaleMapping.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,MAAM,CAG1E;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,MAAM,CAcvE;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,MAAM,CAGtE;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,MAAM,CASnE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,MAAM,CAmBpG;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,MAAM,CAM7E;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,MAAM,CAErE;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,MAAM,CAQlE"}
1
+ {"version":3,"file":"ScaleMapping.d.ts","sourceRoot":"","sources":["../../src/viewport/ScaleMapping.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,MAAM,CAG1E;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,MAAM,CAcvE;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,MAAM,CAGtE;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,MAAM,CASnE;AAED,KAAK,WAAW,GAAG,aAAa,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAInD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAWrD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM,CASvE;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM,CA0BhF;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,MAAM,CAM7E;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,MAAM,CAErE;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,MAAM,CASlE"}
@@ -1,13 +1,32 @@
1
1
  import { ViewportState, Rect, DataSeries, PriceScaleMode } from '@tradecanvas/commons';
2
2
  export declare class Viewport {
3
3
  private state;
4
+ private priceAxisWidth;
5
+ /**
6
+ * `getState()` used to deep-clone on every single call — cheap in
7
+ * isolation, but a single render pass calls it 8-10+ times (render
8
+ * context, panel layout, overlay plugins, event emission, …), and it
9
+ * runs on every pan/zoom/resize frame. That's a lot of short-lived
10
+ * garbage generated at 60fps, which shows up as GC-pause micro-stutter
11
+ * during continuous dragging. Cached here and invalidated by every
12
+ * mutating method instead — multiple reads between mutations now return
13
+ * the same object instead of re-cloning.
14
+ */
15
+ private stateCache;
4
16
  private dataLength;
5
17
  private minBarWidth;
6
18
  private maxBarWidth;
7
19
  private rightMarginBars;
20
+ private freePan;
21
+ private minVisibleBars;
8
22
  constructor(containerWidth: number, containerHeight: number, minBarWidth?: number, maxBarWidth?: number, rightMarginBars?: number);
9
- /** Returns a snapshot (deep copy). Safe to store/pass. */
23
+ /**
24
+ * Returns a snapshot (deep copy). Safe to store/pass. Cached: repeated
25
+ * calls between mutations return the same object rather than re-cloning.
26
+ */
10
27
  getState(): ViewportState;
28
+ /** Drop the cached snapshot — called by every method that mutates `state`. */
29
+ private invalidate;
11
30
  setLogScale(enabled: boolean): void;
12
31
  isLogScale(): boolean;
13
32
  /** Set the price-scale presentation. Keeps `logScale` mirrored for back-compat. */
@@ -16,6 +35,22 @@ export declare class Viewport {
16
35
  /** Reference price for percentage / indexed-to-100 axis labels. */
17
36
  setScaleBaseline(price: number | undefined): void;
18
37
  setRightMargin(bars: number): void;
38
+ getRightMargin(): number;
39
+ /**
40
+ * How far the chart can be dragged. `freePan` (default) allows dragging
41
+ * past the newest bar into empty future space, or past the
42
+ * oldest bar, until only `minVisibleBars` bars remain at the edge. With
43
+ * `freePan: false` the newest bar stops at its resting position, as in 1.x
44
+ * before 1.3.
45
+ */
46
+ setPanLimits(limits: {
47
+ freePan?: boolean;
48
+ minVisibleBars?: number;
49
+ }): void;
50
+ /** Offset at which the newest bar sits `rightMargin` bars from the right edge — the resting view. */
51
+ private endOffset;
52
+ /** Width of the price axis strip; see `ViewportState.priceAxisWidth`. */
53
+ setPriceAxisWidth(width: number): void;
19
54
  private computeChartRect;
20
55
  resize(width: number, height: number): void;
21
56
  setChartRect(rect: Rect): void;
@@ -39,10 +74,20 @@ export declare class Viewport {
39
74
  * chart-body panning, the counterpart to `scrollBy` on the time axis.
40
75
  */
41
76
  panPriceRange(deltaPixels: number): void;
42
- /** Returns true if the viewport is scrolled to show the latest bars. */
77
+ /**
78
+ * Whether the view rests at the latest bars (within two bars of the resting
79
+ * position). Panned into history — or out into empty future space — it is
80
+ * not, so a new bar doesn't yank the view back.
81
+ */
43
82
  isAtEnd(): boolean;
44
83
  scrollToEnd(): void;
45
84
  zoom(delta: number, centerX: number): void;
85
+ /**
86
+ * Fit bar slots `from`..`to` (inclusive, fractional allowed, may extend past
87
+ * the data) across the chart width. If the bar width hits its min/max the
88
+ * range is centred instead.
89
+ */
90
+ zoomToBarRange(from: number, to: number): void;
46
91
  private clampOffset;
47
92
  private updateVisibleRange;
48
93
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Viewport.d.ts","sourceRoot":"","sources":["../../src/viewport/Viewport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAI5F,qBAAa,QAAQ;IACnB,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,eAAe,CAAS;gBAG9B,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM,EACvB,WAAW,SAAI,EACf,WAAW,SAAK,EAChB,eAAe,SAAI;IAgBrB,0DAA0D;IAC1D,QAAQ,IAAI,aAAa;IAczB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAInC,UAAU,IAAI,OAAO;IAIrB,mFAAmF;IACnF,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAKxC,YAAY,IAAI,cAAc;IAI9B,mEAAmE;IACnE,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAIjD,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIlC,OAAO,CAAC,gBAAgB;IASxB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAK3C,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAW9B,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI;IAiBtD,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAI7C;;;;OAIG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IASrC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAMnC;;;;;;;;;OASG;IACH,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAmBxC,wEAAwE;IACxE,OAAO,IAAI,OAAO;IAUlB,WAAW,IAAI,IAAI;IAYnB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAoB1C,OAAO,CAAC,WAAW;IAsCnB,OAAO,CAAC,kBAAkB;CAQ3B"}
1
+ {"version":3,"file":"Viewport.d.ts","sourceRoot":"","sources":["../../src/viewport/Viewport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAI5F,qBAAa,QAAQ;IACnB,OAAO,CAAC,KAAK,CAAgB;IAE7B,OAAO,CAAC,cAAc,CAAoB;IAC1C;;;;;;;;;OASG;IACH,OAAO,CAAC,UAAU,CAA8B;IAChD,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,cAAc,CAAK;gBAGzB,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM,EACvB,WAAW,SAAI,EACf,WAAW,SAAK,EAChB,eAAe,SAAI;IAgBrB;;;OAGG;IACH,QAAQ,IAAI,aAAa;IAkBzB,8EAA8E;IAC9E,OAAO,CAAC,UAAU;IAIlB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAInC,UAAU,IAAI,OAAO;IAIrB,mFAAmF;IACnF,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAMxC,YAAY,IAAI,cAAc;IAI9B,mEAAmE;IACnE,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAKjD,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIlC,cAAc,IAAI,MAAM;IAIxB;;;;;;OAMG;IACH,YAAY,CAAC,MAAM,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAO1E,qGAAqG;IACrG,OAAO,CAAC,SAAS;IAKjB,yEAAyE;IACzE,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAOtC,OAAO,CAAC,gBAAgB;IASxB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAM3C,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAY9B,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI;IAsBtD,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAK7C;;;;OAIG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAUrC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAOnC;;;;;;;;;OASG;IACH,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAqBxC;;;;OAIG;IACH,OAAO,IAAI,OAAO;IAKlB,WAAW,IAAI,IAAI;IAUnB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAwB1C;;;;OAIG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAY9C,OAAO,CAAC,WAAW;IAgDnB,OAAO,CAAC,kBAAkB;CAS3B"}
@@ -1,4 +1,4 @@
1
1
  export { Viewport } from './Viewport.js';
2
- export { barIndexToX, priceToY, xToBarIndex, yToPrice, timestampToBarIndex, resolveBarIndex, timeToX, xToTime, } from './ScaleMapping.js';
2
+ export { barIndexToX, priceToY, xToBarIndex, yToPrice, timestampToBarIndex, resolveBarIndex, barTimeStep, barIndexToTime, timeToX, xToTime, } from './ScaleMapping.js';
3
3
  export { getVisibleData } from './DataWindow.js';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/viewport/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EACL,WAAW,EACX,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,mBAAmB,EACnB,eAAe,EACf,OAAO,EACP,OAAO,GACR,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/viewport/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EACL,WAAW,EACX,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,mBAAmB,EACnB,eAAe,EACf,WAAW,EACX,cAAc,EACd,OAAO,EACP,OAAO,GACR,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tradecanvas/core",
3
- "version": "1.1.0",
3
+ "version": "1.3.0",
4
4
  "type": "module",
5
5
  "description": "Canvas rendering engine for @tradecanvas/chart",
6
6
  "license": "MIT",
@@ -34,9 +34,10 @@
34
34
  "README.md"
35
35
  ],
36
36
  "dependencies": {
37
- "@tradecanvas/commons": "1.1.0"
37
+ "@tradecanvas/commons": "1.3.0"
38
38
  },
39
39
  "devDependencies": {
40
+ "jsdom": "^25.0.1",
40
41
  "vitest": "^2.1.8"
41
42
  },
42
43
  "scripts": {