@363045841yyt/klinechart-core 0.8.5 → 0.8.7

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 (517) hide show
  1. package/dist/config/chartSettings.d.ts +21 -2
  2. package/dist/config/chartSettings.d.ts.map +1 -1
  3. package/dist/config/chartSettings.js +9 -1
  4. package/dist/config/chartSettings.js.map +1 -1
  5. package/dist/controllers/createChartController.d.ts.map +1 -1
  6. package/dist/controllers/createChartController.js +50 -3
  7. package/dist/controllers/createChartController.js.map +1 -1
  8. package/dist/controllers/types.d.ts +34 -23
  9. package/dist/controllers/types.d.ts.map +1 -1
  10. package/dist/data-fetchers/baostock.d.ts +0 -3
  11. package/dist/data-fetchers/baostock.d.ts.map +1 -1
  12. package/dist/data-fetchers/baostock.js +0 -1
  13. package/dist/data-fetchers/baostock.js.map +1 -1
  14. package/dist/data-fetchers/dataBuffer.d.ts +13 -2
  15. package/dist/data-fetchers/dataBuffer.d.ts.map +1 -1
  16. package/dist/data-fetchers/dataBuffer.js +41 -7
  17. package/dist/data-fetchers/dataBuffer.js.map +1 -1
  18. package/dist/data-fetchers/dataBufferTypes.d.ts +11 -0
  19. package/dist/data-fetchers/dataBufferTypes.d.ts.map +1 -0
  20. package/dist/data-fetchers/dataBufferTypes.js +2 -0
  21. package/dist/data-fetchers/dataBufferTypes.js.map +1 -0
  22. package/dist/data-fetchers/fetcherDefinitionRegistry.d.ts +4 -3
  23. package/dist/data-fetchers/fetcherDefinitionRegistry.d.ts.map +1 -1
  24. package/dist/data-fetchers/fetcherDefinitionRegistry.js +9 -2
  25. package/dist/data-fetchers/fetcherDefinitionRegistry.js.map +1 -1
  26. package/dist/data-fetchers/gotdx/gotdx.d.ts +7 -0
  27. package/dist/data-fetchers/gotdx/gotdx.d.ts.map +1 -0
  28. package/dist/data-fetchers/gotdx/gotdx.js +7 -0
  29. package/dist/data-fetchers/gotdx/gotdx.js.map +1 -0
  30. package/dist/data-fetchers/gotdx.d.ts +0 -8
  31. package/dist/data-fetchers/gotdx.d.ts.map +1 -1
  32. package/dist/data-fetchers/gotdx.js +40 -3
  33. package/dist/data-fetchers/gotdx.js.map +1 -1
  34. package/dist/data-fetchers/hundred-mock.d.ts +0 -3
  35. package/dist/data-fetchers/hundred-mock.d.ts.map +1 -1
  36. package/dist/data-fetchers/hundred-mock.js +0 -1
  37. package/dist/data-fetchers/hundred-mock.js.map +1 -1
  38. package/dist/data-fetchers/index.d.ts +10 -8
  39. package/dist/data-fetchers/index.d.ts.map +1 -1
  40. package/dist/data-fetchers/index.js +8 -7
  41. package/dist/data-fetchers/index.js.map +1 -1
  42. package/dist/data-fetchers/router.d.ts +2 -0
  43. package/dist/data-fetchers/router.d.ts.map +1 -1
  44. package/dist/data-fetchers/router.js +8 -1
  45. package/dist/data-fetchers/router.js.map +1 -1
  46. package/dist/data-fetchers/thousand-mock.d.ts +0 -3
  47. package/dist/data-fetchers/thousand-mock.d.ts.map +1 -1
  48. package/dist/data-fetchers/thousand-mock.js +0 -1
  49. package/dist/data-fetchers/thousand-mock.js.map +1 -1
  50. package/dist/data-fetchers/timeShareBuffer.d.ts +27 -0
  51. package/dist/data-fetchers/timeShareBuffer.d.ts.map +1 -0
  52. package/dist/data-fetchers/timeShareBuffer.js +79 -0
  53. package/dist/data-fetchers/timeShareBuffer.js.map +1 -0
  54. package/dist/data-fetchers/tradingview.d.ts +0 -8
  55. package/dist/data-fetchers/tradingview.d.ts.map +1 -1
  56. package/dist/data-fetchers/tradingview.js +1 -2
  57. package/dist/data-fetchers/tradingview.js.map +1 -1
  58. package/dist/data-fetchers/types.d.ts +9 -1
  59. package/dist/data-fetchers/types.d.ts.map +1 -1
  60. package/dist/engine/chart.d.ts +29 -1
  61. package/dist/engine/chart.d.ts.map +1 -1
  62. package/dist/engine/chart.js +140 -5
  63. package/dist/engine/chart.js.map +1 -1
  64. package/dist/engine/chartTypes.d.ts +3 -0
  65. package/dist/engine/chartTypes.d.ts.map +1 -1
  66. package/dist/engine/controller/interaction.d.ts +12 -1
  67. package/dist/engine/controller/interaction.d.ts.map +1 -1
  68. package/dist/engine/controller/interaction.js +105 -14
  69. package/dist/engine/controller/interaction.js.map +1 -1
  70. package/dist/engine/data/chartDataManager.d.ts +38 -11
  71. package/dist/engine/data/chartDataManager.d.ts.map +1 -1
  72. package/dist/engine/data/chartDataManager.js +491 -188
  73. package/dist/engine/data/chartDataManager.js.map +1 -1
  74. package/dist/engine/draw/pixelAlign.d.ts +0 -27
  75. package/dist/engine/draw/pixelAlign.d.ts.map +1 -1
  76. package/dist/engine/draw/pixelAlign.js +1 -1
  77. package/dist/engine/draw/pixelAlign.js.map +1 -1
  78. package/dist/engine/indicators/calculators.d.ts +0 -104
  79. package/dist/engine/indicators/calculators.d.ts.map +1 -1
  80. package/dist/engine/indicators/calculators.js +77 -171
  81. package/dist/engine/indicators/calculators.js.map +1 -1
  82. package/dist/engine/indicators/chartIndicatorManager.d.ts.map +1 -1
  83. package/dist/engine/indicators/chartIndicatorManager.js +3 -2
  84. package/dist/engine/indicators/chartIndicatorManager.js.map +1 -1
  85. package/dist/engine/indicators/ichimokuState.d.ts +2 -0
  86. package/dist/engine/indicators/ichimokuState.d.ts.map +1 -1
  87. package/dist/engine/indicators/ichimokuState.js.map +1 -1
  88. package/dist/engine/indicators/macdState.d.ts +0 -5
  89. package/dist/engine/indicators/macdState.d.ts.map +1 -1
  90. package/dist/engine/indicators/macdState.js +1 -1
  91. package/dist/engine/indicators/macdState.js.map +1 -1
  92. package/dist/engine/indicators/registerBuiltins.d.ts.map +1 -1
  93. package/dist/engine/indicators/registerBuiltins.js +1 -0
  94. package/dist/engine/indicators/registerBuiltins.js.map +1 -1
  95. package/dist/engine/indicators/rsiState.d.ts +0 -4
  96. package/dist/engine/indicators/rsiState.d.ts.map +1 -1
  97. package/dist/engine/indicators/rsiState.js +1 -1
  98. package/dist/engine/indicators/rsiState.js.map +1 -1
  99. package/dist/engine/indicators/scheduler.d.ts.map +1 -1
  100. package/dist/engine/indicators/scheduler.js +1 -7
  101. package/dist/engine/indicators/scheduler.js.map +1 -1
  102. package/dist/engine/indicators/visibleStateComposers.d.ts +14 -0
  103. package/dist/engine/indicators/visibleStateComposers.d.ts.map +1 -1
  104. package/dist/engine/indicators/visibleStateComposers.js +34 -0
  105. package/dist/engine/indicators/visibleStateComposers.js.map +1 -1
  106. package/dist/engine/layout/chartPaneLayout.d.ts +2 -0
  107. package/dist/engine/layout/chartPaneLayout.d.ts.map +1 -1
  108. package/dist/engine/layout/chartPaneLayout.js +24 -6
  109. package/dist/engine/layout/chartPaneLayout.js.map +1 -1
  110. package/dist/engine/modes/kLineMode.d.ts +37 -0
  111. package/dist/engine/modes/kLineMode.d.ts.map +1 -0
  112. package/dist/engine/modes/kLineMode.js +22 -0
  113. package/dist/engine/modes/kLineMode.js.map +1 -0
  114. package/dist/engine/modes/timeShareMode.d.ts +37 -0
  115. package/dist/engine/modes/timeShareMode.d.ts.map +1 -0
  116. package/dist/engine/modes/timeShareMode.js +59 -0
  117. package/dist/engine/modes/timeShareMode.js.map +1 -0
  118. package/dist/engine/modes/types.d.ts +47 -0
  119. package/dist/engine/modes/types.d.ts.map +1 -0
  120. package/dist/engine/modes/types.js +2 -0
  121. package/dist/engine/modes/types.js.map +1 -0
  122. package/dist/engine/paneRenderer.d.ts +4 -0
  123. package/dist/engine/paneRenderer.d.ts.map +1 -1
  124. package/dist/engine/paneRenderer.js +27 -40
  125. package/dist/engine/paneRenderer.js.map +1 -1
  126. package/dist/engine/render/chartRenderer.d.ts +4 -23
  127. package/dist/engine/render/chartRenderer.d.ts.map +1 -1
  128. package/dist/engine/render/chartRenderer.js +87 -17
  129. package/dist/engine/render/chartRenderer.js.map +1 -1
  130. package/dist/engine/renderers/Indicator/atr.d.ts +1 -18
  131. package/dist/engine/renderers/Indicator/atr.d.ts.map +1 -1
  132. package/dist/engine/renderers/Indicator/atr.js +3 -22
  133. package/dist/engine/renderers/Indicator/atr.js.map +1 -1
  134. package/dist/engine/renderers/Indicator/boll.d.ts +1 -4
  135. package/dist/engine/renderers/Indicator/boll.d.ts.map +1 -1
  136. package/dist/engine/renderers/Indicator/boll.js +3 -18
  137. package/dist/engine/renderers/Indicator/boll.js.map +1 -1
  138. package/dist/engine/renderers/Indicator/cci.d.ts +1 -22
  139. package/dist/engine/renderers/Indicator/cci.d.ts.map +1 -1
  140. package/dist/engine/renderers/Indicator/cci.js +8 -20
  141. package/dist/engine/renderers/Indicator/cci.js.map +1 -1
  142. package/dist/engine/renderers/Indicator/chaikinVol.d.ts +1 -7
  143. package/dist/engine/renderers/Indicator/chaikinVol.d.ts.map +1 -1
  144. package/dist/engine/renderers/Indicator/chaikinVol.js +3 -16
  145. package/dist/engine/renderers/Indicator/chaikinVol.js.map +1 -1
  146. package/dist/engine/renderers/Indicator/cmf.d.ts +1 -7
  147. package/dist/engine/renderers/Indicator/cmf.d.ts.map +1 -1
  148. package/dist/engine/renderers/Indicator/cmf.js +3 -15
  149. package/dist/engine/renderers/Indicator/cmf.js.map +1 -1
  150. package/dist/engine/renderers/Indicator/dema.d.ts +1 -7
  151. package/dist/engine/renderers/Indicator/dema.d.ts.map +1 -1
  152. package/dist/engine/renderers/Indicator/dema.js +3 -17
  153. package/dist/engine/renderers/Indicator/dema.js.map +1 -1
  154. package/dist/engine/renderers/Indicator/donchian.d.ts +1 -8
  155. package/dist/engine/renderers/Indicator/donchian.d.ts.map +1 -1
  156. package/dist/engine/renderers/Indicator/donchian.js +2 -2
  157. package/dist/engine/renderers/Indicator/donchian.js.map +1 -1
  158. package/dist/engine/renderers/Indicator/ene.d.ts +1 -12
  159. package/dist/engine/renderers/Indicator/ene.d.ts.map +1 -1
  160. package/dist/engine/renderers/Indicator/ene.js +3 -18
  161. package/dist/engine/renderers/Indicator/ene.js.map +1 -1
  162. package/dist/engine/renderers/Indicator/expma.d.ts +1 -4
  163. package/dist/engine/renderers/Indicator/expma.d.ts.map +1 -1
  164. package/dist/engine/renderers/Indicator/expma.js +2 -2
  165. package/dist/engine/renderers/Indicator/expma.js.map +1 -1
  166. package/dist/engine/renderers/Indicator/fastk.d.ts +1 -22
  167. package/dist/engine/renderers/Indicator/fastk.d.ts.map +1 -1
  168. package/dist/engine/renderers/Indicator/fastk.js +11 -64
  169. package/dist/engine/renderers/Indicator/fastk.js.map +1 -1
  170. package/dist/engine/renderers/Indicator/fib.d.ts +1 -6
  171. package/dist/engine/renderers/Indicator/fib.d.ts.map +1 -1
  172. package/dist/engine/renderers/Indicator/fib.js +2 -2
  173. package/dist/engine/renderers/Indicator/fib.js.map +1 -1
  174. package/dist/engine/renderers/Indicator/hma.d.ts +1 -7
  175. package/dist/engine/renderers/Indicator/hma.d.ts.map +1 -1
  176. package/dist/engine/renderers/Indicator/hma.js +3 -17
  177. package/dist/engine/renderers/Indicator/hma.js.map +1 -1
  178. package/dist/engine/renderers/Indicator/hv.d.ts +1 -7
  179. package/dist/engine/renderers/Indicator/hv.d.ts.map +1 -1
  180. package/dist/engine/renderers/Indicator/hv.js +3 -16
  181. package/dist/engine/renderers/Indicator/hv.js.map +1 -1
  182. package/dist/engine/renderers/Indicator/ichimoku.d.ts +1 -8
  183. package/dist/engine/renderers/Indicator/ichimoku.d.ts.map +1 -1
  184. package/dist/engine/renderers/Indicator/ichimoku.js +27 -5
  185. package/dist/engine/renderers/Indicator/ichimoku.js.map +1 -1
  186. package/dist/engine/renderers/Indicator/kama.d.ts +1 -7
  187. package/dist/engine/renderers/Indicator/kama.d.ts.map +1 -1
  188. package/dist/engine/renderers/Indicator/kama.js +3 -17
  189. package/dist/engine/renderers/Indicator/kama.js.map +1 -1
  190. package/dist/engine/renderers/Indicator/keltner.d.ts +1 -8
  191. package/dist/engine/renderers/Indicator/keltner.d.ts.map +1 -1
  192. package/dist/engine/renderers/Indicator/keltner.js +2 -2
  193. package/dist/engine/renderers/Indicator/keltner.js.map +1 -1
  194. package/dist/engine/renderers/Indicator/kst.d.ts +1 -22
  195. package/dist/engine/renderers/Indicator/kst.d.ts.map +1 -1
  196. package/dist/engine/renderers/Indicator/kst.js +2 -2
  197. package/dist/engine/renderers/Indicator/kst.js.map +1 -1
  198. package/dist/engine/renderers/Indicator/ma.d.ts +1 -4
  199. package/dist/engine/renderers/Indicator/ma.d.ts.map +1 -1
  200. package/dist/engine/renderers/Indicator/ma.js +1 -1
  201. package/dist/engine/renderers/Indicator/ma.js.map +1 -1
  202. package/dist/engine/renderers/Indicator/macd.d.ts +1 -49
  203. package/dist/engine/renderers/Indicator/macd.d.ts.map +1 -1
  204. package/dist/engine/renderers/Indicator/macd.js +2 -12
  205. package/dist/engine/renderers/Indicator/macd.js.map +1 -1
  206. package/dist/engine/renderers/Indicator/mainIndicatorLegend.d.ts.map +1 -1
  207. package/dist/engine/renderers/Indicator/mainIndicatorLegend.js +205 -0
  208. package/dist/engine/renderers/Indicator/mainIndicatorLegend.js.map +1 -1
  209. package/dist/engine/renderers/Indicator/mfi.d.ts +1 -7
  210. package/dist/engine/renderers/Indicator/mfi.d.ts.map +1 -1
  211. package/dist/engine/renderers/Indicator/mfi.js +3 -15
  212. package/dist/engine/renderers/Indicator/mfi.js.map +1 -1
  213. package/dist/engine/renderers/Indicator/mom.d.ts +1 -22
  214. package/dist/engine/renderers/Indicator/mom.d.ts.map +1 -1
  215. package/dist/engine/renderers/Indicator/mom.js +8 -23
  216. package/dist/engine/renderers/Indicator/mom.js.map +1 -1
  217. package/dist/engine/renderers/Indicator/obv.d.ts +1 -7
  218. package/dist/engine/renderers/Indicator/obv.d.ts.map +1 -1
  219. package/dist/engine/renderers/Indicator/obv.js +3 -14
  220. package/dist/engine/renderers/Indicator/obv.js.map +1 -1
  221. package/dist/engine/renderers/Indicator/parkinson.d.ts +1 -7
  222. package/dist/engine/renderers/Indicator/parkinson.d.ts.map +1 -1
  223. package/dist/engine/renderers/Indicator/parkinson.js +3 -16
  224. package/dist/engine/renderers/Indicator/parkinson.js.map +1 -1
  225. package/dist/engine/renderers/Indicator/pivot.d.ts +1 -6
  226. package/dist/engine/renderers/Indicator/pivot.d.ts.map +1 -1
  227. package/dist/engine/renderers/Indicator/pivot.js +2 -2
  228. package/dist/engine/renderers/Indicator/pivot.js.map +1 -1
  229. package/dist/engine/renderers/Indicator/pvt.d.ts +1 -7
  230. package/dist/engine/renderers/Indicator/pvt.d.ts.map +1 -1
  231. package/dist/engine/renderers/Indicator/pvt.js +3 -14
  232. package/dist/engine/renderers/Indicator/pvt.js.map +1 -1
  233. package/dist/engine/renderers/Indicator/roc.d.ts +1 -8
  234. package/dist/engine/renderers/Indicator/roc.d.ts.map +1 -1
  235. package/dist/engine/renderers/Indicator/roc.js +3 -15
  236. package/dist/engine/renderers/Indicator/roc.js.map +1 -1
  237. package/dist/engine/renderers/Indicator/rsi.d.ts +0 -32
  238. package/dist/engine/renderers/Indicator/rsi.d.ts.map +1 -1
  239. package/dist/engine/renderers/Indicator/rsi.js +3 -3
  240. package/dist/engine/renderers/Indicator/rsi.js.map +1 -1
  241. package/dist/engine/renderers/Indicator/sar.d.ts +1 -8
  242. package/dist/engine/renderers/Indicator/sar.d.ts.map +1 -1
  243. package/dist/engine/renderers/Indicator/sar.js +2 -2
  244. package/dist/engine/renderers/Indicator/sar.js.map +1 -1
  245. package/dist/engine/renderers/Indicator/scale/indicator_scale.d.ts +2 -0
  246. package/dist/engine/renderers/Indicator/scale/indicator_scale.d.ts.map +1 -1
  247. package/dist/engine/renderers/Indicator/scale/indicator_scale.js +10 -6
  248. package/dist/engine/renderers/Indicator/scale/indicator_scale.js.map +1 -1
  249. package/dist/engine/renderers/Indicator/shared/dashedLines.d.ts +4 -0
  250. package/dist/engine/renderers/Indicator/shared/dashedLines.d.ts.map +1 -0
  251. package/dist/engine/renderers/Indicator/shared/dashedLines.js +50 -0
  252. package/dist/engine/renderers/Indicator/shared/dashedLines.js.map +1 -0
  253. package/dist/engine/renderers/Indicator/shared/titleInfo.d.ts +14 -0
  254. package/dist/engine/renderers/Indicator/shared/titleInfo.d.ts.map +1 -0
  255. package/dist/engine/renderers/Indicator/shared/titleInfo.js +25 -0
  256. package/dist/engine/renderers/Indicator/shared/titleInfo.js.map +1 -0
  257. package/dist/engine/renderers/Indicator/shared/webglBand.d.ts +5 -0
  258. package/dist/engine/renderers/Indicator/shared/webglBand.d.ts.map +1 -0
  259. package/dist/engine/renderers/Indicator/shared/webglBand.js +17 -0
  260. package/dist/engine/renderers/Indicator/shared/webglBand.js.map +1 -0
  261. package/dist/engine/renderers/Indicator/stoch.d.ts +1 -22
  262. package/dist/engine/renderers/Indicator/stoch.d.ts.map +1 -1
  263. package/dist/engine/renderers/Indicator/stoch.js +5 -46
  264. package/dist/engine/renderers/Indicator/stoch.js.map +1 -1
  265. package/dist/engine/renderers/Indicator/structure.d.ts +1 -7
  266. package/dist/engine/renderers/Indicator/structure.d.ts.map +1 -1
  267. package/dist/engine/renderers/Indicator/structure.js +2 -2
  268. package/dist/engine/renderers/Indicator/structure.js.map +1 -1
  269. package/dist/engine/renderers/Indicator/supertrend.d.ts +1 -8
  270. package/dist/engine/renderers/Indicator/supertrend.d.ts.map +1 -1
  271. package/dist/engine/renderers/Indicator/supertrend.js +2 -2
  272. package/dist/engine/renderers/Indicator/supertrend.js.map +1 -1
  273. package/dist/engine/renderers/Indicator/tema.d.ts +1 -7
  274. package/dist/engine/renderers/Indicator/tema.d.ts.map +1 -1
  275. package/dist/engine/renderers/Indicator/tema.js +3 -17
  276. package/dist/engine/renderers/Indicator/tema.js.map +1 -1
  277. package/dist/engine/renderers/Indicator/trix.d.ts +1 -8
  278. package/dist/engine/renderers/Indicator/trix.d.ts.map +1 -1
  279. package/dist/engine/renderers/Indicator/trix.js +2 -2
  280. package/dist/engine/renderers/Indicator/trix.js.map +1 -1
  281. package/dist/engine/renderers/Indicator/vma.d.ts +1 -7
  282. package/dist/engine/renderers/Indicator/vma.d.ts.map +1 -1
  283. package/dist/engine/renderers/Indicator/vma.js +3 -15
  284. package/dist/engine/renderers/Indicator/vma.js.map +1 -1
  285. package/dist/engine/renderers/Indicator/volumeProfile.d.ts +1 -7
  286. package/dist/engine/renderers/Indicator/volumeProfile.d.ts.map +1 -1
  287. package/dist/engine/renderers/Indicator/volumeProfile.js +2 -2
  288. package/dist/engine/renderers/Indicator/volumeProfile.js.map +1 -1
  289. package/dist/engine/renderers/Indicator/vwap.d.ts +1 -7
  290. package/dist/engine/renderers/Indicator/vwap.d.ts.map +1 -1
  291. package/dist/engine/renderers/Indicator/vwap.js +3 -14
  292. package/dist/engine/renderers/Indicator/vwap.js.map +1 -1
  293. package/dist/engine/renderers/Indicator/wma.d.ts +1 -7
  294. package/dist/engine/renderers/Indicator/wma.d.ts.map +1 -1
  295. package/dist/engine/renderers/Indicator/wma.js +3 -17
  296. package/dist/engine/renderers/Indicator/wma.js.map +1 -1
  297. package/dist/engine/renderers/Indicator/wmsr.d.ts +1 -22
  298. package/dist/engine/renderers/Indicator/wmsr.d.ts.map +1 -1
  299. package/dist/engine/renderers/Indicator/wmsr.js +8 -23
  300. package/dist/engine/renderers/Indicator/wmsr.js.map +1 -1
  301. package/dist/engine/renderers/Indicator/zones.d.ts +1 -6
  302. package/dist/engine/renderers/Indicator/zones.d.ts.map +1 -1
  303. package/dist/engine/renderers/Indicator/zones.js +2 -2
  304. package/dist/engine/renderers/Indicator/zones.js.map +1 -1
  305. package/dist/engine/renderers/candle.d.ts +0 -16
  306. package/dist/engine/renderers/candle.d.ts.map +1 -1
  307. package/dist/engine/renderers/candle.js +1 -1
  308. package/dist/engine/renderers/candle.js.map +1 -1
  309. package/dist/engine/renderers/comparisonLine.d.ts.map +1 -1
  310. package/dist/engine/renderers/comparisonLine.js +2 -0
  311. package/dist/engine/renderers/comparisonLine.js.map +1 -1
  312. package/dist/engine/renderers/crosshair.js +1 -1
  313. package/dist/engine/renderers/crosshair.js.map +1 -1
  314. package/dist/engine/renderers/extremaMarkers.d.ts.map +1 -1
  315. package/dist/engine/renderers/extremaMarkers.js +2 -0
  316. package/dist/engine/renderers/extremaMarkers.js.map +1 -1
  317. package/dist/engine/renderers/lastPrice.d.ts.map +1 -1
  318. package/dist/engine/renderers/lastPrice.js +7 -2
  319. package/dist/engine/renderers/lastPrice.js.map +1 -1
  320. package/dist/engine/renderers/leftYAxis.d.ts +11 -0
  321. package/dist/engine/renderers/leftYAxis.d.ts.map +1 -0
  322. package/dist/engine/renderers/leftYAxis.js +67 -0
  323. package/dist/engine/renderers/leftYAxis.js.map +1 -0
  324. package/dist/engine/renderers/subVolume.d.ts +1 -13
  325. package/dist/engine/renderers/subVolume.d.ts.map +1 -1
  326. package/dist/engine/renderers/subVolume.js +1 -1
  327. package/dist/engine/renderers/subVolume.js.map +1 -1
  328. package/dist/engine/renderers/timeAxis.d.ts +0 -2
  329. package/dist/engine/renderers/timeAxis.d.ts.map +1 -1
  330. package/dist/engine/renderers/timeAxis.js +4 -1
  331. package/dist/engine/renderers/timeAxis.js.map +1 -1
  332. package/dist/engine/renderers/timeShare.d.ts +3 -0
  333. package/dist/engine/renderers/timeShare.d.ts.map +1 -0
  334. package/dist/engine/renderers/timeShare.js +260 -0
  335. package/dist/engine/renderers/timeShare.js.map +1 -0
  336. package/dist/engine/renderers/yAxis.d.ts.map +1 -1
  337. package/dist/engine/renderers/yAxis.js +9 -1
  338. package/dist/engine/renderers/yAxis.js.map +1 -1
  339. package/dist/engine/scale/price.d.ts +0 -7
  340. package/dist/engine/scale/price.d.ts.map +1 -1
  341. package/dist/engine/scale/price.js +3 -2
  342. package/dist/engine/scale/price.js.map +1 -1
  343. package/dist/engine/theme/fonts.d.ts +0 -2
  344. package/dist/engine/theme/fonts.d.ts.map +1 -1
  345. package/dist/engine/theme/fonts.js +1 -1
  346. package/dist/engine/theme/fonts.js.map +1 -1
  347. package/dist/engine/utils/klineConfig.d.ts.map +1 -1
  348. package/dist/engine/utils/klineConfig.js +1 -5
  349. package/dist/engine/utils/klineConfig.js.map +1 -1
  350. package/dist/engine/viewport/chartViewportManager.d.ts.map +1 -1
  351. package/dist/engine/viewport/chartViewportManager.js +6 -5
  352. package/dist/engine/viewport/chartViewportManager.js.map +1 -1
  353. package/dist/index.d.ts +1 -0
  354. package/dist/index.d.ts.map +1 -1
  355. package/dist/index.js +1 -0
  356. package/dist/index.js.map +1 -1
  357. package/dist/mcp/chartBridge.d.ts.map +1 -1
  358. package/dist/mcp/chartBridge.js +2 -1
  359. package/dist/mcp/chartBridge.js.map +1 -1
  360. package/dist/plugin/types.d.ts +1 -0
  361. package/dist/plugin/types.d.ts.map +1 -1
  362. package/dist/plugin/types.js.map +1 -1
  363. package/dist/semantic/types.d.ts +1 -1
  364. package/dist/semantic/types.d.ts.map +1 -1
  365. package/dist/tokens/theme-base.d.ts +5 -0
  366. package/dist/tokens/theme-base.d.ts.map +1 -0
  367. package/dist/tokens/theme-base.js +31 -0
  368. package/dist/tokens/theme-base.js.map +1 -0
  369. package/dist/tokens/theme-china.d.ts.map +1 -1
  370. package/dist/tokens/theme-china.js +3 -0
  371. package/dist/tokens/theme-china.js.map +1 -1
  372. package/dist/tokens/theme-dark.d.ts.map +1 -1
  373. package/dist/tokens/theme-dark.js +12 -31
  374. package/dist/tokens/theme-dark.js.map +1 -1
  375. package/dist/tokens/theme-light.d.ts.map +1 -1
  376. package/dist/tokens/theme-light.js +11 -30
  377. package/dist/tokens/theme-light.js.map +1 -1
  378. package/dist/tokens/types.d.ts +7 -0
  379. package/dist/tokens/types.d.ts.map +1 -1
  380. package/dist/types/price.d.ts +8 -0
  381. package/dist/types/price.d.ts.map +1 -1
  382. package/dist/types/price.js +4 -0
  383. package/dist/types/price.js.map +1 -1
  384. package/dist/utils/dateFormat.d.ts +5 -42
  385. package/dist/utils/dateFormat.d.ts.map +1 -1
  386. package/dist/utils/dateFormat.js +24 -4
  387. package/dist/utils/dateFormat.js.map +1 -1
  388. package/dist/utils/kLineDraw/axis.d.ts +9 -28
  389. package/dist/utils/kLineDraw/axis.d.ts.map +1 -1
  390. package/dist/utils/kLineDraw/axis.js +33 -58
  391. package/dist/utils/kLineDraw/axis.js.map +1 -1
  392. package/dist/utils/uuid.d.ts +2 -0
  393. package/dist/utils/uuid.d.ts.map +1 -0
  394. package/dist/utils/uuid.js +10 -0
  395. package/dist/utils/uuid.js.map +1 -0
  396. package/dist/utils/volumePrice.d.ts +0 -40
  397. package/dist/utils/volumePrice.d.ts.map +1 -1
  398. package/dist/utils/volumePrice.js +2 -2
  399. package/dist/utils/volumePrice.js.map +1 -1
  400. package/dist/version.d.ts +1 -1
  401. package/dist/version.js +1 -1
  402. package/package.json +1 -1
  403. package/src/config/chartSettings.ts +9 -1
  404. package/src/controllers/createChartController.ts +53 -3
  405. package/src/controllers/types.ts +36 -17
  406. package/src/data-fetchers/__tests__/dataBuffer.test.ts +39 -5
  407. package/src/data-fetchers/baostock.ts +1 -1
  408. package/src/data-fetchers/dataBuffer.ts +48 -11
  409. package/src/data-fetchers/dataBufferTypes.ts +11 -0
  410. package/src/data-fetchers/fetcherDefinitionRegistry.ts +14 -4
  411. package/src/data-fetchers/gotdx/gotdx.ts +6 -0
  412. package/src/data-fetchers/gotdx.ts +45 -7
  413. package/src/data-fetchers/hundred-mock.ts +1 -1
  414. package/src/data-fetchers/index.ts +10 -20
  415. package/src/data-fetchers/router.ts +12 -1
  416. package/src/data-fetchers/thousand-mock.ts +1 -1
  417. package/src/data-fetchers/timeShareBuffer.ts +92 -0
  418. package/src/data-fetchers/tradingview.ts +2 -2
  419. package/src/data-fetchers/types.ts +15 -2
  420. package/src/engine/__tests__/chart.dpr.test.ts +1 -0
  421. package/src/engine/chart.ts +157 -7
  422. package/src/engine/chartTypes.ts +3 -0
  423. package/src/engine/controller/__tests__/interaction.dpr.test.ts +2 -0
  424. package/src/engine/controller/interaction.ts +115 -16
  425. package/src/engine/data/chartDataManager.ts +557 -214
  426. package/src/engine/draw/pixelAlign.ts +1 -1
  427. package/src/engine/indicators/__tests__/_propertyAssertions.ts +2 -2
  428. package/src/engine/indicators/__tests__/ichimoku.test.ts +3 -3
  429. package/src/engine/indicators/__tests__/registerBuiltins.test.ts +1 -1
  430. package/src/engine/indicators/calculators.ts +105 -236
  431. package/src/engine/indicators/chartIndicatorManager.ts +3 -2
  432. package/src/engine/indicators/ichimokuState.ts +2 -0
  433. package/src/engine/indicators/macdState.ts +1 -1
  434. package/src/engine/indicators/registerBuiltins.ts +1 -0
  435. package/src/engine/indicators/rsiState.ts +1 -1
  436. package/src/engine/indicators/scheduler.ts +1 -7
  437. package/src/engine/indicators/visibleStateComposers.ts +51 -0
  438. package/src/engine/layout/chartPaneLayout.ts +26 -6
  439. package/src/engine/modes/kLineMode.ts +57 -0
  440. package/src/engine/modes/timeShareMode.ts +95 -0
  441. package/src/engine/modes/types.ts +63 -0
  442. package/src/engine/paneRenderer.ts +37 -46
  443. package/src/engine/render/chartRenderer.ts +93 -20
  444. package/src/engine/renderers/Indicator/atr.ts +4 -29
  445. package/src/engine/renderers/Indicator/boll.ts +3 -24
  446. package/src/engine/renderers/Indicator/cci.ts +9 -27
  447. package/src/engine/renderers/Indicator/chaikinVol.ts +3 -23
  448. package/src/engine/renderers/Indicator/cmf.ts +3 -22
  449. package/src/engine/renderers/Indicator/dema.ts +5 -26
  450. package/src/engine/renderers/Indicator/donchian.ts +3 -3
  451. package/src/engine/renderers/Indicator/ene.ts +3 -24
  452. package/src/engine/renderers/Indicator/expma.ts +2 -2
  453. package/src/engine/renderers/Indicator/fastk.ts +12 -95
  454. package/src/engine/renderers/Indicator/fib.ts +2 -2
  455. package/src/engine/renderers/Indicator/hma.ts +5 -26
  456. package/src/engine/renderers/Indicator/hv.ts +3 -23
  457. package/src/engine/renderers/Indicator/ichimoku.ts +26 -6
  458. package/src/engine/renderers/Indicator/kama.ts +5 -26
  459. package/src/engine/renderers/Indicator/keltner.ts +3 -3
  460. package/src/engine/renderers/Indicator/kst.ts +3 -3
  461. package/src/engine/renderers/Indicator/ma.ts +1 -1
  462. package/src/engine/renderers/Indicator/macd.ts +4 -21
  463. package/src/engine/renderers/Indicator/mainIndicatorLegend.ts +228 -1
  464. package/src/engine/renderers/Indicator/mfi.ts +3 -22
  465. package/src/engine/renderers/Indicator/mom.ts +9 -30
  466. package/src/engine/renderers/Indicator/obv.ts +3 -21
  467. package/src/engine/renderers/Indicator/parkinson.ts +3 -23
  468. package/src/engine/renderers/Indicator/pivot.ts +2 -2
  469. package/src/engine/renderers/Indicator/pvt.ts +3 -21
  470. package/src/engine/renderers/Indicator/roc.ts +4 -23
  471. package/src/engine/renderers/Indicator/rsi.ts +4 -4
  472. package/src/engine/renderers/Indicator/sar.ts +3 -3
  473. package/src/engine/renderers/Indicator/scale/indicator_scale.ts +11 -4
  474. package/src/engine/renderers/Indicator/shared/dashedLines.ts +81 -0
  475. package/src/engine/renderers/Indicator/shared/titleInfo.ts +52 -0
  476. package/src/engine/renderers/Indicator/shared/webglBand.ts +23 -0
  477. package/src/engine/renderers/Indicator/stoch.ts +6 -71
  478. package/src/engine/renderers/Indicator/structure.ts +2 -2
  479. package/src/engine/renderers/Indicator/supertrend.ts +3 -3
  480. package/src/engine/renderers/Indicator/tema.ts +5 -26
  481. package/src/engine/renderers/Indicator/trix.ts +3 -3
  482. package/src/engine/renderers/Indicator/vma.ts +3 -22
  483. package/src/engine/renderers/Indicator/volumeProfile.ts +2 -2
  484. package/src/engine/renderers/Indicator/vwap.ts +3 -21
  485. package/src/engine/renderers/Indicator/wma.ts +5 -26
  486. package/src/engine/renderers/Indicator/wmsr.ts +9 -30
  487. package/src/engine/renderers/Indicator/zones.ts +2 -2
  488. package/src/engine/renderers/candle.ts +1 -1
  489. package/src/engine/renderers/comparisonLine.ts +1 -0
  490. package/src/engine/renderers/crosshair.ts +1 -1
  491. package/src/engine/renderers/extremaMarkers.ts +1 -0
  492. package/src/engine/renderers/lastPrice.ts +5 -2
  493. package/src/engine/renderers/leftYAxis.ts +77 -0
  494. package/src/engine/renderers/subVolume.ts +3 -3
  495. package/src/engine/renderers/timeAxis.ts +16 -13
  496. package/src/engine/renderers/timeShare.ts +271 -0
  497. package/src/engine/renderers/yAxis.ts +9 -1
  498. package/src/engine/scale/price.ts +2 -2
  499. package/src/engine/theme/fonts.ts +1 -1
  500. package/src/engine/utils/klineConfig.ts +1 -5
  501. package/src/engine/viewport/chartViewportManager.ts +6 -5
  502. package/src/index.ts +1 -0
  503. package/src/mcp/chartBridge.ts +2 -1
  504. package/src/plugin/types.ts +1 -0
  505. package/src/semantic/types.ts +1 -1
  506. package/src/tokens/__tests__/__snapshots__/baseline.test.ts.snap +15 -1
  507. package/src/tokens/theme-base.ts +36 -0
  508. package/src/tokens/theme-china.ts +4 -0
  509. package/src/tokens/theme-dark.ts +13 -33
  510. package/src/tokens/theme-light.ts +13 -33
  511. package/src/tokens/types.ts +9 -0
  512. package/src/types/price.ts +13 -0
  513. package/src/utils/dateFormat.ts +27 -4
  514. package/src/utils/kLineDraw/axis.ts +40 -107
  515. package/src/utils/uuid.ts +8 -0
  516. package/src/utils/volumePrice.ts +2 -2
  517. package/src/version.ts +1 -1
@@ -0,0 +1,37 @@
1
+ import type { ChartModeHandler } from './types';
2
+ import type { Pane, VisibleRange } from '../layout/pane';
3
+ import type { ChartDataManager } from '../data/chartDataManager';
4
+ export declare class TimeShareMode implements ChartModeHandler {
5
+ readonly debugName = "TimeShare";
6
+ readonly allowPan = false;
7
+ readonly allowZoom = false;
8
+ readonly allowVerticalScroll = false;
9
+ readonly allowRightAxisScale = false;
10
+ readonly useIndicatorScheduler = false;
11
+ computeContentWidth(_dataLength: number, leftBufferWidth: number, viewWidth: number, _opt: {
12
+ kWidth: number;
13
+ kGap: number;
14
+ }, _dpr: number): number | null;
15
+ computeKWidth(dataLength: number, viewWidth: number, dpr: number): {
16
+ kWidth: number;
17
+ kGap: number;
18
+ } | null;
19
+ updatePaneRange(pane: Pane, range: VisibleRange, dm: ChartDataManager, _mergedIndicatorRange?: {
20
+ min: number;
21
+ max: number;
22
+ } | null): void;
23
+ onActivate(chart: {
24
+ enableMainIndicator: (id: string, params?: Record<string, number | boolean | string>) => boolean;
25
+ disableMainIndicator: (id: string) => boolean;
26
+ setRendererEnabled: (name: string, enabled: boolean) => void;
27
+ dataManager: ChartDataManager;
28
+ currentPeriod: string;
29
+ }, _prev: ChartModeHandler | null): void;
30
+ onDeactivate(chart: {
31
+ enableMainIndicator: (id: string, params?: Record<string, number | boolean | string>) => boolean;
32
+ disableMainIndicator: (id: string) => boolean;
33
+ setRendererEnabled: (name: string, enabled: boolean) => void;
34
+ dataManager: ChartDataManager;
35
+ }, _next: ChartModeHandler | null): void;
36
+ }
37
+ //# sourceMappingURL=timeShareMode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeShareMode.d.ts","sourceRoot":"","sources":["../../../src/engine/modes/timeShareMode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC/C,OAAO,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAEhE,qBAAa,aAAc,YAAW,gBAAgB;IACpD,QAAQ,CAAC,SAAS,eAAc;IAEhC,QAAQ,CAAC,QAAQ,SAAQ;IACzB,QAAQ,CAAC,SAAS,SAAQ;IAC1B,QAAQ,CAAC,mBAAmB,SAAQ;IACpC,QAAQ,CAAC,mBAAmB,SAAQ;IACpC,QAAQ,CAAC,qBAAqB,SAAQ;IAEtC,mBAAmB,CACjB,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EACtC,IAAI,EAAE,MAAM,GACX,MAAM,GAAG,IAAI;IAIhB,aAAa,CACX,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,GACV;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAc1C,eAAe,CACb,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,YAAY,EACnB,EAAE,EAAE,gBAAgB,EACpB,qBAAqB,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,GAC1D,IAAI;IA4BP,UAAU,CAAC,KAAK,EAAE;QAChB,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,KAAK,OAAO,CAAA;QAChG,oBAAoB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAA;QAC7C,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;QAC5D,WAAW,EAAE,gBAAgB,CAAA;QAC7B,aAAa,EAAE,MAAM,CAAA;KACtB,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAAG,IAAI;IAKxC,YAAY,CAAC,KAAK,EAAE;QAClB,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,KAAK,OAAO,CAAA;QAChG,oBAAoB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAA;QAC7C,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;QAC5D,WAAW,EAAE,gBAAgB,CAAA;KAC9B,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAAG,IAAI;CAIzC"}
@@ -0,0 +1,59 @@
1
+ export class TimeShareMode {
2
+ debugName = 'TimeShare';
3
+ allowPan = false;
4
+ allowZoom = false;
5
+ allowVerticalScroll = false;
6
+ allowRightAxisScale = false;
7
+ useIndicatorScheduler = false;
8
+ computeContentWidth(_dataLength, leftBufferWidth, viewWidth, _opt, _dpr) {
9
+ return leftBufferWidth + Math.max(viewWidth, 1);
10
+ }
11
+ computeKWidth(dataLength, viewWidth, dpr) {
12
+ if (dataLength <= 0 || viewWidth <= 0)
13
+ return null;
14
+ const kGapPx = 1;
15
+ const totalGapPx = (dataLength + 1) * kGapPx;
16
+ const availablePx = Math.max(1, viewWidth * dpr - totalGapPx);
17
+ let kWidthPx = Math.max(1, Math.floor(availablePx / dataLength));
18
+ return {
19
+ kWidth: kWidthPx / dpr,
20
+ kGap: kGapPx / dpr,
21
+ };
22
+ }
23
+ updatePaneRange(pane, range, dm, _mergedIndicatorRange) {
24
+ const tsData = dm.getTimeShareData();
25
+ const end = Math.min(range.end, tsData.length);
26
+ if (tsData.length === 0)
27
+ return;
28
+ const baseline = tsData[0]?.price ?? 0;
29
+ if (baseline === 0)
30
+ return;
31
+ pane.yAxis.setScaleType('percent');
32
+ pane.yAxis.setBasePrice(baseline);
33
+ let maxAbsPct = 0;
34
+ for (let i = Math.max(0, range.start); i < end; i++) {
35
+ const p = tsData[i]?.price;
36
+ if (p !== undefined && Number.isFinite(p)) {
37
+ const pct = Math.abs((p - baseline) / baseline) * 100;
38
+ if (pct > maxAbsPct)
39
+ maxAbsPct = pct;
40
+ }
41
+ }
42
+ if (maxAbsPct <= 0)
43
+ return;
44
+ const padding = Math.max(maxAbsPct * 0.1, 0.5);
45
+ const displayPct = maxAbsPct + padding;
46
+ const minPrice = baseline * (1 - displayPct / 100);
47
+ const maxPrice = baseline * (1 + displayPct / 100);
48
+ pane.yAxis.setRange({ maxPrice, minPrice });
49
+ }
50
+ onActivate(chart, _prev) {
51
+ chart.enableMainIndicator('timeShare');
52
+ chart.setRendererEnabled('candle', false);
53
+ }
54
+ onDeactivate(chart, _next) {
55
+ chart.disableMainIndicator('timeShare');
56
+ chart.setRendererEnabled('candle', true);
57
+ }
58
+ }
59
+ //# sourceMappingURL=timeShareMode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeShareMode.js","sourceRoot":"","sources":["../../../src/engine/modes/timeShareMode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import type { Pane } from '../layout/pane';
2
+ import type { ChartDataManager } from '../data/chartDataManager';
3
+ import type { VisibleRange } from '../layout/pane';
4
+ export interface ChartModeHandler {
5
+ readonly debugName: string;
6
+ /** 是否允许水平拖拽平移 */
7
+ readonly allowPan: boolean;
8
+ /** 是否允许缩放(滚轮/捏合/API) */
9
+ readonly allowZoom: boolean;
10
+ /** 是否允许主图垂直滚动 */
11
+ readonly allowVerticalScroll: boolean;
12
+ /** 是否允许右轴价格缩放 */
13
+ readonly allowRightAxisScale: boolean;
14
+ /** 是否使用指标调度器(计算 MA/BOLL 等技术指标) */
15
+ readonly useIndicatorScheduler: boolean;
16
+ /** 计算内容宽度(CSS px)。返回 null 走标准可滚动计算 */
17
+ computeContentWidth(dataLength: number, leftBufferWidth: number, viewWidth: number, opt: {
18
+ kWidth: number;
19
+ kGap: number;
20
+ }, dpr: number): number | null;
21
+ /** 计算 K 线宽度/间距。返回 null 走标准缩放计算 */
22
+ computeKWidth(dataLength: number, viewWidth: number, dpr: number): {
23
+ kWidth: number;
24
+ kGap: number;
25
+ } | null;
26
+ /** 更新 Pane 的价格范围 */
27
+ updatePaneRange(pane: Pane, range: VisibleRange, dm: ChartDataManager, mergedIndicatorRange?: {
28
+ min: number;
29
+ max: number;
30
+ } | null): void;
31
+ /** 激活时调用 */
32
+ onActivate(chart: {
33
+ enableMainIndicator: (id: string, params?: Record<string, number | boolean | string>) => boolean;
34
+ disableMainIndicator: (id: string) => boolean;
35
+ setRendererEnabled: (name: string, enabled: boolean) => void;
36
+ dataManager: ChartDataManager;
37
+ currentPeriod: string;
38
+ }, prev: ChartModeHandler | null): void;
39
+ /** 停用时调用 */
40
+ onDeactivate(chart: {
41
+ enableMainIndicator: (id: string, params?: Record<string, number | boolean | string>) => boolean;
42
+ disableMainIndicator: (id: string) => boolean;
43
+ setRendererEnabled: (name: string, enabled: boolean) => void;
44
+ dataManager: ChartDataManager;
45
+ }, next: ChartModeHandler | null): void;
46
+ }
47
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/engine/modes/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAElD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAE1B,iBAAiB;IACjB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAE1B,wBAAwB;IACxB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAE3B,iBAAiB;IACjB,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAA;IAErC,iBAAiB;IACjB,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAA;IAErC,kCAAkC;IAClC,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAA;IAEvC,sCAAsC;IACtC,mBAAmB,CACjB,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EACrC,GAAG,EAAE,MAAM,GACV,MAAM,GAAG,IAAI,CAAA;IAEhB,kCAAkC;IAClC,aAAa,CACX,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,GACV;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IAE1C,oBAAoB;IACpB,eAAe,CACb,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,YAAY,EACnB,EAAE,EAAE,gBAAgB,EACpB,oBAAoB,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,GACzD,IAAI,CAAA;IAEP,YAAY;IACZ,UAAU,CAAC,KAAK,EAAE;QAChB,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,KAAK,OAAO,CAAA;QAChG,oBAAoB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAA;QAC7C,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;QAC5D,WAAW,EAAE,gBAAgB,CAAA;QAC7B,aAAa,EAAE,MAAM,CAAA;KACtB,EAAE,IAAI,EAAE,gBAAgB,GAAG,IAAI,GAAG,IAAI,CAAA;IAEvC,YAAY;IACZ,YAAY,CAAC,KAAK,EAAE;QAClB,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,KAAK,OAAO,CAAA;QAChG,oBAAoB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAA;QAC7C,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;QAC5D,WAAW,EAAE,gBAAgB,CAAA;KAC9B,EAAE,IAAI,EAAE,gBAAgB,GAAG,IAAI,GAAG,IAAI,CAAA;CACxC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/engine/modes/types.ts"],"names":[],"mappings":""}
@@ -4,14 +4,17 @@ export type PaneRendererDom = {
4
4
  mainCanvas: HTMLCanvasElement;
5
5
  overlayCanvas: HTMLCanvasElement;
6
6
  yAxisCanvas: HTMLCanvasElement;
7
+ leftYAxisCanvas?: HTMLCanvasElement;
7
8
  };
8
9
  export type PaneRendererContexts = {
9
10
  mainCtx: CanvasRenderingContext2D | null;
10
11
  overlayCtx: CanvasRenderingContext2D | null;
11
12
  yAxisCtx: CanvasRenderingContext2D | null;
13
+ leftAxisCtx: CanvasRenderingContext2D | null;
12
14
  };
13
15
  export type PaneRendererOptions = {
14
16
  rightAxisWidth: number;
17
+ leftAxisWidth: number;
15
18
  yPaddingPx: number;
16
19
  priceLabelWidth?: number;
17
20
  };
@@ -31,6 +34,7 @@ export declare class PaneRenderer {
31
34
  /** 获取 DOM 元素 */
32
35
  getDom(): PaneRendererDom;
33
36
  getContexts(): PaneRendererContexts;
37
+ private static resizeCanvas;
34
38
  getWebGL(): PaneRendererWebGLHandles;
35
39
  setWebGLRegion(region: WebGLRegion): void;
36
40
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"paneRenderer.d.ts","sourceRoot":"","sources":["../../src/engine/paneRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AACtF,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAA;AAE3F,MAAM,MAAM,eAAe,GAAG;IAC1B,UAAU,EAAE,iBAAiB,CAAA;IAC7B,aAAa,EAAE,iBAAiB,CAAA;IAChC,WAAW,EAAE,iBAAiB,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IAC/B,OAAO,EAAE,wBAAwB,GAAG,IAAI,CAAA;IACxC,UAAU,EAAE,wBAAwB,GAAG,IAAI,CAAA;IAC3C,QAAQ,EAAE,wBAAwB,GAAG,IAAI,CAAA;CAC5C,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAC9B,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACnC,aAAa,EAAE,kBAAkB,GAAG,IAAI,CAAA;IACxC,WAAW,EAAE,gBAAgB,GAAG,IAAI,CAAA;CACvC,CAAA;AAOD,qBAAa,YAAY;IACrB,OAAO,CAAC,GAAG,CAAiB;IAC5B,OAAO,CAAC,IAAI,CAA8B;IAC1C,OAAO,CAAC,GAAG,CAAqB;IAChC,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,KAAK,CAA0B;gBAGnC,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,OAAO,eAAe,EAAE,IAAI,EAClC,GAAG,EAAE,mBAAmB,EACxB,kBAAkB,EAAE,kBAAkB;IAc1C,oBAAoB;IACpB,OAAO,IAAI,OAAO,eAAe,EAAE,IAAI;IAIvC,gBAAgB;IAChB,MAAM,IAAI,eAAe;IAIzB,WAAW,IAAI,oBAAoB;IAWnC,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;IAsEjD,yBAAyB;IACzB,OAAO;CAKV"}
1
+ {"version":3,"file":"paneRenderer.d.ts","sourceRoot":"","sources":["../../src/engine/paneRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AACtF,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAA;AAE3F,MAAM,MAAM,eAAe,GAAG;IAC1B,UAAU,EAAE,iBAAiB,CAAA;IAC7B,aAAa,EAAE,iBAAiB,CAAA;IAChC,WAAW,EAAE,iBAAiB,CAAA;IAC9B,eAAe,CAAC,EAAE,iBAAiB,CAAA;CACtC,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IAC/B,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;CAC/C,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAC9B,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACnC,aAAa,EAAE,kBAAkB,GAAG,IAAI,CAAA;IACxC,WAAW,EAAE,gBAAgB,GAAG,IAAI,CAAA;CACvC,CAAA;AAOD,qBAAa,YAAY;IACrB,OAAO,CAAC,GAAG,CAAiB;IAC5B,OAAO,CAAC,IAAI,CAA8B;IAC1C,OAAO,CAAC,GAAG,CAAqB;IAChC,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,KAAK,CAA0B;gBAGnC,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,OAAO,eAAe,EAAE,IAAI,EAClC,GAAG,EAAE,mBAAmB,EACxB,kBAAkB,EAAE,kBAAkB;IAc1C,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;IAmCjD,yBAAyB;IACzB,OAAO;CAKV"}
@@ -36,10 +36,27 @@ export class PaneRenderer {
36
36
  mainCtx: this.dom.mainCanvas.getContext('2d'),
37
37
  overlayCtx: this.dom.overlayCanvas.getContext('2d'),
38
38
  yAxisCtx: this.dom.yAxisCanvas.getContext('2d'),
39
+ leftAxisCtx: this.dom.leftYAxisCanvas?.getContext('2d') ?? null,
39
40
  };
40
41
  }
41
42
  return this.contexts;
42
43
  }
44
+ static resizeCanvas(canvas, widthPx, heightPx, dpr) {
45
+ if (canvas.width !== widthPx) {
46
+ canvas.width = widthPx;
47
+ }
48
+ if (canvas.height !== heightPx) {
49
+ canvas.height = heightPx;
50
+ }
51
+ const cssW = `${widthPx / dpr}px`;
52
+ if (canvas.style.width !== cssW) {
53
+ canvas.style.width = cssW;
54
+ }
55
+ const cssH = `${heightPx / dpr}px`;
56
+ if (canvas.style.height !== cssH) {
57
+ canvas.style.height = cssH;
58
+ }
59
+ }
43
60
  getWebGL() {
44
61
  return this.webgl;
45
62
  }
@@ -63,50 +80,20 @@ export class PaneRenderer {
63
80
  const canvasYAxisWidth = parentClientWidth > 0 ? parentClientWidth : fallbackYAxisWidth;
64
81
  // Main Canvas
65
82
  const mainWidth = Math.round(width * dpr);
66
- if (mainCanvas.width !== mainWidth) {
67
- mainCanvas.width = mainWidth;
68
- }
69
83
  const mainHeight = Math.round(height * dpr);
70
- if (mainCanvas.height !== mainHeight) {
71
- mainCanvas.height = mainHeight;
72
- }
73
- const mainCssWidth = `${mainWidth / dpr}px`;
74
- if (mainCanvas.style.width !== mainCssWidth) {
75
- mainCanvas.style.width = mainCssWidth;
76
- }
77
- const mainCssHeight = `${mainHeight / dpr}px`;
78
- if (mainCanvas.style.height !== mainCssHeight) {
79
- mainCanvas.style.height = mainCssHeight;
80
- }
84
+ PaneRenderer.resizeCanvas(mainCanvas, mainWidth, mainHeight, dpr);
81
85
  // Overlay Canvas - 与 Main Canvas 相同尺寸
82
- if (overlayCanvas.width !== mainWidth) {
83
- overlayCanvas.width = mainWidth;
84
- }
85
- if (overlayCanvas.height !== mainHeight) {
86
- overlayCanvas.height = mainHeight;
87
- }
88
- if (overlayCanvas.style.width !== mainCssWidth) {
89
- overlayCanvas.style.width = mainCssWidth;
90
- }
91
- if (overlayCanvas.style.height !== mainCssHeight) {
92
- overlayCanvas.style.height = mainCssHeight;
93
- }
86
+ PaneRenderer.resizeCanvas(overlayCanvas, mainWidth, mainHeight, dpr);
94
87
  // YAxis Canvas
95
88
  const yAxisWidth = Math.round(canvasYAxisWidth * dpr);
96
- if (yAxisCanvas.width !== yAxisWidth) {
97
- yAxisCanvas.width = yAxisWidth;
98
- }
99
- const yAxisHeight = Math.round(height * dpr);
100
- if (yAxisCanvas.height !== yAxisHeight) {
101
- yAxisCanvas.height = yAxisHeight;
102
- }
103
- const yAxisCssWidth = `${yAxisWidth / dpr}px`;
104
- if (yAxisCanvas.style.width !== yAxisCssWidth) {
105
- yAxisCanvas.style.width = yAxisCssWidth;
106
- }
107
- const yAxisCssHeight = `${yAxisHeight / dpr}px`;
108
- if (yAxisCanvas.style.height !== yAxisCssHeight) {
109
- yAxisCanvas.style.height = yAxisCssHeight;
89
+ PaneRenderer.resizeCanvas(yAxisCanvas, yAxisWidth, Math.round(height * dpr), dpr);
90
+ // Left YAxis Canvas
91
+ const leftCanvas = this.dom.leftYAxisCanvas;
92
+ if (leftCanvas) {
93
+ const fallbackLeftAxisWidth = this.opt.leftAxisWidth;
94
+ const leftParentWidth = leftCanvas.parentElement?.clientWidth ?? 0;
95
+ const canvasLeftAxisWidth = leftParentWidth > 0 ? leftParentWidth : fallbackLeftAxisWidth;
96
+ PaneRenderer.resizeCanvas(leftCanvas, Math.round(Math.max(canvasLeftAxisWidth, 0) * dpr), Math.round(height * dpr), dpr);
110
97
  }
111
98
  this.webgl.candleSurface?.resize(width, height, dpr);
112
99
  this.webgl.lineSurface?.resize(width, height, dpr);
@@ -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,8 +1,7 @@
1
- import type { KLineData } from '../../types/price';
2
1
  import type { ChartSettings } from '../../config/chartSettings';
3
2
  import type { PluginHostImpl } from '../../plugin';
4
3
  import { RendererPluginManager } from '../../plugin';
5
- import type { ChartDom, ChartOptions, KLinePositions, Viewport } from '../chartTypes';
4
+ import type { ChartDom, ChartOptions } from '../chartTypes';
6
5
  import { PaneRenderer } from '../paneRenderer';
7
6
  import { SharedWebGLSurface } from '../renderers/webgl/sharedWebGLSurface';
8
7
  import { MarkerManager } from '../marker/registry';
@@ -11,32 +10,12 @@ import { ChartDataManager } from '../data/chartDataManager';
11
10
  import { ChartIndicatorManager } from '../indicators/chartIndicatorManager';
12
11
  import { InteractionController } from '../controller/interaction';
13
12
  import { UpdateLevel } from '../layout/pane';
14
- import type { VisibleRange } from '../layout/pane';
15
13
  import { DrawingStore } from '../drawing';
14
+ import type { ChartModeHandler } from '../modes/types';
16
15
  type ResolvedChartOptions = Omit<ChartOptions, 'kWidth' | 'kGap'> & {
17
16
  kWidth: number;
18
17
  kGap: number;
19
18
  };
20
- export type FrameContext = {
21
- vp: Viewport;
22
- range: VisibleRange;
23
- kLinePositions: KLinePositions;
24
- kLineCenters: number[];
25
- kBarRects: Array<{
26
- x: number;
27
- width: number;
28
- }>;
29
- kWidthPx: number;
30
- useCachedFrame: boolean;
31
- data: KLineData[];
32
- mainIndicatorRange: {
33
- min: number;
34
- max: number;
35
- } | null;
36
- hasCrosshair: boolean;
37
- zoomLevel: number;
38
- zoomLevelCount: number;
39
- };
40
19
  export interface RendererDependencies {
41
20
  getDom: () => ChartDom;
42
21
  getOption: () => ResolvedChartOptions;
@@ -51,6 +30,7 @@ export interface RendererDependencies {
51
30
  getViewportManager: () => ChartViewportManager;
52
31
  getDataManager: () => ChartDataManager;
53
32
  getIndicatorManager: () => ChartIndicatorManager;
33
+ getActiveMode: () => ChartModeHandler;
54
34
  }
55
35
  export declare class ChartRenderer {
56
36
  private deps;
@@ -73,6 +53,7 @@ export declare class ChartRenderer {
73
53
  scheduleDraw(level?: UpdateLevel): void;
74
54
  draw(level?: UpdateLevel): void;
75
55
  private prepareFrameData;
56
+ private clearAxisCtx;
76
57
  clearAllCanvases(): void;
77
58
  private renderPanes;
78
59
  private renderXAxis;
@@ -1 +1 @@
1
- {"version":3,"file":"chartRenderer.d.ts","sourceRoot":"","sources":["../../../src/engine/render/chartRenderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chartRenderer.d.ts","sourceRoot":"","sources":["../../../src/engine/render/chartRenderer.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ import { createLastPriceLineRendererPlugin, createLastPriceLabelRegistrarPlugin
13
13
  import { createCustomMarkersRenderer } from '../renderers/customMarkers';
14
14
  import { createExtremaMarkersRendererPlugin } from '../renderers/extremaMarkers';
15
15
  import { createYAxisRendererPlugin } from '../renderers/yAxis';
16
+ import { createLeftYAxisRendererPlugin } from '../renderers/leftYAxis';
16
17
  import { createCrosshairRendererPlugin } from '../renderers/crosshair';
17
18
  import { createTimeAxisRendererPlugin } from '../renderers/timeAxis';
18
19
  export class ChartRenderer {
@@ -65,6 +66,19 @@ export class ChartRenderer {
65
66
  price: interaction.crosshairPrice,
66
67
  }),
67
68
  }));
69
+ this.useDrawingPlugin(createLeftYAxisRendererPlugin({
70
+ axisWidth: opt.leftAxisWidth,
71
+ yPaddingPx: opt.yPaddingPx,
72
+ getCrosshair: () => {
73
+ const pos = interaction.crosshairPos;
74
+ const price = interaction.crosshairPrice;
75
+ const activePaneId = interaction.activePaneId;
76
+ if (pos && price !== null) {
77
+ return { y: pos.y, price, activePaneId };
78
+ }
79
+ return null;
80
+ },
81
+ }));
68
82
  this.useDrawingPlugin(createTimeAxisRendererPlugin({
69
83
  height: opt.bottomAxisHeight,
70
84
  getCrosshair: () => {
@@ -130,15 +144,20 @@ export class ChartRenderer {
130
144
  this.markerManager.clear();
131
145
  const frame = this.prepareFrameData(level);
132
146
  if (!frame) {
133
- if (this.deps.getDataManager().getInternalData().length === 0)
147
+ const dataManager = this.deps.getDataManager();
148
+ if (dataManager.getInternalData().length === 0 && dataManager.getTimeShareData().length === 0)
134
149
  this.clearAllCanvases();
135
150
  return;
136
151
  }
137
152
  const { vp, range, kLinePositions, kLineCenters, kBarRects, kWidthPx, useCachedFrame } = frame;
138
- this.deps.getInteraction().setKLinePositions(kLinePositions, range, kWidthPx);
139
- const indicatorManager = this.deps.getIndicatorManager();
140
- indicatorManager.indicatorSchedulerAccessor.setActiveMainIndicators([...indicatorManager.mainIndicatorsSignalPeek.entries()].map(([id, entry]) => ({ id, params: entry.params })));
141
- const mainIndicatorRange = useCachedFrame ? null : indicatorManager.indicatorSchedulerAccessor.getMainIndicatorPriceRange();
153
+ this.deps.getInteraction().setKLinePositions(kLinePositions, range, kWidthPx, kLineCenters);
154
+ const dataManager = this.deps.getDataManager();
155
+ const mode = this.deps.getActiveMode();
156
+ if (mode.useIndicatorScheduler) {
157
+ const indicatorManager = this.deps.getIndicatorManager();
158
+ indicatorManager.indicatorSchedulerAccessor.setActiveMainIndicators([...indicatorManager.mainIndicatorsSignalPeek.entries()].map(([id, entry]) => ({ id, params: entry.params })));
159
+ }
160
+ const mainIndicatorRange = useCachedFrame ? null : this.deps.getIndicatorManager().indicatorSchedulerAccessor.getMainIndicatorPriceRange();
142
161
  const hasCrosshair = this.deps.getInteraction().getCrosshairIndex() !== null;
143
162
  const { sharedXAxisLabels, sharedXAxisRanges } = this.renderPanes(vp, range, kLinePositions, kLineCenters, kBarRects, kWidthPx, mainIndicatorRange, hasCrosshair, useCachedFrame, level);
144
163
  this.overlayHadCrosshair = hasCrosshair;
@@ -149,7 +168,7 @@ export class ChartRenderer {
149
168
  const vp = useCachedFrame ? this.cachedDrawFrame.viewport : this.deps.getViewportManager().computeViewport();
150
169
  if (!vp)
151
170
  return null;
152
- const internalData = this.deps.getDataManager().getInternalData();
171
+ const internalData = this.deps.getDataManager().getRenderData();
153
172
  if (internalData.length === 0)
154
173
  return null;
155
174
  const opt = this.deps.getOption();
@@ -161,11 +180,14 @@ export class ChartRenderer {
161
180
  })();
162
181
  const range = { start: Math.max(0, rawRange.start), end: rawRange.end };
163
182
  const dataManager = this.deps.getDataManager();
183
+ const mode = this.deps.getActiveMode();
164
184
  if (!useCachedFrame && (range.start !== dataManager.lastVisibleRange.start
165
185
  || range.end !== dataManager.lastVisibleRange.end
166
186
  || rawRange.start !== dataManager.lastRawVisibleRange.start
167
187
  || rawRange.end !== dataManager.lastRawVisibleRange.end)) {
168
- this.deps.getIndicatorManager().indicatorSchedulerAccessor.updateVisibleRange(range);
188
+ if (mode.useIndicatorScheduler) {
189
+ this.deps.getIndicatorManager().indicatorSchedulerAccessor.updateVisibleRange(range);
190
+ }
169
191
  dataManager.lastVisibleRange = range;
170
192
  dataManager.lastRawVisibleRange = rawRange;
171
193
  this.checkVisibleRangeGapWhenIdle();
@@ -196,7 +218,35 @@ export class ChartRenderer {
196
218
  const barLeftPx = wickXPx - (barWidthPx - 1) / 2;
197
219
  kBarRects[i] = { x: barLeftPx / vp.dpr, width: barWidthPx / vp.dpr };
198
220
  }
199
- kWidthPx = getPhysicalKLineConfig(opt.kWidth, opt.kGap, vp.dpr).kWidthPx;
221
+ if (mode.debugName === 'TimeShare') {
222
+ const totalWidth = vp.plotWidth;
223
+ const count = kLineCenters.length;
224
+ if (count > 0) {
225
+ const dpr = vp.dpr;
226
+ const step = totalWidth / count;
227
+ for (let i = 0; i < count; i++) {
228
+ kLineCenters[i] = Math.round((i + 0.5) * step * dpr) / dpr;
229
+ kLinePositions[i] = Math.round(i * step * dpr) / dpr;
230
+ }
231
+ kWidthPx = Math.round(totalWidth * dpr / count);
232
+ const logicalBarWidth = Math.max(1, step * 0.6);
233
+ const barWidthPx = Math.round(logicalBarWidth * dpr);
234
+ const halfBarPx = Math.floor(barWidthPx / 2);
235
+ for (let i = 0; i < count; i++) {
236
+ const centerPx = Math.round(kLineCenters[i] * dpr);
237
+ kBarRects[i] = {
238
+ x: (centerPx - halfBarPx) / dpr,
239
+ width: barWidthPx / dpr,
240
+ };
241
+ }
242
+ }
243
+ else {
244
+ kWidthPx = getPhysicalKLineConfig(opt.kWidth, opt.kGap, vp.dpr).kWidthPx;
245
+ }
246
+ }
247
+ else {
248
+ kWidthPx = getPhysicalKLineConfig(opt.kWidth, opt.kGap, vp.dpr).kWidthPx;
249
+ }
200
250
  this.cachedDrawFrame = {
201
251
  viewport: { ...vp },
202
252
  range: { ...range },
@@ -215,16 +265,28 @@ export class ChartRenderer {
215
265
  zoomLevelCount: this.deps.getZoomLevelCount(),
216
266
  };
217
267
  }
268
+ clearAxisCtx(ctx, dpr, width, height) {
269
+ ctx.setTransform(1, 0, 0, 1, 0, 0);
270
+ ctx.scale(dpr, dpr);
271
+ ctx.clearRect(0, 0, width, height + 2 / dpr);
272
+ }
218
273
  clearAllCanvases() {
219
274
  const vp = this.deps.getViewportManager().computeViewport();
220
275
  if (!vp)
221
276
  return;
222
277
  for (const r of this.deps.getPaneRenderers()) {
223
- const { mainCtx, overlayCtx, yAxisCtx } = r.getContexts();
278
+ const { mainCtx, overlayCtx, yAxisCtx, leftAxisCtx } = r.getContexts();
224
279
  const pane = r.getPane();
225
280
  mainCtx?.clearRect(0, 0, vp.plotWidth + 1, pane.height + 2 / vp.dpr);
226
281
  overlayCtx?.clearRect(0, 0, vp.plotWidth + 1, pane.height + 2 / vp.dpr);
227
282
  yAxisCtx?.clearRect(0, 0, vp.plotWidth + 1, pane.height + 2 / vp.dpr);
283
+ if (leftAxisCtx) {
284
+ const leftCanvas = leftAxisCtx.canvas;
285
+ if (leftCanvas) {
286
+ const laW = leftCanvas.width / vp.dpr;
287
+ leftAxisCtx.clearRect(0, 0, laW, pane.height + 2 / vp.dpr);
288
+ }
289
+ }
228
290
  }
229
291
  const xCtx = this.xAxisCtx;
230
292
  if (xCtx) {
@@ -241,15 +303,16 @@ export class ChartRenderer {
241
303
  const dataManager = this.deps.getDataManager();
242
304
  const rendererPluginManager = this.deps.getRendererPluginManager();
243
305
  const pluginHost = this.deps.getPluginHost();
306
+ const mode = this.deps.getActiveMode();
244
307
  for (const renderer of this.deps.getPaneRenderers()) {
245
308
  const pane = renderer.getPane();
246
- const { mainCtx, overlayCtx, yAxisCtx } = renderer.getContexts();
309
+ const { mainCtx, overlayCtx, yAxisCtx, leftAxisCtx } = renderer.getContexts();
247
310
  const { candleSurface, lineSurface } = renderer.getWebGL();
248
311
  if (!useCachedFrame) {
249
- const indicatorRange = pane.role === 'price' ? mainIndicatorRange : null;
312
+ const indicatorRange = pane.role === 'price' && mode.useIndicatorScheduler ? mainIndicatorRange : null;
250
313
  const comparisonRange = pane.id === 'main' ? dataManager.getComparisonEquivalentPriceRange(range) : null;
251
314
  const mergedRange = this.mergeNumericRanges(indicatorRange, comparisonRange);
252
- pane.updateRange(dataManager.getInternalData(), range, mergedRange);
315
+ mode.updatePaneRange(pane, range, dataManager, mergedRange);
253
316
  if (pane.id === 'main' && this.settings.disableMainPaneVerticalScroll) {
254
317
  pane.yAxis.resetTransform();
255
318
  }
@@ -271,16 +334,18 @@ export class ChartRenderer {
271
334
  }
272
335
  if (yAxisCtx && !useCachedFrame) {
273
336
  const yAxisWidth = yAxisCtx.canvas.width / vp.dpr;
274
- yAxisCtx.setTransform(1, 0, 0, 1, 0, 0);
275
- yAxisCtx.scale(vp.dpr, vp.dpr);
276
- yAxisCtx.clearRect(0, 0, yAxisWidth, pane.height + 2 / vp.dpr);
337
+ this.clearAxisCtx(yAxisCtx, vp.dpr, yAxisWidth, pane.height);
338
+ }
339
+ if (leftAxisCtx && !useCachedFrame) {
340
+ const leftAxisWidth = leftAxisCtx.canvas.width / vp.dpr;
341
+ this.clearAxisCtx(leftAxisCtx, vp.dpr, leftAxisWidth, pane.height);
277
342
  }
278
343
  const opt = this.deps.getOption();
279
344
  const context = {
280
345
  ctx: mainCtx,
281
346
  overlayCtx: overlayCtx ?? undefined,
282
347
  pane: wrapPaneInfo(pane),
283
- data: dataManager.getInternalData(),
348
+ data: dataManager.getRenderData(),
284
349
  period: dataManager.currentPeriod,
285
350
  comparisonData: dataManager.getComparisonData(),
286
351
  comparisonSymbols: dataManager.getComparisonSpecs(),
@@ -297,6 +362,7 @@ export class ChartRenderer {
297
362
  markerManager: this.markerManager,
298
363
  crosshairIndex: this.deps.getInteraction().getCrosshairIndex(),
299
364
  yAxisCtx: yAxisCtx ?? undefined,
365
+ leftAxisCtx: leftAxisCtx ?? undefined,
300
366
  candleWebGLSurface: candleSurface ?? undefined,
301
367
  lineWebGLSurface: lineSurface ?? undefined,
302
368
  zoomLevel: this.deps.getCurrentZoomLevel(),
@@ -324,6 +390,10 @@ export class ChartRenderer {
324
390
  if (yAxisErrors.length > 0) {
325
391
  pluginHost.events.emit('renderer:error', { paneId: pane.id, errors: yAxisErrors });
326
392
  }
393
+ const leftAxisErrors = rendererPluginManager.renderPlugin('leftYAxis', context);
394
+ if (leftAxisErrors.length > 0) {
395
+ pluginHost.events.emit('renderer:error', { paneId: pane.id, errors: leftAxisErrors });
396
+ }
327
397
  }
328
398
  }
329
399
  return { sharedXAxisLabels, sharedXAxisRanges };
@@ -365,7 +435,7 @@ export class ChartRenderer {
365
435
  priceRange: { maxPrice: 0, minPrice: 0 },
366
436
  },
367
437
  period: this.deps.getDataManager().currentPeriod,
368
- data: this.deps.getDataManager().getInternalData(),
438
+ data: this.deps.getDataManager().getRenderData(),
369
439
  range,
370
440
  scrollLeft: vp.scrollLeft,
371
441
  kWidth: opt.kWidth,