@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,111 @@
1
+ import { Graphics } from 'pixi.js';
2
+ const DEFAULT_COLOR = 0x888888;
3
+ const DEFAULT_WIDTH = 1;
4
+ const FIB_RATIOS = [0, 0.236, 0.382, 0.5, 0.618, 0.786, 1];
5
+ /**
6
+ * PixiDrawingRenderer — renders all drawing objects via GPU-batched Graphics.
7
+ *
8
+ * All `DrawingPoint` (time, price) → pixel conversions go through
9
+ * `CoordTransform`, keeping drawings perfectly aligned with the price series
10
+ * across zoom/pan without requiring a full re-fetch of underlying data.
11
+ */
12
+ export class PixiDrawingRenderer {
13
+ _gfx;
14
+ constructor(layer) {
15
+ this._gfx = new Graphics();
16
+ layer.addChild(this._gfx);
17
+ }
18
+ draw(drawings, transform) {
19
+ this._gfx.clear();
20
+ for (const d of drawings) {
21
+ if (d.visible === false)
22
+ continue;
23
+ this._drawOne(d, transform);
24
+ }
25
+ }
26
+ _drawOne(d, t) {
27
+ const gfx = this._gfx;
28
+ const color = d.color ? parseInt(d.color.replace('#', ''), 16) : DEFAULT_COLOR;
29
+ const width = d.lineWidth ?? DEFAULT_WIDTH;
30
+ const stroke = { color, width };
31
+ const { points, type } = d;
32
+ switch (type) {
33
+ case 'trendline': {
34
+ if (points.length < 2)
35
+ break;
36
+ const p0 = t.toPixel(points[0].time, points[0].price);
37
+ const p1 = t.toPixel(points[1].time, points[1].price);
38
+ gfx.moveTo(p0.x, p0.y).lineTo(p1.x, p1.y).stroke(stroke);
39
+ break;
40
+ }
41
+ case 'horizontal': {
42
+ if (points.length < 1)
43
+ break;
44
+ const y = t.priceToY(points[0].price);
45
+ gfx.moveTo(0, y).lineTo(t.plotWidth, y).stroke(stroke);
46
+ break;
47
+ }
48
+ case 'vertical': {
49
+ if (points.length < 1)
50
+ break;
51
+ const x = t.timeToX(points[0].time);
52
+ gfx.moveTo(x, 0).lineTo(x, t.plotHeight).stroke(stroke);
53
+ break;
54
+ }
55
+ case 'rectangle': {
56
+ if (points.length < 2)
57
+ break;
58
+ const p0 = t.toPixel(points[0].time, points[0].price);
59
+ const p1 = t.toPixel(points[1].time, points[1].price);
60
+ gfx
61
+ .rect(Math.min(p0.x, p1.x), Math.min(p0.y, p1.y), Math.abs(p1.x - p0.x), Math.abs(p1.y - p0.y))
62
+ .stroke(stroke);
63
+ break;
64
+ }
65
+ case 'fibRetracement': {
66
+ if (points.length < 2)
67
+ break;
68
+ const priceHigh = Math.max(points[0].price, points[1].price);
69
+ const priceLow = Math.min(points[0].price, points[1].price);
70
+ const span = priceHigh - priceLow;
71
+ const x0 = Math.min(t.timeToX(points[0].time), t.timeToX(points[1].time));
72
+ const x1 = Math.max(t.timeToX(points[0].time), t.timeToX(points[1].time));
73
+ for (const ratio of FIB_RATIOS) {
74
+ const levelPrice = priceLow + span * (1 - ratio);
75
+ const y = t.priceToY(levelPrice);
76
+ gfx.moveTo(x0, y).lineTo(x1, y).stroke({ color, width, alpha: 0.7 });
77
+ }
78
+ break;
79
+ }
80
+ // ray: rendered as a segment from p0 through p1 to the plot boundary
81
+ case 'ray': {
82
+ if (points.length < 2)
83
+ break;
84
+ const x0 = t.timeToX(points[0].time);
85
+ const y0 = t.priceToY(points[0].price);
86
+ const dx = t.timeToX(points[1].time) - x0;
87
+ const dy = t.priceToY(points[1].price) - y0;
88
+ let tMin = Infinity;
89
+ if (dx > 0)
90
+ tMin = Math.min(tMin, (t.plotWidth - x0) / dx);
91
+ else if (dx < 0)
92
+ tMin = Math.min(tMin, -x0 / dx);
93
+ if (dy > 0)
94
+ tMin = Math.min(tMin, (t.plotHeight - y0) / dy);
95
+ else if (dy < 0)
96
+ tMin = Math.min(tMin, -y0 / dy);
97
+ const ex = tMin === Infinity ? x0 : x0 + dx * tMin;
98
+ const ey = tMin === Infinity ? y0 : y0 + dy * tMin;
99
+ gfx.moveTo(x0, y0).lineTo(ex, ey).stroke(stroke);
100
+ break;
101
+ }
102
+ // text: PixiJS does not handle text labels — skip silently
103
+ case 'text':
104
+ break;
105
+ default:
106
+ // Fib/Gann tools and future drawing types are rendered by the canvas layer, not Pixi.
107
+ break;
108
+ }
109
+ }
110
+ }
111
+ //# sourceMappingURL=PixiDrawingRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PixiDrawingRenderer.js","sourceRoot":"","sources":["../../src/pixi/PixiDrawingRenderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { Container } from 'pixi.js';
2
+ import type { ChartColors } from '@forgecharts/types';
3
+ import type { CoordTransform } from '../core/CoordTransform';
4
+ import type { TimeScale } from '../core/TimeScale';
5
+ /**
6
+ * PixiGridRenderer — draws background fill, horizontal grid lines (price),
7
+ * vertical grid lines (time), and the axis separator borders.
8
+ *
9
+ * All drawing uses PixiJS `Graphics` which is GPU-batched.
10
+ */
11
+ export declare class PixiGridRenderer {
12
+ private readonly _colors;
13
+ private readonly _gfx;
14
+ private readonly _timeLabels;
15
+ private readonly _priceLabels;
16
+ private readonly _timeScale;
17
+ constructor(layer: Container, _colors: ChartColors, timeScale: TimeScale);
18
+ draw(transform: CoordTransform, width: number, height: number): void;
19
+ private _formatPrice;
20
+ private _niceTimeStep;
21
+ }
22
+ //# sourceMappingURL=PixiGridRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PixiGridRenderer.d.ts","sourceRoot":"","sources":["../../src/pixi/PixiGridRenderer.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;AAG7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAInD;;;;;GAKG;AACH,qBAAa,gBAAgB;IAQzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAP1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAW;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAY;IACxC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAY;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;gBAGrC,KAAK,EAAE,SAAS,EACC,OAAO,EAAE,WAAW,EACrC,SAAS,EAAE,SAAS;IAStB,IAAI,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAiFpE,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,aAAa;CAgBtB"}
@@ -0,0 +1,114 @@
1
+ import { Graphics, Container, Text, TextStyle } from 'pixi.js';
2
+ import { computeTicks } from '../core/TimeScale';
3
+ import { formatTimestampLabel } from '@forgecharts/utils';
4
+ const TICK_LEN = 4;
5
+ /**
6
+ * PixiGridRenderer — draws background fill, horizontal grid lines (price),
7
+ * vertical grid lines (time), and the axis separator borders.
8
+ *
9
+ * All drawing uses PixiJS `Graphics` which is GPU-batched.
10
+ */
11
+ export class PixiGridRenderer {
12
+ _colors;
13
+ _gfx;
14
+ _timeLabels;
15
+ _priceLabels;
16
+ _timeScale;
17
+ constructor(layer, _colors, timeScale) {
18
+ this._colors = _colors;
19
+ this._timeScale = timeScale;
20
+ this._gfx = new Graphics();
21
+ this._timeLabels = new Container();
22
+ this._priceLabels = new Container();
23
+ layer.addChild(this._gfx, this._timeLabels, this._priceLabels);
24
+ }
25
+ draw(transform, width, height) {
26
+ const gfx = this._gfx;
27
+ gfx.clear();
28
+ const { plotWidth: pw, plotHeight: ph, priceScaleWidth, timeScaleHeight } = transform;
29
+ const { min: priceMin, max: priceMax } = transform.priceRange;
30
+ const { from: timeFrom, to: timeTo } = transform.timeRange;
31
+ // ── Background ────────────────────────────────────────────────────────────
32
+ gfx.rect(0, 0, width, height).fill(this._colors.background);
33
+ // ── Horizontal price grid ─────────────────────────────────────────────────
34
+ const priceTicks = computeTicks(priceMin, priceMax, Math.max(2, Math.floor(ph / 50)));
35
+ this._priceLabels.removeChildren();
36
+ const labelStyle = new TextStyle({
37
+ fontSize: 11,
38
+ fontFamily: 'system-ui, sans-serif',
39
+ fill: this._colors.text,
40
+ });
41
+ for (const tick of priceTicks) {
42
+ if (tick < priceMin || tick > priceMax)
43
+ continue;
44
+ const y = transform.priceToY(tick);
45
+ if (y < 0 || y > ph)
46
+ continue;
47
+ gfx.moveTo(0, y).lineTo(pw, y).stroke({ color: this._colors.grid, width: 1, alpha: 0.5 });
48
+ // Tick mark on axis border
49
+ gfx.moveTo(pw, y).lineTo(pw + TICK_LEN, y).stroke({ color: this._colors.border, width: 1 });
50
+ // Price label
51
+ const t = new Text({ text: this._formatPrice(tick), style: labelStyle });
52
+ t.x = pw + TICK_LEN + 2;
53
+ t.y = y - t.height / 2;
54
+ this._priceLabels.addChild(t);
55
+ }
56
+ // ── Vertical time grid ────────────────────────────────────────────────────
57
+ const approxTicks = Math.max(2, Math.floor(pw / 100));
58
+ const span = timeTo - timeFrom;
59
+ const rawStep = span / approxTicks;
60
+ const step = this._niceTimeStep(rawStep);
61
+ const startTime = Math.ceil(timeFrom / step) * step;
62
+ this._timeLabels.removeChildren();
63
+ const timeLabelStyle = new TextStyle({
64
+ fontSize: 11,
65
+ fontFamily: 'system-ui, sans-serif',
66
+ fill: this._colors.text,
67
+ });
68
+ for (let t = startTime; t <= timeTo; t += step) {
69
+ const x = transform.timeToX(t);
70
+ if (x < 0 || x > pw)
71
+ continue;
72
+ gfx.moveTo(x, 0).lineTo(x, ph).stroke({ color: this._colors.grid, width: 1, alpha: 0.4 });
73
+ gfx.moveTo(x, ph).lineTo(x, ph + TICK_LEN).stroke({ color: this._colors.border, width: 1 });
74
+ const label = formatTimestampLabel(t, step);
75
+ const tl = new Text({ text: label, style: timeLabelStyle });
76
+ tl.x = x - tl.width / 2;
77
+ tl.y = ph + TICK_LEN + 2;
78
+ this._timeLabels.addChild(tl);
79
+ }
80
+ // ── Axis separator lines ──────────────────────────────────────────────────
81
+ gfx
82
+ .moveTo(0, ph).lineTo(pw, ph)
83
+ .stroke({ color: this._colors.border, width: 1 });
84
+ gfx
85
+ .moveTo(pw, 0).lineTo(pw, ph)
86
+ .stroke({ color: this._colors.border, width: 1 });
87
+ // ── Price axis background fill ────────────────────────────────────────────
88
+ gfx.rect(pw, 0, priceScaleWidth, ph).fill(this._colors.backgroundSecondary);
89
+ // ── Time axis background fill ─────────────────────────────────────────────
90
+ gfx.rect(0, ph, pw, timeScaleHeight).fill(this._colors.backgroundSecondary);
91
+ }
92
+ _formatPrice(price) {
93
+ const decimals = price < 1 ? 6 : price < 1000 ? 4 : 2;
94
+ return price.toFixed(decimals);
95
+ }
96
+ _niceTimeStep(rawSeconds) {
97
+ const nice = [
98
+ 1, 5, 10, 30, 60, 300, 600, 900, 1800, 3600, 7200, 14400, 21600, 43200,
99
+ 86400, // 1 day
100
+ 7 * 86400, // 1 week
101
+ 14 * 86400, // 2 weeks
102
+ 30 * 86400, // ~1 month
103
+ 91 * 86400, // ~quarter
104
+ 182 * 86400, // ~half year
105
+ 365 * 86400, // ~1 year
106
+ ];
107
+ for (const s of nice) {
108
+ if (s >= rawSeconds)
109
+ return s;
110
+ }
111
+ return 365 * 86400 * Math.ceil(rawSeconds / (365 * 86400));
112
+ }
113
+ }
114
+ //# sourceMappingURL=PixiGridRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PixiGridRenderer.js","sourceRoot":"","sources":["../../src/pixi/PixiGridRenderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import { Container } from 'pixi.js';
2
+ import { LayerName } from './LayerName';
3
+ /**
4
+ * DirtyFlags — bitmask that tracks which layers need to be redrawn.
5
+ *
6
+ * Call `mark(layer)` whenever data or viewport changes affecting a layer.
7
+ * Call `isDirty(layer)` before redrawing to skip unnecessary work.
8
+ * Call `clear(layer)` after the layer finishes drawing.
9
+ */
10
+ export declare class DirtyFlags {
11
+ private _bits;
12
+ mark(layer: LayerName): void;
13
+ markAll(): void;
14
+ isDirty(layer: LayerName): boolean;
15
+ clear(layer: LayerName): void;
16
+ clearAll(): void;
17
+ }
18
+ /**
19
+ * PixiLayerManager — owns one PixiJS `Container` per layer, stacked by z-index.
20
+ *
21
+ * Responsibilities:
22
+ * - Creates and names seven containers corresponding to `LayerName` values
23
+ * - Attaches all containers to a root `Container` already mounted in the stage
24
+ * - Exposes `get(layer)` so renderers can add display objects to the right layer
25
+ * - Owns a `DirtyFlags` instance for selective redraw signalling
26
+ * - `clear(layer)` removes all children from a layer without destroying the container
27
+ *
28
+ * @example
29
+ * ```ts
30
+ * const layers = new PixiLayerManager(stage);
31
+ *
32
+ * // Direct child access
33
+ * const seriesContainer = layers.get(LayerName.PriceSeries);
34
+ *
35
+ * // Invalidation
36
+ * layers.dirty.mark(LayerName.PriceSeries);
37
+ * if (layers.dirty.isDirty(LayerName.PriceSeries)) {
38
+ * // redraw…
39
+ * layers.dirty.clear(LayerName.PriceSeries);
40
+ * }
41
+ * ```
42
+ */
43
+ export declare class PixiLayerManager {
44
+ private readonly _containers;
45
+ readonly dirty: DirtyFlags;
46
+ constructor(stage: Container);
47
+ /** Returns the `Container` for the given layer. */
48
+ get(layer: LayerName): Container;
49
+ /** Removes all display objects from a layer (preserves the container itself). */
50
+ clear(layer: LayerName): void;
51
+ /** Removes all display objects from every layer. */
52
+ clearAll(): void;
53
+ /** Destroys all container children (use on chart destroy). */
54
+ destroy(): void;
55
+ }
56
+ //# sourceMappingURL=PixiLayerManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PixiLayerManager.d.ts","sourceRoot":"","sources":["../../src/pixi/PixiLayerManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,SAAS,EAA4B,MAAM,aAAa,CAAC;AAElE;;;;;;GAMG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAAK;IAElB,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAI5B,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAIlC,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAI7B,QAAQ,IAAI,IAAI;CAGjB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmC;IAC/D,QAAQ,CAAC,KAAK,aAAoB;gBAEtB,KAAK,EAAE,SAAS;IAa5B,mDAAmD;IACnD,GAAG,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS;IAMhC,iFAAiF;IACjF,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAI7B,oDAAoD;IACpD,QAAQ,IAAI,IAAI;IAIhB,8DAA8D;IAC9D,OAAO,IAAI,IAAI;CAOhB"}
@@ -0,0 +1,92 @@
1
+ import { Container } from 'pixi.js';
2
+ import { LAYER_NAMES, LAYER_LABEL } from './LayerName';
3
+ /**
4
+ * DirtyFlags — bitmask that tracks which layers need to be redrawn.
5
+ *
6
+ * Call `mark(layer)` whenever data or viewport changes affecting a layer.
7
+ * Call `isDirty(layer)` before redrawing to skip unnecessary work.
8
+ * Call `clear(layer)` after the layer finishes drawing.
9
+ */
10
+ export class DirtyFlags {
11
+ _bits = 0;
12
+ mark(layer) {
13
+ this._bits |= 1 << layer;
14
+ }
15
+ markAll() {
16
+ this._bits = (1 << LAYER_NAMES.length) - 1;
17
+ }
18
+ isDirty(layer) {
19
+ return (this._bits & (1 << layer)) !== 0;
20
+ }
21
+ clear(layer) {
22
+ this._bits &= ~(1 << layer);
23
+ }
24
+ clearAll() {
25
+ this._bits = 0;
26
+ }
27
+ }
28
+ /**
29
+ * PixiLayerManager — owns one PixiJS `Container` per layer, stacked by z-index.
30
+ *
31
+ * Responsibilities:
32
+ * - Creates and names seven containers corresponding to `LayerName` values
33
+ * - Attaches all containers to a root `Container` already mounted in the stage
34
+ * - Exposes `get(layer)` so renderers can add display objects to the right layer
35
+ * - Owns a `DirtyFlags` instance for selective redraw signalling
36
+ * - `clear(layer)` removes all children from a layer without destroying the container
37
+ *
38
+ * @example
39
+ * ```ts
40
+ * const layers = new PixiLayerManager(stage);
41
+ *
42
+ * // Direct child access
43
+ * const seriesContainer = layers.get(LayerName.PriceSeries);
44
+ *
45
+ * // Invalidation
46
+ * layers.dirty.mark(LayerName.PriceSeries);
47
+ * if (layers.dirty.isDirty(LayerName.PriceSeries)) {
48
+ * // redraw…
49
+ * layers.dirty.clear(LayerName.PriceSeries);
50
+ * }
51
+ * ```
52
+ */
53
+ export class PixiLayerManager {
54
+ _containers = new Map();
55
+ dirty = new DirtyFlags();
56
+ constructor(stage) {
57
+ for (const name of LAYER_NAMES) {
58
+ const c = new Container();
59
+ c.label = LAYER_LABEL[name];
60
+ c.zIndex = name;
61
+ stage.addChild(c);
62
+ this._containers.set(name, c);
63
+ }
64
+ // PixiJS v8: sortableChildren must be true on the stage so zIndex is respected
65
+ stage.sortableChildren = true;
66
+ }
67
+ /** Returns the `Container` for the given layer. */
68
+ get(layer) {
69
+ const c = this._containers.get(layer);
70
+ if (!c)
71
+ throw new Error(`[ForgeCharts] Unknown layer: ${layer}`);
72
+ return c;
73
+ }
74
+ /** Removes all display objects from a layer (preserves the container itself). */
75
+ clear(layer) {
76
+ this.get(layer).removeChildren();
77
+ }
78
+ /** Removes all display objects from every layer. */
79
+ clearAll() {
80
+ for (const name of LAYER_NAMES)
81
+ this.clear(name);
82
+ }
83
+ /** Destroys all container children (use on chart destroy). */
84
+ destroy() {
85
+ for (const name of LAYER_NAMES) {
86
+ const c = this._containers.get(name);
87
+ c?.destroy({ children: true });
88
+ }
89
+ this._containers.clear();
90
+ }
91
+ }
92
+ //# sourceMappingURL=PixiLayerManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PixiLayerManager.js","sourceRoot":"","sources":["../../src/pixi/PixiLayerManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAa,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,OAAO,UAAU;IACb,KAAK,GAAG,CAAC,CAAC;IAElB,IAAI,CAAC,KAAgB;QACnB,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC;IAC3B,CAAC;IAED,OAAO;QACL,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,CAAC,KAAgB;QACtB,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,KAAgB;QACpB,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACjB,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,OAAO,gBAAgB;IACV,WAAW,GAAG,IAAI,GAAG,EAAwB,CAAC;IACtD,KAAK,GAAG,IAAI,UAAU,EAAE,CAAC;IAElC,YAAY,KAAgB;QAC1B,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;YAC1B,CAAC,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;YAChB,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAChC,CAAC;QAED,+EAA+E;QAC/E,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAChC,CAAC;IAED,mDAAmD;IACnD,GAAG,CAAC,KAAgB;QAClB,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,KAAK,EAAE,CAAC,CAAC;QACjE,OAAO,CAAC,CAAC;IACX,CAAC;IAED,iFAAiF;IACjF,KAAK,CAAC,KAAgB;QACpB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,CAAC;IACnC,CAAC;IAED,oDAAoD;IACpD,QAAQ;QACN,KAAK,MAAM,IAAI,IAAI,WAAW;YAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,8DAA8D;IAC9D,OAAO;QACL,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACrC,CAAC,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;CACF"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * ChartCanvas — stacks the main price chart above one or more indicator panes.
3
+ *
4
+ * Features:
5
+ * - Creates a TChart instance and attaches any `initialIndicators`.
6
+ * - Each non-overlay indicator gets its own sub-pane (managed by TChart's PaneManager).
7
+ * - Draggable dividers let the user resize panes; the price-split fraction is
8
+ * reported via onPriceFractionChange (no localStorage in this package).
9
+ * - A requestAnimationFrame loop forwards viewport changes (pan/zoom) to the
10
+ * indicator canvases so they stay in sync with the main chart’s time axis.
11
+ *
12
+ * Previously exported as MultiPaneChart — that name is kept as an alias.
13
+ */
14
+ import type { TradingOverlayStore } from '../../';
15
+ import type { IndicatorConfig, ChartLayout } from '@forgecharts/types';
16
+ import type { IDatafeed, ChartTheme } from '@forgecharts/types';
17
+ import type { TradingBridgeCallbacks } from '../trading/TradingBridge';
18
+ export type ChartCanvasHandle = {
19
+ /** Returns the full current chart state (indicators, drawings, viewport). */
20
+ getLayoutSnapshot: () => ChartLayout | null;
21
+ /** Replaces the chart state with the supplied layout snapshot. */
22
+ loadLayoutSnapshot: (layout: ChartLayout) => void;
23
+ /** Adds an indicator to the live chart and returns its id. */
24
+ addIndicator: (config: IndicatorConfig) => string | null;
25
+ /** Captures the visible chart area as a PNG data-URL. */
26
+ captureScreenshot: () => Promise<string | null>;
27
+ /**
28
+ * Returns the chart's internal TradingOverlayStore for Unmanaged mode.
29
+ * Use this to push confirmed order / position state into the chart.
30
+ * Returns null before the chart has mounted.
31
+ */
32
+ getOverlayStore: () => TradingOverlayStore | null;
33
+ };
34
+ export type ChartCanvasProps = {
35
+ symbol: string;
36
+ timeframe: string;
37
+ datafeed?: IDatafeed;
38
+ theme?: ChartTheme;
39
+ /** IANA timezone for axis labels (e.g. "America/New_York"). */
40
+ timezone?: string | undefined;
41
+ /** Indicators to add on mount. Non-overlay indicators each get a sub-pane. */
42
+ initialIndicators?: IndicatorConfig[];
43
+ /**
44
+ * When provided the chart restores this snapshot on mount instead of
45
+ * reading from localStorage. Pass a snapshot captured via getLayoutSnapshot()
46
+ * or a ChartLayout loaded from the server.
47
+ */
48
+ layoutToRestore?: ChartLayout | undefined;
49
+ /** Called whenever an indicator is added or removed, so the parent can trigger a workspace save. */
50
+ onIndicatorsChanged?: () => void;
51
+ /**
52
+ * Initial price-pane fraction (0.3–0.85). Defaults to 0.6.
53
+ * The parent controls persistence; changes are reported via onPriceFractionChange.
54
+ */
55
+ priceFraction?: number;
56
+ /** Called when the user drags the price/sub-pane divider. */
57
+ onPriceFractionChange?: (fraction: number) => void;
58
+ /**
59
+ * Optional callback to resolve an exchange logo URL.
60
+ * Receives the exchange code (e.g. "BINANCE") and returns a URL string,
61
+ * or undefined/null to suppress the logo image entirely.
62
+ * If omitted, no exchange logo is rendered.
63
+ */
64
+ getExchangeLogoUrl?: (exchange: string) => string | null | undefined;
65
+ /**
66
+ * Optional trading bridge callbacks for Unmanaged mode.
67
+ *
68
+ * When provided the chart will invoke these callbacks when the user performs
69
+ * a trading action (drag-to-place, cancel, bracket adjust, etc.).
70
+ * The chart never self-confirms — the host must push confirmed state back
71
+ * through `TradingOverlayStore` (via `upsertOrder` / `setOrders` etc.).
72
+ *
73
+ * Wrap with `createTradingBridgeLogger` during development for structured
74
+ * console output of every emitted intent.
75
+ */
76
+ tradingBridge?: TradingBridgeCallbacks;
77
+ };
78
+ /** @deprecated Use ChartCanvasProps */
79
+ export type MultiPaneChartProps = ChartCanvasProps;
80
+ /** @deprecated Use ChartCanvasHandle */
81
+ export type MultiPaneChartHandle = ChartCanvasHandle;
82
+ export declare const ChartCanvas: import("react").ForwardRefExoticComponent<ChartCanvasProps & import("react").RefAttributes<ChartCanvasHandle>>;
83
+ /** @deprecated Use ChartCanvas */
84
+ export declare const MultiPaneChart: import("react").ForwardRefExoticComponent<ChartCanvasProps & import("react").RefAttributes<ChartCanvasHandle>>;
85
+ //# sourceMappingURL=ChartCanvas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartCanvas.d.ts","sourceRoot":"","sources":["../../../src/react/canvas/ChartCanvas.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAElD,OAAO,KAAK,EAAyB,eAAe,EAAkC,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9H,OAAO,KAAK,EAAE,SAAS,EAAa,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AA0OvE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,6EAA6E;IAC7E,iBAAiB,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC;IAC5C,kEAAkE;IAClE,kBAAkB,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IAClD,8DAA8D;IAC9D,YAAY,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,MAAM,GAAG,IAAI,CAAC;IACzD,yDAAyD;IACzD,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAChD;;;;OAIG;IACH,eAAe,EAAE,MAAM,mBAAmB,GAAG,IAAI,CAAC;CACnD,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,eAAe,EAAE,CAAC;IACtC;;;;OAIG;IACH,eAAe,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC1C,oGAAoG;IACpG,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,qBAAqB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACrE;;;;;;;;;;OAUG;IACH,aAAa,CAAC,EAAE,sBAAsB,CAAC;CACxC,CAAC;AAEF,uCAAuC;AACvC,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,CAAC;AACnD,wCAAwC;AACxC,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AAErD,eAAO,MAAM,WAAW,gHAmpBtB,CAAC;AAEH,kCAAkC;AAClC,eAAO,MAAM,cAAc,gHAAc,CAAC"}