@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,367 @@
1
+ import { Application } from 'pixi.js';
2
+ import { CanvasLayer } from '../core/CanvasLayer';
3
+ import { TimeScale } from '../core/TimeScale';
4
+ import { PriceScale } from '../core/PriceScale';
5
+ import { CoordTransform } from '../core/CoordTransform';
6
+ import { Series } from '../core/Series';
7
+ import { InteractionManager } from '../core/InteractionManager';
8
+ import { DARK_COLORS, LIGHT_COLORS } from '../theme/colors';
9
+ import { LayerName } from './LayerName';
10
+ import { PixiLayerManager } from './PixiLayerManager';
11
+ import { PixiGridRenderer } from './PixiGridRenderer';
12
+ import { PixiCandlestickRenderer } from './PixiCandlestickRenderer';
13
+ import { PixiCrosshairRenderer } from './PixiCrosshairRenderer';
14
+ import { PixiDrawingRenderer } from './PixiDrawingRenderer';
15
+ /**
16
+ * PixiChart — GPU-accelerated chart engine built on PixiJS v8.
17
+ *
18
+ * Implements `IChart` identically to the Canvas 2D `Chart` class, so it is
19
+ * a drop-in replacement. Rendering is performed inside a PixiJS `Application`
20
+ * (WebGL / WebGPU auto-detected) using seven sortable `Container` layers.
21
+ *
22
+ * Selective redraw:
23
+ * - `DirtyFlags` tracks which layers need painting.
24
+ * - Each layer's renderer is called only when its flag is set.
25
+ * - Viewport changes (zoom/pan) mark all layers dirty via `_markViewportDirty()`.
26
+ * - Data changes only mark `PriceSeries` dirty.
27
+ *
28
+ * @example
29
+ * ```ts
30
+ * const chart = new PixiChart(container, { theme: 'dark' });
31
+ * const series = chart.addSeries({ type: 'candlestick' });
32
+ * series.setData(bars);
33
+ *
34
+ * // Access the transform for drawing tools or plugins
35
+ * const { x, y } = chart.transform().toPixel(bar.time, bar.close);
36
+ * ```
37
+ */
38
+ export class PixiChart {
39
+ _app;
40
+ _stage;
41
+ _container;
42
+ _options;
43
+ _colors;
44
+ _timeScale;
45
+ _priceScale;
46
+ _transform;
47
+ _layers;
48
+ _gridRenderer;
49
+ _candleRenderer;
50
+ _crosshairRenderer;
51
+ _drawingRenderer;
52
+ _series = [];
53
+ _drawings = [];
54
+ _plugins = [];
55
+ _resizeObserver;
56
+ _initPromise;
57
+ _ready = false;
58
+ _interaction;
59
+ constructor(container, options = {}) {
60
+ this._container = container;
61
+ this._container.style.position = 'relative';
62
+ this._container.style.overflow = 'hidden';
63
+ this._options = this._resolveOptions(options);
64
+ this._colors = this._resolveColors(this._options.theme, this._options.colors);
65
+ const { width, height } = container.getBoundingClientRect();
66
+ // ── Scales & transform ────────────────────────────────────────────────────
67
+ // TimeScale and PriceScale need a CanvasLayer for their Canvas 2D render()
68
+ // pass; for PixiChart that pass is never called — Pixi renderers own all
69
+ // drawing. A hidden dummy canvas satisfies the constructor requirement.
70
+ const dpr = window.devicePixelRatio ?? 1;
71
+ const dummyLayer = new CanvasLayer(container, { width, height, dpr, zIndex: 0 });
72
+ dummyLayer.canvas.style.display = 'none';
73
+ this._timeScale = new TimeScale(dummyLayer, this._colors, this._options.timeScale);
74
+ this._priceScale = new PriceScale(dummyLayer, this._colors, this._options.priceScale);
75
+ this._transform = new CoordTransform(this._timeScale, this._priceScale, this._priceScale.width, this._timeScale.height);
76
+ this._transform.update(width, height);
77
+ // ── PixiJS Application ────────────────────────────────────────────────────
78
+ this._app = new Application();
79
+ this._stage = this._app.stage;
80
+ this._initPromise = this._app.init({
81
+ width,
82
+ height,
83
+ backgroundColor: parseInt(this._colors.background.replace('#', ''), 16),
84
+ antialias: true,
85
+ resolution: dpr,
86
+ autoDensity: true,
87
+ }).then(() => {
88
+ const canvas = this._app.canvas;
89
+ canvas.style.position = 'absolute';
90
+ canvas.style.inset = '0';
91
+ container.appendChild(canvas);
92
+ // ── Layers ──────────────────────────────────────────────────────────────
93
+ this._layers.dirty.markAll();
94
+ this._ready = true;
95
+ // Attach PixiJS ticker for per-frame selective redraw
96
+ this._app.ticker.add(() => this._renderFrame());
97
+ });
98
+ // Layer manager + renderers (can be constructed before init resolves)
99
+ this._layers = new PixiLayerManager(this._stage);
100
+ this._gridRenderer = new PixiGridRenderer(this._layers.get(LayerName.Background), this._colors, this._timeScale);
101
+ this._candleRenderer = new PixiCandlestickRenderer(this._layers.get(LayerName.PriceSeries));
102
+ this._crosshairRenderer = new PixiCrosshairRenderer(this._layers.get(LayerName.Interaction), this._colors);
103
+ this._drawingRenderer = new PixiDrawingRenderer(this._layers.get(LayerName.Drawing));
104
+ // ── Interactions ─────────────────────────────────────────────────────────
105
+ this._interaction = new InteractionManager(this._container, this._transform, {
106
+ onPan: (dx, dy) => {
107
+ this._transform.pan(dx, dy);
108
+ this._markViewportDirty();
109
+ },
110
+ onZoom: (factor, originX) => {
111
+ this._transform.zoomTime(factor, originX);
112
+ this._markViewportDirty();
113
+ },
114
+ onCrosshairMove: (x, y) => {
115
+ this._crosshairRenderer.update(x, y);
116
+ this._layers.dirty.mark(LayerName.Interaction);
117
+ },
118
+ onCrosshairHide: () => {
119
+ this._crosshairRenderer.hide();
120
+ this._layers.dirty.mark(LayerName.Interaction);
121
+ },
122
+ onKeyAction: (action) => {
123
+ this._handleKeyAction(action);
124
+ },
125
+ }, {
126
+ enablePan: this._options.handleScroll,
127
+ enableZoom: this._options.handleScale,
128
+ });
129
+ this._resizeObserver = new ResizeObserver(() => this._onResize());
130
+ this._resizeObserver.observe(container);
131
+ }
132
+ // ─── IChart implementation ────────────────────────────────────────────────
133
+ addSeries(options) {
134
+ const series = new Series(options, this._colors);
135
+ // When the caller mutates data, mark the series + background layers dirty
136
+ // so the next ticker frame redraws only those layers (selective redraw).
137
+ series.onDataChanged = () => {
138
+ this._layers.dirty.mark(LayerName.PriceSeries);
139
+ this._layers.dirty.mark(LayerName.Background); // price range may change
140
+ };
141
+ this._series.push(series);
142
+ this._layers.dirty.mark(LayerName.PriceSeries);
143
+ return series;
144
+ }
145
+ removeSeries(series) {
146
+ this._series = this._series.filter((s) => s !== series);
147
+ this._layers.dirty.mark(LayerName.PriceSeries);
148
+ }
149
+ addPlugin(plugin) {
150
+ this._plugins.push(plugin);
151
+ plugin.onAttach(this);
152
+ }
153
+ removePlugin(plugin) {
154
+ this._plugins = this._plugins.filter((p) => p !== plugin);
155
+ plugin.onDetach();
156
+ }
157
+ applyOptions(options) {
158
+ Object.assign(this._options, options);
159
+ if (options.theme) {
160
+ // Mutate the existing colors object in-place so all renderers that hold
161
+ // a reference to it (PixiGridRenderer, PixiCrosshairRenderer, etc.) pick
162
+ // up the new values without needing a reference swap.
163
+ Object.assign(this._colors, this._resolveColors(options.theme, this._options.colors));
164
+ // Also update the PixiJS renderer's own background color.
165
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
166
+ this._app.renderer.background.color = parseInt(this._colors.background.replace('#', ''), 16);
167
+ }
168
+ if (options.timezone !== undefined) {
169
+ this._crosshairRenderer.timezone = options.timezone ?? 'UTC';
170
+ }
171
+ this._layers.dirty.markAll();
172
+ }
173
+ setInterval(tf) {
174
+ this._crosshairRenderer.interval = tf;
175
+ this._layers.dirty.mark(LayerName.Interaction);
176
+ }
177
+ resize(width, height) {
178
+ this._app.renderer.resize(width, height);
179
+ this._transform.update(width, height);
180
+ this._markViewportDirty();
181
+ }
182
+ transform() {
183
+ return this._transform;
184
+ }
185
+ destroy() {
186
+ this._resizeObserver.disconnect();
187
+ this._interaction.destroy();
188
+ this._layers.destroy();
189
+ this._plugins.forEach((p) => p.onDetach());
190
+ this._series = [];
191
+ this._plugins = [];
192
+ void this._app.destroy(true, { children: true });
193
+ }
194
+ // ─── Drawing objects (used by PixiChart directly; TChart uses DrawingManager) ─
195
+ /** @internal Used by PixiChart when DrawingManager pushes an update. */
196
+ setDrawings(drawings) {
197
+ this._drawings = [...drawings];
198
+ this._layers.dirty.mark(LayerName.Drawing);
199
+ }
200
+ // ─── Rendering ───────────────────────────────────────────────────────────────
201
+ _renderFrame() {
202
+ if (!this._ready)
203
+ return;
204
+ const t = this._transform;
205
+ const cw = t.canvasWidth;
206
+ const ch = t.canvasHeight;
207
+ const dirty = this._layers.dirty;
208
+ // ── Price series first so auto-fit updates the price range ───────────────
209
+ // This must run before Background so the grid can reflect the new range
210
+ // within the same frame.
211
+ if (dirty.isDirty(LayerName.PriceSeries)) {
212
+ // Auto-fit price range to visible data, then mark background dirty so
213
+ // the grid redraws with the updated price range in this same frame.
214
+ this._autoFitPriceRange();
215
+ dirty.mark(LayerName.Background);
216
+ // Renderers own their Graphics object; calling gfx.clear() internally.
217
+ // Do NOT call _layers.clear(PriceSeries) — that would detach the gfx.
218
+ for (const series of this._series) {
219
+ const opts = series.options();
220
+ if (opts.visible === false)
221
+ continue;
222
+ const bars = this._getVisibleBars(series);
223
+ if (bars.length === 0)
224
+ continue;
225
+ if (opts.type === 'heikinashi') {
226
+ this._candleRenderer.drawHeikinAshi(bars, t);
227
+ }
228
+ else {
229
+ this._candleRenderer.draw(bars, t);
230
+ }
231
+ }
232
+ dirty.clear(LayerName.PriceSeries);
233
+ }
234
+ // ── Background + grid (axes, labels) ─────────────────────────────────────
235
+ if (dirty.isDirty(LayerName.Background)) {
236
+ this._gridRenderer.draw(t, cw, ch);
237
+ dirty.clear(LayerName.Background);
238
+ }
239
+ // ── Indicator — placeholder ───────────────────────────────────────────────
240
+ if (dirty.isDirty(LayerName.Indicator)) {
241
+ dirty.clear(LayerName.Indicator);
242
+ }
243
+ // ── Drawings ──────────────────────────────────────────────────────────────
244
+ if (dirty.isDirty(LayerName.Drawing)) {
245
+ this._drawingRenderer.draw(this._drawings, t);
246
+ dirty.clear(LayerName.Drawing);
247
+ }
248
+ // ── Trading overlay — placeholder ─────────────────────────────────────────
249
+ if (dirty.isDirty(LayerName.TradingOverlay)) {
250
+ dirty.clear(LayerName.TradingOverlay);
251
+ }
252
+ // ── Crosshair (Interaction layer) ─────────────────────────────────────────
253
+ if (dirty.isDirty(LayerName.Interaction)) {
254
+ this._crosshairRenderer.draw(t);
255
+ dirty.clear(LayerName.Interaction);
256
+ }
257
+ // ── UI overlay — placeholder ──────────────────────────────────────────────
258
+ if (dirty.isDirty(LayerName.UIOverlay)) {
259
+ dirty.clear(LayerName.UIOverlay);
260
+ }
261
+ // Let plugins render
262
+ this._plugins.forEach((p) => p.onRender());
263
+ }
264
+ // ─── Helpers ─────────────────────────────────────────────────────────────────
265
+ _getVisibleBars(series) {
266
+ const { from, to } = this._transform.timeRange;
267
+ return series.data().filter((b) => b.time >= from - 1 && b.time <= to + 1);
268
+ }
269
+ _autoFitPriceRange() {
270
+ let low = Infinity, high = -Infinity;
271
+ for (const series of this._series) {
272
+ for (const bar of this._getVisibleBars(series)) {
273
+ if (bar.low < low)
274
+ low = bar.low;
275
+ if (bar.high > high)
276
+ high = bar.high;
277
+ }
278
+ }
279
+ if (low === Infinity || high === -Infinity)
280
+ return;
281
+ const padding = (high - low) * 0.05;
282
+ this._priceScale.setVisibleRange({ min: low - padding, max: high + padding });
283
+ // Background must redraw so price-axis labels reflect the new range.
284
+ // Caller is responsible for marking Background dirty after calling this.
285
+ }
286
+ _markViewportDirty() {
287
+ this._layers.dirty.mark(LayerName.Background);
288
+ this._layers.dirty.mark(LayerName.PriceSeries);
289
+ this._layers.dirty.mark(LayerName.Indicator);
290
+ this._layers.dirty.mark(LayerName.Drawing);
291
+ this._layers.dirty.mark(LayerName.TradingOverlay);
292
+ this._layers.dirty.mark(LayerName.Interaction);
293
+ this._layers.dirty.mark(LayerName.UIOverlay);
294
+ }
295
+ _onResize() {
296
+ const { width, height } = this._container.getBoundingClientRect();
297
+ this.resize(width, height);
298
+ }
299
+ // ─── Keyboard action handler ──────────────────────────────────────────────────
300
+ _handleKeyAction(action) {
301
+ const step = 40; // px per arrow-key press
302
+ const zf = 1.1; // zoom factor per key press
303
+ const cx = this._transform.plotWidth / 2;
304
+ switch (action) {
305
+ case 'panLeft':
306
+ this._transform.pan(step, 0);
307
+ break;
308
+ case 'panRight':
309
+ this._transform.pan(-step, 0);
310
+ break;
311
+ case 'panUp':
312
+ this._transform.pan(0, step);
313
+ break;
314
+ case 'panDown':
315
+ this._transform.pan(0, -step);
316
+ break;
317
+ case 'zoomIn':
318
+ this._transform.zoomTime(1 / zf, cx);
319
+ break;
320
+ case 'zoomOut':
321
+ this._transform.zoomTime(zf, cx);
322
+ break;
323
+ case 'scrollToEnd':
324
+ this._scrollToLatestBar();
325
+ break;
326
+ case 'deselect':
327
+ this._interaction.clearSelection();
328
+ break;
329
+ case 'scrollToStart':
330
+ case 'deleteSelection': break; // handled externally
331
+ }
332
+ this._markViewportDirty();
333
+ }
334
+ /** Pans the viewport so the latest bar sits near the right edge. */
335
+ _scrollToLatestBar() {
336
+ let latestTime = -Infinity;
337
+ for (const s of this._series) {
338
+ const data = s.data();
339
+ const last = data[data.length - 1];
340
+ if (last && last.time > latestTime)
341
+ latestTime = last.time;
342
+ }
343
+ if (!isFinite(latestTime))
344
+ return;
345
+ const pad = this._transform.plotWidth * 0.05;
346
+ const px = this._transform.timeToX(latestTime);
347
+ this._transform.pan(-(px - (this._transform.plotWidth - pad)), 0);
348
+ }
349
+ // ─── Option resolvers ────────────────────────────────────────────────────────
350
+ _resolveOptions(opts) {
351
+ return {
352
+ theme: opts.theme ?? 'dark',
353
+ colors: opts.colors ?? {},
354
+ timeScale: opts.timeScale ?? {},
355
+ priceScale: opts.priceScale ?? {},
356
+ crosshair: opts.crosshair ?? {},
357
+ handleScroll: opts.handleScroll ?? true,
358
+ handleScale: opts.handleScale ?? true,
359
+ timezone: opts.timezone ?? 'UTC',
360
+ };
361
+ }
362
+ _resolveColors(theme, overrides) {
363
+ const base = theme === 'dark' ? DARK_COLORS : LIGHT_COLORS;
364
+ return { ...base, ...overrides };
365
+ }
366
+ }
367
+ //# sourceMappingURL=PixiChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PixiChart.js","sourceRoot":"","sources":["../../src/pixi/PixiChart.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { Container } from 'pixi.js';
2
+ import type { ChartColors } from '@forgecharts/types';
3
+ import type { CoordTransform } from '../core/CoordTransform';
4
+ /**
5
+ * PixiCrosshairRenderer — draws the interactive crosshair lines and their
6
+ * data-accurate price / time labels using GPU-batched PixiJS Graphics.
7
+ *
8
+ * Owned by the Interaction layer; receives pixel coords from mouse events
9
+ * and converts them to data values via `CoordTransform`.
10
+ */
11
+ export declare class PixiCrosshairRenderer {
12
+ private readonly _colors;
13
+ private readonly _gfx;
14
+ private readonly _priceLabel;
15
+ private readonly _timeLabel;
16
+ private _x;
17
+ private _y;
18
+ /** Active timeframe — controls whether time is shown alongside the date. */
19
+ interval: string;
20
+ /** IANA timezone for the time label. Falls back to UTC. */
21
+ timezone: string;
22
+ constructor(layer: Container, _colors: ChartColors);
23
+ update(x: number, y: number): void;
24
+ hide(): void;
25
+ draw(transform: CoordTransform): void;
26
+ private _formatPrice;
27
+ private _formatTime;
28
+ }
29
+ //# sourceMappingURL=PixiCrosshairRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PixiCrosshairRenderer.d.ts","sourceRoot":"","sources":["../../src/pixi/PixiCrosshairRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,SAAS,EAAmB,MAAM,SAAS,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D;;;;;;GAMG;AACH,qBAAa,qBAAqB;IAe9B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAd1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAW;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAO;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAO;IAElC,OAAO,CAAC,EAAE,CAAuB;IACjC,OAAO,CAAC,EAAE,CAAuB;IAEjC,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,CAAQ;IACxB,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAS;gBAGvB,KAAK,EAAE,SAAS,EACC,OAAO,EAAE,WAAW;IAevC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAKlC,IAAI,IAAI,IAAI;IAKZ,IAAI,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI;IA6DrC,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,WAAW;CAgBpB"}
@@ -0,0 +1,110 @@
1
+ import { Graphics, Text, TextStyle } from 'pixi.js';
2
+ /**
3
+ * PixiCrosshairRenderer — draws the interactive crosshair lines and their
4
+ * data-accurate price / time labels using GPU-batched PixiJS Graphics.
5
+ *
6
+ * Owned by the Interaction layer; receives pixel coords from mouse events
7
+ * and converts them to data values via `CoordTransform`.
8
+ */
9
+ export class PixiCrosshairRenderer {
10
+ _colors;
11
+ _gfx;
12
+ _priceLabel;
13
+ _timeLabel;
14
+ _x = null;
15
+ _y = null;
16
+ /** Active timeframe — controls whether time is shown alongside the date. */
17
+ interval = '1h';
18
+ /** IANA timezone for the time label. Falls back to UTC. */
19
+ timezone = 'UTC';
20
+ constructor(layer, _colors) {
21
+ this._colors = _colors;
22
+ const labelStyle = new TextStyle({
23
+ fontSize: 11,
24
+ fontFamily: 'system-ui, sans-serif',
25
+ fill: _colors.background,
26
+ });
27
+ this._gfx = new Graphics();
28
+ this._priceLabel = new Text({ text: '', style: labelStyle });
29
+ this._timeLabel = new Text({ text: '', style: labelStyle });
30
+ layer.addChild(this._gfx, this._priceLabel, this._timeLabel);
31
+ }
32
+ update(x, y) {
33
+ this._x = x;
34
+ this._y = y;
35
+ }
36
+ hide() {
37
+ this._x = null;
38
+ this._y = null;
39
+ }
40
+ draw(transform) {
41
+ this._gfx.clear();
42
+ this._priceLabel.text = '';
43
+ this._timeLabel.text = '';
44
+ if (this._x === null || this._y === null)
45
+ return;
46
+ const x = this._x;
47
+ const y = this._y;
48
+ const pw = transform.plotWidth;
49
+ const ph = transform.plotHeight;
50
+ const psw = transform.priceScaleWidth;
51
+ const tsh = transform.timeScaleHeight;
52
+ if (!transform.inPlotArea(x, y))
53
+ return;
54
+ const crossColor = parseInt(this._colors.crosshair.replace('#', ''), 16);
55
+ // Vertical line
56
+ this._gfx
57
+ .moveTo(x, 0)
58
+ .lineTo(x, ph)
59
+ .stroke({ color: crossColor, width: 1, alpha: 0.85, join: 'miter' });
60
+ // Horizontal line
61
+ this._gfx
62
+ .moveTo(0, y)
63
+ .lineTo(pw, y)
64
+ .stroke({ color: crossColor, width: 1, alpha: 0.85, join: 'miter' });
65
+ // ── Price label (right axis) ─────────────────────────────────────────────
66
+ const price = transform.yToPrice(y);
67
+ const priceText = this._formatPrice(price);
68
+ const lh = 18;
69
+ const lw = psw;
70
+ this._gfx
71
+ .rect(pw, y - lh / 2, lw, lh)
72
+ .fill({ color: crossColor, alpha: 0.9 });
73
+ this._priceLabel.text = priceText;
74
+ this._priceLabel.x = pw + 4;
75
+ this._priceLabel.y = y - this._priceLabel.height / 2;
76
+ // ── Time label (bottom axis) ─────────────────────────────────────────────
77
+ const time = transform.xToTime(x);
78
+ const timeText = this._formatTime(time);
79
+ const dailyIntervals = new Set(['1d', '2d', '3d', '1w', '2w', '1M', '3M', '6M', '12M']);
80
+ const tlw = dailyIntervals.has(this.interval) ? 120 : 170;
81
+ const tlh = tsh - 4;
82
+ const tlx = Math.max(tlw / 2, Math.min(x, pw - tlw / 2));
83
+ this._gfx
84
+ .rect(tlx - tlw / 2, ph + 2, tlw, tlh)
85
+ .fill({ color: crossColor, alpha: 0.9 });
86
+ this._timeLabel.text = timeText;
87
+ this._timeLabel.x = tlx - this._timeLabel.width / 2;
88
+ this._timeLabel.y = ph + 2 + (tlh - this._timeLabel.height) / 2;
89
+ }
90
+ _formatPrice(price) {
91
+ const decimals = price < 1 ? 6 : price < 1000 ? 4 : 2;
92
+ return price.toFixed(decimals);
93
+ }
94
+ _formatTime(time) {
95
+ const timeZone = (!this.timezone || this.timezone === 'exchange') ? 'UTC' : this.timezone;
96
+ const d = new Date(time * 1000);
97
+ const weekday = d.toLocaleDateString('en-US', { weekday: 'short', timeZone });
98
+ const day = d.toLocaleDateString('en-US', { day: '2-digit', timeZone });
99
+ const month = d.toLocaleDateString('en-US', { month: 'short', timeZone });
100
+ const year = d.toLocaleDateString('en-US', { year: '2-digit', timeZone });
101
+ const datePart = `${weekday} ${day} ${month} '${year}`;
102
+ const dailyIntervals = new Set(['1d', '2d', '3d', '1w', '2w', '1M', '3M', '6M', '12M']);
103
+ if (dailyIntervals.has(this.interval))
104
+ return datePart;
105
+ const hh = d.toLocaleString('en-US', { hour: '2-digit', hour12: false, timeZone });
106
+ const mm = d.toLocaleString('en-US', { minute: '2-digit', timeZone }).padStart(2, '0');
107
+ return `${datePart} ${hh}:${mm}`;
108
+ }
109
+ }
110
+ //# sourceMappingURL=PixiCrosshairRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PixiCrosshairRenderer.js","sourceRoot":"","sources":["../../src/pixi/PixiCrosshairRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAa,IAAI,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAI/D;;;;;;GAMG;AACH,MAAM,OAAO,qBAAqB;IAeb;IAdF,IAAI,CAAW;IACf,WAAW,CAAO;IAClB,UAAU,CAAO;IAE1B,EAAE,GAAkB,IAAI,CAAC;IACzB,EAAE,GAAkB,IAAI,CAAC;IAEjC,4EAA4E;IAC5E,QAAQ,GAAW,IAAI,CAAC;IACxB,2DAA2D;IAC3D,QAAQ,GAAW,KAAK,CAAC;IAEzB,YACE,KAAgB,EACC,OAAoB;QAApB,YAAO,GAAP,OAAO,CAAa;QAErC,MAAM,UAAU,GAAG,IAAI,SAAS,CAAC;YAC/B,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,uBAAuB;YACnC,IAAI,EAAE,OAAO,CAAC,UAAU;SACzB,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,UAAU,GAAI,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QAE7D,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,CAAC,CAAS,EAAE,CAAS;QACzB,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IACd,CAAC;IAED,IAAI;QACF,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACf,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;IACjB,CAAC;IAED,IAAI,CAAC,SAAyB;QAC5B,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAClB,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,UAAU,CAAC,IAAI,GAAI,EAAE,CAAC;QAE3B,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI;YAAE,OAAO;QAEjD,MAAM,CAAC,GAAI,IAAI,CAAC,EAAE,CAAC;QACnB,MAAM,CAAC,GAAI,IAAI,CAAC,EAAE,CAAC;QACnB,MAAM,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC;QAC/B,MAAM,EAAE,GAAG,SAAS,CAAC,UAAU,CAAC;QAChC,MAAM,GAAG,GAAG,SAAS,CAAC,eAAe,CAAC;QACtC,MAAM,GAAG,GAAG,SAAS,CAAC,eAAe,CAAC;QAEtC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;YAAE,OAAO;QAExC,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAEzE,gBAAgB;QAChB,IAAI,CAAC,IAAI;aACN,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;aACZ,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC;aACb,MAAM,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAEvE,kBAAkB;QAClB,IAAI,CAAC,IAAI;aACN,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;aACZ,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;aACb,MAAM,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAEvE,4EAA4E;QAC5E,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,EAAE,GAAG,EAAE,CAAC;QACd,MAAM,EAAE,GAAG,GAAG,CAAC;QAEf,IAAI,CAAC,IAAI;aACN,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;aAC5B,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAE3C,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,SAAS,CAAC;QAClC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QAErD,4EAA4E;QAC5E,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QACxF,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC1D,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QACpB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAEzD,IAAI,CAAC,IAAI;aACN,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;aACrC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAE3C,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC;QACpD,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAClE,CAAC;IAEO,YAAY,CAAC,KAAa;QAChC,MAAM,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAEO,WAAW,CAAC,IAAY;QAC9B,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC1F,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QAChC,MAAM,OAAO,GAAG,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9E,MAAM,GAAG,GAAO,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,SAAS,EAAI,QAAQ,EAAE,CAAC,CAAC;QAC9E,MAAM,KAAK,GAAK,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAI,QAAQ,EAAE,CAAC,CAAC;QAC9E,MAAM,IAAI,GAAM,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAG,QAAQ,EAAE,CAAC,CAAC;QAC9E,MAAM,QAAQ,GAAG,GAAG,OAAO,IAAI,GAAG,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAEvD,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QACxF,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,OAAO,QAAQ,CAAC;QAEvD,MAAM,EAAE,GAAG,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACnF,MAAM,EAAE,GAAG,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACvF,OAAO,GAAG,QAAQ,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;IACpC,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ import type { Container } from 'pixi.js';
2
+ import type { Drawing } from '@forgecharts/types';
3
+ import type { CoordTransform } from '../core/CoordTransform';
4
+ /**
5
+ * PixiDrawingRenderer — renders all drawing objects via GPU-batched Graphics.
6
+ *
7
+ * All `DrawingPoint` (time, price) → pixel conversions go through
8
+ * `CoordTransform`, keeping drawings perfectly aligned with the price series
9
+ * across zoom/pan without requiring a full re-fetch of underlying data.
10
+ */
11
+ export declare class PixiDrawingRenderer {
12
+ private readonly _gfx;
13
+ constructor(layer: Container);
14
+ draw(drawings: readonly Drawing[], transform: CoordTransform): void;
15
+ private _drawOne;
16
+ }
17
+ //# sourceMappingURL=PixiDrawingRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PixiDrawingRenderer.d.ts","sourceRoot":"","sources":["../../src/pixi/PixiDrawingRenderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAM7D;;;;;;GAMG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAW;gBAEpB,KAAK,EAAE,SAAS;IAK5B,IAAI,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,EAAE,SAAS,EAAE,cAAc,GAAG,IAAI;IAQnE,OAAO,CAAC,QAAQ;CAwFjB"}