@363045841yyt/klinechart 0.7.1 → 0.7.3-alpha.1

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 (235) hide show
  1. package/README.md +10 -6
  2. package/dist/components/DrawingStyleToolbar.vue.d.ts +28 -0
  3. package/dist/components/DrawingStyleToolbar.vue.d.ts.map +1 -0
  4. package/dist/{src/components → components}/IndicatorParams.vue.d.ts +3 -3
  5. package/dist/components/IndicatorParams.vue.d.ts.map +1 -0
  6. package/dist/{src/components → components}/IndicatorSelector.vue.d.ts +4 -4
  7. package/dist/components/IndicatorSelector.vue.d.ts.map +1 -0
  8. package/dist/components/KLineChart.vue.d.ts +63 -0
  9. package/dist/components/KLineChart.vue.d.ts.map +1 -0
  10. package/dist/components/KLineTooltip.vue.d.ts +30 -0
  11. package/dist/components/KLineTooltip.vue.d.ts.map +1 -0
  12. package/dist/{src/components → components}/LeftToolbar.vue.d.ts +3 -2
  13. package/dist/components/LeftToolbar.vue.d.ts.map +1 -0
  14. package/dist/components/MarkerTooltip.vue.d.ts +26 -0
  15. package/dist/components/MarkerTooltip.vue.d.ts.map +1 -0
  16. package/dist/components/index.d.ts +8 -0
  17. package/dist/components/index.d.ts.map +1 -0
  18. package/dist/{src/composables → composables}/useFullscreenTeleportTarget.d.ts +1 -0
  19. package/dist/composables/useFullscreenTeleportTarget.d.ts.map +1 -0
  20. package/dist/{src/debug → debug}/canvasProfiler.d.ts +1 -0
  21. package/dist/debug/canvasProfiler.d.ts.map +1 -0
  22. package/dist/index.cjs +2 -49
  23. package/dist/index.d.cts +124 -0
  24. package/dist/index.d.ts +124 -2
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +1390 -23809
  27. package/dist/klinechart.css +1 -1
  28. package/dist/version.d.ts +3 -0
  29. package/dist/version.d.ts.map +1 -0
  30. package/package.json +49 -85
  31. package/src/__tests__/_mockController.ts +192 -0
  32. package/src/__tests__/contract.test.ts +132 -0
  33. package/src/components/DrawingStyleToolbar.vue +199 -0
  34. package/src/components/IndicatorParams.vue +570 -0
  35. package/src/components/IndicatorSelector.vue +1042 -0
  36. package/src/components/KLineChart.vue +1570 -0
  37. package/src/components/KLineTooltip.vue +200 -0
  38. package/src/components/LeftToolbar.vue +844 -0
  39. package/src/components/MarkerTooltip.vue +155 -0
  40. package/src/components/index.ts +7 -0
  41. package/src/composables/useFullscreenTeleportTarget.ts +18 -0
  42. package/src/debug/canvasProfiler.ts +296 -0
  43. package/src/index.ts +402 -0
  44. package/src/version.ts +3 -0
  45. package/dist/favicon.ico +0 -0
  46. package/dist/mock-stock-data.json +0 -1
  47. package/dist/schema-CzmPW09E.cjs +0 -1
  48. package/dist/schema-DBMGp6Af.js +0 -437
  49. package/dist/src/App.vue.d.ts +0 -4
  50. package/dist/src/api/data/baostock.d.ts +0 -90
  51. package/dist/src/api/data/baostock.integration.test.d.ts +0 -1
  52. package/dist/src/api/data/index.d.ts +0 -26
  53. package/dist/src/api/data/kLine.d.ts +0 -11
  54. package/dist/src/api/data/types.d.ts +0 -33
  55. package/dist/src/api/data/unified.d.ts +0 -37
  56. package/dist/src/components/DrawingStyleToolbar.vue.d.ts +0 -12
  57. package/dist/src/components/KLineChart.vue.d.ts +0 -100
  58. package/dist/src/components/KLineTooltip.vue.d.ts +0 -17
  59. package/dist/src/components/MarkerTooltip.vue.d.ts +0 -13
  60. package/dist/src/components/index.d.ts +0 -2
  61. package/dist/src/config/chartSettings.d.ts +0 -69
  62. package/dist/src/core/chart-store.d.ts +0 -74
  63. package/dist/src/core/chart.d.ts +0 -617
  64. package/dist/src/core/controller/interaction.d.ts +0 -167
  65. package/dist/src/core/controller/markerInteraction.d.ts +0 -28
  66. package/dist/src/core/controller/pinchTracker.d.ts +0 -18
  67. package/dist/src/core/controller/tooltipPosition.d.ts +0 -21
  68. package/dist/src/core/draw/pixelAlign.d.ts +0 -114
  69. package/dist/src/core/drawing/index.d.ts +0 -47
  70. package/dist/src/core/drawing/interaction.d.ts +0 -75
  71. package/dist/src/core/drawing/plugin.d.ts +0 -27
  72. package/dist/src/core/indicators/atrState.d.ts +0 -16
  73. package/dist/src/core/indicators/bollState.d.ts +0 -34
  74. package/dist/src/core/indicators/calculators.d.ts +0 -465
  75. package/dist/src/core/indicators/cciState.d.ts +0 -15
  76. package/dist/src/core/indicators/chaikinVolState.d.ts +0 -18
  77. package/dist/src/core/indicators/cmfState.d.ts +0 -16
  78. package/dist/src/core/indicators/demaState.d.ts +0 -16
  79. package/dist/src/core/indicators/donchianState.d.ts +0 -23
  80. package/dist/src/core/indicators/eneState.d.ts +0 -30
  81. package/dist/src/core/indicators/expmaState.d.ts +0 -30
  82. package/dist/src/core/indicators/fastkState.d.ts +0 -15
  83. package/dist/src/core/indicators/fibState.d.ts +0 -26
  84. package/dist/src/core/indicators/hmaState.d.ts +0 -16
  85. package/dist/src/core/indicators/hvState.d.ts +0 -18
  86. package/dist/src/core/indicators/ichimokuState.d.ts +0 -44
  87. package/dist/src/core/indicators/indicator.worker.d.ts +0 -5
  88. package/dist/src/core/indicators/indicatorDefinitionRegistry.d.ts +0 -30
  89. package/dist/src/core/indicators/indicatorMetadata.d.ts +0 -81
  90. package/dist/src/core/indicators/indicatorRegistry.d.ts +0 -57
  91. package/dist/src/core/indicators/indicatorRuntime.d.ts +0 -126
  92. package/dist/src/core/indicators/kamaState.d.ts +0 -20
  93. package/dist/src/core/indicators/keltnerState.d.ts +0 -27
  94. package/dist/src/core/indicators/kstState.d.ts +0 -21
  95. package/dist/src/core/indicators/maState.d.ts +0 -26
  96. package/dist/src/core/indicators/macdState.d.ts +0 -58
  97. package/dist/src/core/indicators/mfiState.d.ts +0 -16
  98. package/dist/src/core/indicators/momState.d.ts +0 -15
  99. package/dist/src/core/indicators/obvState.d.ts +0 -14
  100. package/dist/src/core/indicators/parkinsonState.d.ts +0 -18
  101. package/dist/src/core/indicators/pivotState.d.ts +0 -29
  102. package/dist/src/core/indicators/pvtState.d.ts +0 -14
  103. package/dist/src/core/indicators/rocState.d.ts +0 -16
  104. package/dist/src/core/indicators/rsiState.d.ts +0 -43
  105. package/dist/src/core/indicators/sarState.d.ts +0 -26
  106. package/dist/src/core/indicators/scheduler.d.ts +0 -262
  107. package/dist/src/core/indicators/soa.d.ts +0 -115
  108. package/dist/src/core/indicators/stateComposer.d.ts +0 -146
  109. package/dist/src/core/indicators/stochState.d.ts +0 -18
  110. package/dist/src/core/indicators/structureState.d.ts +0 -43
  111. package/dist/src/core/indicators/supertrendState.d.ts +0 -22
  112. package/dist/src/core/indicators/temaState.d.ts +0 -16
  113. package/dist/src/core/indicators/trixState.d.ts +0 -20
  114. package/dist/src/core/indicators/vmaState.d.ts +0 -16
  115. package/dist/src/core/indicators/volumeProfileState.d.ts +0 -34
  116. package/dist/src/core/indicators/vwapState.d.ts +0 -16
  117. package/dist/src/core/indicators/wmaState.d.ts +0 -16
  118. package/dist/src/core/indicators/wmsrState.d.ts +0 -15
  119. package/dist/src/core/indicators/workerProtocol.d.ts +0 -496
  120. package/dist/src/core/indicators/zonesState.d.ts +0 -26
  121. package/dist/src/core/layout/pane.d.ts +0 -103
  122. package/dist/src/core/marker/registry.d.ts +0 -174
  123. package/dist/src/core/paneRenderer.d.ts +0 -45
  124. package/dist/src/core/renderers/Indicator/atr.d.ts +0 -17
  125. package/dist/src/core/renderers/Indicator/boll.d.ts +0 -2
  126. package/dist/src/core/renderers/Indicator/cci.d.ts +0 -22
  127. package/dist/src/core/renderers/Indicator/chaikinVol.d.ts +0 -4
  128. package/dist/src/core/renderers/Indicator/cmf.d.ts +0 -4
  129. package/dist/src/core/renderers/Indicator/dema.d.ts +0 -5
  130. package/dist/src/core/renderers/Indicator/donchian.d.ts +0 -5
  131. package/dist/src/core/renderers/Indicator/ene.d.ts +0 -2
  132. package/dist/src/core/renderers/Indicator/expma.d.ts +0 -2
  133. package/dist/src/core/renderers/Indicator/fastk.d.ts +0 -22
  134. package/dist/src/core/renderers/Indicator/fib.d.ts +0 -4
  135. package/dist/src/core/renderers/Indicator/hma.d.ts +0 -5
  136. package/dist/src/core/renderers/Indicator/hv.d.ts +0 -4
  137. package/dist/src/core/renderers/Indicator/ichimoku.d.ts +0 -5
  138. package/dist/src/core/renderers/Indicator/index.d.ts +0 -59
  139. package/dist/src/core/renderers/Indicator/indicatorData.d.ts +0 -13
  140. package/dist/src/core/renderers/Indicator/kama.d.ts +0 -5
  141. package/dist/src/core/renderers/Indicator/keltner.d.ts +0 -5
  142. package/dist/src/core/renderers/Indicator/kst.d.ts +0 -22
  143. package/dist/src/core/renderers/Indicator/ma.d.ts +0 -3
  144. package/dist/src/core/renderers/Indicator/macd.d.ts +0 -50
  145. package/dist/src/core/renderers/Indicator/macdLegend.d.ts +0 -12
  146. package/dist/src/core/renderers/Indicator/mainIndicatorLegend.d.ts +0 -10
  147. package/dist/src/core/renderers/Indicator/mfi.d.ts +0 -4
  148. package/dist/src/core/renderers/Indicator/mom.d.ts +0 -22
  149. package/dist/src/core/renderers/Indicator/obv.d.ts +0 -4
  150. package/dist/src/core/renderers/Indicator/parkinson.d.ts +0 -4
  151. package/dist/src/core/renderers/Indicator/pivot.d.ts +0 -4
  152. package/dist/src/core/renderers/Indicator/pvt.d.ts +0 -4
  153. package/dist/src/core/renderers/Indicator/roc.d.ts +0 -5
  154. package/dist/src/core/renderers/Indicator/rsi.d.ts +0 -33
  155. package/dist/src/core/renderers/Indicator/sar.d.ts +0 -5
  156. package/dist/src/core/renderers/Indicator/scale/atr_scale.d.ts +0 -11
  157. package/dist/src/core/renderers/Indicator/scale/cci_scale.d.ts +0 -11
  158. package/dist/src/core/renderers/Indicator/scale/fastk_scale.d.ts +0 -11
  159. package/dist/src/core/renderers/Indicator/scale/indicator_scale.d.ts +0 -38
  160. package/dist/src/core/renderers/Indicator/scale/kst_scale.d.ts +0 -11
  161. package/dist/src/core/renderers/Indicator/scale/macd_scale.d.ts +0 -14
  162. package/dist/src/core/renderers/Indicator/scale/mom_scale.d.ts +0 -11
  163. package/dist/src/core/renderers/Indicator/scale/rsi_scale.d.ts +0 -11
  164. package/dist/src/core/renderers/Indicator/scale/stoch_scale.d.ts +0 -11
  165. package/dist/src/core/renderers/Indicator/scale/volume_scale.d.ts +0 -14
  166. package/dist/src/core/renderers/Indicator/scale/wmsr_scale.d.ts +0 -11
  167. package/dist/src/core/renderers/Indicator/stoch.d.ts +0 -22
  168. package/dist/src/core/renderers/Indicator/structure.d.ts +0 -4
  169. package/dist/src/core/renderers/Indicator/subPaneConfig.d.ts +0 -9
  170. package/dist/src/core/renderers/Indicator/supertrend.d.ts +0 -5
  171. package/dist/src/core/renderers/Indicator/tema.d.ts +0 -5
  172. package/dist/src/core/renderers/Indicator/trix.d.ts +0 -5
  173. package/dist/src/core/renderers/Indicator/vma.d.ts +0 -4
  174. package/dist/src/core/renderers/Indicator/volumeProfile.d.ts +0 -4
  175. package/dist/src/core/renderers/Indicator/vwap.d.ts +0 -4
  176. package/dist/src/core/renderers/Indicator/wma.d.ts +0 -5
  177. package/dist/src/core/renderers/Indicator/wmsr.d.ts +0 -22
  178. package/dist/src/core/renderers/Indicator/zones.d.ts +0 -4
  179. package/dist/src/core/renderers/candle.d.ts +0 -21
  180. package/dist/src/core/renderers/crosshair.d.ts +0 -17
  181. package/dist/src/core/renderers/customMarkers.d.ts +0 -6
  182. package/dist/src/core/renderers/extremaMarkers.d.ts +0 -5
  183. package/dist/src/core/renderers/gridLines.d.ts +0 -7
  184. package/dist/src/core/renderers/lastPrice.d.ts +0 -9
  185. package/dist/src/core/renderers/paneTitle.d.ts +0 -40
  186. package/dist/src/core/renderers/subVolume.d.ts +0 -13
  187. package/dist/src/core/renderers/timeAxis.d.ts +0 -14
  188. package/dist/src/core/renderers/webgl/candleSurface.d.ts +0 -80
  189. package/dist/src/core/renderers/webgl/sharedWebGLSurface.d.ts +0 -33
  190. package/dist/src/core/renderers/yAxis.d.ts +0 -14
  191. package/dist/src/core/scale/logFormula.d.ts +0 -66
  192. package/dist/src/core/scale/price.d.ts +0 -11
  193. package/dist/src/core/scale/priceScale.d.ts +0 -87
  194. package/dist/src/core/subPaneManager.d.ts +0 -22
  195. package/dist/src/core/theme/colors.d.ts +0 -222
  196. package/dist/src/core/theme/fonts.d.ts +0 -12
  197. package/dist/src/core/utils/klineConfig.d.ts +0 -28
  198. package/dist/src/core/utils/tickCount.d.ts +0 -8
  199. package/dist/src/core/utils/tickPosition.d.ts +0 -24
  200. package/dist/src/core/utils/zoom.d.ts +0 -30
  201. package/dist/src/core/viewport/viewport.d.ts +0 -31
  202. package/dist/src/index.d.ts +0 -8
  203. package/dist/src/main.d.ts +0 -0
  204. package/dist/src/plugin/ConfigManager.d.ts +0 -31
  205. package/dist/src/plugin/EventBus.d.ts +0 -34
  206. package/dist/src/plugin/HookSystem.d.ts +0 -28
  207. package/dist/src/plugin/PluginHost.d.ts +0 -57
  208. package/dist/src/plugin/PluginRegistry.d.ts +0 -40
  209. package/dist/src/plugin/StateStore.d.ts +0 -37
  210. package/dist/src/plugin/index.d.ts +0 -11
  211. package/dist/src/plugin/rendererPluginManager.d.ts +0 -77
  212. package/dist/src/plugin/stateKeys.d.ts +0 -6
  213. package/dist/src/plugin/types.d.ts +0 -445
  214. package/dist/src/semantic/controller.d.ts +0 -35
  215. package/dist/src/semantic/drawShape.d.ts +0 -14
  216. package/dist/src/semantic/index.d.ts +0 -8
  217. package/dist/src/semantic/types.d.ts +0 -298
  218. package/dist/src/semantic/validator.d.ts +0 -43
  219. package/dist/src/test-setup.d.ts +0 -6
  220. package/dist/src/types/kLine.d.ts +0 -3
  221. package/dist/src/types/price.d.ts +0 -31
  222. package/dist/src/types/volumePrice.d.ts +0 -26
  223. package/dist/src/utils/cache.d.ts +0 -33
  224. package/dist/src/utils/dateFormat.d.ts +0 -83
  225. package/dist/src/utils/http.d.ts +0 -14
  226. package/dist/src/utils/kLineDraw/MA.d.ts +0 -7
  227. package/dist/src/utils/kLineDraw/axis.d.ts +0 -150
  228. package/dist/src/utils/kLineDraw/grid.d.ts +0 -30
  229. package/dist/src/utils/kLineDraw/kLine.d.ts +0 -15
  230. package/dist/src/utils/kline/format.d.ts +0 -11
  231. package/dist/src/utils/kline/viewport.d.ts +0 -10
  232. package/dist/src/utils/logger.d.ts +0 -5
  233. package/dist/src/utils/mock/genRandomPriceData.d.ts +0 -3
  234. package/dist/src/utils/priceToY.d.ts +0 -7
  235. package/dist/src/utils/volumePrice.d.ts +0 -54
@@ -1,57 +0,0 @@
1
- import { Plugin, PluginConfig, PluginHost, PluginState, BaseIndicatorState, PluginLogger, HookCallOptions } from './types';
2
- export declare class PluginHostImpl implements PluginHost {
3
- private registry;
4
- private eventBus;
5
- private hookSystem;
6
- private configManager;
7
- private stateStore;
8
- private services;
9
- private isDestroyed;
10
- private logger;
11
- constructor(logger?: PluginLogger);
12
- readonly events: {
13
- on: <T = unknown>(event: string, handler: (data: T) => void) => void;
14
- off: <T = unknown>(event: string, handler: (data: T) => void) => void;
15
- emit: <T = unknown>(event: string, data: T) => void;
16
- once: <T = unknown>(event: string, handler: (data: T) => void) => void;
17
- };
18
- readonly hooks: {
19
- tap: <T = unknown, R = unknown>(hookName: string, fn: (context: T) => R | Promise<R>, priority?: number) => void;
20
- untap: (hookName: string, fn: (context: unknown) => unknown) => void;
21
- call: <T = unknown, R = unknown>(hookName: string, context: T, options?: HookCallOptions) => Promise<R[]>;
22
- callSync: <T = unknown, R = unknown>(hookName: string, context: T, options?: HookCallOptions) => R[];
23
- };
24
- getConfig<K = unknown>(pluginName: string, key: string, defaultValue?: K): K;
25
- setConfig(pluginName: string, key: string, value: unknown): void;
26
- getPlugin<T extends Plugin = Plugin>(name: string): T | undefined;
27
- log(level: 'info' | 'warn' | 'error', message: string, ...args: unknown[]): void;
28
- setSharedState<T extends BaseIndicatorState>(namespace: string, state: T, ownerId?: string): void;
29
- getSharedState<T extends BaseIndicatorState>(namespace: string): T | undefined;
30
- clearSharedState(namespace: string): void;
31
- registerStateOwner(ownerId: string, namespaces: string[]): void;
32
- clearByOwner(ownerId: string): void;
33
- registerService(name: string, service: unknown): void;
34
- getService<T = unknown>(name: string): T | undefined;
35
- /**
36
- * 安装插件
37
- */
38
- use(plugin: Plugin, config?: PluginConfig): Promise<void>;
39
- /**
40
- * 移除插件
41
- */
42
- remove(name: string): Promise<void>;
43
- /**
44
- * 获取所有插件
45
- */
46
- getPlugins(): import('./types').PluginDescriptor[];
47
- /**
48
- * 获取插件状态
49
- */
50
- getState(name: string): PluginState | undefined;
51
- /**
52
- * 销毁宿主
53
- */
54
- destroy(): Promise<void>;
55
- private ensureNotDestroyed;
56
- }
57
- export declare function createPluginHost(logger?: PluginLogger): PluginHostImpl;
@@ -1,40 +0,0 @@
1
- import { Plugin, PluginDescriptor, PluginState } from './types';
2
- export declare class PluginRegistry {
3
- private plugins;
4
- /**
5
- * 注册插件
6
- */
7
- register(plugin: Plugin, config?: Record<string, unknown>): PluginDescriptor;
8
- /**
9
- * 注销插件
10
- */
11
- unregister(name: string): boolean;
12
- /**
13
- * 获取插件描述符
14
- */
15
- get(name: string): PluginDescriptor | undefined;
16
- /**
17
- * 获取插件实例
18
- */
19
- getPlugin<T extends Plugin = Plugin>(name: string): T | undefined;
20
- /**
21
- * 获取所有插件
22
- */
23
- getAll(): PluginDescriptor[];
24
- /**
25
- * 获取所有已启用的插件
26
- */
27
- getEnabled(): PluginDescriptor[];
28
- /**
29
- * 更新插件状态
30
- */
31
- updateState(name: string, state: PluginState, error?: Error): void;
32
- /**
33
- * 检查插件是否存在
34
- */
35
- has(name: string): boolean;
36
- /**
37
- * 清除所有插件
38
- */
39
- clear(): void;
40
- }
@@ -1,37 +0,0 @@
1
- import { BaseIndicatorState } from './types';
2
- export declare class StateStore {
3
- private states;
4
- private ownerNamespaces;
5
- /**
6
- * 设置状态
7
- * @param namespace 状态命名空间
8
- * @param state 状态值
9
- * @param ownerId 可选的拥有者 ID(用于冲突检测)
10
- */
11
- setState<T extends BaseIndicatorState>(namespace: string, state: T, ownerId?: string): void;
12
- /**
13
- * 获取状态
14
- * @param namespace 状态命名空间
15
- */
16
- getState<T extends BaseIndicatorState>(namespace: string): T | undefined;
17
- /**
18
- * 清除指定命名空间的状态
19
- * @param namespace 状态命名空间
20
- */
21
- clearState(namespace: string): void;
22
- /**
23
- * 注册状态拥有者
24
- * @param ownerId 拥有者 ID(通常是渲染器名称)
25
- * @param namespaces 声明的命名空间列表
26
- */
27
- registerStateOwner(ownerId: string, namespaces: string[]): void;
28
- /**
29
- * 按拥有者清除所有状态
30
- * @param ownerId 拥有者 ID
31
- */
32
- clearByOwner(ownerId: string): void;
33
- /**
34
- * 清空所有状态
35
- */
36
- clear(): void;
37
- }
@@ -1,11 +0,0 @@
1
- /**
2
- * 插件系统入口
3
- */
4
- export * from './types';
5
- export { PluginRegistry } from './PluginRegistry';
6
- export { PluginHostImpl, createPluginHost } from './PluginHost';
7
- export { EventBus } from './EventBus';
8
- export { HookSystem } from './HookSystem';
9
- export { ConfigManager } from './ConfigManager';
10
- export { RendererPluginManager } from './rendererPluginManager';
11
- export type { RendererErrorEvent } from './rendererPluginManager';
@@ -1,77 +0,0 @@
1
- import { RendererPlugin, RenderContext, PaneInfo, RendererPluginWithHost, PluginHost } from './types';
2
- import { UpdateLevel } from '../core/layout/pane';
3
- /** 渲染器错误事件(裁剪后,不含大数据) */
4
- export interface RendererErrorEvent {
5
- name: string;
6
- error: {
7
- message: string;
8
- stack?: string;
9
- };
10
- paneId: string;
11
- timestamp: number;
12
- }
13
- /**
14
- * 渲染器插件管理器
15
- *
16
- * 启用状态优先级:
17
- * 1. setEnabled() 运行时设置的状态(enabledState 中存在)
18
- * 2. 插件初始 enabled 字段
19
- * 3. 默认启用(enabled !== false)
20
- */
21
- export declare class RendererPluginManager {
22
- private plugins;
23
- private pluginHost;
24
- private enabledState;
25
- private groupCache;
26
- private mergedCache;
27
- private knownPaneIds;
28
- private cacheInvalid;
29
- private onInvalidate;
30
- /** 设置重绘回调(由 Chart 注入) */
31
- setInvalidateCallback(cb: () => void): void;
32
- /** 设置 PluginHost(用于支持 RendererPluginWithHost) */
33
- setPluginHost(host: PluginHost): void;
34
- /** 添加已知的 paneId */
35
- addKnownPaneId(paneId: string): void;
36
- /** 移除 paneId */
37
- removeKnownPaneId(paneId: string): void;
38
- /** 覆盖已知 paneId 集合 */
39
- setKnownPaneIds(paneIds: string[]): void;
40
- /** 注册渲染器插件 */
41
- register(plugin: RendererPlugin | RendererPluginWithHost): void;
42
- /** 移除渲染器插件 */
43
- unregister(name: string): void;
44
- /** 清空所有插件 */
45
- clear(): void;
46
- /**
47
- * 归并两个已排序数组 O(n)
48
- * 优先级相同时,pane 专属渲染器(a)先于 global 渲染器(b)
49
- */
50
- private mergeSorted;
51
- /** 重建缓存(统一管理所有缓存逻辑) */
52
- private rebuildCache;
53
- /** 判断渲染器是否启用 */
54
- private isRendererEnabled;
55
- /** 获取指定 pane 的合并渲染器(包含 system 渲染器) */
56
- private getMergedRenderers;
57
- /** 获取指定 pane 的渲染器(已缓存,无穿透) */
58
- getRenderers(paneId: string): RendererPlugin[];
59
- /** 渲染指定 pane(带错误隔离,支持按 UpdateLevel 过滤) */
60
- render(paneId: string, context: RenderContext, level?: UpdateLevel): RendererErrorEvent[];
61
- /** 渲染指定名称的插件(带错误隔离,用于系统渲染器) */
62
- renderPlugin(name: string, context: RenderContext): RendererErrorEvent[];
63
- /** 启用/禁用渲染器(修改独立状态,不影响原始插件对象) */
64
- setEnabled(name: string, enabled: boolean): void;
65
- /** 更新配置(自动触发重绘) */
66
- updateConfig(name: string, config: Record<string, unknown>): boolean;
67
- /** 获取所有渲染器插件 */
68
- getAllPlugins(): RendererPlugin[];
69
- /** 获取指定渲染器 */
70
- getPlugin<T extends RendererPlugin = RendererPlugin>(name: string): T | undefined;
71
- notifyDataUpdate(data: unknown[], range: {
72
- start: number;
73
- end: number;
74
- }): void;
75
- /** 通知尺寸变化 */
76
- notifyResize(paneId: string, pane: PaneInfo): void;
77
- }
@@ -1,6 +0,0 @@
1
- /**
2
- * 状态命名空间工厂函数
3
- * 用于生成渲染器间共享状态的键名
4
- */
5
- /** 创建指标状态键 */
6
- export declare const createIndicatorStateKey: (type: string, paneId: string) => `indicator:${string}:${string}`;
@@ -1,445 +0,0 @@
1
- import { KLineData } from '../types/price';
2
- import { CandleWebGLSurface, LineWebGLSurface } from '../core/renderers/webgl/candleSurface';
3
- /** 插件生命周期状态 */
4
- export declare enum PluginState {
5
- Registered = "registered",
6
- Installed = "installed",
7
- Error = "error"
8
- }
9
- /** 插件配置 */
10
- export interface PluginConfig {
11
- enabled?: boolean;
12
- priority?: number;
13
- [key: string]: unknown;
14
- }
15
- /** 插件元信息 */
16
- export interface PluginMeta {
17
- name: string;
18
- version: string;
19
- description?: string;
20
- author?: string;
21
- }
22
- /** 插件接口 */
23
- export interface Plugin extends PluginMeta {
24
- /** 安装插件 */
25
- install(host: PluginHost, config?: Record<string, unknown>): void | Promise<void>;
26
- /** 卸载插件 */
27
- uninstall?(): void | Promise<void>;
28
- }
29
- /** 插件描述符(注册时使用) */
30
- export interface PluginDescriptor {
31
- plugin: Plugin;
32
- config?: PluginConfig;
33
- state: PluginState;
34
- error?: Error;
35
- }
36
- /** Hook 函数类型 */
37
- export type HookFn<T = unknown, R = unknown> = (context: T) => R | Promise<R>;
38
- /** Hook 调用选项 */
39
- export interface HookCallOptions {
40
- throwOnError?: boolean;
41
- }
42
- /** Hook 描述符 */
43
- export interface HookDescriptor<T = unknown, R = unknown> {
44
- name: string;
45
- fn: HookFn<T, R>;
46
- priority: number;
47
- }
48
- /** 事件处理器 */
49
- export type EventHandler<T = unknown> = (data: T) => void;
50
- /** 插件日志器 */
51
- export interface PluginLogger {
52
- info(message?: unknown, ...optionalParams: unknown[]): void;
53
- warn(message?: unknown, ...optionalParams: unknown[]): void;
54
- error(message?: unknown, ...optionalParams: unknown[]): void;
55
- }
56
- /** 插件宿主接口(暴露给插件使用的 API) */
57
- export interface PluginHost {
58
- /** 事件总线 */
59
- readonly events: {
60
- on<T = unknown>(event: string, handler: EventHandler<T>): void;
61
- off<T = unknown>(event: string, handler: EventHandler<T>): void;
62
- emit<T = unknown>(event: string, data: T): void;
63
- once<T = unknown>(event: string, handler: EventHandler<T>): void;
64
- };
65
- /** Hook 系统 */
66
- readonly hooks: {
67
- tap<T = unknown, R = unknown>(hookName: string, fn: HookFn<T, R>, priority?: number): void;
68
- untap(hookName: string, fn: HookFn): void;
69
- call<T = unknown, R = unknown>(hookName: string, context: T, options?: HookCallOptions): Promise<R[]>;
70
- callSync<T = unknown, R = unknown>(hookName: string, context: T, options?: HookCallOptions): R[];
71
- };
72
- /** 获取配置 */
73
- getConfig<K = unknown>(pluginName: string, key: string, defaultValue?: K): K;
74
- /** 设置配置 */
75
- setConfig(pluginName: string, key: string, value: unknown): void;
76
- /** 获取其他插件 */
77
- getPlugin<T extends Plugin = Plugin>(name: string): T | undefined;
78
- /** 日志工具 */
79
- log(level: 'info' | 'warn' | 'error', message: string, ...args: unknown[]): void;
80
- /** 设置共享状态 */
81
- setSharedState<T extends BaseIndicatorState>(namespace: string, state: T, ownerId?: string): void;
82
- /** 获取共享状态 */
83
- getSharedState<T extends BaseIndicatorState>(namespace: string): T | undefined;
84
- /** 清除共享状态 */
85
- clearSharedState(namespace: string): void;
86
- /** 注册状态拥有者 */
87
- registerStateOwner(ownerId: string, namespaces: string[]): void;
88
- /** 按拥有者清除状态 */
89
- clearByOwner(ownerId: string): void;
90
- /** 注册服务 */
91
- registerService(name: string, service: unknown): void;
92
- /** 获取已注册的服务 */
93
- getService<T = unknown>(name: string): T | undefined;
94
- }
95
- /** Pane 角色 */
96
- export type PaneRole = 'price' | 'indicator' | 'auxiliary';
97
- /** Pane 能力开关 */
98
- export interface PaneCapabilities {
99
- showPriceAxisTicks: boolean;
100
- showCrosshairPriceLabel: boolean;
101
- candleHitTest: boolean;
102
- supportsPriceTranslate: boolean;
103
- }
104
- /** Pane 信息接口 */
105
- export interface PaneInfo {
106
- id: string;
107
- role: PaneRole;
108
- capabilities: PaneCapabilities;
109
- top: number;
110
- height: number;
111
- yAxis: {
112
- priceToY(price: number): number;
113
- yToPrice(y: number): number;
114
- getPaddingTop(): number;
115
- getPaddingBottom(): number;
116
- getPriceOffset(): number;
117
- getDisplayRange(baseRange?: {
118
- maxPrice: number;
119
- minPrice: number;
120
- }): {
121
- maxPrice: number;
122
- minPrice: number;
123
- };
124
- getScaleType(): 'linear' | 'log';
125
- };
126
- priceRange: {
127
- maxPrice: number;
128
- minPrice: number;
129
- };
130
- }
131
- /**
132
- * 创建 PaneInfo 的只读包装
133
- *
134
- * 设计决策:
135
- * - 使用 Readonly<T> 类型标注而非 Object.freeze,避免热路径上的运行时开销
136
- * - yAxis 方法通过闭包包装,隔离原始函数引用
137
- * - 依赖团队代码规范约束插件行为,而非运行时强制
138
- */
139
- export declare function wrapPaneInfo(pane: {
140
- id: string;
141
- role: PaneRole;
142
- capabilities: PaneCapabilities;
143
- top: number;
144
- height: number;
145
- yAxis: PaneInfo['yAxis'];
146
- priceRange: PaneInfo['priceRange'];
147
- }): Readonly<PaneInfo>;
148
- /** Y轴标签(价格标签) */
149
- export interface YAxisLabel {
150
- /** 关联的数据索引 */
151
- dataIndex: number;
152
- /** 价格值 */
153
- price: number;
154
- /** 标签在轴上的Y坐标(世界坐标,相对pane) */
155
- y: number;
156
- /** 标签类型,用于区分不同渲染外观 */
157
- type?: 'lastPrice' | 'extrema' | 'anchor' | string;
158
- /** 标签样式覆盖 */
159
- style?: {
160
- bgColor?: string;
161
- borderColor?: string;
162
- textColor?: string;
163
- };
164
- }
165
- /** X轴标签(时间标签) */
166
- export interface XAxisLabel {
167
- /** 关联的数据索引 */
168
- dataIndex: number;
169
- /** 时间戳(毫秒) */
170
- timestamp: number;
171
- /** 标签在轴上的X坐标(世界坐标,未减去scrollLeft) */
172
- x: number;
173
- /** 标签样式覆盖 */
174
- style?: {
175
- bgColor?: string;
176
- textColor?: string;
177
- };
178
- }
179
- /** Y轴范围带(半透明填充区域) */
180
- export interface YAxisRange {
181
- /** 范围上界Y坐标(相对pane,canvas方向:小值=上方) */
182
- topY: number;
183
- /** 范围下界Y坐标(相对pane,canvas方向:大值=下方) */
184
- bottomY: number;
185
- /** 填充颜色(hex 或 rgba) */
186
- color: string;
187
- /** 填充不透明度 */
188
- opacity: number;
189
- }
190
- /** X轴范围带(半透明填充区域) */
191
- export interface XAxisRange {
192
- /** 范围左界X坐标(世界坐标,未减去scrollLeft) */
193
- leftX: number;
194
- /** 范围右界X坐标(世界坐标,未减去scrollLeft) */
195
- rightX: number;
196
- /** 填充颜色(hex 或 rgba) */
197
- color: string;
198
- /** 填充不透明度 */
199
- opacity: number;
200
- }
201
- /** 渲染上下文 */
202
- /** MarkerManager 接口(用于 RenderContext) */
203
- export interface MarkerManagerLike {
204
- getCustomMarkers(): unknown[];
205
- setCustomMarkerPosition(id: string, x: number, y: number, size: number, shape: string): void;
206
- }
207
- export interface RenderContext {
208
- ctx: CanvasRenderingContext2D;
209
- pane: PaneInfo;
210
- data: unknown[];
211
- range: {
212
- start: number;
213
- end: number;
214
- };
215
- scrollLeft: number;
216
- kWidth: number;
217
- kGap: number;
218
- dpr: number;
219
- paneWidth: number;
220
- kLinePositions: number[];
221
- /** 每根K线柱中心的X坐标(物理像素对齐后,逻辑像素) */
222
- kLineCenters: number[];
223
- /** 每根K线对应柱的X/宽度(物理像素对齐后,逻辑像素),供柱状图使用 */
224
- kBarRects: Array<{
225
- x: number;
226
- width: number;
227
- }>;
228
- markerManager?: MarkerManagerLike;
229
- /** 十字线指向的 K 线索引(无十字线时为 null) */
230
- crosshairIndex?: number | null;
231
- yAxisCtx?: CanvasRenderingContext2D;
232
- xAxisCtx?: CanvasRenderingContext2D;
233
- borderCtx?: CanvasRenderingContext2D;
234
- /** 覆盖层 Canvas 上下文(用于十字线、Tooltip 等动态内容) */
235
- overlayCtx?: CanvasRenderingContext2D;
236
- /** price pane 可选的 WebGL candle surface */
237
- candleWebGLSurface?: CandleWebGLSurface;
238
- /** line indicator 可选的 WebGL line surface */
239
- lineWebGLSurface?: LineWebGLSurface;
240
- /** 当前缩放级别(1 ~ zoomLevels) */
241
- zoomLevel?: number;
242
- /** 总缩放级别数 */
243
- zoomLevelCount?: number;
244
- viewport?: {
245
- scrollLeft: number;
246
- plotWidth: number;
247
- plotHeight: number;
248
- };
249
- /** 用户设置配置(渲染器只读) */
250
- settings?: import('../config/chartSettings').ChartSettings;
251
- /** 需要在Y轴上绘制的标签列表(由各类标记渲染器填充) */
252
- yAxisLabels?: YAxisLabel[];
253
- /** 需要在X轴上绘制的标签列表(由各类标记渲染器填充) */
254
- xAxisLabels?: XAxisLabel[];
255
- /** 需要在Y轴上绘制的范围带列表(由绘图渲染器填充,先于标签绘制) */
256
- yAxisRanges?: YAxisRange[];
257
- /** 需要在X轴上绘制的范围带列表(由绘图渲染器填充,先于标签绘制) */
258
- xAxisRanges?: XAxisRange[];
259
- /** 当前主题 */
260
- theme: import('../core/theme/colors').ChartTheme;
261
- }
262
- export type DrawingAnchor = {
263
- id: string;
264
- index: number;
265
- time?: number | string;
266
- price: number;
267
- };
268
- export type DrawingKind = 'trend-line' | 'ray' | 'extended-line' | 'horizontal-line' | 'horizontal-ray' | 'vertical-line' | 'cross-line' | 'info-line' | 'parallel-channel' | 'regression-channel' | 'flat-line' | 'disjoint-channel';
269
- export type DrawingStyle = {
270
- stroke?: string;
271
- strokeWidth?: number;
272
- strokeStyle?: 'solid' | 'dashed' | 'dotted';
273
- fill?: string;
274
- fillOpacity?: number;
275
- pointRadius?: number;
276
- textColor?: string;
277
- fontSize?: number;
278
- };
279
- export type DrawingObject<TParams = Record<string, unknown>> = {
280
- id: string;
281
- kind: DrawingKind;
282
- paneId: string;
283
- visible: boolean;
284
- locked?: boolean;
285
- zIndex?: number;
286
- anchors: DrawingAnchor[];
287
- params: TParams;
288
- style: DrawingStyle;
289
- };
290
- export type ScreenPoint = {
291
- x: number;
292
- y: number;
293
- };
294
- export type PointPrimitive = {
295
- kind: 'point';
296
- point: ScreenPoint;
297
- role?: 'anchor' | 'handle' | 'marker' | 'center';
298
- style?: DrawingStyle;
299
- };
300
- export type LinePrimitive = {
301
- kind: 'line';
302
- a: ScreenPoint;
303
- b: ScreenPoint;
304
- extend?: 'none' | 'left' | 'right' | 'both';
305
- showEndpoints?: boolean;
306
- style?: DrawingStyle;
307
- };
308
- export type AreaPrimitive = {
309
- kind: 'area';
310
- points: ScreenPoint[];
311
- closed: boolean;
312
- style?: DrawingStyle;
313
- };
314
- export type TextPrimitive = {
315
- kind: 'text';
316
- point: ScreenPoint;
317
- text: string;
318
- align?: 'left' | 'center' | 'right';
319
- baseline?: 'top' | 'middle' | 'bottom';
320
- style?: DrawingStyle;
321
- };
322
- export type DrawingPrimitive = PointPrimitive | LinePrimitive | AreaPrimitive | TextPrimitive;
323
- export type DrawingGeometry = {
324
- primitives: DrawingPrimitive[];
325
- bounds?: {
326
- left: number;
327
- top: number;
328
- right: number;
329
- bottom: number;
330
- };
331
- meta?: Record<string, unknown>;
332
- computedAnchors?: DrawingAnchor[];
333
- };
334
- export type DrawingComputeContext = {
335
- pane: PaneInfo;
336
- visibleData: KLineData[];
337
- seriesData: KLineData[];
338
- range: {
339
- start: number;
340
- end: number;
341
- };
342
- kLinePositions: number[];
343
- kLineCenters: number[];
344
- kBarRects: Array<{
345
- x: number;
346
- width: number;
347
- }>;
348
- kWidth: number;
349
- kGap: number;
350
- dpr: number;
351
- paneWidth: number;
352
- viewport: {
353
- scrollLeft: number;
354
- plotWidth: number;
355
- plotHeight: number;
356
- };
357
- toScreen(anchor: DrawingAnchor): ScreenPoint;
358
- };
359
- export interface DrawingDefinition<TParams = Record<string, unknown>> {
360
- kind: DrawingKind;
361
- minAnchors: number;
362
- maxAnchors: number;
363
- compute(drawing: DrawingObject<TParams>, context: DrawingComputeContext): DrawingGeometry;
364
- }
365
- /** 全局 Pane ID(渲染到所有 pane) */
366
- export declare const GLOBAL_PANE_ID: unique symbol;
367
- /** 优先级推荐范围 */
368
- export declare const RENDERER_PRIORITY: {
369
- readonly LAST_PRICE_LABEL: -25;
370
- readonly SYSTEM_YAXIS: -20;
371
- readonly SYSTEM_XAXIS: -20;
372
- readonly BACKGROUND: 0;
373
- readonly GRID: 10;
374
- /**
375
- * 指标渲染器(MACD, RSI 等)
376
- * 所有指标渲染器必须使用此优先级或 ≤30 的值
377
- */
378
- readonly INDICATOR: 30;
379
- readonly MAIN: 50;
380
- /**
381
- * 指标刻度渲染器(依赖于前方指标写入的共享状态)
382
- * 必须晚于 INDICATOR 和 MAIN,确保每次绘制时先更新指标状态再绘制刻度。
383
- */
384
- readonly INDICATOR_SCALE: 55;
385
- readonly OVERLAY: 80;
386
- readonly FOREGROUND: 100;
387
- readonly SYSTEM_BORDER: 120;
388
- readonly SYSTEM_CROSSHAIR: 150;
389
- };
390
- /** 渲染器插件接口(独立定义,不继承 Plugin) */
391
- export interface RendererPlugin {
392
- /** 唯一标识 */
393
- readonly name: string;
394
- /** 版本号 */
395
- readonly version?: string;
396
- /** 描述 */
397
- readonly description?: string;
398
- /** 调试用显示名称 */
399
- readonly debugName?: string;
400
- /** 渲染目标 pane('main' | 'sub' | GLOBAL_PANE_ID 表示所有) */
401
- paneId: string | symbol;
402
- /** 渲染优先级(数字越大越后渲染) */
403
- priority: number;
404
- /** 是否启用(仅作为初始值,运行时状态由 Manager 管理) */
405
- enabled?: boolean;
406
- /**
407
- * 是否为系统渲染器
408
- * 系统渲染器不会通过 getRenderers() 返回,只能通过 renderPlugin() 单独渲染
409
- * 用于时间轴、全局边框等需要单独控制渲染时机的场景
410
- */
411
- isSystem?: boolean;
412
- /**
413
- * 渲染器所属层,决定 UpdateLevel 过滤行为
414
- * - 'main': 低频/静态内容,随主画布一起渲染
415
- * - 'overlay': 高频/动态内容,可在 overlay-only 更新时独立重绘
416
- * 未指定时默认为 'main'(向后兼容)
417
- */
418
- layer?: 'main' | 'overlay';
419
- /** 渲染方法 */
420
- draw(context: RenderContext): void;
421
- /** 数据更新时回调 */
422
- onDataUpdate?(data: unknown[], range: {
423
- start: number;
424
- end: number;
425
- }): void;
426
- /** 容器尺寸变化时回调 */
427
- onResize?(pane: PaneInfo): void;
428
- /** 获取配置 */
429
- getConfig?(): Record<string, unknown>;
430
- /** 设置配置 */
431
- setConfig?(config: Record<string, unknown>): void;
432
- /** 卸载时清理资源 */
433
- onUninstall?(): void;
434
- }
435
- /** 带插件系统能力的渲染器(可选) */
436
- export interface RendererPluginWithHost extends RendererPlugin {
437
- /** 安装时获取 PluginHost 访问权限 */
438
- onInstall?(host: PluginHost): void;
439
- /** 声明该渲染器所拥有的状态命名空间,卸载时框架会自动清理 */
440
- getDeclaredNamespaces?(): string[];
441
- }
442
- /** 指标渲染器状态基类 */
443
- export interface BaseIndicatorState {
444
- timestamp: number;
445
- }