@forgecharts/sdk 1.1.23 → 1.1.28

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 (562) hide show
  1. package/dist/__tests__/backwardCompatibility.test.d.ts +14 -0
  2. package/dist/__tests__/backwardCompatibility.test.d.ts.map +1 -0
  3. package/dist/__tests__/backwardCompatibility.test.js +159 -0
  4. package/dist/__tests__/backwardCompatibility.test.js.map +1 -0
  5. package/dist/__tests__/candleInvariant.test.d.ts +20 -0
  6. package/dist/__tests__/candleInvariant.test.d.ts.map +1 -0
  7. package/dist/__tests__/candleInvariant.test.js +415 -0
  8. package/dist/__tests__/candleInvariant.test.js.map +1 -0
  9. package/dist/__tests__/public-api-surface.d.ts +13 -0
  10. package/dist/__tests__/public-api-surface.d.ts.map +1 -0
  11. package/{src/__tests__/public-api-surface.ts → dist/__tests__/public-api-surface.js} +4 -42
  12. package/dist/__tests__/public-api-surface.js.map +1 -0
  13. package/dist/__tests__/timeframeBoundary.test.d.ts +17 -0
  14. package/dist/__tests__/timeframeBoundary.test.d.ts.map +1 -0
  15. package/dist/__tests__/timeframeBoundary.test.js +452 -0
  16. package/dist/__tests__/timeframeBoundary.test.js.map +1 -0
  17. package/dist/api/DrawingManager.d.ts +20 -0
  18. package/dist/api/DrawingManager.d.ts.map +1 -0
  19. package/dist/api/DrawingManager.js +190 -0
  20. package/dist/api/DrawingManager.js.map +1 -0
  21. package/dist/api/EventBus.d.ts +19 -0
  22. package/dist/api/EventBus.d.ts.map +1 -0
  23. package/dist/api/EventBus.js +44 -0
  24. package/dist/api/EventBus.js.map +1 -0
  25. package/dist/api/IndicatorDAG.d.ts +85 -0
  26. package/dist/api/IndicatorDAG.d.ts.map +1 -0
  27. package/dist/api/IndicatorDAG.js +316 -0
  28. package/dist/api/IndicatorDAG.js.map +1 -0
  29. package/dist/api/IndicatorRegistry.d.ts +22 -0
  30. package/dist/api/IndicatorRegistry.d.ts.map +1 -0
  31. package/dist/api/IndicatorRegistry.js +39 -0
  32. package/dist/api/IndicatorRegistry.js.map +1 -0
  33. package/dist/api/LayoutManager.d.ts +30 -0
  34. package/dist/api/LayoutManager.d.ts.map +1 -0
  35. package/dist/api/LayoutManager.js +51 -0
  36. package/dist/api/LayoutManager.js.map +1 -0
  37. package/dist/api/PaneManager.d.ts +42 -0
  38. package/dist/api/PaneManager.d.ts.map +1 -0
  39. package/dist/api/PaneManager.js +119 -0
  40. package/dist/api/PaneManager.js.map +1 -0
  41. package/dist/api/ReferenceAPI.d.ts +78 -0
  42. package/dist/api/ReferenceAPI.d.ts.map +1 -0
  43. package/dist/api/ReferenceAPI.js +153 -0
  44. package/dist/api/ReferenceAPI.js.map +1 -0
  45. package/dist/api/TChart.d.ts +345 -0
  46. package/dist/api/TChart.d.ts.map +1 -0
  47. package/dist/api/TChart.js +765 -0
  48. package/dist/api/TChart.js.map +1 -0
  49. package/{src/api/createChart.ts → dist/api/createChart.d.ts} +2 -7
  50. package/dist/api/createChart.d.ts.map +1 -0
  51. package/dist/api/createChart.js +42 -0
  52. package/dist/api/createChart.js.map +1 -0
  53. package/dist/api/drawing tools/fib gann menu/fibRetracement.d.ts +4 -0
  54. package/dist/api/drawing tools/fib gann menu/fibRetracement.d.ts.map +1 -0
  55. package/dist/api/drawing tools/fib gann menu/fibRetracement.js +22 -0
  56. package/dist/api/drawing tools/fib gann menu/fibRetracement.js.map +1 -0
  57. package/dist/api/drawing tools/lines menu/crossLine.d.ts +4 -0
  58. package/dist/api/drawing tools/lines menu/crossLine.d.ts.map +1 -0
  59. package/dist/api/drawing tools/lines menu/crossLine.js +16 -0
  60. package/dist/api/drawing tools/lines menu/crossLine.js.map +1 -0
  61. package/dist/api/drawing tools/lines menu/disjointChannel.d.ts +17 -0
  62. package/dist/api/drawing tools/lines menu/disjointChannel.d.ts.map +1 -0
  63. package/dist/api/drawing tools/lines menu/disjointChannel.js +59 -0
  64. package/dist/api/drawing tools/lines menu/disjointChannel.js.map +1 -0
  65. package/dist/api/drawing tools/lines menu/extendedLine.d.ts +4 -0
  66. package/dist/api/drawing tools/lines menu/extendedLine.d.ts.map +1 -0
  67. package/dist/api/drawing tools/lines menu/extendedLine.js +17 -0
  68. package/dist/api/drawing tools/lines menu/extendedLine.js.map +1 -0
  69. package/dist/api/drawing tools/lines menu/flatTopBottom.d.ts +4 -0
  70. package/dist/api/drawing tools/lines menu/flatTopBottom.d.ts.map +1 -0
  71. package/dist/api/drawing tools/lines menu/flatTopBottom.js +41 -0
  72. package/dist/api/drawing tools/lines menu/flatTopBottom.js.map +1 -0
  73. package/dist/api/drawing tools/lines menu/horizontal.d.ts +4 -0
  74. package/dist/api/drawing tools/lines menu/horizontal.d.ts.map +1 -0
  75. package/dist/api/drawing tools/lines menu/horizontal.js +19 -0
  76. package/dist/api/drawing tools/lines menu/horizontal.js.map +1 -0
  77. package/dist/api/drawing tools/lines menu/horizontalRay.d.ts +4 -0
  78. package/dist/api/drawing tools/lines menu/horizontalRay.d.ts.map +1 -0
  79. package/dist/api/drawing tools/lines menu/horizontalRay.js +20 -0
  80. package/dist/api/drawing tools/lines menu/horizontalRay.js.map +1 -0
  81. package/dist/api/drawing tools/lines menu/infoLine.d.ts +4 -0
  82. package/dist/api/drawing tools/lines menu/infoLine.d.ts.map +1 -0
  83. package/dist/api/drawing tools/lines menu/infoLine.js +107 -0
  84. package/dist/api/drawing tools/lines menu/infoLine.js.map +1 -0
  85. package/dist/api/drawing tools/lines menu/insidePitchfork.d.ts +4 -0
  86. package/dist/api/drawing tools/lines menu/insidePitchfork.d.ts.map +1 -0
  87. package/dist/api/drawing tools/lines menu/insidePitchfork.js +31 -0
  88. package/dist/api/drawing tools/lines menu/insidePitchfork.js.map +1 -0
  89. package/dist/api/drawing tools/lines menu/modifiedSchiffPitchfork.d.ts +4 -0
  90. package/dist/api/drawing tools/lines menu/modifiedSchiffPitchfork.d.ts.map +1 -0
  91. package/dist/api/drawing tools/lines menu/modifiedSchiffPitchfork.js +15 -0
  92. package/dist/api/drawing tools/lines menu/modifiedSchiffPitchfork.js.map +1 -0
  93. package/dist/api/drawing tools/lines menu/parallelChannel.d.ts +4 -0
  94. package/dist/api/drawing tools/lines menu/parallelChannel.d.ts.map +1 -0
  95. package/dist/api/drawing tools/lines menu/parallelChannel.js +43 -0
  96. package/dist/api/drawing tools/lines menu/parallelChannel.js.map +1 -0
  97. package/dist/api/drawing tools/lines menu/pitchfork.d.ts +4 -0
  98. package/dist/api/drawing tools/lines menu/pitchfork.d.ts.map +1 -0
  99. package/dist/api/drawing tools/lines menu/pitchfork.js +12 -0
  100. package/dist/api/drawing tools/lines menu/pitchfork.js.map +1 -0
  101. package/dist/api/drawing tools/lines menu/ray.d.ts +4 -0
  102. package/dist/api/drawing tools/lines menu/ray.d.ts.map +1 -0
  103. package/dist/api/drawing tools/lines menu/ray.js +23 -0
  104. package/dist/api/drawing tools/lines menu/ray.js.map +1 -0
  105. package/dist/api/drawing tools/lines menu/regressionTrend.d.ts +4 -0
  106. package/dist/api/drawing tools/lines menu/regressionTrend.d.ts.map +1 -0
  107. package/dist/api/drawing tools/lines menu/regressionTrend.js +127 -0
  108. package/dist/api/drawing tools/lines menu/regressionTrend.js.map +1 -0
  109. package/dist/api/drawing tools/lines menu/schiffPitchfork.d.ts +4 -0
  110. package/dist/api/drawing tools/lines menu/schiffPitchfork.d.ts.map +1 -0
  111. package/dist/api/drawing tools/lines menu/schiffPitchfork.js +15 -0
  112. package/dist/api/drawing tools/lines menu/schiffPitchfork.js.map +1 -0
  113. package/dist/api/drawing tools/lines menu/trendAngle.d.ts +4 -0
  114. package/dist/api/drawing tools/lines menu/trendAngle.d.ts.map +1 -0
  115. package/dist/api/drawing tools/lines menu/trendAngle.js +51 -0
  116. package/dist/api/drawing tools/lines menu/trendAngle.js.map +1 -0
  117. package/dist/api/drawing tools/lines menu/trendline.d.ts +4 -0
  118. package/dist/api/drawing tools/lines menu/trendline.d.ts.map +1 -0
  119. package/dist/api/drawing tools/lines menu/trendline.js +11 -0
  120. package/dist/api/drawing tools/lines menu/trendline.js.map +1 -0
  121. package/dist/api/drawing tools/lines menu/vertical.d.ts +4 -0
  122. package/dist/api/drawing tools/lines menu/vertical.d.ts.map +1 -0
  123. package/dist/api/drawing tools/lines menu/vertical.js +11 -0
  124. package/dist/api/drawing tools/lines menu/vertical.js.map +1 -0
  125. package/dist/api/drawing tools/pointers menu/crosshair.d.ts +16 -0
  126. package/dist/api/drawing tools/pointers menu/crosshair.d.ts.map +1 -0
  127. package/{src/api/drawing tools/pointers menu/crosshair.ts → dist/api/drawing tools/pointers menu/crosshair.js } +6 -7
  128. package/dist/api/drawing tools/pointers menu/crosshair.js.map +1 -0
  129. package/dist/api/drawing tools/pointers menu/cursor.d.ts +15 -0
  130. package/dist/api/drawing tools/pointers menu/cursor.d.ts.map +1 -0
  131. package/{src/api/drawing tools/pointers menu/cursor.ts → dist/api/drawing tools/pointers menu/cursor.js } +7 -8
  132. package/dist/api/drawing tools/pointers menu/cursor.js.map +1 -0
  133. package/dist/api/drawing tools/pointers menu/demonstration.d.ts +30 -0
  134. package/dist/api/drawing tools/pointers menu/demonstration.d.ts.map +1 -0
  135. package/{src/api/drawing tools/pointers menu/demonstration.ts → dist/api/drawing tools/pointers menu/demonstration.js } +9 -14
  136. package/dist/api/drawing tools/pointers menu/demonstration.js.map +1 -0
  137. package/dist/api/drawing tools/pointers menu/dot.d.ts +23 -0
  138. package/dist/api/drawing tools/pointers menu/dot.d.ts.map +1 -0
  139. package/{src/api/drawing tools/pointers menu/dot.ts → dist/api/drawing tools/pointers menu/dot.js } +8 -11
  140. package/dist/api/drawing tools/pointers menu/dot.js.map +1 -0
  141. package/dist/api/drawing tools/shapes menu/rectangle.d.ts +4 -0
  142. package/dist/api/drawing tools/shapes menu/rectangle.d.ts.map +1 -0
  143. package/dist/api/drawing tools/shapes menu/rectangle.js +19 -0
  144. package/dist/api/drawing tools/shapes menu/rectangle.js.map +1 -0
  145. package/dist/api/drawing tools/shapes menu/text.d.ts +4 -0
  146. package/dist/api/drawing tools/shapes menu/text.d.ts.map +1 -0
  147. package/dist/api/drawing tools/shapes menu/text.js +25 -0
  148. package/dist/api/drawing tools/shapes menu/text.js.map +1 -0
  149. package/dist/api/drawingUtils.d.ts +22 -0
  150. package/dist/api/drawingUtils.d.ts.map +1 -0
  151. package/dist/api/drawingUtils.js +83 -0
  152. package/dist/api/drawingUtils.js.map +1 -0
  153. package/dist/core/CanvasLayer.d.ts +26 -0
  154. package/dist/core/CanvasLayer.d.ts.map +1 -0
  155. package/dist/core/CanvasLayer.js +56 -0
  156. package/dist/core/CanvasLayer.js.map +1 -0
  157. package/dist/core/Chart.d.ts +164 -0
  158. package/dist/core/Chart.d.ts.map +1 -0
  159. package/dist/core/Chart.js +839 -0
  160. package/dist/core/Chart.js.map +1 -0
  161. package/dist/core/CoordTransform.d.ts +168 -0
  162. package/dist/core/CoordTransform.d.ts.map +1 -0
  163. package/dist/core/CoordTransform.js +224 -0
  164. package/dist/core/CoordTransform.js.map +1 -0
  165. package/dist/core/Crosshair.d.ts +30 -0
  166. package/dist/core/Crosshair.d.ts.map +1 -0
  167. package/dist/core/Crosshair.js +186 -0
  168. package/dist/core/Crosshair.js.map +1 -0
  169. package/dist/core/IndicatorEngine.d.ts +51 -0
  170. package/dist/core/IndicatorEngine.d.ts.map +1 -0
  171. package/dist/core/IndicatorEngine.js +181 -0
  172. package/dist/core/IndicatorEngine.js.map +1 -0
  173. package/dist/core/InteractionManager.d.ts +197 -0
  174. package/dist/core/InteractionManager.d.ts.map +1 -0
  175. package/dist/core/InteractionManager.js +698 -0
  176. package/dist/core/InteractionManager.js.map +1 -0
  177. package/dist/core/PriceScale.d.ts +27 -0
  178. package/dist/core/PriceScale.d.ts.map +1 -0
  179. package/dist/core/PriceScale.js +113 -0
  180. package/dist/core/PriceScale.js.map +1 -0
  181. package/dist/core/Series.d.ts +40 -0
  182. package/dist/core/Series.d.ts.map +1 -0
  183. package/dist/core/Series.js +114 -0
  184. package/dist/core/Series.js.map +1 -0
  185. package/dist/core/TimeScale.d.ts +43 -0
  186. package/dist/core/TimeScale.d.ts.map +1 -0
  187. package/dist/core/TimeScale.js +150 -0
  188. package/dist/core/TimeScale.js.map +1 -0
  189. package/dist/datafeed/DatafeedConnector.d.ts +89 -0
  190. package/dist/datafeed/DatafeedConnector.d.ts.map +1 -0
  191. package/dist/datafeed/DatafeedConnector.js +268 -0
  192. package/dist/datafeed/DatafeedConnector.js.map +1 -0
  193. package/dist/engine/CandleEngine.d.ts +207 -0
  194. package/dist/engine/CandleEngine.d.ts.map +1 -0
  195. package/dist/engine/CandleEngine.js +318 -0
  196. package/dist/engine/CandleEngine.js.map +1 -0
  197. package/dist/engine/__tests__/CandleEngine.test.d.ts +2 -0
  198. package/dist/engine/__tests__/CandleEngine.test.d.ts.map +1 -0
  199. package/dist/engine/__tests__/CandleEngine.test.js +300 -0
  200. package/dist/engine/__tests__/CandleEngine.test.js.map +1 -0
  201. package/dist/engine/candleInvariants.d.ts +66 -0
  202. package/dist/engine/candleInvariants.d.ts.map +1 -0
  203. package/dist/engine/candleInvariants.js +134 -0
  204. package/dist/engine/candleInvariants.js.map +1 -0
  205. package/{src/engine/mergeUtils.ts → dist/engine/mergeUtils.d.ts} +15 -52
  206. package/dist/engine/mergeUtils.d.ts.map +1 -0
  207. package/dist/engine/mergeUtils.js +64 -0
  208. package/dist/engine/mergeUtils.js.map +1 -0
  209. package/dist/engine/timeframeUtils.d.ts +80 -0
  210. package/dist/engine/timeframeUtils.d.ts.map +1 -0
  211. package/{src/engine/timeframeUtils.ts → dist/engine/timeframeUtils.js} +30 -48
  212. package/dist/engine/timeframeUtils.js.map +1 -0
  213. package/dist/index.d.ts +40 -0
  214. package/dist/index.d.ts.map +1 -0
  215. package/dist/index.js +49 -0
  216. package/dist/index.js.map +1 -0
  217. package/dist/internal.d.ts +29 -0
  218. package/dist/internal.d.ts.map +1 -0
  219. package/{src/internal.ts → dist/internal.js} +2 -11
  220. package/dist/internal.js.map +1 -0
  221. package/dist/licensing/ChartRuntimeResolver.d.ts +233 -0
  222. package/dist/licensing/ChartRuntimeResolver.d.ts.map +1 -0
  223. package/dist/licensing/ChartRuntimeResolver.js +310 -0
  224. package/dist/licensing/ChartRuntimeResolver.js.map +1 -0
  225. package/dist/licensing/LicenseManager.d.ts +55 -0
  226. package/dist/licensing/LicenseManager.d.ts.map +1 -0
  227. package/dist/licensing/LicenseManager.js +114 -0
  228. package/dist/licensing/LicenseManager.js.map +1 -0
  229. package/dist/licensing/__tests__/ChartRuntimeResolver.test.d.ts +13 -0
  230. package/dist/licensing/__tests__/ChartRuntimeResolver.test.d.ts.map +1 -0
  231. package/dist/licensing/__tests__/ChartRuntimeResolver.test.js +177 -0
  232. package/dist/licensing/__tests__/ChartRuntimeResolver.test.js.map +1 -0
  233. package/dist/licensing/__tests__/LicenseManager.test.d.ts +12 -0
  234. package/dist/licensing/__tests__/LicenseManager.test.d.ts.map +1 -0
  235. package/dist/licensing/__tests__/LicenseManager.test.js +153 -0
  236. package/dist/licensing/__tests__/LicenseManager.test.js.map +1 -0
  237. package/dist/licensing/licenseTypes.d.ts +18 -0
  238. package/dist/licensing/licenseTypes.d.ts.map +1 -0
  239. package/dist/licensing/licenseTypes.js +2 -0
  240. package/dist/licensing/licenseTypes.js.map +1 -0
  241. package/dist/pine/PineCompiler.d.ts +35 -0
  242. package/dist/pine/PineCompiler.d.ts.map +1 -0
  243. package/dist/pine/PineCompiler.js +44 -0
  244. package/dist/pine/PineCompiler.js.map +1 -0
  245. package/dist/pine/diagnostics.d.ts +20 -0
  246. package/dist/pine/diagnostics.d.ts.map +1 -0
  247. package/dist/pine/diagnostics.js +11 -0
  248. package/dist/pine/diagnostics.js.map +1 -0
  249. package/{src/pine/index.ts → dist/pine/index.d.ts} +4 -3
  250. package/dist/pine/index.d.ts.map +1 -0
  251. package/dist/pine/index.js +5 -0
  252. package/dist/pine/index.js.map +1 -0
  253. package/dist/pine/pine-ast.d.ts +142 -0
  254. package/dist/pine/pine-ast.d.ts.map +1 -0
  255. package/dist/pine/pine-ast.js +19 -0
  256. package/dist/pine/pine-ast.js.map +1 -0
  257. package/dist/pine/pine-lexer.d.ts +41 -0
  258. package/dist/pine/pine-lexer.d.ts.map +1 -0
  259. package/dist/pine/pine-lexer.js +249 -0
  260. package/dist/pine/pine-lexer.js.map +1 -0
  261. package/dist/pine/pine-parser.d.ts +51 -0
  262. package/dist/pine/pine-parser.d.ts.map +1 -0
  263. package/dist/pine/pine-parser.js +416 -0
  264. package/dist/pine/pine-parser.js.map +1 -0
  265. package/dist/pine/pine-transpiler.d.ts +33 -0
  266. package/dist/pine/pine-transpiler.d.ts.map +1 -0
  267. package/dist/pine/pine-transpiler.js +260 -0
  268. package/dist/pine/pine-transpiler.js.map +1 -0
  269. package/dist/pixi/LayerName.d.ts +18 -0
  270. package/dist/pixi/LayerName.d.ts.map +1 -0
  271. package/dist/pixi/LayerName.js +35 -0
  272. package/dist/pixi/LayerName.js.map +1 -0
  273. package/dist/pixi/PixiCandlestickRenderer.d.ts +23 -0
  274. package/dist/pixi/PixiCandlestickRenderer.d.ts.map +1 -0
  275. package/dist/pixi/PixiCandlestickRenderer.js +107 -0
  276. package/dist/pixi/PixiCandlestickRenderer.js.map +1 -0
  277. package/dist/pixi/PixiChart.d.ts +72 -0
  278. package/dist/pixi/PixiChart.d.ts.map +1 -0
  279. package/dist/pixi/PixiChart.js +367 -0
  280. package/dist/pixi/PixiChart.js.map +1 -0
  281. package/dist/pixi/PixiCrosshairRenderer.d.ts +29 -0
  282. package/dist/pixi/PixiCrosshairRenderer.d.ts.map +1 -0
  283. package/dist/pixi/PixiCrosshairRenderer.js +110 -0
  284. package/dist/pixi/PixiCrosshairRenderer.js.map +1 -0
  285. package/dist/pixi/PixiDrawingRenderer.d.ts +17 -0
  286. package/dist/pixi/PixiDrawingRenderer.d.ts.map +1 -0
  287. package/dist/pixi/PixiDrawingRenderer.js +111 -0
  288. package/dist/pixi/PixiDrawingRenderer.js.map +1 -0
  289. package/dist/pixi/PixiGridRenderer.d.ts +22 -0
  290. package/dist/pixi/PixiGridRenderer.d.ts.map +1 -0
  291. package/dist/pixi/PixiGridRenderer.js +114 -0
  292. package/dist/pixi/PixiGridRenderer.js.map +1 -0
  293. package/dist/pixi/PixiLayerManager.d.ts +56 -0
  294. package/dist/pixi/PixiLayerManager.d.ts.map +1 -0
  295. package/dist/pixi/PixiLayerManager.js +92 -0
  296. package/dist/pixi/PixiLayerManager.js.map +1 -0
  297. package/dist/react/canvas/ChartCanvas.d.ts +85 -0
  298. package/dist/react/canvas/ChartCanvas.d.ts.map +1 -0
  299. package/dist/react/canvas/ChartCanvas.js +604 -0
  300. package/dist/react/canvas/ChartCanvas.js.map +1 -0
  301. package/dist/react/canvas/ChartContextMenu.d.ts +18 -0
  302. package/dist/react/canvas/ChartContextMenu.d.ts.map +1 -0
  303. package/dist/react/canvas/ChartContextMenu.js +5 -0
  304. package/dist/react/canvas/ChartContextMenu.js.map +1 -0
  305. package/dist/react/canvas/ChartSettingsDialog.d.ts +25 -0
  306. package/dist/react/canvas/ChartSettingsDialog.d.ts.map +1 -0
  307. package/dist/react/canvas/ChartSettingsDialog.js +28 -0
  308. package/dist/react/canvas/ChartSettingsDialog.js.map +1 -0
  309. package/dist/react/canvas/IndicatorLabel.d.ts +21 -0
  310. package/dist/react/canvas/IndicatorLabel.d.ts.map +1 -0
  311. package/dist/react/canvas/IndicatorLabel.js +196 -0
  312. package/dist/react/canvas/IndicatorLabel.js.map +1 -0
  313. package/dist/react/canvas/IndicatorPane.d.ts +32 -0
  314. package/dist/react/canvas/IndicatorPane.d.ts.map +1 -0
  315. package/dist/react/canvas/IndicatorPane.js +395 -0
  316. package/dist/react/canvas/IndicatorPane.js.map +1 -0
  317. package/dist/react/canvas/PointerOverlay.d.ts +23 -0
  318. package/dist/react/canvas/PointerOverlay.d.ts.map +1 -0
  319. package/dist/react/canvas/PointerOverlay.js +61 -0
  320. package/dist/react/canvas/PointerOverlay.js.map +1 -0
  321. package/dist/react/canvas/toolbars/LeftToolbar.d.ts +19 -0
  322. package/dist/react/canvas/toolbars/LeftToolbar.d.ts.map +1 -0
  323. package/dist/react/canvas/toolbars/LeftToolbar.js +407 -0
  324. package/dist/react/canvas/toolbars/LeftToolbar.js.map +1 -0
  325. package/dist/react/hooks/useChartCapabilities.d.ts +21 -0
  326. package/dist/react/hooks/useChartCapabilities.d.ts.map +1 -0
  327. package/dist/react/hooks/useChartCapabilities.js +66 -0
  328. package/dist/react/hooks/useChartCapabilities.js.map +1 -0
  329. package/dist/react/index.d.ts +30 -0
  330. package/dist/react/index.d.ts.map +1 -0
  331. package/dist/react/index.js +28 -0
  332. package/dist/react/index.js.map +1 -0
  333. package/dist/react/internal.d.ts +38 -0
  334. package/dist/react/internal.d.ts.map +1 -0
  335. package/dist/react/internal.js +44 -0
  336. package/dist/react/internal.js.map +1 -0
  337. package/dist/react/shell/ManagedAppShell.d.ts +91 -0
  338. package/dist/react/shell/ManagedAppShell.d.ts.map +1 -0
  339. package/dist/react/shell/ManagedAppShell.js +440 -0
  340. package/dist/react/shell/ManagedAppShell.js.map +1 -0
  341. package/dist/react/trading/TradingBridge.d.ts +86 -0
  342. package/dist/react/trading/TradingBridge.d.ts.map +1 -0
  343. package/dist/react/trading/TradingBridge.js +73 -0
  344. package/dist/react/trading/TradingBridge.js.map +1 -0
  345. package/dist/react/workspace/ChartWorkspace.d.ts +73 -0
  346. package/dist/react/workspace/ChartWorkspace.d.ts.map +1 -0
  347. package/dist/react/workspace/ChartWorkspace.js +42 -0
  348. package/dist/react/workspace/ChartWorkspace.js.map +1 -0
  349. package/dist/react/workspace/FloatingPanel.d.ts +18 -0
  350. package/dist/react/workspace/FloatingPanel.d.ts.map +1 -0
  351. package/dist/react/workspace/FloatingPanel.js +82 -0
  352. package/dist/react/workspace/FloatingPanel.js.map +1 -0
  353. package/dist/react/workspace/IndicatorsDialog.d.ts +8 -0
  354. package/dist/react/workspace/IndicatorsDialog.d.ts.map +1 -0
  355. package/dist/react/workspace/IndicatorsDialog.js +121 -0
  356. package/dist/react/workspace/IndicatorsDialog.js.map +1 -0
  357. package/dist/react/workspace/LayoutMenu.d.ts +33 -0
  358. package/dist/react/workspace/LayoutMenu.d.ts.map +1 -0
  359. package/dist/react/workspace/LayoutMenu.js +113 -0
  360. package/dist/react/workspace/LayoutMenu.js.map +1 -0
  361. package/dist/react/workspace/SymbolSearchDialog.d.ts +10 -0
  362. package/dist/react/workspace/SymbolSearchDialog.d.ts.map +1 -0
  363. package/dist/react/workspace/SymbolSearchDialog.js +245 -0
  364. package/dist/react/workspace/SymbolSearchDialog.js.map +1 -0
  365. package/dist/react/workspace/TabBar.d.ts +17 -0
  366. package/dist/react/workspace/TabBar.d.ts.map +1 -0
  367. package/dist/react/workspace/TabBar.js +29 -0
  368. package/dist/react/workspace/TabBar.js.map +1 -0
  369. package/dist/react/workspace/toolbars/BottomToolbar.d.ts +19 -0
  370. package/dist/react/workspace/toolbars/BottomToolbar.d.ts.map +1 -0
  371. package/dist/react/workspace/toolbars/BottomToolbar.js +236 -0
  372. package/dist/react/workspace/toolbars/BottomToolbar.js.map +1 -0
  373. package/dist/react/workspace/toolbars/RightToolbar.d.ts +8 -0
  374. package/dist/react/workspace/toolbars/RightToolbar.d.ts.map +1 -0
  375. package/dist/react/workspace/toolbars/RightToolbar.js +18 -0
  376. package/dist/react/workspace/toolbars/RightToolbar.js.map +1 -0
  377. package/dist/react/workspace/toolbars/TopToolbar.d.ts +41 -0
  378. package/dist/react/workspace/toolbars/TopToolbar.d.ts.map +1 -0
  379. package/dist/react/workspace/toolbars/TopToolbar.js +82 -0
  380. package/dist/react/workspace/toolbars/TopToolbar.js.map +1 -0
  381. package/dist/renderers/CandlestickRenderer.d.ts +13 -0
  382. package/dist/renderers/CandlestickRenderer.d.ts.map +1 -0
  383. package/dist/renderers/CandlestickRenderer.js +98 -0
  384. package/dist/renderers/CandlestickRenderer.js.map +1 -0
  385. package/dist/renderers/HistogramRenderer.d.ts +11 -0
  386. package/dist/renderers/HistogramRenderer.d.ts.map +1 -0
  387. package/dist/renderers/HistogramRenderer.js +50 -0
  388. package/dist/renderers/HistogramRenderer.js.map +1 -0
  389. package/dist/renderers/LineRenderer.d.ts +12 -0
  390. package/dist/renderers/LineRenderer.d.ts.map +1 -0
  391. package/dist/renderers/LineRenderer.js +64 -0
  392. package/dist/renderers/LineRenderer.js.map +1 -0
  393. package/dist/theme/colors.d.ts +4 -0
  394. package/dist/theme/colors.d.ts.map +1 -0
  395. package/dist/theme/colors.js +19 -0
  396. package/dist/theme/colors.js.map +1 -0
  397. package/dist/tools/barDivergenceCheck.d.ts +120 -0
  398. package/dist/tools/barDivergenceCheck.d.ts.map +1 -0
  399. package/dist/tools/barDivergenceCheck.js +200 -0
  400. package/dist/tools/barDivergenceCheck.js.map +1 -0
  401. package/dist/trading/TradingOverlayStore.d.ts +86 -0
  402. package/dist/trading/TradingOverlayStore.d.ts.map +1 -0
  403. package/dist/trading/TradingOverlayStore.js +139 -0
  404. package/dist/trading/TradingOverlayStore.js.map +1 -0
  405. package/dist/trading/UnmanagedIngestion.d.ts +91 -0
  406. package/dist/trading/UnmanagedIngestion.d.ts.map +1 -0
  407. package/dist/trading/UnmanagedIngestion.js +114 -0
  408. package/dist/trading/UnmanagedIngestion.js.map +1 -0
  409. package/dist/trading/__tests__/ManagedTradingController.test.d.ts +18 -0
  410. package/dist/trading/__tests__/ManagedTradingController.test.d.ts.map +1 -0
  411. package/dist/trading/__tests__/ManagedTradingController.test.js +271 -0
  412. package/dist/trading/__tests__/ManagedTradingController.test.js.map +1 -0
  413. package/dist/trading/__tests__/TradingOverlayStore.test.d.ts +16 -0
  414. package/dist/trading/__tests__/TradingOverlayStore.test.d.ts.map +1 -0
  415. package/dist/trading/__tests__/TradingOverlayStore.test.js +267 -0
  416. package/dist/trading/__tests__/TradingOverlayStore.test.js.map +1 -0
  417. package/dist/trading/__tests__/UnmanagedIngestion.test.d.ts +16 -0
  418. package/dist/trading/__tests__/UnmanagedIngestion.test.d.ts.map +1 -0
  419. package/dist/trading/__tests__/UnmanagedIngestion.test.js +170 -0
  420. package/dist/trading/__tests__/UnmanagedIngestion.test.js.map +1 -0
  421. package/dist/trading/managed/ManagedTradingController.d.ts +110 -0
  422. package/dist/trading/managed/ManagedTradingController.d.ts.map +1 -0
  423. package/dist/trading/managed/ManagedTradingController.js +247 -0
  424. package/dist/trading/managed/ManagedTradingController.js.map +1 -0
  425. package/dist/trading/managed/managedCapabilities.d.ts +45 -0
  426. package/dist/trading/managed/managedCapabilities.d.ts.map +1 -0
  427. package/dist/trading/managed/managedCapabilities.js +79 -0
  428. package/dist/trading/managed/managedCapabilities.js.map +1 -0
  429. package/dist/trading/managed/managedTypes.d.ts +122 -0
  430. package/dist/trading/managed/managedTypes.d.ts.map +1 -0
  431. package/dist/trading/managed/managedTypes.js +13 -0
  432. package/dist/trading/managed/managedTypes.js.map +1 -0
  433. package/dist/trading/tradingTypes.d.ts +89 -0
  434. package/dist/trading/tradingTypes.d.ts.map +1 -0
  435. package/dist/trading/tradingTypes.js +8 -0
  436. package/dist/trading/tradingTypes.js.map +1 -0
  437. package/dist/tscript/TScriptIndicator.d.ts +41 -0
  438. package/dist/tscript/TScriptIndicator.d.ts.map +1 -0
  439. package/dist/tscript/TScriptIndicator.js +47 -0
  440. package/dist/tscript/TScriptIndicator.js.map +1 -0
  441. package/dist/tscript/ast.d.ts +89 -0
  442. package/dist/tscript/ast.d.ts.map +1 -0
  443. package/dist/tscript/ast.js +22 -0
  444. package/dist/tscript/ast.js.map +1 -0
  445. package/dist/tscript/lexer.d.ts +36 -0
  446. package/dist/tscript/lexer.d.ts.map +1 -0
  447. package/dist/tscript/lexer.js +187 -0
  448. package/dist/tscript/lexer.js.map +1 -0
  449. package/dist/tscript/parser.d.ts +50 -0
  450. package/dist/tscript/parser.d.ts.map +1 -0
  451. package/dist/tscript/parser.js +318 -0
  452. package/dist/tscript/parser.js.map +1 -0
  453. package/dist/tscript/runtime.d.ts +123 -0
  454. package/dist/tscript/runtime.d.ts.map +1 -0
  455. package/dist/tscript/runtime.js +475 -0
  456. package/dist/tscript/runtime.js.map +1 -0
  457. package/dist/tscript/series.d.ts +49 -0
  458. package/dist/tscript/series.d.ts.map +1 -0
  459. package/dist/tscript/series.js +79 -0
  460. package/dist/tscript/series.js.map +1 -0
  461. package/dist/types/IChart.d.ts +48 -0
  462. package/dist/types/IChart.d.ts.map +1 -0
  463. package/dist/types/IChart.js +2 -0
  464. package/dist/types/IChart.js.map +1 -0
  465. package/{src/types/IRenderer.ts → dist/types/IRenderer.d.ts} +2 -8
  466. package/dist/types/IRenderer.d.ts.map +1 -0
  467. package/dist/types/IRenderer.js +2 -0
  468. package/dist/types/IRenderer.js.map +1 -0
  469. package/dist/types/ISeries.d.ts +26 -0
  470. package/dist/types/ISeries.d.ts.map +1 -0
  471. package/dist/types/ISeries.js +2 -0
  472. package/dist/types/ISeries.js.map +1 -0
  473. package/package.json +32 -4
  474. package/src/__tests__/backwardCompatibility.test.ts +0 -191
  475. package/src/__tests__/candleInvariant.test.ts +0 -500
  476. package/src/__tests__/timeframeBoundary.test.ts +0 -583
  477. package/src/api/DrawingManager.ts +0 -188
  478. package/src/api/EventBus.ts +0 -53
  479. package/src/api/IndicatorDAG.ts +0 -389
  480. package/src/api/IndicatorRegistry.ts +0 -47
  481. package/src/api/LayoutManager.ts +0 -72
  482. package/src/api/PaneManager.ts +0 -129
  483. package/src/api/ReferenceAPI.ts +0 -195
  484. package/src/api/TChart.ts +0 -881
  485. package/src/api/drawing tools/fib gann menu/fibRetracement.ts +0 -27
  486. package/src/api/drawing tools/lines menu/crossLine.ts +0 -21
  487. package/src/api/drawing tools/lines menu/disjointChannel.ts +0 -74
  488. package/src/api/drawing tools/lines menu/extendedLine.ts +0 -22
  489. package/src/api/drawing tools/lines menu/flatTopBottom.ts +0 -45
  490. package/src/api/drawing tools/lines menu/horizontal.ts +0 -24
  491. package/src/api/drawing tools/lines menu/horizontalRay.ts +0 -25
  492. package/src/api/drawing tools/lines menu/infoLine.ts +0 -127
  493. package/src/api/drawing tools/lines menu/insidePitchfork.ts +0 -21
  494. package/src/api/drawing tools/lines menu/modifiedSchiffPitchfork.ts +0 -18
  495. package/src/api/drawing tools/lines menu/parallelChannel.ts +0 -47
  496. package/src/api/drawing tools/lines menu/pitchfork.ts +0 -15
  497. package/src/api/drawing tools/lines menu/ray.ts +0 -28
  498. package/src/api/drawing tools/lines menu/regressionTrend.ts +0 -157
  499. package/src/api/drawing tools/lines menu/schiffPitchfork.ts +0 -18
  500. package/src/api/drawing tools/lines menu/trendAngle.ts +0 -64
  501. package/src/api/drawing tools/lines menu/trendline.ts +0 -16
  502. package/src/api/drawing tools/lines menu/vertical.ts +0 -16
  503. package/src/api/drawing tools/shapes menu/rectangle.ts +0 -24
  504. package/src/api/drawing tools/shapes menu/text.ts +0 -30
  505. package/src/api/drawingUtils.ts +0 -82
  506. package/src/core/CanvasLayer.ts +0 -77
  507. package/src/core/Chart.ts +0 -917
  508. package/src/core/CoordTransform.ts +0 -282
  509. package/src/core/Crosshair.ts +0 -207
  510. package/src/core/IndicatorEngine.ts +0 -216
  511. package/src/core/InteractionManager.ts +0 -899
  512. package/src/core/PriceScale.ts +0 -133
  513. package/src/core/Series.ts +0 -132
  514. package/src/core/TimeScale.ts +0 -175
  515. package/src/datafeed/DatafeedConnector.ts +0 -300
  516. package/src/engine/CandleEngine.ts +0 -458
  517. package/src/engine/__tests__/CandleEngine.test.ts +0 -402
  518. package/src/engine/candleInvariants.ts +0 -172
  519. package/src/index.ts +0 -190
  520. package/src/licensing/ChartRuntimeResolver.ts +0 -380
  521. package/src/licensing/LicenseManager.ts +0 -131
  522. package/src/licensing/__tests__/ChartRuntimeResolver.test.ts +0 -207
  523. package/src/licensing/__tests__/LicenseManager.test.ts +0 -180
  524. package/src/licensing/licenseTypes.ts +0 -19
  525. package/src/pine/PineCompiler.ts +0 -68
  526. package/src/pine/diagnostics.ts +0 -30
  527. package/src/pine/pine-ast.ts +0 -163
  528. package/src/pine/pine-lexer.ts +0 -265
  529. package/src/pine/pine-parser.ts +0 -439
  530. package/src/pine/pine-transpiler.ts +0 -301
  531. package/src/pixi/LayerName.ts +0 -35
  532. package/src/pixi/PixiCandlestickRenderer.ts +0 -125
  533. package/src/pixi/PixiChart.ts +0 -425
  534. package/src/pixi/PixiCrosshairRenderer.ts +0 -134
  535. package/src/pixi/PixiDrawingRenderer.ts +0 -121
  536. package/src/pixi/PixiGridRenderer.ts +0 -136
  537. package/src/pixi/PixiLayerManager.ts +0 -102
  538. package/src/renderers/CandlestickRenderer.ts +0 -130
  539. package/src/renderers/HistogramRenderer.ts +0 -63
  540. package/src/renderers/LineRenderer.ts +0 -77
  541. package/src/theme/colors.ts +0 -21
  542. package/src/tools/barDivergenceCheck.ts +0 -305
  543. package/src/trading/TradingOverlayStore.ts +0 -161
  544. package/src/trading/UnmanagedIngestion.ts +0 -156
  545. package/src/trading/__tests__/ManagedTradingController.test.ts +0 -338
  546. package/src/trading/__tests__/TradingOverlayStore.test.ts +0 -323
  547. package/src/trading/__tests__/UnmanagedIngestion.test.ts +0 -205
  548. package/src/trading/managed/ManagedTradingController.ts +0 -292
  549. package/src/trading/managed/managedCapabilities.ts +0 -98
  550. package/src/trading/managed/managedTypes.ts +0 -151
  551. package/src/trading/tradingTypes.ts +0 -135
  552. package/src/tscript/TScriptIndicator.ts +0 -54
  553. package/src/tscript/ast.ts +0 -105
  554. package/src/tscript/lexer.ts +0 -190
  555. package/src/tscript/parser.ts +0 -334
  556. package/src/tscript/runtime.ts +0 -525
  557. package/src/tscript/series.ts +0 -84
  558. package/src/types/IChart.ts +0 -56
  559. package/src/types/ISeries.ts +0 -30
  560. package/tsconfig.json +0 -22
  561. package/tsup.config.ts +0 -15
  562. package/vitest.config.ts +0 -25
@@ -0,0 +1,395 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * IndicatorPane — Canvas 2D rendering of a single indicator sub-pane.
4
+ *
5
+ * Uses the main chart's CoordTransform for x-axis alignment, then computes
6
+ * its own per-pane y-axis from indicator value ranges.
7
+ */
8
+ import { useEffect, useRef } from 'react';
9
+ import { IndicatorLabel } from './IndicatorLabel';
10
+ // ─── Constants ────────────────────────────────────────────────────────────────
11
+ /** Width of the right-side price axis — must match the main chart's AXIS_WIDTH. */
12
+ const AXIS_W = 70;
13
+ /** Vertical padding inside the pane (logical pixels). */
14
+ const PAD_T = 8;
15
+ const PAD_B = 8;
16
+ // ─── Theme palettes ───────────────────────────────────────────────────────────
17
+ const PALETTE = {
18
+ dark: {
19
+ bg: '#131722',
20
+ text: '#d1d4dc',
21
+ muted: '#787b86',
22
+ border: '#2a2e39',
23
+ up: '#26a69a',
24
+ down: '#ef5350',
25
+ macdLine: '#2196f3',
26
+ signalLine: '#ff9800',
27
+ },
28
+ light: {
29
+ bg: '#ffffff',
30
+ text: '#131722',
31
+ muted: '#9098a1',
32
+ border: '#e0e3eb',
33
+ up: '#26a69a',
34
+ down: '#ef5350',
35
+ macdLine: '#1565c0',
36
+ signalLine: '#e65100',
37
+ },
38
+ };
39
+ // ─── Low-level draw helpers ───────────────────────────────────────────────────
40
+ function _vy(value, min, max, topPad, plotH) {
41
+ if (max === min)
42
+ return topPad + plotH / 2;
43
+ return topPad + plotH * (1 - (value - min) / (max - min));
44
+ }
45
+ function _hline(ctx, y, plotW, color, dash = []) {
46
+ ctx.strokeStyle = color;
47
+ ctx.lineWidth = 0.5;
48
+ ctx.setLineDash(dash);
49
+ ctx.beginPath();
50
+ ctx.moveTo(0, y + 0.5);
51
+ ctx.lineTo(plotW, y + 0.5);
52
+ ctx.stroke();
53
+ ctx.setLineDash([]);
54
+ }
55
+ function _axisLabels(ctx, ticks, min, max, topPad, plotH, canvasH, plotW, color, decimals = 0) {
56
+ ctx.font = '9px -apple-system, BlinkMacSystemFont, sans-serif';
57
+ ctx.fillStyle = color;
58
+ ctx.textAlign = 'left';
59
+ ctx.textBaseline = 'middle';
60
+ for (const tick of ticks) {
61
+ const y = _vy(tick, min, max, topPad, plotH);
62
+ if (y < 2 || y > canvasH - 2)
63
+ continue;
64
+ ctx.fillText(tick.toFixed(decimals), plotW + 4, y);
65
+ }
66
+ }
67
+ // ─── Per-indicator renderers ──────────────────────────────────────────────────
68
+ function _renderRSI(ctx, points, transform, plotW, h, lineColor, pal) {
69
+ const plotH = h - PAD_T - PAD_B;
70
+ const min = 0;
71
+ const max = 100;
72
+ const y70 = _vy(70, min, max, PAD_T, plotH);
73
+ const y50 = _vy(50, min, max, PAD_T, plotH);
74
+ const y30 = _vy(30, min, max, PAD_T, plotH);
75
+ // Zone fills
76
+ ctx.fillStyle = 'rgba(239,83,80,0.06)';
77
+ ctx.fillRect(0, PAD_T, plotW, y70 - PAD_T);
78
+ ctx.fillStyle = 'rgba(38,166,154,0.06)';
79
+ ctx.fillRect(0, y30, plotW, h - PAD_B - y30);
80
+ // Reference lines
81
+ _hline(ctx, y70, plotW, pal.muted, [3, 3]);
82
+ _hline(ctx, y50, plotW, pal.border);
83
+ _hline(ctx, y30, plotW, pal.muted, [3, 3]);
84
+ // Level labels inside plot area
85
+ ctx.font = '9px sans-serif';
86
+ ctx.fillStyle = pal.muted;
87
+ ctx.textAlign = 'left';
88
+ ctx.textBaseline = 'bottom';
89
+ ctx.fillText('70', 2, y70);
90
+ ctx.textBaseline = 'top';
91
+ ctx.fillText('30', 2, y30);
92
+ // RSI line
93
+ if (points.length > 0) {
94
+ ctx.strokeStyle = lineColor;
95
+ ctx.lineWidth = 1.5;
96
+ ctx.beginPath();
97
+ let started = false;
98
+ for (const p of points) {
99
+ const x = transform.timeToX(p.time);
100
+ if (x < -20 || x > plotW + 20) {
101
+ started = false;
102
+ continue;
103
+ }
104
+ const y = _vy(p.value, min, max, PAD_T, plotH);
105
+ if (!started) {
106
+ ctx.moveTo(x, y);
107
+ started = true;
108
+ }
109
+ else {
110
+ ctx.lineTo(x, y);
111
+ }
112
+ }
113
+ ctx.stroke();
114
+ }
115
+ _axisLabels(ctx, [0, 30, 50, 70, 100], min, max, PAD_T, plotH, h, plotW, pal.muted);
116
+ }
117
+ function _renderMACD(ctx, points, transform, plotW, h, pal) {
118
+ if (points.length === 0)
119
+ return;
120
+ const plotH = h - PAD_T - PAD_B;
121
+ // Auto-scale to visible values
122
+ let min = Infinity;
123
+ let max = -Infinity;
124
+ for (const p of points) {
125
+ const x = transform.timeToX(p.time);
126
+ if (x < -20 || x > plotW + 20)
127
+ continue;
128
+ min = Math.min(min, p.histogram, p.macd, p.signal);
129
+ max = Math.max(max, p.histogram, p.macd, p.signal);
130
+ }
131
+ if (!isFinite(min)) {
132
+ min = -0.01;
133
+ max = 0.01;
134
+ }
135
+ const rangePad = (max - min) * 0.1 || 0.001;
136
+ min -= rangePad;
137
+ max += rangePad;
138
+ // Zero line
139
+ _hline(ctx, _vy(0, min, max, PAD_T, plotH), plotW, pal.border, [2, 2]);
140
+ // Compute bar pixel width from consecutive timestamps
141
+ let barPx = 5;
142
+ if (points.length >= 2) {
143
+ barPx = Math.max(1, Math.abs(transform.timeToX(points[1].time) - transform.timeToX(points[0].time)) * 0.7);
144
+ }
145
+ // Histogram bars
146
+ const y0 = _vy(0, min, max, PAD_T, plotH);
147
+ for (const p of points) {
148
+ const x = transform.timeToX(p.time);
149
+ if (x < -barPx || x > plotW + barPx)
150
+ continue;
151
+ const yH = _vy(p.histogram, min, max, PAD_T, plotH);
152
+ ctx.fillStyle = p.histogram >= 0 ? `${pal.up}99` : `${pal.down}99`;
153
+ ctx.fillRect(x - barPx / 2, Math.min(y0, yH), barPx, Math.abs(y0 - yH) || 1);
154
+ }
155
+ // MACD line
156
+ ctx.strokeStyle = pal.macdLine;
157
+ ctx.lineWidth = 1.5;
158
+ ctx.beginPath();
159
+ let started = false;
160
+ for (const p of points) {
161
+ const x = transform.timeToX(p.time);
162
+ if (x < -20 || x > plotW + 20) {
163
+ started = false;
164
+ continue;
165
+ }
166
+ const y = _vy(p.macd, min, max, PAD_T, plotH);
167
+ if (!started) {
168
+ ctx.moveTo(x, y);
169
+ started = true;
170
+ }
171
+ else {
172
+ ctx.lineTo(x, y);
173
+ }
174
+ }
175
+ ctx.stroke();
176
+ // Signal line
177
+ ctx.strokeStyle = pal.signalLine;
178
+ ctx.lineWidth = 1;
179
+ ctx.beginPath();
180
+ started = false;
181
+ for (const p of points) {
182
+ const x = transform.timeToX(p.time);
183
+ if (x < -20 || x > plotW + 20) {
184
+ started = false;
185
+ continue;
186
+ }
187
+ const y = _vy(p.signal, min, max, PAD_T, plotH);
188
+ if (!started) {
189
+ ctx.moveTo(x, y);
190
+ started = true;
191
+ }
192
+ else {
193
+ ctx.lineTo(x, y);
194
+ }
195
+ }
196
+ ctx.stroke();
197
+ const range = max - min;
198
+ const dec = range < 0.1 ? 4 : range < 10 ? 2 : 0;
199
+ _axisLabels(ctx, [min + range * 0.1, min + range * 0.5, min + range * 0.9], min, max, PAD_T, plotH, h, plotW, pal.muted, dec);
200
+ }
201
+ function _renderVolume(ctx, bars, points, transform, plotW, h, pal) {
202
+ if (points.length === 0)
203
+ return;
204
+ const plotH = h - PAD_T - PAD_B;
205
+ const min = 0;
206
+ const max = Math.max(...points.map((p) => p.value));
207
+ if (max === 0)
208
+ return;
209
+ const barMap = new Map(bars.map((b) => [b.time, b]));
210
+ let barPx = 5;
211
+ if (points.length >= 2) {
212
+ barPx = Math.max(1, Math.abs(transform.timeToX(points[1].time) - transform.timeToX(points[0].time)) * 0.8);
213
+ }
214
+ const yBase = _vy(0, min, max, PAD_T, plotH);
215
+ for (const p of points) {
216
+ const x = transform.timeToX(p.time);
217
+ if (x < -barPx || x > plotW + barPx)
218
+ continue;
219
+ const bar = barMap.get(p.time);
220
+ const isUp = bar !== undefined ? bar.close >= bar.open : true;
221
+ const yTop = _vy(p.value, min, max, PAD_T, plotH);
222
+ ctx.fillStyle = isUp ? `${pal.up}99` : `${pal.down}99`;
223
+ ctx.fillRect(x - barPx / 2, yTop, barPx, Math.abs(yBase - yTop) || 1);
224
+ }
225
+ _axisLabels(ctx, [max], min, max, PAD_T, plotH, h, plotW, pal.muted, 0);
226
+ }
227
+ function _renderLineIndicator(ctx, points, transform, plotW, h, lineColor, pal) {
228
+ if (points.length === 0)
229
+ return;
230
+ const plotH = h - PAD_T - PAD_B;
231
+ // Auto-scale to visible values
232
+ let min = Infinity;
233
+ let max = -Infinity;
234
+ for (const p of points) {
235
+ const x = transform.timeToX(p.time);
236
+ if (x < -20 || x > plotW + 20)
237
+ continue;
238
+ min = Math.min(min, p.value);
239
+ max = Math.max(max, p.value);
240
+ }
241
+ if (!isFinite(min))
242
+ return;
243
+ const rangePad = (max - min) * 0.1 || 1;
244
+ min -= rangePad;
245
+ max += rangePad;
246
+ ctx.strokeStyle = lineColor;
247
+ ctx.lineWidth = 1.5;
248
+ ctx.beginPath();
249
+ let started = false;
250
+ for (const p of points) {
251
+ const x = transform.timeToX(p.time);
252
+ if (x < -20 || x > plotW + 20) {
253
+ started = false;
254
+ continue;
255
+ }
256
+ const y = _vy(p.value, min, max, PAD_T, plotH);
257
+ if (!started) {
258
+ ctx.moveTo(x, y);
259
+ started = true;
260
+ }
261
+ else {
262
+ ctx.lineTo(x, y);
263
+ }
264
+ }
265
+ ctx.stroke();
266
+ const range = max - min;
267
+ const dec = range < 0.1 ? 4 : range < 10 ? 2 : 0;
268
+ _axisLabels(ctx, [min + range * 0.25, min + range * 0.75], min, max, PAD_T, plotH, h, plotW, pal.muted, dec);
269
+ }
270
+ // ─── Label helper ─────────────────────────────────────────────────────────────
271
+ function _indicatorLabel(type, params = {}) {
272
+ switch (type) {
273
+ case 'rsi': return `RSI(${params['period'] ?? 14})`;
274
+ case 'macd': return `MACD(${params['fast'] ?? 12},${params['slow'] ?? 26},${params['signal'] ?? 9})`;
275
+ case 'volume': return 'Volume';
276
+ case 'sma': return `SMA(${params['period'] ?? 20})`;
277
+ case 'ema': return `EMA(${params['period'] ?? 20})`;
278
+ case 'wma': return `WMA(${params['period'] ?? 20})`;
279
+ default: return type.toUpperCase();
280
+ }
281
+ }
282
+ export function IndicatorPane({ indicators, bars, transform, height, theme, computedResults, crosshairXRef, onRemove, onConfigure, }) {
283
+ const canvasRef = useRef(null);
284
+ // Stable ref to the draw function — rebuilt whenever data changes,
285
+ // called each RAF frame to stay in sync with the candle layer.
286
+ const drawFnRef = useRef(null);
287
+ useEffect(() => {
288
+ drawFnRef.current = () => {
289
+ const canvas = canvasRef.current;
290
+ if (!canvas || !transform || indicators.length === 0)
291
+ return;
292
+ const dpr = window.devicePixelRatio ?? 1;
293
+ const cssW = canvas.offsetWidth || (canvas.parentElement?.clientWidth ?? 800);
294
+ const cssH = height;
295
+ const physW = Math.round(cssW * dpr);
296
+ const physH = Math.round(cssH * dpr);
297
+ if (canvas.width !== physW || canvas.height !== physH) {
298
+ canvas.width = physW;
299
+ canvas.height = physH;
300
+ }
301
+ const ctx = canvas.getContext('2d');
302
+ if (!ctx)
303
+ return;
304
+ const pal = PALETTE[theme];
305
+ ctx.save();
306
+ ctx.scale(dpr, dpr);
307
+ const w = cssW;
308
+ const h = cssH;
309
+ const plotW = w - AXIS_W;
310
+ // Background
311
+ ctx.fillStyle = pal.bg;
312
+ ctx.fillRect(0, 0, w, h);
313
+ // Top separator
314
+ ctx.strokeStyle = pal.border;
315
+ ctx.lineWidth = 1;
316
+ ctx.beginPath();
317
+ ctx.moveTo(0, 0.5);
318
+ ctx.lineTo(w, 0.5);
319
+ ctx.stroke();
320
+ // Axis divider
321
+ ctx.beginPath();
322
+ ctx.moveTo(plotW + 0.5, 0);
323
+ ctx.lineTo(plotW + 0.5, h);
324
+ ctx.stroke();
325
+ // Clip plot area so indicator lines don't bleed into axis
326
+ ctx.save();
327
+ ctx.beginPath();
328
+ ctx.rect(0, 0, plotW, h);
329
+ ctx.clip();
330
+ for (const indicator of indicators) {
331
+ const result = computedResults.get(indicator.id);
332
+ if (!result)
333
+ continue;
334
+ const color = indicator.config.color;
335
+ switch (indicator.config.type) {
336
+ case 'rsi':
337
+ if (result.kind === 'series')
338
+ _renderRSI(ctx, result.points, transform, plotW, h, color ?? '#7c4dff', pal);
339
+ break;
340
+ case 'macd':
341
+ if (result.kind === 'macd')
342
+ _renderMACD(ctx, result.points, transform, plotW, h, pal);
343
+ break;
344
+ case 'volume':
345
+ if (result.kind === 'series')
346
+ _renderVolume(ctx, bars, result.points, transform, plotW, h, pal);
347
+ break;
348
+ default:
349
+ // sma, ema, wma, bbands, and any chained / custom indicators
350
+ if (result.kind === 'series')
351
+ _renderLineIndicator(ctx, result.points, transform, plotW, h, color ?? '#ffb300', pal);
352
+ }
353
+ }
354
+ // ── Crosshair vertical line (synced from price pane) ────────────────
355
+ const xhair = crosshairXRef?.current ?? null;
356
+ if (xhair !== null && xhair >= 0 && xhair <= plotW) {
357
+ ctx.strokeStyle = theme === 'dark' ? 'rgba(255,255,255,0.4)' : 'rgba(0,0,0,0.4)';
358
+ ctx.lineWidth = 0.5;
359
+ ctx.setLineDash([3, 3]);
360
+ ctx.beginPath();
361
+ ctx.moveTo(xhair + 0.5, 0);
362
+ ctx.lineTo(xhair + 0.5, h);
363
+ ctx.stroke();
364
+ ctx.setLineDash([]);
365
+ }
366
+ ctx.restore(); // clip
367
+ ctx.restore(); // dpr scale
368
+ };
369
+ // Draw immediately when data (not viewport) changes.
370
+ drawFnRef.current();
371
+ }, [computedResults, bars, height, indicators, transform, theme]);
372
+ // RAF loop: redraw every frame so the pane tracks pan/zoom in the same
373
+ // animation frame as the candle layer — no React state update needed.
374
+ useEffect(() => {
375
+ let rafId;
376
+ const tick = () => {
377
+ drawFnRef.current?.();
378
+ rafId = requestAnimationFrame(tick);
379
+ };
380
+ rafId = requestAnimationFrame(tick);
381
+ return () => cancelAnimationFrame(rafId);
382
+ }, []);
383
+ const pal = PALETTE[theme];
384
+ return (_jsxs("div", { style: { position: 'relative', width: '100%', height: `${height}px` }, children: [_jsx("canvas", { ref: canvasRef, style: { width: '100%', height: `${height}px`, display: 'block' } }), _jsx("div", { style: {
385
+ position: 'absolute',
386
+ top: 4,
387
+ left: 4,
388
+ display: 'flex',
389
+ flexDirection: 'column',
390
+ gap: 2,
391
+ pointerEvents: 'auto',
392
+ zIndex: 2,
393
+ }, children: indicators.map((ind) => (_jsx(IndicatorLabel, { indicator: ind, color: pal.text, onRemove: () => onRemove?.(ind.id), onConfigure: () => onConfigure?.(ind) }, ind.id))) })] }));
394
+ }
395
+ //# sourceMappingURL=IndicatorPane.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndicatorPane.js","sourceRoot":"","sources":["../../../src/react/canvas/IndicatorPane.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import React from 'react';
2
+ import type { PointerToolType } from '../../';
3
+ /**
4
+ * PointerOverlay — a transparent `<div>` that covers the entire chart area and
5
+ * renders tool-specific cursor visuals for the `dot` and `demonstration` modes.
6
+ *
7
+ * - **dot**: SVG crosshair lines + small filled circle at the intersection.
8
+ * - **demonstration**: SVG crosshair + semi-transparent filled circle centred
9
+ * on the cursor.
10
+ *
11
+ * The component does NOT intercept pointer events (`pointerEvents: none`), so
12
+ * all mouse interactions pass through to the canvas layers beneath it.
13
+ */
14
+ type Props = {
15
+ mode: PointerToolType;
16
+ /** Width of the container to size the SVG overlay. */
17
+ width: number;
18
+ /** Height of the container to size the SVG overlay. */
19
+ height: number;
20
+ };
21
+ export declare function PointerOverlay({ mode, width, height }: Props): React.ReactElement | null;
22
+ export {};
23
+ //# sourceMappingURL=PointerOverlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PointerOverlay.d.ts","sourceRoot":"","sources":["../../../src/react/canvas/PointerOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAU9C;;;;;;;;;;GAUG;AAEH,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,eAAe,CAAC;IACtB,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAIF,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CA4FxF"}
@@ -0,0 +1,61 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useRef } from 'react';
3
+ import { DOT_RADIUS, DOT_COLOR, DEMONSTRATION_RADIUS, DEMONSTRATION_FILL, DEMONSTRATION_STROKE, DEMONSTRATION_COLOR, } from '../../';
4
+ const CROSSHAIR_COLOR = DEMONSTRATION_COLOR;
5
+ export function PointerOverlay({ mode, width, height }) {
6
+ const svgRef = useRef(null);
7
+ const hGroupRef = useRef(null); // translateY group → horizontal line
8
+ const vGroupRef = useRef(null); // translateX group → vertical line
9
+ const cursorGroup = useRef(null); // translate(x,y) group → dot/circle
10
+ useEffect(() => {
11
+ const svg = svgRef.current;
12
+ if (!svg)
13
+ return;
14
+ const container = svg.parentElement;
15
+ if (!container)
16
+ return;
17
+ // Cache the bounding rect so we never call getBoundingClientRect() inside the
18
+ // hot move handler (it forces a synchronous reflow on every event).
19
+ let cachedRect = container.getBoundingClientRect();
20
+ const ro = new ResizeObserver(() => { cachedRect = container.getBoundingClientRect(); });
21
+ ro.observe(container);
22
+ const onMove = (e) => {
23
+ const x = e.clientX - cachedRect.left;
24
+ const y = e.clientY - cachedRect.top;
25
+ if (x < 0 || y < 0 || x > cachedRect.width || y > cachedRect.height) {
26
+ svg.style.opacity = '0';
27
+ return;
28
+ }
29
+ svg.style.opacity = '1';
30
+ // CSS transforms are GPU-composited — no layout reflow, no paint.
31
+ if (hGroupRef.current)
32
+ hGroupRef.current.style.transform = `translateY(${y}px)`;
33
+ if (vGroupRef.current)
34
+ vGroupRef.current.style.transform = `translateX(${x}px)`;
35
+ if (cursorGroup.current)
36
+ cursorGroup.current.style.transform = `translate(${x}px,${y}px)`;
37
+ };
38
+ const hide = () => { svg.style.opacity = '0'; };
39
+ // passive:true lets the browser skip asking us about preventDefault → lower latency
40
+ container.addEventListener('mousemove', onMove, { passive: true });
41
+ container.addEventListener('mouseleave', hide, { passive: true });
42
+ return () => {
43
+ container.removeEventListener('mousemove', onMove);
44
+ container.removeEventListener('mouseleave', hide);
45
+ ro.disconnect();
46
+ };
47
+ }, []);
48
+ if (mode !== 'dot' && mode !== 'demonstration')
49
+ return null;
50
+ return (_jsxs("svg", { ref: svgRef, width: width, height: height, style: {
51
+ position: 'absolute',
52
+ top: 0,
53
+ left: 0,
54
+ pointerEvents: 'none',
55
+ zIndex: 5,
56
+ opacity: 0,
57
+ overflow: 'visible',
58
+ willChange: 'opacity',
59
+ }, children: [_jsx("g", { ref: hGroupRef, children: _jsx("line", { x1: "-9999", y1: "0", x2: "9999", y2: "0", stroke: CROSSHAIR_COLOR, strokeWidth: "1", strokeDasharray: "4 3" }) }), _jsx("g", { ref: vGroupRef, children: _jsx("line", { x1: "0", y1: "-9999", x2: "0", y2: "9999", stroke: CROSSHAIR_COLOR, strokeWidth: "1", strokeDasharray: "4 3" }) }), _jsxs("g", { ref: cursorGroup, children: [mode === 'dot' && (_jsx("circle", { r: DOT_RADIUS, fill: DOT_COLOR })), mode === 'demonstration' && (_jsx("circle", { r: DEMONSTRATION_RADIUS, fill: DEMONSTRATION_FILL, stroke: DEMONSTRATION_STROKE, strokeWidth: "1.5" }))] })] }));
60
+ }
61
+ //# sourceMappingURL=PointerOverlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PointerOverlay.js","sourceRoot":"","sources":["../../../src/react/canvas/PointerOverlay.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ import type { DrawingToolType } from '../../../';
3
+ export type VisibilityAction = 'hideDrawings' | 'hideIndicators' | 'hidePositions' | 'hideAll';
4
+ type Props = {
5
+ activeTool: DrawingToolType;
6
+ onSelectTool: (tool: DrawingToolType) => void;
7
+ /** Current drawing-tool favorites, controlled by the parent. */
8
+ drawingFavorites?: DrawingToolType[];
9
+ /** Called when the user stars/unstars a drawing tool. */
10
+ onDrawingFavoritesChange?: (favs: DrawingToolType[]) => void;
11
+ onVisibilityAction?: (action: VisibilityAction) => void;
12
+ visibilityActiveAction?: VisibilityAction | null;
13
+ onVisibilityDeactivate?: () => void;
14
+ onLinkClick?: () => void;
15
+ onDeleteClick?: () => void;
16
+ };
17
+ export declare function LeftToolbar({ activeTool, onSelectTool, drawingFavorites, onDrawingFavoritesChange, onVisibilityAction, visibilityActiveAction, onVisibilityDeactivate, onLinkClick, onDeleteClick }: Props): React.ReactElement;
18
+ export {};
19
+ //# sourceMappingURL=LeftToolbar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LeftToolbar.d.ts","sourceRoot":"","sources":["../../../../src/react/canvas/toolbars/LeftToolbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAE3D,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,WAAW,CAAC;AAs3B/E,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAAG,gBAAgB,GAAG,eAAe,GAAG,SAAS,CAAC;AAsF/F,KAAK,KAAK,GAAG;IACX,UAAU,EAAE,eAAe,CAAC;IAC5B,YAAY,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;IAC9C,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAC;IACrC,yDAAyD;IACzD,wBAAwB,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,IAAI,CAAC;IAC7D,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACxD,sBAAsB,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACjD,sBAAsB,CAAC,EAAE,MAAM,IAAI,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;CAC5B,CAAC;AAEF,wBAAgB,WAAW,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,YAAY,CA2G/N"}