@363045841yyt/klinechart-core 0.9.0-alpha.0 → 0.9.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (372) hide show
  1. package/dist/controllers/createChartController.d.ts.map +1 -1
  2. package/dist/controllers/createChartController.js +31 -13
  3. package/dist/controllers/createChartController.js.map +1 -1
  4. package/dist/controllers/index.d.ts +1 -0
  5. package/dist/controllers/index.d.ts.map +1 -1
  6. package/dist/controllers/index.js.map +1 -1
  7. package/dist/controllers/types.d.ts +12 -0
  8. package/dist/controllers/types.d.ts.map +1 -1
  9. package/dist/engine/chart.d.ts +29 -11
  10. package/dist/engine/chart.d.ts.map +1 -1
  11. package/dist/engine/chart.js +147 -25
  12. package/dist/engine/chart.js.map +1 -1
  13. package/dist/engine/controller/interaction.d.ts +29 -4
  14. package/dist/engine/controller/interaction.d.ts.map +1 -1
  15. package/dist/engine/controller/interaction.js +78 -31
  16. package/dist/engine/controller/interaction.js.map +1 -1
  17. package/dist/engine/data/incrementalLoadHint.d.ts.map +1 -1
  18. package/dist/engine/data/incrementalLoadHint.js +5 -1
  19. package/dist/engine/data/incrementalLoadHint.js.map +1 -1
  20. package/dist/engine/drawing/DrawingState.d.ts +19 -34
  21. package/dist/engine/drawing/DrawingState.d.ts.map +1 -1
  22. package/dist/engine/drawing/DrawingState.js +110 -92
  23. package/dist/engine/drawing/DrawingState.js.map +1 -1
  24. package/dist/engine/drawing/index.d.ts +4 -1
  25. package/dist/engine/drawing/index.d.ts.map +1 -1
  26. package/dist/engine/drawing/index.js +9 -4
  27. package/dist/engine/drawing/index.js.map +1 -1
  28. package/dist/engine/drawing/interaction.d.ts +9 -29
  29. package/dist/engine/drawing/interaction.d.ts.map +1 -1
  30. package/dist/engine/drawing/interaction.js +23 -40
  31. package/dist/engine/drawing/interaction.js.map +1 -1
  32. package/dist/engine/indicators/chartIndicatorManager.d.ts.map +1 -1
  33. package/dist/engine/indicators/chartIndicatorManager.js +4 -12
  34. package/dist/engine/indicators/chartIndicatorManager.js.map +1 -1
  35. package/dist/engine/layout/chartPaneLayout.d.ts +0 -2
  36. package/dist/engine/layout/chartPaneLayout.d.ts.map +1 -1
  37. package/dist/engine/layout/chartPaneLayout.js +5 -9
  38. package/dist/engine/layout/chartPaneLayout.js.map +1 -1
  39. package/dist/engine/layout/pane.d.ts +0 -39
  40. package/dist/engine/layout/pane.d.ts.map +1 -1
  41. package/dist/engine/layout/pane.js +0 -9
  42. package/dist/engine/layout/pane.js.map +1 -1
  43. package/dist/engine/paneRenderer.d.ts +1 -10
  44. package/dist/engine/paneRenderer.d.ts.map +1 -1
  45. package/dist/engine/paneRenderer.js +2 -19
  46. package/dist/engine/paneRenderer.js.map +1 -1
  47. package/dist/engine/render/chartRenderer.d.ts +49 -8
  48. package/dist/engine/render/chartRenderer.d.ts.map +1 -1
  49. package/dist/engine/render/chartRenderer.js +143 -72
  50. package/dist/engine/render/chartRenderer.js.map +1 -1
  51. package/dist/engine/renderers/Indicator/atr.js +3 -13
  52. package/dist/engine/renderers/Indicator/atr.js.map +1 -1
  53. package/dist/engine/renderers/Indicator/boll.d.ts.map +1 -1
  54. package/dist/engine/renderers/Indicator/boll.js +12 -24
  55. package/dist/engine/renderers/Indicator/boll.js.map +1 -1
  56. package/dist/engine/renderers/Indicator/cci.js +6 -13
  57. package/dist/engine/renderers/Indicator/cci.js.map +1 -1
  58. package/dist/engine/renderers/Indicator/chaikinVol.js +3 -11
  59. package/dist/engine/renderers/Indicator/chaikinVol.js.map +1 -1
  60. package/dist/engine/renderers/Indicator/cmf.js +3 -11
  61. package/dist/engine/renderers/Indicator/cmf.js.map +1 -1
  62. package/dist/engine/renderers/Indicator/dema.js +3 -11
  63. package/dist/engine/renderers/Indicator/dema.js.map +1 -1
  64. package/dist/engine/renderers/Indicator/donchian.js +3 -11
  65. package/dist/engine/renderers/Indicator/donchian.js.map +1 -1
  66. package/dist/engine/renderers/Indicator/ene.d.ts.map +1 -1
  67. package/dist/engine/renderers/Indicator/ene.js +12 -24
  68. package/dist/engine/renderers/Indicator/ene.js.map +1 -1
  69. package/dist/engine/renderers/Indicator/expma.d.ts.map +1 -1
  70. package/dist/engine/renderers/Indicator/expma.js +5 -11
  71. package/dist/engine/renderers/Indicator/expma.js.map +1 -1
  72. package/dist/engine/renderers/Indicator/fastk.js +6 -13
  73. package/dist/engine/renderers/Indicator/fastk.js.map +1 -1
  74. package/dist/engine/renderers/Indicator/fib.js +3 -11
  75. package/dist/engine/renderers/Indicator/fib.js.map +1 -1
  76. package/dist/engine/renderers/Indicator/hma.js +3 -11
  77. package/dist/engine/renderers/Indicator/hma.js.map +1 -1
  78. package/dist/engine/renderers/Indicator/hv.js +3 -11
  79. package/dist/engine/renderers/Indicator/hv.js.map +1 -1
  80. package/dist/engine/renderers/Indicator/ichimoku.js +24 -18
  81. package/dist/engine/renderers/Indicator/ichimoku.js.map +1 -1
  82. package/dist/engine/renderers/Indicator/kama.js +3 -11
  83. package/dist/engine/renderers/Indicator/kama.js.map +1 -1
  84. package/dist/engine/renderers/Indicator/keltner.js +3 -11
  85. package/dist/engine/renderers/Indicator/keltner.js.map +1 -1
  86. package/dist/engine/renderers/Indicator/kst.js +9 -17
  87. package/dist/engine/renderers/Indicator/kst.js.map +1 -1
  88. package/dist/engine/renderers/Indicator/ma.d.ts.map +1 -1
  89. package/dist/engine/renderers/Indicator/ma.js +10 -21
  90. package/dist/engine/renderers/Indicator/ma.js.map +1 -1
  91. package/dist/engine/renderers/Indicator/macd.js +14 -44
  92. package/dist/engine/renderers/Indicator/macd.js.map +1 -1
  93. package/dist/engine/renderers/Indicator/mfi.js +3 -11
  94. package/dist/engine/renderers/Indicator/mfi.js.map +1 -1
  95. package/dist/engine/renderers/Indicator/mom.js +6 -13
  96. package/dist/engine/renderers/Indicator/mom.js.map +1 -1
  97. package/dist/engine/renderers/Indicator/obv.js +3 -11
  98. package/dist/engine/renderers/Indicator/obv.js.map +1 -1
  99. package/dist/engine/renderers/Indicator/parkinson.js +3 -11
  100. package/dist/engine/renderers/Indicator/parkinson.js.map +1 -1
  101. package/dist/engine/renderers/Indicator/pvt.js +3 -11
  102. package/dist/engine/renderers/Indicator/pvt.js.map +1 -1
  103. package/dist/engine/renderers/Indicator/roc.js +3 -11
  104. package/dist/engine/renderers/Indicator/roc.js.map +1 -1
  105. package/dist/engine/renderers/Indicator/rsi.js +12 -20
  106. package/dist/engine/renderers/Indicator/rsi.js.map +1 -1
  107. package/dist/engine/renderers/Indicator/shared/webglBand.d.ts +0 -2
  108. package/dist/engine/renderers/Indicator/shared/webglBand.d.ts.map +1 -1
  109. package/dist/engine/renderers/Indicator/shared/webglBand.js +0 -6
  110. package/dist/engine/renderers/Indicator/shared/webglBand.js.map +1 -1
  111. package/dist/engine/renderers/Indicator/stoch.js +9 -17
  112. package/dist/engine/renderers/Indicator/stoch.js.map +1 -1
  113. package/dist/engine/renderers/Indicator/tema.js +3 -11
  114. package/dist/engine/renderers/Indicator/tema.js.map +1 -1
  115. package/dist/engine/renderers/Indicator/trix.js +3 -11
  116. package/dist/engine/renderers/Indicator/trix.js.map +1 -1
  117. package/dist/engine/renderers/Indicator/vma.js +3 -11
  118. package/dist/engine/renderers/Indicator/vma.js.map +1 -1
  119. package/dist/engine/renderers/Indicator/vwap.js +3 -11
  120. package/dist/engine/renderers/Indicator/vwap.js.map +1 -1
  121. package/dist/engine/renderers/Indicator/wma.js +3 -11
  122. package/dist/engine/renderers/Indicator/wma.js.map +1 -1
  123. package/dist/engine/renderers/Indicator/wmsr.js +6 -13
  124. package/dist/engine/renderers/Indicator/wmsr.js.map +1 -1
  125. package/dist/engine/renderers/candle.d.ts.map +1 -1
  126. package/dist/engine/renderers/candle.js +21 -28
  127. package/dist/engine/renderers/candle.js.map +1 -1
  128. package/dist/engine/renderers/candleViaRenderer.d.ts +19 -0
  129. package/dist/engine/renderers/candleViaRenderer.d.ts.map +1 -0
  130. package/dist/engine/renderers/candleViaRenderer.js +15 -0
  131. package/dist/engine/renderers/candleViaRenderer.js.map +1 -0
  132. package/dist/engine/renderers/linesViaRenderer.d.ts +55 -0
  133. package/dist/engine/renderers/linesViaRenderer.d.ts.map +1 -0
  134. package/dist/engine/renderers/linesViaRenderer.js +169 -0
  135. package/dist/engine/renderers/linesViaRenderer.js.map +1 -0
  136. package/dist/engine/renderers/rectsViaRenderer.d.ts +18 -0
  137. package/dist/engine/renderers/rectsViaRenderer.d.ts.map +1 -0
  138. package/dist/engine/renderers/rectsViaRenderer.js +63 -0
  139. package/dist/engine/renderers/rectsViaRenderer.js.map +1 -0
  140. package/dist/engine/renderers/subVolume.js +7 -26
  141. package/dist/engine/renderers/subVolume.js.map +1 -1
  142. package/dist/engine/renderers/timeAxis.js +1 -1
  143. package/dist/engine/renderers/timeAxis.js.map +1 -1
  144. package/dist/engine/state/chartStateKernel.d.ts +11 -2
  145. package/dist/engine/state/chartStateKernel.d.ts.map +1 -1
  146. package/dist/engine/state/chartStateKernel.js +28 -12
  147. package/dist/engine/state/chartStateKernel.js.map +1 -1
  148. package/dist/engine/state/index.d.ts +1 -1
  149. package/dist/engine/state/index.d.ts.map +1 -1
  150. package/dist/engine/state/index.js +1 -1
  151. package/dist/engine/state/index.js.map +1 -1
  152. package/dist/engine/state/interactionState.d.ts +15 -7
  153. package/dist/engine/state/interactionState.d.ts.map +1 -1
  154. package/dist/engine/state/interactionState.js +55 -60
  155. package/dist/engine/state/interactionState.js.map +1 -1
  156. package/dist/engine/state/rendererState.d.ts +14 -0
  157. package/dist/engine/state/rendererState.d.ts.map +1 -0
  158. package/dist/engine/state/rendererState.js +25 -0
  159. package/dist/engine/state/rendererState.js.map +1 -0
  160. package/dist/engine/state/themeState.d.ts +11 -4
  161. package/dist/engine/state/themeState.d.ts.map +1 -1
  162. package/dist/engine/state/themeState.js +13 -5
  163. package/dist/engine/state/themeState.js.map +1 -1
  164. package/dist/engine/state/viewportState.d.ts.map +1 -1
  165. package/dist/engine/state/viewportState.js +7 -3
  166. package/dist/engine/state/viewportState.js.map +1 -1
  167. package/dist/engine/subPaneManager.d.ts.map +1 -1
  168. package/dist/engine/subPaneManager.js +2 -10
  169. package/dist/engine/subPaneManager.js.map +1 -1
  170. package/dist/foundation/config/chartSettings.d.ts +16 -4
  171. package/dist/foundation/config/chartSettings.d.ts.map +1 -1
  172. package/dist/foundation/config/chartSettings.js +21 -6
  173. package/dist/foundation/config/chartSettings.js.map +1 -1
  174. package/dist/foundation/plugin/index.d.ts +0 -1
  175. package/dist/foundation/plugin/index.d.ts.map +1 -1
  176. package/dist/foundation/plugin/rendererPluginManager.d.ts +1 -22
  177. package/dist/foundation/plugin/rendererPluginManager.d.ts.map +1 -1
  178. package/dist/foundation/plugin/rendererPluginManager.js +0 -84
  179. package/dist/foundation/plugin/rendererPluginManager.js.map +1 -1
  180. package/dist/foundation/plugin/types.d.ts +11 -17
  181. package/dist/foundation/plugin/types.d.ts.map +1 -1
  182. package/dist/foundation/plugin/types.js.map +1 -1
  183. package/dist/foundation/reactivity/frameTransaction.d.ts +71 -0
  184. package/dist/foundation/reactivity/frameTransaction.d.ts.map +1 -0
  185. package/dist/foundation/reactivity/frameTransaction.js +170 -0
  186. package/dist/foundation/reactivity/frameTransaction.js.map +1 -0
  187. package/dist/foundation/reactivity/index.d.ts +4 -2
  188. package/dist/foundation/reactivity/index.d.ts.map +1 -1
  189. package/dist/foundation/reactivity/index.js +2 -1
  190. package/dist/foundation/reactivity/index.js.map +1 -1
  191. package/dist/foundation/reactivity/signal.d.ts +20 -0
  192. package/dist/foundation/reactivity/signal.d.ts.map +1 -1
  193. package/dist/foundation/reactivity/signal.js +27 -0
  194. package/dist/foundation/reactivity/signal.js.map +1 -1
  195. package/dist/foundation/tokens/theme-dark.d.ts.map +1 -1
  196. package/dist/foundation/tokens/theme-dark.js +2 -1
  197. package/dist/foundation/tokens/theme-dark.js.map +1 -1
  198. package/dist/foundation/tokens/theme-light.d.ts.map +1 -1
  199. package/dist/foundation/tokens/theme-light.js +2 -1
  200. package/dist/foundation/tokens/theme-light.js.map +1 -1
  201. package/dist/rendering/render/Renderer.d.ts +29 -14
  202. package/dist/rendering/render/Renderer.d.ts.map +1 -1
  203. package/dist/rendering/render/Renderer.js +3 -10
  204. package/dist/rendering/render/Renderer.js.map +1 -1
  205. package/dist/rendering/render/SurfaceBackend.d.ts +5 -7
  206. package/dist/rendering/render/SurfaceBackend.d.ts.map +1 -1
  207. package/dist/rendering/render/SurfaceBackend.js +5 -7
  208. package/dist/rendering/render/SurfaceBackend.js.map +1 -1
  209. package/dist/rendering/render/createCanvas2DRenderer.d.ts +3 -0
  210. package/dist/rendering/render/createCanvas2DRenderer.d.ts.map +1 -0
  211. package/dist/rendering/render/createCanvas2DRenderer.js +74 -0
  212. package/dist/rendering/render/createCanvas2DRenderer.js.map +1 -0
  213. package/dist/rendering/render/createDefaultRendererHost.d.ts +4 -0
  214. package/dist/rendering/render/createDefaultRendererHost.d.ts.map +1 -0
  215. package/dist/rendering/render/createDefaultRendererHost.js +54 -0
  216. package/dist/rendering/render/createDefaultRendererHost.js.map +1 -0
  217. package/dist/rendering/render/createWebGLRenderer.d.ts.map +1 -1
  218. package/dist/rendering/render/createWebGLRenderer.js +42 -80
  219. package/dist/rendering/render/createWebGLRenderer.js.map +1 -1
  220. package/dist/rendering/render/createWebGPURenderer.d.ts +11 -0
  221. package/dist/rendering/render/createWebGPURenderer.d.ts.map +1 -0
  222. package/dist/rendering/render/createWebGPURenderer.js +619 -0
  223. package/dist/rendering/render/createWebGPURenderer.js.map +1 -0
  224. package/dist/rendering/render/createWebGPUSurfaceBackend.d.ts +15 -0
  225. package/dist/rendering/render/createWebGPUSurfaceBackend.d.ts.map +1 -0
  226. package/dist/rendering/render/createWebGPUSurfaceBackend.js +92 -0
  227. package/dist/rendering/render/createWebGPUSurfaceBackend.js.map +1 -0
  228. package/dist/rendering/render/frameMetrics.d.ts +19 -0
  229. package/dist/rendering/render/frameMetrics.d.ts.map +1 -0
  230. package/dist/rendering/render/frameMetrics.js +43 -0
  231. package/dist/rendering/render/frameMetrics.js.map +1 -0
  232. package/dist/rendering/render/index.d.ts +10 -0
  233. package/dist/rendering/render/index.d.ts.map +1 -1
  234. package/dist/rendering/render/index.js +6 -0
  235. package/dist/rendering/render/index.js.map +1 -1
  236. package/dist/rendering/render/rendererHost.d.ts +34 -0
  237. package/dist/rendering/render/rendererHost.d.ts.map +1 -0
  238. package/dist/rendering/render/rendererHost.js +144 -0
  239. package/dist/rendering/render/rendererHost.js.map +1 -0
  240. package/dist/rendering/render/webgpuResourceTable.d.ts +25 -0
  241. package/dist/rendering/render/webgpuResourceTable.d.ts.map +1 -0
  242. package/dist/rendering/render/webgpuResourceTable.js +54 -0
  243. package/dist/rendering/render/webgpuResourceTable.js.map +1 -0
  244. package/dist/rendering/scene/createLayerFromPlugin.d.ts.map +1 -1
  245. package/dist/rendering/scene/createLayerFromPlugin.js +10 -2
  246. package/dist/rendering/scene/createLayerFromPlugin.js.map +1 -1
  247. package/dist/rendering/scene/layerRegistry.d.ts +3 -5
  248. package/dist/rendering/scene/layerRegistry.d.ts.map +1 -1
  249. package/dist/rendering/scene/layerRegistry.js +1 -1
  250. package/dist/rendering/scene/layerRegistry.js.map +1 -1
  251. package/dist/rendering/scene/retainedScene.d.ts +60 -0
  252. package/dist/rendering/scene/retainedScene.d.ts.map +1 -0
  253. package/dist/rendering/scene/retainedScene.js +42 -0
  254. package/dist/rendering/scene/retainedScene.js.map +1 -0
  255. package/dist/version.d.ts +1 -1
  256. package/dist/version.js +1 -1
  257. package/package.json +2 -1
  258. package/src/__tests__/signal.test.ts +47 -1
  259. package/src/controllers/__tests__/createChartController.theme.test.ts +102 -0
  260. package/src/controllers/createChartController.ts +36 -12
  261. package/src/controllers/index.ts +5 -0
  262. package/src/controllers/types.ts +14 -0
  263. package/src/engine/__tests__/chart.dpr.test.ts +64 -0
  264. package/src/engine/__tests__/paneRenderer.resize.test.ts +0 -7
  265. package/src/engine/__tests__/renderSinglePath.test.ts +121 -0
  266. package/src/engine/chart.ts +172 -25
  267. package/src/engine/controller/__tests__/interaction.dpr.test.ts +45 -41
  268. package/src/engine/controller/interaction.ts +81 -30
  269. package/src/engine/data/__tests__/chartDataManager.incrementalLoad.test.ts +1 -0
  270. package/src/engine/data/incrementalLoadHint.ts +6 -1
  271. package/src/engine/drawing/DrawingState.ts +107 -89
  272. package/src/engine/drawing/__tests__/drawingState.workCopy.test.ts +95 -36
  273. package/src/engine/drawing/__tests__/drawingStore.projection.test.ts +22 -0
  274. package/src/engine/drawing/index.ts +12 -4
  275. package/src/engine/drawing/interaction.ts +25 -40
  276. package/src/engine/indicators/chartIndicatorManager.ts +6 -16
  277. package/src/engine/layout/chartPaneLayout.ts +6 -11
  278. package/src/engine/layout/pane.ts +0 -44
  279. package/src/engine/paneRenderer.ts +3 -34
  280. package/src/engine/render/chartRenderer.ts +181 -81
  281. package/src/engine/renderers/Indicator/atr.ts +5 -17
  282. package/src/engine/renderers/Indicator/boll.ts +15 -26
  283. package/src/engine/renderers/Indicator/cci.ts +7 -17
  284. package/src/engine/renderers/Indicator/chaikinVol.ts +3 -15
  285. package/src/engine/renderers/Indicator/cmf.ts +3 -15
  286. package/src/engine/renderers/Indicator/dema.ts +3 -15
  287. package/src/engine/renderers/Indicator/donchian.ts +3 -12
  288. package/src/engine/renderers/Indicator/ene.ts +15 -25
  289. package/src/engine/renderers/Indicator/expma.ts +4 -13
  290. package/src/engine/renderers/Indicator/fastk.ts +7 -17
  291. package/src/engine/renderers/Indicator/fib.ts +3 -12
  292. package/src/engine/renderers/Indicator/hma.ts +3 -15
  293. package/src/engine/renderers/Indicator/hv.ts +3 -15
  294. package/src/engine/renderers/Indicator/ichimoku.ts +21 -24
  295. package/src/engine/renderers/Indicator/kama.ts +3 -15
  296. package/src/engine/renderers/Indicator/keltner.ts +3 -12
  297. package/src/engine/renderers/Indicator/kst.ts +9 -20
  298. package/src/engine/renderers/Indicator/ma.ts +9 -21
  299. package/src/engine/renderers/Indicator/macd.ts +27 -102
  300. package/src/engine/renderers/Indicator/mfi.ts +3 -15
  301. package/src/engine/renderers/Indicator/mom.ts +7 -17
  302. package/src/engine/renderers/Indicator/obv.ts +3 -15
  303. package/src/engine/renderers/Indicator/parkinson.ts +3 -15
  304. package/src/engine/renderers/Indicator/pvt.ts +3 -15
  305. package/src/engine/renderers/Indicator/roc.ts +3 -15
  306. package/src/engine/renderers/Indicator/rsi.ts +12 -23
  307. package/src/engine/renderers/Indicator/shared/webglBand.ts +0 -13
  308. package/src/engine/renderers/Indicator/stoch.ts +9 -20
  309. package/src/engine/renderers/Indicator/tema.ts +3 -15
  310. package/src/engine/renderers/Indicator/trix.ts +3 -12
  311. package/src/engine/renderers/Indicator/vma.ts +3 -15
  312. package/src/engine/renderers/Indicator/vwap.ts +3 -15
  313. package/src/engine/renderers/Indicator/wma.ts +3 -15
  314. package/src/engine/renderers/Indicator/wmsr.ts +7 -17
  315. package/src/engine/renderers/__tests__/candle.sceneRenderer.test.ts +208 -0
  316. package/src/engine/renderers/__tests__/candleViaRenderer.test.ts +100 -0
  317. package/src/engine/renderers/__tests__/linesViaRenderer.test.ts +263 -0
  318. package/src/engine/renderers/__tests__/rectsViaRenderer.test.ts +87 -0
  319. package/src/engine/renderers/candle.ts +26 -69
  320. package/src/engine/renderers/candleViaRenderer.ts +38 -0
  321. package/src/engine/renderers/linesViaRenderer.ts +226 -0
  322. package/src/engine/renderers/rectsViaRenderer.ts +83 -0
  323. package/src/engine/renderers/subVolume.ts +9 -61
  324. package/src/engine/renderers/timeAxis.ts +1 -1
  325. package/src/engine/state/__tests__/effectiveTheme.test.ts +49 -0
  326. package/src/engine/state/__tests__/rendererState.test.ts +36 -0
  327. package/src/engine/state/__tests__/settingsState.test.ts +1 -1
  328. package/src/engine/state/chartStateKernel.ts +38 -17
  329. package/src/engine/state/index.ts +6 -1
  330. package/src/engine/state/interactionState.ts +73 -102
  331. package/src/engine/state/rendererState.ts +32 -0
  332. package/src/engine/state/themeState.ts +15 -8
  333. package/src/engine/state/viewportState.ts +6 -3
  334. package/src/engine/subPaneManager.ts +2 -16
  335. package/src/foundation/config/__tests__/chartSettings.test.ts +25 -0
  336. package/src/foundation/config/chartSettings.ts +24 -7
  337. package/src/foundation/plugin/index.ts +0 -1
  338. package/src/foundation/plugin/rendererPluginManager.ts +0 -99
  339. package/src/foundation/plugin/types.ts +11 -18
  340. package/src/foundation/reactivity/__tests__/frameTransaction.test.ts +306 -0
  341. package/src/foundation/reactivity/frameTransaction.ts +239 -0
  342. package/src/foundation/reactivity/index.ts +8 -0
  343. package/src/foundation/reactivity/signal.ts +39 -0
  344. package/src/foundation/tokens/__tests__/__snapshots__/baseline.test.ts.snap +2 -2
  345. package/src/foundation/tokens/theme-dark.ts +2 -1
  346. package/src/foundation/tokens/theme-light.ts +2 -1
  347. package/src/rendering/render/Renderer.ts +27 -14
  348. package/src/rendering/render/SurfaceBackend.ts +5 -7
  349. package/src/rendering/render/__tests__/canvas2DRenderer.test.ts +34 -0
  350. package/src/rendering/render/__tests__/contract.test.ts +2 -2
  351. package/src/rendering/render/__tests__/frameMetrics.test.ts +24 -0
  352. package/src/rendering/render/__tests__/rendererHost.test.ts +157 -0
  353. package/src/rendering/render/__tests__/webglRenderer.fallback.test.ts +14 -74
  354. package/src/rendering/render/__tests__/webglRenderer.test.ts +64 -6
  355. package/src/rendering/render/__tests__/webgpuRenderer.test.ts +370 -0
  356. package/src/rendering/render/__tests__/webgpuResourceTable.test.ts +62 -0
  357. package/src/rendering/render/__tests__/webgpuSurfaceBackend.test.ts +120 -0
  358. package/src/rendering/render/createCanvas2DRenderer.ts +83 -0
  359. package/src/rendering/render/createDefaultRendererHost.ts +74 -0
  360. package/src/rendering/render/createWebGLRenderer.ts +41 -87
  361. package/src/rendering/render/createWebGPURenderer.ts +677 -0
  362. package/src/rendering/render/createWebGPUSurfaceBackend.ts +106 -0
  363. package/src/rendering/render/frameMetrics.ts +54 -0
  364. package/src/rendering/render/index.ts +30 -0
  365. package/src/rendering/render/rendererHost.ts +210 -0
  366. package/src/rendering/render/webgpuResourceTable.ts +87 -0
  367. package/src/rendering/scene/__tests__/layerFromPlugin.test.ts +29 -2
  368. package/src/rendering/scene/__tests__/retainedScene.test.ts +59 -0
  369. package/src/rendering/scene/createLayerFromPlugin.ts +9 -2
  370. package/src/rendering/scene/layerRegistry.ts +4 -6
  371. package/src/rendering/scene/retainedScene.ts +101 -0
  372. package/src/version.ts +1 -1
@@ -1,6 +1,5 @@
1
1
  import type { PaneCapabilities, PaneRole } from '../../foundation/plugin/index';
2
2
  import type { KLineData } from '../../foundation/types/price';
3
- import type { MarkerManager } from '../marker/registry';
4
3
  import type { PriceRange } from '../scale/price';
5
4
  import { PriceScale } from '../scale/priceScale';
6
5
  /**
@@ -22,37 +21,6 @@ export interface PaneInitOptions {
22
21
  role?: PaneRole;
23
22
  capabilities?: Partial<PaneCapabilities>;
24
23
  }
25
- /**
26
- * Pane 级渲染器接口:在单个 pane 的坐标系中绘制内容
27
- */
28
- export interface PaneRenderer {
29
- /**
30
- * 在指定 pane 坐标系中绘制内容
31
- * @param ctx Canvas 绘图上下文,Chart 已执行 translate(0, pane.top),y=0 对应 pane 顶部
32
- * @param pane 当前 pane 实例
33
- * @param data 全量 K 线数据
34
- * @param range 当前视口可见的索引范围
35
- * @param scrollLeft 滚动偏移量,renderer 内部如需 world 坐标需执行 ctx.translate(-scrollLeft, 0)
36
- * @param kWidth K 线宽度
37
- * @param kGap K 线间隔
38
- * @param dpr 设备像素比
39
- * @param paneWidth pane 宽度
40
- * @param kLinePositions 可选,K 线起始 x 坐标数组(由 Chart 统一计算)
41
- */
42
- draw(args: {
43
- ctx: CanvasRenderingContext2D;
44
- pane: Pane;
45
- data: KLineData[];
46
- range: VisibleRange;
47
- scrollLeft: number;
48
- kWidth: number;
49
- kGap: number;
50
- dpr: number;
51
- paneWidth: number;
52
- kLinePositions: number[];
53
- markerManager?: MarkerManager;
54
- }): void;
55
- }
56
24
  /**
57
25
  * Pane:代表一个"窗口区域"(主图 / 副图)
58
26
  */
@@ -66,8 +34,6 @@ export declare class Pane {
66
34
  priceRange: PriceRange;
67
35
  /** pane 独立 Y 轴 */
68
36
  readonly yAxis: PriceScale;
69
- /** 该 pane 的渲染器列表 */
70
- readonly renderers: PaneRenderer[];
71
37
  /**
72
38
  * 创建 pane 实例
73
39
  * @param id pane 标识符(例如 'main'、'sub'),用于在 Chart/Interaction 中识别 pane
@@ -85,11 +51,6 @@ export declare class Pane {
85
51
  * @param bottom 下内边距,影响 priceToY 映射的底部留白
86
52
  */
87
53
  setPadding(top: number, bottom: number): void;
88
- /**
89
- * 注册一个 pane 级渲染器
90
- * @param renderer pane 级渲染器实例
91
- */
92
- addRenderer(renderer: PaneRenderer): void;
93
54
  /**
94
55
  * 根据当前可见索引区间更新 priceRange 并同步到 yAxis
95
56
  * @param data 全量 K 线数据
@@ -1 +1 @@
1
- {"version":3,"file":"pane.d.ts","sourceRoot":"","sources":["../../../src/engine/layout/pane.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAA;AAC/E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAGhD;;;;;GAKG;AACH,oBAAY,WAAW;IACrB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,GAAG,QAAQ;CACZ;AAED,MAAM,MAAM,YAAY,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAA;AAEzD,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,YAAY,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;CACzC;AA2BD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;;;;;;;;OAYG;IACH,IAAI,CAAC,IAAI,EAAE;QACT,GAAG,EAAE,wBAAwB,CAAA;QAC7B,IAAI,EAAE,IAAI,CAAA;QACV,IAAI,EAAE,SAAS,EAAE,CAAA;QACjB,KAAK,EAAE,YAAY,CAAA;QACnB,UAAU,EAAE,MAAM,CAAA;QAClB,MAAM,EAAE,MAAM,CAAA;QACd,IAAI,EAAE,MAAM,CAAA;QACZ,GAAG,EAAE,MAAM,CAAA;QACX,SAAS,EAAE,MAAM,CAAA;QACjB,cAAc,EAAE,MAAM,EAAE,CAAA;QACxB,aAAa,CAAC,EAAE,aAAa,CAAA;KAC9B,GAAG,IAAI,CAAA;CACT;AAED;;GAEG;AACH,qBAAa,IAAI;IACf,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;IACvB,QAAQ,CAAC,YAAY,EAAE,gBAAgB,CAAA;IACvC,GAAG,SAAI;IACP,MAAM,SAAI;IAEV,qCAAqC;IACrC,UAAU,EAAE,UAAU,CAAiC;IAEvD,kBAAkB;IAClB,QAAQ,CAAC,KAAK,aAAmB;IAEjC,oBAAoB;IACpB,QAAQ,CAAC,SAAS,EAAE,YAAY,EAAE,CAAK;IAEvC;;;OAGG;gBACS,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB;IASrD;;;;OAIG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAMrC;;;;OAIG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAItC;;;OAGG;IACH,WAAW,CAAC,QAAQ,EAAE,YAAY;IAIlC;;;;;OAKG;IACH,WAAW,CACT,IAAI,EAAE,SAAS,EAAE,EACjB,KAAK,EAAE,YAAY,EACnB,cAAc,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;CAwBvD"}
1
+ {"version":3,"file":"pane.d.ts","sourceRoot":"","sources":["../../../src/engine/layout/pane.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAA;AAC/E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAGhD;;;;;GAKG;AACH,oBAAY,WAAW;IACrB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,GAAG,QAAQ;CACZ;AAED,MAAM,MAAM,YAAY,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAA;AAEzD,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,YAAY,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;CACzC;AA2BD;;GAEG;AACH,qBAAa,IAAI;IACf,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;IACvB,QAAQ,CAAC,YAAY,EAAE,gBAAgB,CAAA;IACvC,GAAG,SAAI;IACP,MAAM,SAAI;IAEV,qCAAqC;IACrC,UAAU,EAAE,UAAU,CAAiC;IAEvD,kBAAkB;IAClB,QAAQ,CAAC,KAAK,aAAmB;IAEjC;;;OAGG;gBACS,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB;IASrD;;;;OAIG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAMrC;;;;OAIG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAItC;;;;;OAKG;IACH,WAAW,CACT,IAAI,EAAE,SAAS,EAAE,EACjB,KAAK,EAAE,YAAY,EACnB,cAAc,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;CAwBvD"}
@@ -49,8 +49,6 @@ export class Pane {
49
49
  priceRange = { maxPrice: 100, minPrice: 0 };
50
50
  /** pane 独立 Y 轴 */
51
51
  yAxis = new PriceScale();
52
- /** 该 pane 的渲染器列表 */
53
- renderers = [];
54
52
  /**
55
53
  * 创建 pane 实例
56
54
  * @param id pane 标识符(例如 'main'、'sub'),用于在 Chart/Interaction 中识别 pane
@@ -81,13 +79,6 @@ export class Pane {
81
79
  setPadding(top, bottom) {
82
80
  this.yAxis.setPadding(top, bottom);
83
81
  }
84
- /**
85
- * 注册一个 pane 级渲染器
86
- * @param renderer pane 级渲染器实例
87
- */
88
- addRenderer(renderer) {
89
- this.renderers.push(renderer);
90
- }
91
82
  /**
92
83
  * 根据当前可见索引区间更新 priceRange 并同步到 yAxis
93
84
  * @param data 全量 K 线数据
@@ -1 +1 @@
1
- {"version":3,"file":"pane.js","sourceRoot":"","sources":["../../../src/engine/layout/pane.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pane.js","sourceRoot":"","sources":["../../../src/engine/layout/pane.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,4 @@
1
1
  import type { PaneRendererDom } from './chartTypes';
2
- import { CandleWebGLSurface, LineWebGLSurface } from './renderers/webgl/candleSurface';
3
- import type { SharedWebGLSurface, WebGLRegion } from './renderers/webgl/sharedWebGLSurface';
4
2
  export type { PaneRendererDom };
5
3
  export type PaneRendererContexts = {
6
4
  mainCtx: CanvasRenderingContext2D | null;
@@ -14,25 +12,18 @@ export type PaneRendererOptions = {
14
12
  yPaddingPx: number;
15
13
  priceLabelWidth?: number;
16
14
  };
17
- export type PaneRendererWebGLHandles = {
18
- candleSurface: CandleWebGLSurface | null;
19
- lineSurface: LineWebGLSurface | null;
20
- };
21
15
  export declare class PaneRenderer {
22
16
  private dom;
23
17
  private pane;
24
18
  private opt;
25
19
  private contexts;
26
- private webgl;
27
- constructor(dom: PaneRendererDom, pane: import('./layout/pane').Pane, opt: PaneRendererOptions, sharedWebGLSurface: SharedWebGLSurface);
20
+ constructor(dom: PaneRendererDom, pane: import('./layout/pane').Pane, opt: PaneRendererOptions);
28
21
  /** 获取关联的 Pane 实例 */
29
22
  getPane(): import('./layout/pane').Pane;
30
23
  /** 获取 DOM 元素 */
31
24
  getDom(): PaneRendererDom;
32
25
  getContexts(): PaneRendererContexts;
33
26
  private static resizeCanvas;
34
- getWebGL(): PaneRendererWebGLHandles;
35
- setWebGLRegion(region: WebGLRegion): void;
36
27
  /**
37
28
  * 调整 Canvas 尺寸
38
29
  * @param width pane 宽度(逻辑像素)
@@ -1 +1 @@
1
- {"version":3,"file":"paneRenderer.d.ts","sourceRoot":"","sources":["../../src/engine/paneRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AACtF,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAA;AAE3F,YAAY,EAAE,eAAe,EAAE,CAAA;AAE/B,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,wBAAwB,GAAG,IAAI,CAAA;IACxC,UAAU,EAAE,wBAAwB,GAAG,IAAI,CAAA;IAC3C,QAAQ,EAAE,wBAAwB,GAAG,IAAI,CAAA;IACzC,WAAW,EAAE,wBAAwB,GAAG,IAAI,CAAA;CAC7C,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,aAAa,EAAE,kBAAkB,GAAG,IAAI,CAAA;IACxC,WAAW,EAAE,gBAAgB,GAAG,IAAI,CAAA;CACrC,CAAA;AAOD,qBAAa,YAAY;IACvB,OAAO,CAAC,GAAG,CAAiB;IAC5B,OAAO,CAAC,IAAI,CAA8B;IAC1C,OAAO,CAAC,GAAG,CAAqB;IAChC,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,KAAK,CAA0B;gBAGrC,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,OAAO,eAAe,EAAE,IAAI,EAClC,GAAG,EAAE,mBAAmB,EACxB,kBAAkB,EAAE,kBAAkB;IAcxC,oBAAoB;IACpB,OAAO,IAAI,OAAO,eAAe,EAAE,IAAI;IAIvC,gBAAgB;IAChB,MAAM,IAAI,eAAe;IAIzB,WAAW,IAAI,oBAAoB;IAYnC,OAAO,CAAC,MAAM,CAAC,YAAY;IAsB3B,QAAQ,IAAI,wBAAwB;IAIpC,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAKzC;;;;;OAKG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAwCjD,yBAAyB;IACzB,OAAO;CAKR"}
1
+ {"version":3,"file":"paneRenderer.d.ts","sourceRoot":"","sources":["../../src/engine/paneRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAEnD,YAAY,EAAE,eAAe,EAAE,CAAA;AAE/B,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,wBAAwB,GAAG,IAAI,CAAA;IACxC,UAAU,EAAE,wBAAwB,GAAG,IAAI,CAAA;IAC3C,QAAQ,EAAE,wBAAwB,GAAG,IAAI,CAAA;IACzC,WAAW,EAAE,wBAAwB,GAAG,IAAI,CAAA;CAC7C,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB,CAAA;AAOD,qBAAa,YAAY;IACvB,OAAO,CAAC,GAAG,CAAiB;IAC5B,OAAO,CAAC,IAAI,CAA8B;IAC1C,OAAO,CAAC,GAAG,CAAqB;IAChC,OAAO,CAAC,QAAQ,CAAoC;gBAExC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,eAAe,EAAE,IAAI,EAAE,GAAG,EAAE,mBAAmB;IAS9F,oBAAoB;IACpB,OAAO,IAAI,OAAO,eAAe,EAAE,IAAI;IAIvC,gBAAgB;IAChB,MAAM,IAAI,eAAe;IAIzB,WAAW,IAAI,oBAAoB;IAYnC,OAAO,CAAC,MAAM,CAAC,YAAY;IAsB3B;;;;;OAKG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAqCjD,yBAAyB;IACzB,OAAO;CAGR"}
@@ -1,26 +1,20 @@
1
- import { CandleWebGLSurface, LineWebGLSurface } from './renderers/webgl/candleSurface';
2
1
  /* PaneRenderer:负责单个 Pane 的 Canvas 管理与运行时状态持有
3
2
  创建并管理 mainCanvas / overlayCanvas / yAxisCanvas
4
3
  持有 Pane 实例(布局、Y 轴、价格范围)
5
4
  响应 Chart 的 resize / layout 信号
6
- 渲染逻辑由 RendererPluginManager 统一调度 */
5
+ GPU 绘制经 ChartRenderer.sceneRenderer(SharedWebGLSurface),本类不再持有 per-pane surface */
7
6
  export class PaneRenderer {
8
7
  dom;
9
8
  pane;
10
9
  opt;
11
10
  contexts = null;
12
- webgl;
13
- constructor(dom, pane, opt, sharedWebGLSurface) {
11
+ constructor(dom, pane, opt) {
14
12
  this.dom = dom;
15
13
  this.pane = pane;
16
14
  this.opt = {
17
15
  ...opt,
18
16
  priceLabelWidth: opt.priceLabelWidth || 60,
19
17
  };
20
- this.webgl = {
21
- candleSurface: new CandleWebGLSurface(sharedWebGLSurface),
22
- lineSurface: new LineWebGLSurface(sharedWebGLSurface),
23
- };
24
18
  }
25
19
  /** 获取关联的 Pane 实例 */
26
20
  getPane() {
@@ -57,13 +51,6 @@ export class PaneRenderer {
57
51
  canvas.style.height = cssH;
58
52
  }
59
53
  }
60
- getWebGL() {
61
- return this.webgl;
62
- }
63
- setWebGLRegion(region) {
64
- this.webgl.candleSurface?.setRegion(region);
65
- this.webgl.lineSurface?.setRegion(region);
66
- }
67
54
  /**
68
55
  * 调整 Canvas 尺寸
69
56
  * @param width pane 宽度(逻辑像素)
@@ -95,14 +82,10 @@ export class PaneRenderer {
95
82
  const canvasLeftAxisWidth = leftParentWidth > 0 ? leftParentWidth : fallbackLeftAxisWidth;
96
83
  PaneRenderer.resizeCanvas(leftCanvas, Math.round(Math.max(canvasLeftAxisWidth, 0) * dpr), Math.round(height * dpr), dpr);
97
84
  }
98
- this.webgl.candleSurface?.resize(width, height, dpr);
99
- this.webgl.lineSurface?.resize(width, height, dpr);
100
85
  }
101
86
  /** 销毁 PaneRenderer 实例 */
102
87
  destroy() {
103
88
  this.contexts = null;
104
- this.webgl.candleSurface?.destroy();
105
- this.webgl.lineSurface?.destroy();
106
89
  }
107
90
  }
108
91
  //# sourceMappingURL=paneRenderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"paneRenderer.js","sourceRoot":"","sources":["../../src/engine/paneRenderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paneRenderer.js","sourceRoot":"","sources":["../../src/engine/paneRenderer.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import type { ChartSettings } from '../../foundation/config/chartSettings';
2
2
  import type { PluginHostImpl, RenderContext } from '../../foundation/plugin/index';
3
3
  import { RendererPluginManager } from '../../foundation/plugin/index';
4
+ import type { Renderer } from '../../rendering/render/Renderer';
4
5
  import type { Scene } from '../../rendering/scene/types';
5
6
  import type { ChartDom, ChartOptions } from '../chartTypes';
6
7
  import { InteractionController } from '../controller/interaction';
@@ -11,9 +12,8 @@ import { UpdateLevel } from '../layout/pane';
11
12
  import { MarkerManager, type MarkerManagerDeps } from '../marker/registry';
12
13
  import type { ChartModeHandler } from '../modes/types';
13
14
  import { PaneRenderer } from '../paneRenderer';
14
- import { SharedWebGLSurface } from '../renderers/webgl/sharedWebGLSurface';
15
15
  import { ChartViewportManager } from '../viewport/chartViewportManager';
16
- import { type ReadonlySignal } from '../../foundation/reactivity/signal';
16
+ import type { ReadonlySignal } from '../../foundation/reactivity/signal';
17
17
  type ResolvedChartOptions = Omit<ChartOptions, 'kWidth' | 'kGap'> & {
18
18
  kWidth: number;
19
19
  kGap: number;
@@ -23,7 +23,7 @@ export interface RendererDependencies {
23
23
  getOption: () => ResolvedChartOptions;
24
24
  getPaneRenderers: () => PaneRenderer[];
25
25
  getInteraction: () => InteractionController;
26
- getSharedWebGLSurface: () => SharedWebGLSurface;
26
+ getSceneRenderer: () => Renderer;
27
27
  getPluginHost: () => PluginHostImpl;
28
28
  getRendererPluginManager: () => RendererPluginManager;
29
29
  getTheme: () => 'light' | 'dark';
@@ -37,11 +37,23 @@ export interface RendererDependencies {
37
37
  customMarkers$: MarkerManagerDeps['customMarkers$'];
38
38
  drawings$: DrawingStoreDeps['drawings$'];
39
39
  selectedDrawingId$: DrawingStoreDeps['selectedDrawingId$'];
40
+ getOverlay?: DrawingStoreDeps['getOverlay'];
40
41
  }
41
42
  export declare class ChartRenderer {
43
+ /** 依赖注入容器,ChartRenderer 不直接持有状态,从 deps 接口读取,也便于测试 mock */
42
44
  private deps;
45
+ /**
46
+ * 帧事务:scheduleDraw 只写输入并合并 rAF;flush 内 prepare → seal → paint。
47
+ * 绘制阶段不再反向写 kernel 几何(seal 在 render 回调最前、与 paint 同代)。
48
+ */
49
+ private readonly frameTx;
50
+ /**
51
+ * 与 frameTx pending 同步的重绘级别镜像。
52
+ * FrameTransaction 对 level 是浅覆盖,Main/Overlay 升格在此完成。
53
+ */
54
+ private pendingLevel;
55
+ /** 已排队的 rAF 句柄;null 表示当前没有挂起的帧调度 */
43
56
  private raf;
44
- private pendingUpdateLevel;
45
57
  readonly markerManager: MarkerManager;
46
58
  readonly drawingStore: DrawingStore;
47
59
  private overlayHadCrosshair;
@@ -51,7 +63,6 @@ export declare class ChartRenderer {
51
63
  private frameCount;
52
64
  private paneCtxMap;
53
65
  private currentPaneId;
54
- private sceneRenderer;
55
66
  private timeAxisCtx;
56
67
  private timeAxisLayer;
57
68
  private _prevFrameRange;
@@ -60,16 +71,46 @@ export declare class ChartRenderer {
60
71
  registerDrawingPlugins(): void;
61
72
  getScene(): Scene;
62
73
  getPaneCtxMap(): Map<string, RenderContext>;
74
+ getCurrentPaneId(): string;
63
75
  getMarkerManager(): MarkerManager;
64
76
  getDrawingStore(): DrawingStore;
65
77
  getSettings(): ChartSettings;
66
78
  private get settings();
79
+ /**
80
+ * 申请绘制:合并重绘级别并写入帧事务,由 rAF 最多 flush 一次。
81
+ *
82
+ * 已有调度时只更新 pending level(Main+Overlay→All),不重复注册 rAF。
83
+ * flush 内:prepareFrameData → sealFrameGeometry → drawWithFrame。
84
+ *
85
+ * @param level - Main 只画主层,Overlay 只画覆盖层(crosshair 等),All 全画
86
+ */
67
87
  scheduleDraw(level?: UpdateLevel): void;
88
+ /**
89
+ * 同步绘制一帧,走与 rAF 相同的 flush 管线(prepare → seal → paint)。
90
+ *
91
+ * 若已有 rAF 挂起:与 pendingLevel 合并后同步 flush(消费合并后的 level)。
92
+ * 若正处于帧事务非 idle(render/publish 重入):只写输入并调度下一帧,禁止嵌套 flush。
93
+ *
94
+ * @param level - 同 scheduleDraw
95
+ */
68
96
  draw(level?: UpdateLevel): void;
97
+ /**
98
+ * 将本帧几何封存到 interaction,供 hover 二分与十字线重算读取。
99
+ * 在 paint 之前调用;引用未变时 interaction 侧应跳过 signal 通知。
100
+ */
101
+ private sealFrameGeometry;
69
102
  private drawWithFrame;
70
- /** 在 draw() 之前单独写入帧数据到 interactionState,分离状态变更与渲染 */
71
- private writeFramePositions;
72
- private writeFramePositionsFromFrame;
103
+ /**
104
+ * 准备一帧的绘制数据:viewport、可见区间、K 线位置。
105
+ *
106
+ * Overlay 且上次画完没清缓存时,直接复用 cachedDrawFrame,不重复
107
+ * 算 viewport 和 bar 位置。非缓存路径会刷新 cachedDrawFrame。
108
+ * range 变了会调用 checkVisibleRangeGapWhenIdle,方便空闲时补数据。
109
+ * TimeShare 模式按 plotWidth 平分 bar,不走 K 线物理宽度那套。
110
+ *
111
+ * @param level - Overlay 可走缓存,Main/All 强制重算
112
+ * @returns 无 viewport 或无数据时返回 null,调用方自己清屏或跳过
113
+ */
73
114
  private prepareFrameData;
74
115
  private clearAxisCtx;
75
116
  clearAllCanvases(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"chartRenderer.d.ts","sourceRoot":"","sources":["../../../src/engine/render/chartRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAA;AAE1E,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EAMd,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,qBAAqB,EAAgB,MAAM,+BAA+B,CAAA;AAKnF,OAAO,KAAK,EAAE,KAAK,EAAiC,MAAM,6BAA6B,CAAA;AAEvF,OAAO,KAAK,EACV,QAAQ,EAER,YAAY,EAIb,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAEhE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAA;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE5C,OAAO,EACL,aAAa,EAEb,KAAK,iBAAiB,EACvB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAG1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAA;AAcvE,OAAO,EAAS,KAAK,cAAc,EAAE,MAAM,oCAAoC,CAAA;AAE/E,KAAK,oBAAoB,GAAG,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG,MAAM,CAAC,GAAG;IAClE,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAiBD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,QAAQ,CAAA;IACtB,SAAS,EAAE,MAAM,oBAAoB,CAAA;IACrC,gBAAgB,EAAE,MAAM,YAAY,EAAE,CAAA;IACtC,cAAc,EAAE,MAAM,qBAAqB,CAAA;IAC3C,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;IAC/C,aAAa,EAAE,MAAM,cAAc,CAAA;IACnC,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;IACrD,QAAQ,EAAE,MAAM,OAAO,GAAG,MAAM,CAAA;IAChC,mBAAmB,EAAE,MAAM,MAAM,CAAA;IACjC,iBAAiB,EAAE,MAAM,MAAM,CAAA;IAC/B,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;IAC9C,cAAc,EAAE,MAAM,gBAAgB,CAAA;IACtC,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;IAChD,aAAa,EAAE,MAAM,gBAAgB,CAAA;IACrC,SAAS,EAAE,cAAc,CAAC,aAAa,CAAC,CAAA;IACxC,cAAc,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,CAAA;IACnD,SAAS,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAA;IACxC,kBAAkB,EAAE,gBAAgB,CAAC,oBAAoB,CAAC,CAAA;CAC3D;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,IAAI,CAAsB;IAElC,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,kBAAkB,CAA+B;IAEzD,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAA;IACrC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAA;IACnC,OAAO,CAAC,mBAAmB,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAwC;IAExD,OAAO,CAAC,eAAe,CAOR;IAEf,OAAO,CAAC,KAAK,CAAO;IACpB,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,UAAU,CAAmC;IACrD,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,aAAa,CAA2B;IAChD,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,eAAe,CAA4D;gBAEvE,IAAI,EAAE,oBAAoB;IAatC,iBAAiB,IAAI,IAAI;IAiHzB,sBAAsB,IAAI,IAAI;IAmB9B,QAAQ,IAAI,KAAK;IAIjB,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC;IAI3C,gBAAgB,IAAI,aAAa;IAIjC,eAAe,IAAI,YAAY;IAI/B,WAAW,IAAI,aAAa;IAI5B,OAAO,KAAK,QAAQ,GAEnB;IAED,YAAY,CAAC,KAAK,GAAE,WAA6B,GAAG,IAAI;IAmCxD,IAAI,CAAC,KAAK,GAAE,WAA6B,GAAG,IAAI;IAIhD,OAAO,CAAC,aAAa;IA0DrB,qDAAqD;IACrD,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,4BAA4B;IAMpC,OAAO,CAAC,gBAAgB;IA6HxB,OAAO,CAAC,YAAY;IAWpB,gBAAgB,IAAI,IAAI;IAyBxB,OAAO,CAAC,WAAW;IA+KnB,OAAO,CAAC,WAAW;IAqFnB,OAAO,CAAC,kBAAkB;IAqB1B,OAAO,CAAC,4BAA4B;IAKpC,OAAO,CAAC,kBAAkB;IAY1B,gBAAgB,IAAI,IAAI;IAIxB,OAAO,IAAI,IAAI;CAWhB"}
1
+ {"version":3,"file":"chartRenderer.d.ts","sourceRoot":"","sources":["../../../src/engine/render/chartRenderer.ts"],"names":[],"mappings":"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"}