@363045841yyt/klinechart-core 0.8.6 → 0.8.8

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 (501) hide show
  1. package/dist/config/chartSettings.d.ts +18 -2
  2. package/dist/config/chartSettings.d.ts.map +1 -1
  3. package/dist/config/chartSettings.js +8 -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 +56 -2
  7. package/dist/controllers/createChartController.js.map +1 -1
  8. package/dist/controllers/types.d.ts +36 -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 +32 -1
  61. package/dist/engine/chart.d.ts.map +1 -1
  62. package/dist/engine/chart.js +148 -7
  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 +6 -1
  67. package/dist/engine/controller/interaction.d.ts.map +1 -1
  68. package/dist/engine/controller/interaction.js +76 -28
  69. package/dist/engine/controller/interaction.js.map +1 -1
  70. package/dist/engine/data/chartDataManager.d.ts +39 -14
  71. package/dist/engine/data/chartDataManager.d.ts.map +1 -1
  72. package/dist/engine/data/chartDataManager.js +494 -202
  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 +57 -168
  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/macdState.d.ts +0 -5
  86. package/dist/engine/indicators/macdState.d.ts.map +1 -1
  87. package/dist/engine/indicators/macdState.js +1 -1
  88. package/dist/engine/indicators/macdState.js.map +1 -1
  89. package/dist/engine/indicators/registerBuiltins.d.ts.map +1 -1
  90. package/dist/engine/indicators/registerBuiltins.js +1 -0
  91. package/dist/engine/indicators/registerBuiltins.js.map +1 -1
  92. package/dist/engine/indicators/rsiState.d.ts +0 -4
  93. package/dist/engine/indicators/rsiState.d.ts.map +1 -1
  94. package/dist/engine/indicators/rsiState.js +1 -1
  95. package/dist/engine/indicators/rsiState.js.map +1 -1
  96. package/dist/engine/indicators/scheduler.d.ts.map +1 -1
  97. package/dist/engine/indicators/scheduler.js +1 -7
  98. package/dist/engine/indicators/scheduler.js.map +1 -1
  99. package/dist/engine/layout/chartPaneLayout.d.ts +2 -0
  100. package/dist/engine/layout/chartPaneLayout.d.ts.map +1 -1
  101. package/dist/engine/layout/chartPaneLayout.js +24 -6
  102. package/dist/engine/layout/chartPaneLayout.js.map +1 -1
  103. package/dist/engine/modes/kLineMode.d.ts +37 -0
  104. package/dist/engine/modes/kLineMode.d.ts.map +1 -0
  105. package/dist/engine/modes/kLineMode.js +22 -0
  106. package/dist/engine/modes/kLineMode.js.map +1 -0
  107. package/dist/engine/modes/timeShareMode.d.ts +37 -0
  108. package/dist/engine/modes/timeShareMode.d.ts.map +1 -0
  109. package/dist/engine/modes/timeShareMode.js +59 -0
  110. package/dist/engine/modes/timeShareMode.js.map +1 -0
  111. package/dist/engine/modes/types.d.ts +47 -0
  112. package/dist/engine/modes/types.d.ts.map +1 -0
  113. package/dist/engine/modes/types.js +2 -0
  114. package/dist/engine/modes/types.js.map +1 -0
  115. package/dist/engine/paneRenderer.d.ts +4 -0
  116. package/dist/engine/paneRenderer.d.ts.map +1 -1
  117. package/dist/engine/paneRenderer.js +27 -40
  118. package/dist/engine/paneRenderer.js.map +1 -1
  119. package/dist/engine/render/chartRenderer.d.ts +4 -23
  120. package/dist/engine/render/chartRenderer.d.ts.map +1 -1
  121. package/dist/engine/render/chartRenderer.js +113 -18
  122. package/dist/engine/render/chartRenderer.js.map +1 -1
  123. package/dist/engine/renderers/Indicator/atr.d.ts +1 -18
  124. package/dist/engine/renderers/Indicator/atr.d.ts.map +1 -1
  125. package/dist/engine/renderers/Indicator/atr.js +3 -22
  126. package/dist/engine/renderers/Indicator/atr.js.map +1 -1
  127. package/dist/engine/renderers/Indicator/boll.d.ts +1 -4
  128. package/dist/engine/renderers/Indicator/boll.d.ts.map +1 -1
  129. package/dist/engine/renderers/Indicator/boll.js +3 -18
  130. package/dist/engine/renderers/Indicator/boll.js.map +1 -1
  131. package/dist/engine/renderers/Indicator/cci.d.ts +1 -22
  132. package/dist/engine/renderers/Indicator/cci.d.ts.map +1 -1
  133. package/dist/engine/renderers/Indicator/cci.js +8 -20
  134. package/dist/engine/renderers/Indicator/cci.js.map +1 -1
  135. package/dist/engine/renderers/Indicator/chaikinVol.d.ts +1 -7
  136. package/dist/engine/renderers/Indicator/chaikinVol.d.ts.map +1 -1
  137. package/dist/engine/renderers/Indicator/chaikinVol.js +3 -16
  138. package/dist/engine/renderers/Indicator/chaikinVol.js.map +1 -1
  139. package/dist/engine/renderers/Indicator/cmf.d.ts +1 -7
  140. package/dist/engine/renderers/Indicator/cmf.d.ts.map +1 -1
  141. package/dist/engine/renderers/Indicator/cmf.js +3 -15
  142. package/dist/engine/renderers/Indicator/cmf.js.map +1 -1
  143. package/dist/engine/renderers/Indicator/dema.d.ts +1 -7
  144. package/dist/engine/renderers/Indicator/dema.d.ts.map +1 -1
  145. package/dist/engine/renderers/Indicator/dema.js +3 -17
  146. package/dist/engine/renderers/Indicator/dema.js.map +1 -1
  147. package/dist/engine/renderers/Indicator/donchian.d.ts +1 -8
  148. package/dist/engine/renderers/Indicator/donchian.d.ts.map +1 -1
  149. package/dist/engine/renderers/Indicator/donchian.js +2 -2
  150. package/dist/engine/renderers/Indicator/donchian.js.map +1 -1
  151. package/dist/engine/renderers/Indicator/ene.d.ts +1 -12
  152. package/dist/engine/renderers/Indicator/ene.d.ts.map +1 -1
  153. package/dist/engine/renderers/Indicator/ene.js +3 -18
  154. package/dist/engine/renderers/Indicator/ene.js.map +1 -1
  155. package/dist/engine/renderers/Indicator/expma.d.ts +1 -4
  156. package/dist/engine/renderers/Indicator/expma.d.ts.map +1 -1
  157. package/dist/engine/renderers/Indicator/expma.js +2 -2
  158. package/dist/engine/renderers/Indicator/expma.js.map +1 -1
  159. package/dist/engine/renderers/Indicator/fastk.d.ts +1 -22
  160. package/dist/engine/renderers/Indicator/fastk.d.ts.map +1 -1
  161. package/dist/engine/renderers/Indicator/fastk.js +11 -64
  162. package/dist/engine/renderers/Indicator/fastk.js.map +1 -1
  163. package/dist/engine/renderers/Indicator/fib.d.ts +1 -6
  164. package/dist/engine/renderers/Indicator/fib.d.ts.map +1 -1
  165. package/dist/engine/renderers/Indicator/fib.js +2 -2
  166. package/dist/engine/renderers/Indicator/fib.js.map +1 -1
  167. package/dist/engine/renderers/Indicator/hma.d.ts +1 -7
  168. package/dist/engine/renderers/Indicator/hma.d.ts.map +1 -1
  169. package/dist/engine/renderers/Indicator/hma.js +3 -17
  170. package/dist/engine/renderers/Indicator/hma.js.map +1 -1
  171. package/dist/engine/renderers/Indicator/hv.d.ts +1 -7
  172. package/dist/engine/renderers/Indicator/hv.d.ts.map +1 -1
  173. package/dist/engine/renderers/Indicator/hv.js +3 -16
  174. package/dist/engine/renderers/Indicator/hv.js.map +1 -1
  175. package/dist/engine/renderers/Indicator/ichimoku.d.ts +1 -8
  176. package/dist/engine/renderers/Indicator/ichimoku.d.ts.map +1 -1
  177. package/dist/engine/renderers/Indicator/ichimoku.js +2 -2
  178. package/dist/engine/renderers/Indicator/ichimoku.js.map +1 -1
  179. package/dist/engine/renderers/Indicator/kama.d.ts +1 -7
  180. package/dist/engine/renderers/Indicator/kama.d.ts.map +1 -1
  181. package/dist/engine/renderers/Indicator/kama.js +3 -17
  182. package/dist/engine/renderers/Indicator/kama.js.map +1 -1
  183. package/dist/engine/renderers/Indicator/keltner.d.ts +1 -8
  184. package/dist/engine/renderers/Indicator/keltner.d.ts.map +1 -1
  185. package/dist/engine/renderers/Indicator/keltner.js +2 -2
  186. package/dist/engine/renderers/Indicator/keltner.js.map +1 -1
  187. package/dist/engine/renderers/Indicator/kst.d.ts +1 -22
  188. package/dist/engine/renderers/Indicator/kst.d.ts.map +1 -1
  189. package/dist/engine/renderers/Indicator/kst.js +2 -2
  190. package/dist/engine/renderers/Indicator/kst.js.map +1 -1
  191. package/dist/engine/renderers/Indicator/ma.d.ts +1 -4
  192. package/dist/engine/renderers/Indicator/ma.d.ts.map +1 -1
  193. package/dist/engine/renderers/Indicator/ma.js +1 -1
  194. package/dist/engine/renderers/Indicator/ma.js.map +1 -1
  195. package/dist/engine/renderers/Indicator/macd.d.ts +1 -49
  196. package/dist/engine/renderers/Indicator/macd.d.ts.map +1 -1
  197. package/dist/engine/renderers/Indicator/macd.js +2 -12
  198. package/dist/engine/renderers/Indicator/macd.js.map +1 -1
  199. package/dist/engine/renderers/Indicator/mainIndicatorLegend.d.ts.map +1 -1
  200. package/dist/engine/renderers/Indicator/mainIndicatorLegend.js +114 -1
  201. package/dist/engine/renderers/Indicator/mainIndicatorLegend.js.map +1 -1
  202. package/dist/engine/renderers/Indicator/mfi.d.ts +1 -7
  203. package/dist/engine/renderers/Indicator/mfi.d.ts.map +1 -1
  204. package/dist/engine/renderers/Indicator/mfi.js +3 -15
  205. package/dist/engine/renderers/Indicator/mfi.js.map +1 -1
  206. package/dist/engine/renderers/Indicator/mom.d.ts +1 -22
  207. package/dist/engine/renderers/Indicator/mom.d.ts.map +1 -1
  208. package/dist/engine/renderers/Indicator/mom.js +8 -23
  209. package/dist/engine/renderers/Indicator/mom.js.map +1 -1
  210. package/dist/engine/renderers/Indicator/obv.d.ts +1 -7
  211. package/dist/engine/renderers/Indicator/obv.d.ts.map +1 -1
  212. package/dist/engine/renderers/Indicator/obv.js +3 -14
  213. package/dist/engine/renderers/Indicator/obv.js.map +1 -1
  214. package/dist/engine/renderers/Indicator/parkinson.d.ts +1 -7
  215. package/dist/engine/renderers/Indicator/parkinson.d.ts.map +1 -1
  216. package/dist/engine/renderers/Indicator/parkinson.js +3 -16
  217. package/dist/engine/renderers/Indicator/parkinson.js.map +1 -1
  218. package/dist/engine/renderers/Indicator/pivot.d.ts +1 -6
  219. package/dist/engine/renderers/Indicator/pivot.d.ts.map +1 -1
  220. package/dist/engine/renderers/Indicator/pivot.js +2 -2
  221. package/dist/engine/renderers/Indicator/pivot.js.map +1 -1
  222. package/dist/engine/renderers/Indicator/pvt.d.ts +1 -7
  223. package/dist/engine/renderers/Indicator/pvt.d.ts.map +1 -1
  224. package/dist/engine/renderers/Indicator/pvt.js +3 -14
  225. package/dist/engine/renderers/Indicator/pvt.js.map +1 -1
  226. package/dist/engine/renderers/Indicator/roc.d.ts +1 -8
  227. package/dist/engine/renderers/Indicator/roc.d.ts.map +1 -1
  228. package/dist/engine/renderers/Indicator/roc.js +3 -15
  229. package/dist/engine/renderers/Indicator/roc.js.map +1 -1
  230. package/dist/engine/renderers/Indicator/rsi.d.ts +0 -32
  231. package/dist/engine/renderers/Indicator/rsi.d.ts.map +1 -1
  232. package/dist/engine/renderers/Indicator/rsi.js +3 -3
  233. package/dist/engine/renderers/Indicator/rsi.js.map +1 -1
  234. package/dist/engine/renderers/Indicator/sar.d.ts +1 -8
  235. package/dist/engine/renderers/Indicator/sar.d.ts.map +1 -1
  236. package/dist/engine/renderers/Indicator/sar.js +2 -2
  237. package/dist/engine/renderers/Indicator/sar.js.map +1 -1
  238. package/dist/engine/renderers/Indicator/scale/indicator_scale.d.ts +2 -0
  239. package/dist/engine/renderers/Indicator/scale/indicator_scale.d.ts.map +1 -1
  240. package/dist/engine/renderers/Indicator/scale/indicator_scale.js +10 -6
  241. package/dist/engine/renderers/Indicator/scale/indicator_scale.js.map +1 -1
  242. package/dist/engine/renderers/Indicator/shared/dashedLines.d.ts +4 -0
  243. package/dist/engine/renderers/Indicator/shared/dashedLines.d.ts.map +1 -0
  244. package/dist/engine/renderers/Indicator/shared/dashedLines.js +50 -0
  245. package/dist/engine/renderers/Indicator/shared/dashedLines.js.map +1 -0
  246. package/dist/engine/renderers/Indicator/shared/titleInfo.d.ts +14 -0
  247. package/dist/engine/renderers/Indicator/shared/titleInfo.d.ts.map +1 -0
  248. package/dist/engine/renderers/Indicator/shared/titleInfo.js +25 -0
  249. package/dist/engine/renderers/Indicator/shared/titleInfo.js.map +1 -0
  250. package/dist/engine/renderers/Indicator/shared/webglBand.d.ts +5 -0
  251. package/dist/engine/renderers/Indicator/shared/webglBand.d.ts.map +1 -0
  252. package/dist/engine/renderers/Indicator/shared/webglBand.js +17 -0
  253. package/dist/engine/renderers/Indicator/shared/webglBand.js.map +1 -0
  254. package/dist/engine/renderers/Indicator/stoch.d.ts +1 -22
  255. package/dist/engine/renderers/Indicator/stoch.d.ts.map +1 -1
  256. package/dist/engine/renderers/Indicator/stoch.js +5 -46
  257. package/dist/engine/renderers/Indicator/stoch.js.map +1 -1
  258. package/dist/engine/renderers/Indicator/structure.d.ts +1 -7
  259. package/dist/engine/renderers/Indicator/structure.d.ts.map +1 -1
  260. package/dist/engine/renderers/Indicator/structure.js +2 -2
  261. package/dist/engine/renderers/Indicator/structure.js.map +1 -1
  262. package/dist/engine/renderers/Indicator/supertrend.d.ts +1 -8
  263. package/dist/engine/renderers/Indicator/supertrend.d.ts.map +1 -1
  264. package/dist/engine/renderers/Indicator/supertrend.js +2 -2
  265. package/dist/engine/renderers/Indicator/supertrend.js.map +1 -1
  266. package/dist/engine/renderers/Indicator/tema.d.ts +1 -7
  267. package/dist/engine/renderers/Indicator/tema.d.ts.map +1 -1
  268. package/dist/engine/renderers/Indicator/tema.js +3 -17
  269. package/dist/engine/renderers/Indicator/tema.js.map +1 -1
  270. package/dist/engine/renderers/Indicator/trix.d.ts +1 -8
  271. package/dist/engine/renderers/Indicator/trix.d.ts.map +1 -1
  272. package/dist/engine/renderers/Indicator/trix.js +2 -2
  273. package/dist/engine/renderers/Indicator/trix.js.map +1 -1
  274. package/dist/engine/renderers/Indicator/vma.d.ts +1 -7
  275. package/dist/engine/renderers/Indicator/vma.d.ts.map +1 -1
  276. package/dist/engine/renderers/Indicator/vma.js +3 -15
  277. package/dist/engine/renderers/Indicator/vma.js.map +1 -1
  278. package/dist/engine/renderers/Indicator/volumeProfile.d.ts +1 -7
  279. package/dist/engine/renderers/Indicator/volumeProfile.d.ts.map +1 -1
  280. package/dist/engine/renderers/Indicator/volumeProfile.js +2 -2
  281. package/dist/engine/renderers/Indicator/volumeProfile.js.map +1 -1
  282. package/dist/engine/renderers/Indicator/vwap.d.ts +1 -7
  283. package/dist/engine/renderers/Indicator/vwap.d.ts.map +1 -1
  284. package/dist/engine/renderers/Indicator/vwap.js +3 -14
  285. package/dist/engine/renderers/Indicator/vwap.js.map +1 -1
  286. package/dist/engine/renderers/Indicator/wma.d.ts +1 -7
  287. package/dist/engine/renderers/Indicator/wma.d.ts.map +1 -1
  288. package/dist/engine/renderers/Indicator/wma.js +3 -17
  289. package/dist/engine/renderers/Indicator/wma.js.map +1 -1
  290. package/dist/engine/renderers/Indicator/wmsr.d.ts +1 -22
  291. package/dist/engine/renderers/Indicator/wmsr.d.ts.map +1 -1
  292. package/dist/engine/renderers/Indicator/wmsr.js +8 -23
  293. package/dist/engine/renderers/Indicator/wmsr.js.map +1 -1
  294. package/dist/engine/renderers/Indicator/zones.d.ts +1 -6
  295. package/dist/engine/renderers/Indicator/zones.d.ts.map +1 -1
  296. package/dist/engine/renderers/Indicator/zones.js +2 -2
  297. package/dist/engine/renderers/Indicator/zones.js.map +1 -1
  298. package/dist/engine/renderers/candle.d.ts +0 -16
  299. package/dist/engine/renderers/candle.d.ts.map +1 -1
  300. package/dist/engine/renderers/candle.js +1 -1
  301. package/dist/engine/renderers/candle.js.map +1 -1
  302. package/dist/engine/renderers/comparisonLine.d.ts.map +1 -1
  303. package/dist/engine/renderers/comparisonLine.js +2 -0
  304. package/dist/engine/renderers/comparisonLine.js.map +1 -1
  305. package/dist/engine/renderers/extremaMarkers.d.ts.map +1 -1
  306. package/dist/engine/renderers/extremaMarkers.js +2 -0
  307. package/dist/engine/renderers/extremaMarkers.js.map +1 -1
  308. package/dist/engine/renderers/gridLines.d.ts.map +1 -1
  309. package/dist/engine/renderers/gridLines.js +7 -35
  310. package/dist/engine/renderers/gridLines.js.map +1 -1
  311. package/dist/engine/renderers/lastPrice.d.ts.map +1 -1
  312. package/dist/engine/renderers/lastPrice.js +7 -2
  313. package/dist/engine/renderers/lastPrice.js.map +1 -1
  314. package/dist/engine/renderers/leftYAxis.d.ts +11 -0
  315. package/dist/engine/renderers/leftYAxis.d.ts.map +1 -0
  316. package/dist/engine/renderers/leftYAxis.js +79 -0
  317. package/dist/engine/renderers/leftYAxis.js.map +1 -0
  318. package/dist/engine/renderers/subVolume.d.ts +1 -13
  319. package/dist/engine/renderers/subVolume.d.ts.map +1 -1
  320. package/dist/engine/renderers/subVolume.js +1 -1
  321. package/dist/engine/renderers/subVolume.js.map +1 -1
  322. package/dist/engine/renderers/timeAxis.d.ts +0 -2
  323. package/dist/engine/renderers/timeAxis.d.ts.map +1 -1
  324. package/dist/engine/renderers/timeAxis.js +4 -1
  325. package/dist/engine/renderers/timeAxis.js.map +1 -1
  326. package/dist/engine/renderers/timeShare.d.ts +3 -0
  327. package/dist/engine/renderers/timeShare.d.ts.map +1 -0
  328. package/dist/engine/renderers/timeShare.js +260 -0
  329. package/dist/engine/renderers/timeShare.js.map +1 -0
  330. package/dist/engine/renderers/yAxis.d.ts.map +1 -1
  331. package/dist/engine/renderers/yAxis.js +25 -23
  332. package/dist/engine/renderers/yAxis.js.map +1 -1
  333. package/dist/engine/scale/price.d.ts +0 -7
  334. package/dist/engine/scale/price.d.ts.map +1 -1
  335. package/dist/engine/scale/price.js +3 -2
  336. package/dist/engine/scale/price.js.map +1 -1
  337. package/dist/engine/theme/fonts.d.ts +0 -2
  338. package/dist/engine/theme/fonts.d.ts.map +1 -1
  339. package/dist/engine/theme/fonts.js +1 -1
  340. package/dist/engine/theme/fonts.js.map +1 -1
  341. package/dist/engine/utils/klineConfig.d.ts.map +1 -1
  342. package/dist/engine/utils/klineConfig.js +1 -5
  343. package/dist/engine/utils/klineConfig.js.map +1 -1
  344. package/dist/engine/utils/tickPosition.d.ts +12 -0
  345. package/dist/engine/utils/tickPosition.d.ts.map +1 -1
  346. package/dist/engine/utils/tickPosition.js +15 -0
  347. package/dist/engine/utils/tickPosition.js.map +1 -1
  348. package/dist/engine/viewport/chartViewportManager.d.ts +0 -4
  349. package/dist/engine/viewport/chartViewportManager.d.ts.map +1 -1
  350. package/dist/engine/viewport/chartViewportManager.js +10 -13
  351. package/dist/engine/viewport/chartViewportManager.js.map +1 -1
  352. package/dist/plugin/types.d.ts +10 -0
  353. package/dist/plugin/types.d.ts.map +1 -1
  354. package/dist/plugin/types.js.map +1 -1
  355. package/dist/semantic/types.d.ts +1 -1
  356. package/dist/semantic/types.d.ts.map +1 -1
  357. package/dist/tokens/theme-base.d.ts +5 -0
  358. package/dist/tokens/theme-base.d.ts.map +1 -0
  359. package/dist/tokens/theme-base.js +31 -0
  360. package/dist/tokens/theme-base.js.map +1 -0
  361. package/dist/tokens/theme-china.d.ts.map +1 -1
  362. package/dist/tokens/theme-china.js +3 -0
  363. package/dist/tokens/theme-china.js.map +1 -1
  364. package/dist/tokens/theme-dark.d.ts.map +1 -1
  365. package/dist/tokens/theme-dark.js +11 -30
  366. package/dist/tokens/theme-dark.js.map +1 -1
  367. package/dist/tokens/theme-light.d.ts.map +1 -1
  368. package/dist/tokens/theme-light.js +11 -30
  369. package/dist/tokens/theme-light.js.map +1 -1
  370. package/dist/tokens/types.d.ts +7 -0
  371. package/dist/tokens/types.d.ts.map +1 -1
  372. package/dist/types/price.d.ts +8 -0
  373. package/dist/types/price.d.ts.map +1 -1
  374. package/dist/types/price.js +4 -0
  375. package/dist/types/price.js.map +1 -1
  376. package/dist/utils/dateFormat.d.ts +5 -42
  377. package/dist/utils/dateFormat.d.ts.map +1 -1
  378. package/dist/utils/dateFormat.js +24 -4
  379. package/dist/utils/dateFormat.js.map +1 -1
  380. package/dist/utils/kLineDraw/axis.d.ts +9 -28
  381. package/dist/utils/kLineDraw/axis.d.ts.map +1 -1
  382. package/dist/utils/kLineDraw/axis.js +33 -58
  383. package/dist/utils/kLineDraw/axis.js.map +1 -1
  384. package/dist/utils/volumePrice.d.ts +0 -40
  385. package/dist/utils/volumePrice.d.ts.map +1 -1
  386. package/dist/utils/volumePrice.js +2 -2
  387. package/dist/utils/volumePrice.js.map +1 -1
  388. package/dist/version.d.ts +1 -1
  389. package/dist/version.js +1 -1
  390. package/package.json +1 -1
  391. package/src/config/chartSettings.ts +8 -1
  392. package/src/controllers/createChartController.ts +59 -2
  393. package/src/controllers/types.ts +38 -17
  394. package/src/data-fetchers/__tests__/dataBuffer.test.ts +39 -5
  395. package/src/data-fetchers/baostock.ts +1 -1
  396. package/src/data-fetchers/dataBuffer.ts +48 -11
  397. package/src/data-fetchers/dataBufferTypes.ts +11 -0
  398. package/src/data-fetchers/fetcherDefinitionRegistry.ts +14 -4
  399. package/src/data-fetchers/gotdx/gotdx.ts +6 -0
  400. package/src/data-fetchers/gotdx.ts +45 -7
  401. package/src/data-fetchers/hundred-mock.ts +1 -1
  402. package/src/data-fetchers/index.ts +10 -20
  403. package/src/data-fetchers/router.ts +12 -1
  404. package/src/data-fetchers/thousand-mock.ts +1 -1
  405. package/src/data-fetchers/timeShareBuffer.ts +92 -0
  406. package/src/data-fetchers/tradingview.ts +2 -2
  407. package/src/data-fetchers/types.ts +15 -2
  408. package/src/engine/__tests__/chart.dpr.test.ts +1 -0
  409. package/src/engine/chart.ts +167 -9
  410. package/src/engine/chartTypes.ts +3 -0
  411. package/src/engine/controller/__tests__/interaction.dpr.test.ts +2 -0
  412. package/src/engine/controller/interaction.ts +80 -28
  413. package/src/engine/data/chartDataManager.ts +560 -229
  414. package/src/engine/draw/pixelAlign.ts +1 -1
  415. package/src/engine/indicators/__tests__/_propertyAssertions.ts +2 -2
  416. package/src/engine/indicators/__tests__/registerBuiltins.test.ts +1 -1
  417. package/src/engine/indicators/calculators.ts +83 -233
  418. package/src/engine/indicators/chartIndicatorManager.ts +3 -2
  419. package/src/engine/indicators/macdState.ts +1 -1
  420. package/src/engine/indicators/registerBuiltins.ts +1 -0
  421. package/src/engine/indicators/rsiState.ts +1 -1
  422. package/src/engine/indicators/scheduler.ts +1 -7
  423. package/src/engine/layout/chartPaneLayout.ts +26 -6
  424. package/src/engine/modes/kLineMode.ts +57 -0
  425. package/src/engine/modes/timeShareMode.ts +95 -0
  426. package/src/engine/modes/types.ts +63 -0
  427. package/src/engine/paneRenderer.ts +37 -46
  428. package/src/engine/render/chartRenderer.ts +120 -22
  429. package/src/engine/renderers/Indicator/atr.ts +4 -29
  430. package/src/engine/renderers/Indicator/boll.ts +3 -24
  431. package/src/engine/renderers/Indicator/cci.ts +9 -27
  432. package/src/engine/renderers/Indicator/chaikinVol.ts +3 -23
  433. package/src/engine/renderers/Indicator/cmf.ts +3 -22
  434. package/src/engine/renderers/Indicator/dema.ts +5 -26
  435. package/src/engine/renderers/Indicator/donchian.ts +3 -3
  436. package/src/engine/renderers/Indicator/ene.ts +3 -24
  437. package/src/engine/renderers/Indicator/expma.ts +2 -2
  438. package/src/engine/renderers/Indicator/fastk.ts +12 -95
  439. package/src/engine/renderers/Indicator/fib.ts +2 -2
  440. package/src/engine/renderers/Indicator/hma.ts +5 -26
  441. package/src/engine/renderers/Indicator/hv.ts +3 -23
  442. package/src/engine/renderers/Indicator/ichimoku.ts +3 -3
  443. package/src/engine/renderers/Indicator/kama.ts +5 -26
  444. package/src/engine/renderers/Indicator/keltner.ts +3 -3
  445. package/src/engine/renderers/Indicator/kst.ts +3 -3
  446. package/src/engine/renderers/Indicator/ma.ts +1 -1
  447. package/src/engine/renderers/Indicator/macd.ts +4 -21
  448. package/src/engine/renderers/Indicator/mainIndicatorLegend.ts +127 -2
  449. package/src/engine/renderers/Indicator/mfi.ts +3 -22
  450. package/src/engine/renderers/Indicator/mom.ts +9 -30
  451. package/src/engine/renderers/Indicator/obv.ts +3 -21
  452. package/src/engine/renderers/Indicator/parkinson.ts +3 -23
  453. package/src/engine/renderers/Indicator/pivot.ts +2 -2
  454. package/src/engine/renderers/Indicator/pvt.ts +3 -21
  455. package/src/engine/renderers/Indicator/roc.ts +4 -23
  456. package/src/engine/renderers/Indicator/rsi.ts +4 -4
  457. package/src/engine/renderers/Indicator/sar.ts +3 -3
  458. package/src/engine/renderers/Indicator/scale/indicator_scale.ts +11 -4
  459. package/src/engine/renderers/Indicator/shared/dashedLines.ts +81 -0
  460. package/src/engine/renderers/Indicator/shared/titleInfo.ts +52 -0
  461. package/src/engine/renderers/Indicator/shared/webglBand.ts +23 -0
  462. package/src/engine/renderers/Indicator/stoch.ts +6 -71
  463. package/src/engine/renderers/Indicator/structure.ts +2 -2
  464. package/src/engine/renderers/Indicator/supertrend.ts +3 -3
  465. package/src/engine/renderers/Indicator/tema.ts +5 -26
  466. package/src/engine/renderers/Indicator/trix.ts +3 -3
  467. package/src/engine/renderers/Indicator/vma.ts +3 -22
  468. package/src/engine/renderers/Indicator/volumeProfile.ts +2 -2
  469. package/src/engine/renderers/Indicator/vwap.ts +3 -21
  470. package/src/engine/renderers/Indicator/wma.ts +5 -26
  471. package/src/engine/renderers/Indicator/wmsr.ts +9 -30
  472. package/src/engine/renderers/Indicator/zones.ts +2 -2
  473. package/src/engine/renderers/__tests__/yAxis.renderer.test.ts +30 -26
  474. package/src/engine/renderers/candle.ts +1 -1
  475. package/src/engine/renderers/comparisonLine.ts +1 -0
  476. package/src/engine/renderers/extremaMarkers.ts +1 -0
  477. package/src/engine/renderers/gridLines.ts +7 -36
  478. package/src/engine/renderers/lastPrice.ts +5 -2
  479. package/src/engine/renderers/leftYAxis.ts +93 -0
  480. package/src/engine/renderers/subVolume.ts +3 -3
  481. package/src/engine/renderers/timeAxis.ts +16 -13
  482. package/src/engine/renderers/timeShare.ts +271 -0
  483. package/src/engine/renderers/yAxis.ts +28 -24
  484. package/src/engine/scale/price.ts +2 -2
  485. package/src/engine/theme/fonts.ts +1 -1
  486. package/src/engine/utils/klineConfig.ts +1 -5
  487. package/src/engine/utils/tickPosition.ts +34 -0
  488. package/src/engine/viewport/chartViewportManager.ts +11 -15
  489. package/src/plugin/types.ts +11 -0
  490. package/src/semantic/types.ts +1 -1
  491. package/src/tokens/__tests__/__snapshots__/baseline.test.ts.snap +14 -0
  492. package/src/tokens/theme-base.ts +36 -0
  493. package/src/tokens/theme-china.ts +4 -0
  494. package/src/tokens/theme-dark.ts +12 -32
  495. package/src/tokens/theme-light.ts +13 -33
  496. package/src/tokens/types.ts +9 -0
  497. package/src/types/price.ts +13 -0
  498. package/src/utils/dateFormat.ts +27 -4
  499. package/src/utils/kLineDraw/axis.ts +40 -107
  500. package/src/utils/volumePrice.ts +2 -2
  501. package/src/version.ts +1 -1
@@ -9,31 +9,10 @@ import { resolveStateKey } from '../../indicators/indicatorMetadata'
9
9
  import type { IndicatorPriceRangeComputer, IndicatorRenderStateComposer, GetTitleInfoFn, TitleInfo, TitleValueItem } from '../../indicators/indicatorMetadata'
10
10
  import type { ENESchedulerConfig, IndicatorScheduler } from '../../indicators/scheduler'
11
11
  import { calcENEData } from '../../indicators/calculators'
12
+ import { getRgbaAlpha, toOpaqueRgba, compositeLineSurface } from './shared/webglBand'
12
13
 
13
14
  type LinePoint = { x: number; y: number }
14
15
 
15
- function getRgbaAlpha(color: string): number {
16
- const match = color.match(/^rgba\([^,]+,[^,]+,[^,]+,\s*([\d.]+)\)$/i)
17
- if (!match) return 1
18
- const alpha = Number(match[1])
19
- return Number.isFinite(alpha) ? alpha : 1
20
- }
21
-
22
- function toOpaqueRgba(color: string): string {
23
- return color.replace(/,\s*[\d.]+\s*\)$/i, ', 1)')
24
- }
25
-
26
- function compositeLineSurface(
27
- context: RenderContext,
28
- surface: NonNullable<RenderContext['lineWebGLSurface']>,
29
- alpha = 1
30
- ): void {
31
- surface.compositeTo(context.ctx, {
32
- alpha,
33
- imageSmoothingEnabled: false,
34
- })
35
- }
36
-
37
16
  function drawENEWithWebGL(
38
17
  context: RenderContext,
39
18
  data: {
@@ -94,7 +73,7 @@ function drawENEWithWebGL(
94
73
  * 3. 配置变更通过外部 IndicatorScheduler 处理
95
74
  * 4. 纯绘制函数,无副作用
96
75
  */
97
- export function getENEStateKey(host: PluginHost | null): string | null {
76
+ function getENEStateKey(host: PluginHost | null): string | null {
98
77
  const scheduler = host?.getService<IndicatorScheduler>('indicatorScheduler')
99
78
  if (!scheduler) {
100
79
  console.warn('[ENERenderer] Scheduler not available via service locator')
@@ -289,7 +268,7 @@ export function createENERendererPlugin(): RendererPluginWithHost {
289
268
  }
290
269
  }
291
270
 
292
- export const getENETitleInfo: GetTitleInfoFn = (
271
+ const getENETitleInfo: GetTitleInfoFn = (
293
272
  _data: KLineData[],
294
273
  index: number | null,
295
274
  _params: Record<string, number | boolean | string>,
@@ -34,7 +34,7 @@ function buildEXPMACacheKey(
34
34
  ].join('|')
35
35
  }
36
36
 
37
- export function getEXPMAStateKey(host: PluginHost | null): string | null {
37
+ function getEXPMAStateKey(host: PluginHost | null): string | null {
38
38
  const scheduler = host?.getService<IndicatorScheduler>('indicatorScheduler')
39
39
  if (!scheduler) {
40
40
  console.warn('[EXPMARenderer] Scheduler not available via service locator')
@@ -215,7 +215,7 @@ export function createEXPMARendererPlugin(): RendererPluginWithHost {
215
215
  }
216
216
  }
217
217
 
218
- export const getEXPMATitleInfo: GetTitleInfoFn = (
218
+ const getEXPMATitleInfo: GetTitleInfoFn = (
219
219
  _data: KLineData[],
220
220
  index: number | null,
221
221
  _params: Record<string, number | boolean | string>,
@@ -1,7 +1,7 @@
1
1
  import type { RendererPluginWithHost, RenderContext, PluginHost } from '../../../plugin'
2
2
  import { RENDERER_PRIORITY } from '../../../plugin'
3
3
  import { resolveThemeColors } from '../../../tokens'
4
- import { alignToPhysicalPixelCenter } from '../../draw/pixelAlign'
4
+ import { createDashedLineRenderer } from './shared/dashedLines'
5
5
  import type { FASTKRenderState } from '../../indicators/fastkState'
6
6
  import { createFASTKStateKey, EMPTY_FASTK_STATE } from '../../indicators/fastkState'
7
7
  import { Indicator } from '../../indicators/indicatorDefinitionRegistry'
@@ -10,11 +10,11 @@ import { resolveStateKey } from '../../indicators/indicatorMetadata'
10
10
  import type { IndicatorScheduler, FASTKSchedulerConfig } from '../../indicators/scheduler'
11
11
  import { createFastkScaleRendererPlugin } from './scale/fastk_scale'
12
12
  import { calcFASTKData } from '../../indicators/calculators'
13
- import type { KLineData } from '../../../types/price'
13
+ import { createSingleLineTitleInfo } from './shared/titleInfo'
14
14
 
15
15
  type LinePoint = { x: number; y: number }
16
16
 
17
- export interface FASTKRendererOptions {
17
+ interface FASTKRendererOptions {
18
18
  /** 目标 pane ID(默认 'sub') */
19
19
  paneId?: string
20
20
  }
@@ -36,7 +36,7 @@ function getFASTKStateKey(host: PluginHost | null, paneId: string): string | nul
36
36
  /**
37
37
  * 创建 FASTK 渲染器插件
38
38
  */
39
- export function createFASTKRendererPlugin(options: FASTKRendererOptions = {}): RendererPluginWithHost {
39
+ function createFASTKRendererPlugin(options: FASTKRendererOptions = {}): RendererPluginWithHost {
40
40
  const { paneId = 'sub' } = options
41
41
  let pluginHost: PluginHost | null = null
42
42
 
@@ -49,65 +49,13 @@ export function createFASTKRendererPlugin(options: FASTKRendererOptions = {}): R
49
49
  let cachedFASTKPoints: LinePoint[] = []
50
50
 
51
51
  // 离屏 Canvas 缓存虚线背景线 (80/20)
52
- let offscreenCanvas: HTMLCanvasElement | null = null
53
- let offscreenCtx: CanvasRenderingContext2D | null = null
54
- let cachedDashedLinesKey = ''
52
+ const dashedLines = createDashedLineRenderer()
55
53
 
56
54
  function clearLineCache() {
57
55
  cachedKey = ''
58
56
  cachedFASTKPoints = []
59
57
  }
60
58
 
61
- function getOffscreenCanvas(width: number, height: number): { canvas: HTMLCanvasElement; ctx: CanvasRenderingContext2D } {
62
- if (!offscreenCanvas || offscreenCanvas.width !== width || offscreenCanvas.height !== height) {
63
- offscreenCanvas = document.createElement('canvas')
64
- offscreenCanvas.width = width
65
- offscreenCanvas.height = height
66
- offscreenCtx = offscreenCanvas.getContext('2d')!
67
- cachedDashedLinesKey = ''
68
- }
69
- return { canvas: offscreenCanvas, ctx: offscreenCtx! }
70
- }
71
-
72
- function buildDashedLinesKey(
73
- paneWidth: number,
74
- paneHeight: number,
75
- displayMin: number,
76
- displayMax: number,
77
- dpr: number
78
- ): string {
79
- return `${paneWidth}|${paneHeight}|${displayMin.toFixed(4)}|${displayMax.toFixed(4)}|${dpr}`
80
- }
81
-
82
- function renderDashedLinesToOffscreen(
83
- ctx: CanvasRenderingContext2D,
84
- paneWidth: number,
85
- paneHeight: number,
86
- displayMin: number,
87
- displayMax: number,
88
- dpr: number
89
- ): void {
90
- const displayValueRange = displayMax - displayMin || 1
91
- const y80 = alignToPhysicalPixelCenter(paneHeight - (80 - displayMin) / displayValueRange * paneHeight, dpr)
92
- const y20 = alignToPhysicalPixelCenter(paneHeight - (20 - displayMin) / displayValueRange * paneHeight, dpr)
93
-
94
- ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height)
95
- ctx.save()
96
- ctx.scale(dpr, dpr)
97
-
98
- ctx.strokeStyle = 'rgba(0, 0, 0, 0.1)'
99
- ctx.lineWidth = 1
100
- ctx.setLineDash([4, 4])
101
- ctx.beginPath()
102
- ctx.moveTo(0, y80)
103
- ctx.lineTo(paneWidth, y80)
104
- ctx.moveTo(0, y20)
105
- ctx.lineTo(paneWidth, y20)
106
- ctx.stroke()
107
-
108
- ctx.restore()
109
- }
110
-
111
59
  function buildFASTKCacheKey(
112
60
  range: { start: number; end: number },
113
61
  kLineCenters: number[],
@@ -171,20 +119,7 @@ const { ctx, pane, range, scrollLeft, dpr, kLineCenters, lineWebGLSurface } = co
171
119
 
172
120
  const paneWidth = context.paneWidth
173
121
  const paneHeight = pane.height
174
- const dashedLinesKey = buildDashedLinesKey(paneWidth, paneHeight, displayMin, displayMax, dpr)
175
-
176
- if (cachedDashedLinesKey !== dashedLinesKey) {
177
- cachedDashedLinesKey = dashedLinesKey
178
- const { ctx: offCtx } = getOffscreenCanvas(
179
- Math.ceil(paneWidth * dpr),
180
- Math.ceil(paneHeight * dpr)
181
- )
182
- renderDashedLinesToOffscreen(offCtx, paneWidth, paneHeight, displayMin, displayMax, dpr)
183
- }
184
-
185
- if (offscreenCanvas) {
186
- ctx.drawImage(offscreenCanvas, 0, 0, paneWidth, paneHeight)
187
- }
122
+ dashedLines.render(ctx, paneWidth, paneHeight, displayMin, displayMax, dpr)
188
123
 
189
124
  // 确定绘制范围
190
125
  const drawStart = Math.max(range.start, params.period - 1)
@@ -281,30 +216,12 @@ function drawFASTKLineWithCanvas2D(
281
216
  /**
282
217
  * 获取 FASTK 标题信息(供 paneTitle 使用)
283
218
  */
284
- export function getFASTKTitleInfo(
285
- _data: KLineData[],
286
- index: number | null,
287
- params: Record<string, number | boolean | string>,
288
- pluginHost: PluginHost,
289
- paneId: string,
290
- ): { name: string; params: number[]; values: Array<{ label: string; value: number; color: string }> } | null {
291
- if (index === null) return null
292
- const period = (params.period as number) ?? 9
293
- const colors = resolveThemeColors('light')
294
- const state = pluginHost.getSharedState<FASTKRenderState>(createFASTKStateKey(paneId))
295
- if (!state) return null
296
-
297
- const fastk = state.series[index]
298
- if (fastk === undefined) return null
299
-
300
- return {
301
- name: 'FASTK',
302
- params: [period],
303
- values: [
304
- { label: 'FASTK', value: fastk, color: colors.kdj.k },
305
- ],
306
- }
307
- }
219
+ const getFASTKTitleInfo = createSingleLineTitleInfo({
220
+ createStateKey: createFASTKStateKey,
221
+ name: 'FASTK',
222
+ defaultPeriod: 9,
223
+ getColor: (colors) => colors.kdj.k,
224
+ })
308
225
 
309
226
  @Indicator({
310
227
  name: 'fastk',
@@ -34,7 +34,7 @@ function getFibStateKey(host: PluginHost | null, paneId: string): string | null
34
34
  return resolveStateKey(meta.stateKey, paneId)
35
35
  }
36
36
 
37
- export function createFibRendererPlugin(options: { paneId?: string } = {}): RendererPluginWithHost {
37
+ function createFibRendererPlugin(options: { paneId?: string } = {}): RendererPluginWithHost {
38
38
  const { paneId = 'main' } = options
39
39
  let pluginHost: PluginHost | null = null
40
40
 
@@ -126,7 +126,7 @@ function drawLine(ctx: CanvasRenderingContext2D, pts: Point[], color: string): v
126
126
  ctx.stroke()
127
127
  }
128
128
 
129
- export const getFibTitleInfo: GetTitleInfoFn = (_data, index, _params, host, paneId) => {
129
+ const getFibTitleInfo: GetTitleInfoFn = (_data, index, _params, host, paneId) => {
130
130
  if (index === null || index < 0) return null
131
131
 
132
132
  const stateKey = createFibStateKey(paneId)
@@ -1,10 +1,10 @@
1
1
  import type { RendererPluginWithHost, RenderContext, PluginHost } from '../../../plugin'
2
- import type { KLineData } from '../../../types/price'
2
+ import { createSingleLineTitleInfo } from './shared/titleInfo'
3
3
  import { RENDERER_PRIORITY } from '../../../plugin'
4
4
  import type { HMARenderState } from '../../indicators/hmaState'
5
5
  import { createHMAStateKey, EMPTY_HMA_STATE } from '../../indicators/hmaState'
6
6
  import { Indicator } from '../../indicators/indicatorDefinitionRegistry'
7
- import { resolveStateKey, type TitleInfo, type TitleValueItem, type GetTitleInfoFn } from '../../indicators/indicatorMetadata'
7
+ import { resolveStateKey } from '../../indicators/indicatorMetadata'
8
8
  import { createSparseVisibleStateComposer } from '../../indicators/visibleStateComposers'
9
9
  import type { IndicatorScheduler, HMASchedulerConfig } from '../../indicators/scheduler'
10
10
  import { calcHMAData } from '../../indicators/calculators'
@@ -13,7 +13,7 @@ const HMA_COLOR = '#f43f5e'
13
13
 
14
14
  type Point = { x: number; y: number }
15
15
 
16
- export interface HMARendererOptions {
16
+ interface HMARendererOptions {
17
17
  paneId?: string
18
18
  }
19
19
 
@@ -31,7 +31,7 @@ function getHMAStateKey(host: PluginHost | null, paneId: string): string | null
31
31
  return resolveStateKey(meta.stateKey, paneId)
32
32
  }
33
33
 
34
- export function createHMARendererPlugin(options: HMARendererOptions = {}): RendererPluginWithHost {
34
+ function createHMARendererPlugin(options: HMARendererOptions = {}): RendererPluginWithHost {
35
35
  const { paneId = 'main' } = options
36
36
  let pluginHost: PluginHost | null = null
37
37
 
@@ -122,28 +122,7 @@ export function createHMARendererPlugin(options: HMARendererOptions = {}): Rende
122
122
  }
123
123
  }
124
124
 
125
- export const getHMATitleInfo: GetTitleInfoFn = (
126
- _data: KLineData[],
127
- index: number | null,
128
- _params: Record<string, number | boolean | string>,
129
- pluginHost: PluginHost,
130
- paneId: string,
131
- ): TitleInfo | null => {
132
- if (index === null) return null
133
-
134
- const stateKey = createHMAStateKey(paneId)
135
- const state = pluginHost?.getSharedState<HMARenderState>(stateKey)
136
- if (!state || state.visibleMin > state.visibleMax) return null
137
-
138
- const value = state.series[index]
139
- if (value === undefined) return null
140
-
141
- return {
142
- name: 'HMA',
143
- params: [state.params.period],
144
- values: [{ label: 'HMA', value, color: '#f43f5e' }],
145
- }
146
- }
125
+ const getHMATitleInfo = createSingleLineTitleInfo({ createStateKey: createHMAStateKey, name: 'HMA', getParams: (p) => [p.period as number], color: HMA_COLOR })
147
126
 
148
127
  @Indicator({
149
128
  name: 'hma',
@@ -9,8 +9,7 @@ import { Indicator } from '../../indicators/indicatorDefinitionRegistry'
9
9
  import { resolveStateKey } from '../../indicators/indicatorMetadata'
10
10
  import type { IndicatorScheduler, HVSchedulerConfig } from '../../indicators/scheduler'
11
11
  import { calcHVData } from '../../indicators/calculators'
12
- import type { TitleInfo } from '../../indicators/indicatorMetadata'
13
- import type { KLineData } from '../../../types/price'
12
+ import { createSingleLineTitleInfo } from './shared/titleInfo'
14
13
 
15
14
  const HV_COLOR = '#7c3aed'
16
15
 
@@ -30,7 +29,7 @@ function getHVStateKey(host: PluginHost | null, paneId: string): string | null {
30
29
  return resolveStateKey(meta.stateKey, paneId)
31
30
  }
32
31
 
33
- export function createHVRendererPlugin(options: { paneId?: string } = {}): RendererPluginWithHost {
32
+ function createHVRendererPlugin(options: { paneId?: string } = {}): RendererPluginWithHost {
34
33
  const { paneId = 'sub_HV' } = options
35
34
  let pluginHost: PluginHost | null = null
36
35
 
@@ -114,26 +113,7 @@ export function createHVRendererPlugin(options: { paneId?: string } = {}): Rende
114
113
  }
115
114
  }
116
115
 
117
- export function getHVTitleInfo(
118
- _data: KLineData[],
119
- index: number | null,
120
- params: Record<string, number | boolean | string>,
121
- host: PluginHost,
122
- paneId: string,
123
- ): TitleInfo | null {
124
- if (index === null) return null
125
- const period = (params.period as number) ?? 20
126
- const annualizationFactor = (params.annualizationFactor as number) ?? 252
127
- const state = host.getSharedState<HVRenderState>(createHVStateKey(paneId))
128
- const value = state?.series[index]
129
- if (value === undefined) return null
130
-
131
- return {
132
- name: 'HV',
133
- params: [period, annualizationFactor],
134
- values: [{ label: 'HV', value, color: HV_COLOR }],
135
- }
136
- }
116
+ const getHVTitleInfo = createSingleLineTitleInfo({ createStateKey: createHVStateKey, name: 'HV', getParams: (p) => [(p.period as number) ?? 20, (p.annualizationFactor as number) ?? 252], color: HV_COLOR })
137
117
 
138
118
  @Indicator({
139
119
  name: 'hv',
@@ -19,7 +19,7 @@ const CHIKOU_COLOR = '#7c3aed'
19
19
 
20
20
  type Point = { x: number; y: number }
21
21
 
22
- export interface IchimokuRendererOptions {
22
+ interface IchimokuRendererOptions {
23
23
  paneId?: string
24
24
  }
25
25
 
@@ -37,7 +37,7 @@ function getIchimokuStateKey(host: PluginHost | null, paneId: string): string |
37
37
  return resolveStateKey(meta.stateKey, paneId)
38
38
  }
39
39
 
40
- export function createIchimokuRendererPlugin(options: IchimokuRendererOptions = {}): RendererPluginWithHost {
40
+ function createIchimokuRendererPlugin(options: IchimokuRendererOptions = {}): RendererPluginWithHost {
41
41
  const { paneId = 'main' } = options
42
42
  let pluginHost: PluginHost | null = null
43
43
 
@@ -194,7 +194,7 @@ function fillCloud(
194
194
  ctx.restore()
195
195
  }
196
196
 
197
- export function getIchimokuTitleInfo(
197
+ function getIchimokuTitleInfo(
198
198
  _data: KLineData[],
199
199
  index: number | null,
200
200
  params: Record<string, number | boolean | string>,
@@ -1,10 +1,10 @@
1
1
  import type { RendererPluginWithHost, RenderContext, PluginHost } from '../../../plugin'
2
- import type { KLineData } from '../../../types/price'
2
+ import { createSingleLineTitleInfo } from './shared/titleInfo'
3
3
  import { RENDERER_PRIORITY } from '../../../plugin'
4
4
  import type { KAMARenderState } from '../../indicators/kamaState'
5
5
  import { createKAMAStateKey, EMPTY_KAMA_STATE } from '../../indicators/kamaState'
6
6
  import { Indicator } from '../../indicators/indicatorDefinitionRegistry'
7
- import { resolveStateKey, type TitleInfo, type TitleValueItem, type GetTitleInfoFn } from '../../indicators/indicatorMetadata'
7
+ import { resolveStateKey } from '../../indicators/indicatorMetadata'
8
8
  import { createSparseVisibleStateComposer } from '../../indicators/visibleStateComposers'
9
9
  import type { IndicatorScheduler, KAMASchedulerConfig } from '../../indicators/scheduler'
10
10
  import { calcKAMAData } from '../../indicators/calculators'
@@ -13,7 +13,7 @@ const KAMA_COLOR = '#0ea5e9'
13
13
 
14
14
  type Point = { x: number; y: number }
15
15
 
16
- export interface KAMARendererOptions {
16
+ interface KAMARendererOptions {
17
17
  paneId?: string
18
18
  }
19
19
 
@@ -31,7 +31,7 @@ function getKAMAStateKey(host: PluginHost | null, paneId: string): string | null
31
31
  return resolveStateKey(meta.stateKey, paneId)
32
32
  }
33
33
 
34
- export function createKAMARendererPlugin(options: KAMARendererOptions = {}): RendererPluginWithHost {
34
+ function createKAMARendererPlugin(options: KAMARendererOptions = {}): RendererPluginWithHost {
35
35
  const { paneId = 'main' } = options
36
36
  let pluginHost: PluginHost | null = null
37
37
 
@@ -122,28 +122,7 @@ export function createKAMARendererPlugin(options: KAMARendererOptions = {}): Ren
122
122
  }
123
123
  }
124
124
 
125
- export const getKAMATitleInfo: GetTitleInfoFn = (
126
- _data: KLineData[],
127
- index: number | null,
128
- _params: Record<string, number | boolean | string>,
129
- pluginHost: PluginHost,
130
- paneId: string,
131
- ): TitleInfo | null => {
132
- if (index === null) return null
133
-
134
- const stateKey = createKAMAStateKey(paneId)
135
- const state = pluginHost?.getSharedState<KAMARenderState>(stateKey)
136
- if (!state || state.visibleMin > state.visibleMax) return null
137
-
138
- const value = state.series[index]
139
- if (value === undefined) return null
140
-
141
- return {
142
- name: 'KAMA',
143
- params: [state.params.period, state.params.fastPeriod, state.params.slowPeriod],
144
- values: [{ label: 'KAMA', value, color: '#0ea5e9' }],
145
- }
146
- }
125
+ const getKAMATitleInfo = createSingleLineTitleInfo({ createStateKey: createKAMAStateKey, name: 'KAMA', getParams: (p) => [p.period as number, p.fastPeriod as number, p.slowPeriod as number], color: KAMA_COLOR })
147
126
 
148
127
  @Indicator({
149
128
  name: 'kama',
@@ -15,7 +15,7 @@ const KELTNER_LOWER_COLOR = '#7c3aed'
15
15
 
16
16
  type Point = { x: number; y: number }
17
17
 
18
- export interface KeltnerRendererOptions { paneId?: string }
18
+ interface KeltnerRendererOptions { paneId?: string }
19
19
 
20
20
  function getKeltnerStateKey(host: PluginHost | null, paneId: string): string | null {
21
21
  const scheduler = host?.getService<IndicatorScheduler>('indicatorScheduler')
@@ -31,7 +31,7 @@ function getKeltnerStateKey(host: PluginHost | null, paneId: string): string | n
31
31
  return resolveStateKey(meta.stateKey, paneId)
32
32
  }
33
33
 
34
- export function createKeltnerRendererPlugin(options: KeltnerRendererOptions = {}): RendererPluginWithHost {
34
+ function createKeltnerRendererPlugin(options: KeltnerRendererOptions = {}): RendererPluginWithHost {
35
35
  const { paneId = 'main' } = options
36
36
  let pluginHost: PluginHost | null = null
37
37
 
@@ -124,7 +124,7 @@ function drawLine(ctx: CanvasRenderingContext2D, pts: Point[], color: string): v
124
124
  ctx.stroke()
125
125
  }
126
126
 
127
- export function getKeltnerTitleInfo(
127
+ function getKeltnerTitleInfo(
128
128
  _data: KLineData[],
129
129
  index: number | null,
130
130
  params: Record<string, number | boolean | string>,
@@ -14,7 +14,7 @@ import type { KLineData } from '../../../types/price'
14
14
 
15
15
  type LinePoint = { x: number; y: number }
16
16
 
17
- export interface KSTRendererOptions {
17
+ interface KSTRendererOptions {
18
18
  /** 目标 pane ID(默认 'sub') */
19
19
  paneId?: string
20
20
  }
@@ -36,7 +36,7 @@ function getKSTStateKey(host: PluginHost | null, paneId: string): string | null
36
36
  /**
37
37
  * 创建 KST 渲染器插件
38
38
  */
39
- export function createKSTRendererPlugin(options: KSTRendererOptions = {}): RendererPluginWithHost {
39
+ function createKSTRendererPlugin(options: KSTRendererOptions = {}): RendererPluginWithHost {
40
40
  const { paneId = 'sub' } = options
41
41
  let pluginHost: PluginHost | null = null
42
42
 
@@ -260,7 +260,7 @@ function drawKSTLinesWithCanvas2D(
260
260
  /**
261
261
  * 获取 KST 标题信息(供 paneTitle 使用)
262
262
  */
263
- export function getKSTTitleInfo(
263
+ function getKSTTitleInfo(
264
264
  _data: KLineData[],
265
265
  index: number | null,
266
266
  params: Record<string, number | boolean | string>,
@@ -94,7 +94,7 @@ function getMAStateKey(host: PluginHost | null): string | null {
94
94
  return resolveStateKey(meta.stateKey)
95
95
  }
96
96
 
97
- export function getMATitleInfo(
97
+ function getMATitleInfo(
98
98
  _data: KLineData[],
99
99
  index: number | null,
100
100
  _params: Record<string, number | boolean | string>,
@@ -15,7 +15,7 @@ import { createMacdScaleRendererPlugin } from './scale/macd_scale'
15
15
 
16
16
  type LinePoint = { x: number; y: number }
17
17
 
18
- export interface MACDConfig {
18
+ interface MACDConfig {
19
19
  /** 快线周期(默认 12) */
20
20
  fastPeriod?: number
21
21
  /** 慢线周期(默认 26) */
@@ -30,7 +30,7 @@ export interface MACDConfig {
30
30
  showBAR?: boolean
31
31
  }
32
32
 
33
- export interface MACDRendererOptions {
33
+ interface MACDRendererOptions {
34
34
  /** 目标 pane ID(默认 'sub') */
35
35
  paneId?: string
36
36
  /** 初始配置 */
@@ -55,7 +55,7 @@ function getMACDStateKey(host: PluginHost | null, paneId: string): string | null
55
55
  * 创建 MACD 渲染器插件
56
56
  * 从 StateStore 读取 MACD 状态,不再内联计算
57
57
  */
58
- export function createMACDRendererPlugin(options: MACDRendererOptions = {}): RendererPluginWithHost {
58
+ function createMACDRendererPlugin(options: MACDRendererOptions = {}): RendererPluginWithHost {
59
59
  const { paneId = 'sub', config: initialConfig = {} } = options
60
60
 
61
61
  let pluginHost: PluginHost | null = null
@@ -416,28 +416,11 @@ function compositeMacdWebGL(ctx: CanvasRenderingContext2D, context: RenderContex
416
416
  surface.compositeTo(ctx)
417
417
  }
418
418
 
419
- /**
420
- * 计算指定索引处的 MACD 值(供图例使用)
421
- * 使用 calculators.ts 中的计算函数
422
- */
423
- export function calcMACDAtIndex(
424
- data: KLineData[],
425
- index: number,
426
- fastPeriod: number = 12,
427
- slowPeriod: number = 26,
428
- signalPeriod: number = 9
429
- ): { dif: number; dea: number; macd: number } | null {
430
- if (index < slowPeriod || index >= data.length) return null
431
-
432
- const macdData = calcMACDData(data, fastPeriod, slowPeriod, signalPeriod)
433
- return macdData[index] ?? null
434
- }
435
-
436
419
  /**
437
420
  * 获取 MACD 标题信息(供 paneTitle 使用)
438
421
  * 从 pluginHost 获取已计算好的数据,避免重复计算
439
422
  */
440
- export function getMACDTitleInfo(
423
+ function getMACDTitleInfo(
441
424
  _data: KLineData[],
442
425
  index: number | null,
443
426
  params: Record<string, number | boolean | string>,