@363045841yyt/klinechart 0.7.0 → 0.7.3-alpha.0

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 (233) 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 +1470 -16916
  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 +52 -81
  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/LICENSE +0 -21
  46. package/dist/favicon.ico +0 -0
  47. package/dist/mock-stock-data.json +0 -1
  48. package/dist/schema-CzmPW09E.cjs +0 -1
  49. package/dist/schema-DBMGp6Af.js +0 -437
  50. package/dist/src/App.vue.d.ts +0 -4
  51. package/dist/src/api/data/baostock.d.ts +0 -90
  52. package/dist/src/api/data/baostock.integration.test.d.ts +0 -1
  53. package/dist/src/api/data/index.d.ts +0 -26
  54. package/dist/src/api/data/kLine.d.ts +0 -11
  55. package/dist/src/api/data/types.d.ts +0 -33
  56. package/dist/src/api/data/unified.d.ts +0 -37
  57. package/dist/src/components/DrawingStyleToolbar.vue.d.ts +0 -12
  58. package/dist/src/components/KLineChart.vue.d.ts +0 -100
  59. package/dist/src/components/KLineTooltip.vue.d.ts +0 -17
  60. package/dist/src/components/MarkerTooltip.vue.d.ts +0 -13
  61. package/dist/src/components/index.d.ts +0 -2
  62. package/dist/src/config/chartSettings.d.ts +0 -69
  63. package/dist/src/core/chart-store.d.ts +0 -74
  64. package/dist/src/core/chart.d.ts +0 -420
  65. package/dist/src/core/controller/interaction.d.ts +0 -167
  66. package/dist/src/core/controller/markerInteraction.d.ts +0 -28
  67. package/dist/src/core/controller/pinchTracker.d.ts +0 -18
  68. package/dist/src/core/controller/tooltipPosition.d.ts +0 -21
  69. package/dist/src/core/draw/pixelAlign.d.ts +0 -114
  70. package/dist/src/core/drawing/index.d.ts +0 -47
  71. package/dist/src/core/drawing/interaction.d.ts +0 -75
  72. package/dist/src/core/drawing/plugin.d.ts +0 -27
  73. package/dist/src/core/indicators/atrState.d.ts +0 -16
  74. package/dist/src/core/indicators/bollState.d.ts +0 -34
  75. package/dist/src/core/indicators/calculators.d.ts +0 -465
  76. package/dist/src/core/indicators/cciState.d.ts +0 -15
  77. package/dist/src/core/indicators/chaikinVolState.d.ts +0 -18
  78. package/dist/src/core/indicators/cmfState.d.ts +0 -16
  79. package/dist/src/core/indicators/demaState.d.ts +0 -16
  80. package/dist/src/core/indicators/donchianState.d.ts +0 -23
  81. package/dist/src/core/indicators/eneState.d.ts +0 -30
  82. package/dist/src/core/indicators/expmaState.d.ts +0 -30
  83. package/dist/src/core/indicators/fastkState.d.ts +0 -15
  84. package/dist/src/core/indicators/fibState.d.ts +0 -26
  85. package/dist/src/core/indicators/hmaState.d.ts +0 -16
  86. package/dist/src/core/indicators/hvState.d.ts +0 -18
  87. package/dist/src/core/indicators/ichimokuState.d.ts +0 -44
  88. package/dist/src/core/indicators/indicator.worker.d.ts +0 -5
  89. package/dist/src/core/indicators/indicatorRuntime.d.ts +0 -126
  90. package/dist/src/core/indicators/kamaState.d.ts +0 -20
  91. package/dist/src/core/indicators/keltnerState.d.ts +0 -27
  92. package/dist/src/core/indicators/kstState.d.ts +0 -21
  93. package/dist/src/core/indicators/maState.d.ts +0 -26
  94. package/dist/src/core/indicators/macdState.d.ts +0 -58
  95. package/dist/src/core/indicators/mfiState.d.ts +0 -16
  96. package/dist/src/core/indicators/momState.d.ts +0 -15
  97. package/dist/src/core/indicators/obvState.d.ts +0 -14
  98. package/dist/src/core/indicators/parkinsonState.d.ts +0 -18
  99. package/dist/src/core/indicators/pivotState.d.ts +0 -29
  100. package/dist/src/core/indicators/pvtState.d.ts +0 -14
  101. package/dist/src/core/indicators/rocState.d.ts +0 -16
  102. package/dist/src/core/indicators/rsiState.d.ts +0 -39
  103. package/dist/src/core/indicators/sarState.d.ts +0 -26
  104. package/dist/src/core/indicators/scheduler.d.ts +0 -237
  105. package/dist/src/core/indicators/soa.d.ts +0 -115
  106. package/dist/src/core/indicators/stateComposer.d.ts +0 -146
  107. package/dist/src/core/indicators/stochState.d.ts +0 -18
  108. package/dist/src/core/indicators/structureState.d.ts +0 -43
  109. package/dist/src/core/indicators/supertrendState.d.ts +0 -22
  110. package/dist/src/core/indicators/temaState.d.ts +0 -16
  111. package/dist/src/core/indicators/trixState.d.ts +0 -20
  112. package/dist/src/core/indicators/vmaState.d.ts +0 -16
  113. package/dist/src/core/indicators/volumeProfileState.d.ts +0 -34
  114. package/dist/src/core/indicators/vwapState.d.ts +0 -16
  115. package/dist/src/core/indicators/wmaState.d.ts +0 -16
  116. package/dist/src/core/indicators/wmsrState.d.ts +0 -15
  117. package/dist/src/core/indicators/workerProtocol.d.ts +0 -496
  118. package/dist/src/core/indicators/zonesState.d.ts +0 -26
  119. package/dist/src/core/layout/pane.d.ts +0 -103
  120. package/dist/src/core/marker/registry.d.ts +0 -174
  121. package/dist/src/core/paneRenderer.d.ts +0 -45
  122. package/dist/src/core/renderers/Indicator/atr.d.ts +0 -17
  123. package/dist/src/core/renderers/Indicator/boll.d.ts +0 -2
  124. package/dist/src/core/renderers/Indicator/cci.d.ts +0 -21
  125. package/dist/src/core/renderers/Indicator/chaikinVol.d.ts +0 -4
  126. package/dist/src/core/renderers/Indicator/cmf.d.ts +0 -4
  127. package/dist/src/core/renderers/Indicator/dema.d.ts +0 -5
  128. package/dist/src/core/renderers/Indicator/donchian.d.ts +0 -5
  129. package/dist/src/core/renderers/Indicator/ene.d.ts +0 -10
  130. package/dist/src/core/renderers/Indicator/expma.d.ts +0 -2
  131. package/dist/src/core/renderers/Indicator/fastk.d.ts +0 -21
  132. package/dist/src/core/renderers/Indicator/fib.d.ts +0 -4
  133. package/dist/src/core/renderers/Indicator/hma.d.ts +0 -5
  134. package/dist/src/core/renderers/Indicator/hv.d.ts +0 -4
  135. package/dist/src/core/renderers/Indicator/ichimoku.d.ts +0 -5
  136. package/dist/src/core/renderers/Indicator/index.d.ts +0 -59
  137. package/dist/src/core/renderers/Indicator/indicatorData.d.ts +0 -13
  138. package/dist/src/core/renderers/Indicator/kama.d.ts +0 -5
  139. package/dist/src/core/renderers/Indicator/keltner.d.ts +0 -5
  140. package/dist/src/core/renderers/Indicator/kst.d.ts +0 -21
  141. package/dist/src/core/renderers/Indicator/ma.d.ts +0 -3
  142. package/dist/src/core/renderers/Indicator/macd.d.ts +0 -49
  143. package/dist/src/core/renderers/Indicator/macdLegend.d.ts +0 -12
  144. package/dist/src/core/renderers/Indicator/mainIndicatorLegend.d.ts +0 -10
  145. package/dist/src/core/renderers/Indicator/mfi.d.ts +0 -4
  146. package/dist/src/core/renderers/Indicator/mom.d.ts +0 -21
  147. package/dist/src/core/renderers/Indicator/obv.d.ts +0 -4
  148. package/dist/src/core/renderers/Indicator/parkinson.d.ts +0 -4
  149. package/dist/src/core/renderers/Indicator/pivot.d.ts +0 -4
  150. package/dist/src/core/renderers/Indicator/pvt.d.ts +0 -4
  151. package/dist/src/core/renderers/Indicator/roc.d.ts +0 -5
  152. package/dist/src/core/renderers/Indicator/rsi.d.ts +0 -32
  153. package/dist/src/core/renderers/Indicator/sar.d.ts +0 -5
  154. package/dist/src/core/renderers/Indicator/scale/atr_scale.d.ts +0 -11
  155. package/dist/src/core/renderers/Indicator/scale/cci_scale.d.ts +0 -11
  156. package/dist/src/core/renderers/Indicator/scale/fastk_scale.d.ts +0 -11
  157. package/dist/src/core/renderers/Indicator/scale/indicator_scale.d.ts +0 -35
  158. package/dist/src/core/renderers/Indicator/scale/kst_scale.d.ts +0 -11
  159. package/dist/src/core/renderers/Indicator/scale/macd_scale.d.ts +0 -14
  160. package/dist/src/core/renderers/Indicator/scale/mom_scale.d.ts +0 -11
  161. package/dist/src/core/renderers/Indicator/scale/rsi_scale.d.ts +0 -11
  162. package/dist/src/core/renderers/Indicator/scale/stoch_scale.d.ts +0 -11
  163. package/dist/src/core/renderers/Indicator/scale/volume_scale.d.ts +0 -14
  164. package/dist/src/core/renderers/Indicator/scale/wmsr_scale.d.ts +0 -11
  165. package/dist/src/core/renderers/Indicator/stoch.d.ts +0 -21
  166. package/dist/src/core/renderers/Indicator/structure.d.ts +0 -4
  167. package/dist/src/core/renderers/Indicator/subPaneConfig.d.ts +0 -9
  168. package/dist/src/core/renderers/Indicator/supertrend.d.ts +0 -5
  169. package/dist/src/core/renderers/Indicator/tema.d.ts +0 -5
  170. package/dist/src/core/renderers/Indicator/trix.d.ts +0 -5
  171. package/dist/src/core/renderers/Indicator/vma.d.ts +0 -4
  172. package/dist/src/core/renderers/Indicator/volumeProfile.d.ts +0 -4
  173. package/dist/src/core/renderers/Indicator/vwap.d.ts +0 -4
  174. package/dist/src/core/renderers/Indicator/wma.d.ts +0 -5
  175. package/dist/src/core/renderers/Indicator/wmsr.d.ts +0 -21
  176. package/dist/src/core/renderers/Indicator/zones.d.ts +0 -4
  177. package/dist/src/core/renderers/candle.d.ts +0 -20
  178. package/dist/src/core/renderers/crosshair.d.ts +0 -17
  179. package/dist/src/core/renderers/customMarkers.d.ts +0 -6
  180. package/dist/src/core/renderers/extremaMarkers.d.ts +0 -5
  181. package/dist/src/core/renderers/gridLines.d.ts +0 -7
  182. package/dist/src/core/renderers/lastPrice.d.ts +0 -9
  183. package/dist/src/core/renderers/paneTitle.d.ts +0 -40
  184. package/dist/src/core/renderers/subVolume.d.ts +0 -13
  185. package/dist/src/core/renderers/timeAxis.d.ts +0 -14
  186. package/dist/src/core/renderers/webgl/candleSurface.d.ts +0 -80
  187. package/dist/src/core/renderers/webgl/sharedWebGLSurface.d.ts +0 -33
  188. package/dist/src/core/renderers/yAxis.d.ts +0 -14
  189. package/dist/src/core/scale/logFormula.d.ts +0 -66
  190. package/dist/src/core/scale/price.d.ts +0 -11
  191. package/dist/src/core/scale/priceScale.d.ts +0 -87
  192. package/dist/src/core/subPaneManager.d.ts +0 -22
  193. package/dist/src/core/theme/colors.d.ts +0 -243
  194. package/dist/src/core/theme/fonts.d.ts +0 -12
  195. package/dist/src/core/utils/klineConfig.d.ts +0 -28
  196. package/dist/src/core/utils/tickCount.d.ts +0 -8
  197. package/dist/src/core/utils/tickPosition.d.ts +0 -24
  198. package/dist/src/core/utils/zoom.d.ts +0 -30
  199. package/dist/src/core/viewport/viewport.d.ts +0 -31
  200. package/dist/src/index.d.ts +0 -8
  201. package/dist/src/main.d.ts +0 -0
  202. package/dist/src/plugin/ConfigManager.d.ts +0 -31
  203. package/dist/src/plugin/EventBus.d.ts +0 -34
  204. package/dist/src/plugin/HookSystem.d.ts +0 -28
  205. package/dist/src/plugin/PluginHost.d.ts +0 -54
  206. package/dist/src/plugin/PluginRegistry.d.ts +0 -40
  207. package/dist/src/plugin/StateStore.d.ts +0 -37
  208. package/dist/src/plugin/index.d.ts +0 -11
  209. package/dist/src/plugin/rendererPluginManager.d.ts +0 -77
  210. package/dist/src/plugin/stateKeys.d.ts +0 -6
  211. package/dist/src/plugin/types.d.ts +0 -439
  212. package/dist/src/semantic/controller.d.ts +0 -35
  213. package/dist/src/semantic/drawShape.d.ts +0 -14
  214. package/dist/src/semantic/index.d.ts +0 -8
  215. package/dist/src/semantic/types.d.ts +0 -298
  216. package/dist/src/semantic/validator.d.ts +0 -43
  217. package/dist/src/test-setup.d.ts +0 -6
  218. package/dist/src/types/kLine.d.ts +0 -3
  219. package/dist/src/types/price.d.ts +0 -31
  220. package/dist/src/types/volumePrice.d.ts +0 -26
  221. package/dist/src/utils/cache.d.ts +0 -33
  222. package/dist/src/utils/dateFormat.d.ts +0 -83
  223. package/dist/src/utils/http.d.ts +0 -14
  224. package/dist/src/utils/kLineDraw/MA.d.ts +0 -12
  225. package/dist/src/utils/kLineDraw/axis.d.ts +0 -150
  226. package/dist/src/utils/kLineDraw/grid.d.ts +0 -30
  227. package/dist/src/utils/kLineDraw/kLine.d.ts +0 -15
  228. package/dist/src/utils/kline/format.d.ts +0 -14
  229. package/dist/src/utils/kline/viewport.d.ts +0 -10
  230. package/dist/src/utils/logger.d.ts +0 -5
  231. package/dist/src/utils/mock/genRandomPriceData.d.ts +0 -3
  232. package/dist/src/utils/priceToY.d.ts +0 -7
  233. package/dist/src/utils/volumePrice.d.ts +0 -54
@@ -1,420 +0,0 @@
1
- import { KLineData } from '../types/price';
2
- import { ChartSettings } from '../config/chartSettings';
3
- import { VisibleRange, UpdateLevel } from './layout/pane';
4
- import { InteractionController } from './controller/interaction';
5
- import { PaneRenderer } from './paneRenderer';
6
- import { MarkerManager, CustomMarkerEntity } from './marker/registry';
7
- import { getPhysicalKLineConfig, calcKWidthPx } from './utils/klineConfig';
8
- import { IndicatorScheduler } from './indicators/scheduler';
9
- import { SubPaneEntry } from './subPaneManager';
10
- import { PluginHostImpl, RendererPlugin, RendererPluginWithHost, PaneRole, PaneCapabilities } from '../plugin';
11
- import { SubIndicatorType } from './renderers/Indicator';
12
- export { getPhysicalKLineConfig, calcKWidthPx };
13
- /**
14
- * 图表 DOM 元素引用
15
- * @property container 图表容器 div
16
- * @property canvasLayer Canvas 层容器 div(包含所有绘制 canvas)
17
- */
18
- /**
19
- * 图表 DOM 元素引用
20
- * @property container 图表容器 div
21
- * @property canvasLayer Canvas 层容器 div(包含所有绘制 canvas)
22
- * @property xAxisCanvas X 轴时间轴 canvas
23
- */
24
- export type ChartDom = {
25
- container: HTMLDivElement;
26
- canvasLayer: HTMLDivElement;
27
- rightAxisLayer: HTMLDivElement;
28
- xAxisCanvas: HTMLCanvasElement;
29
- };
30
- /**
31
- * Pane 面板配置
32
- * @property id Pane 标识符
33
- * @property ratio Pane 高度占比
34
- * @property visible 是否可见(默认 true)
35
- */
36
- export type PaneSpec = {
37
- id: string;
38
- ratio: number;
39
- visible?: boolean;
40
- minHeightPx?: number;
41
- role?: PaneRole;
42
- capabilities?: Partial<PaneCapabilities>;
43
- };
44
- export type PaneRendererDom = {
45
- mainCanvas: HTMLCanvasElement;
46
- overlayCanvas: HTMLCanvasElement;
47
- yAxisCanvas: HTMLCanvasElement;
48
- };
49
- export type ChartOptions = {
50
- /** K 线宽度(可选,由 zoomLevel 派生) */
51
- kWidth?: number;
52
- /** K 线间隙(可选,由 DPR 计算) */
53
- kGap?: number;
54
- yPaddingPx: number;
55
- rightAxisWidth: number;
56
- bottomAxisHeight: number;
57
- minKWidth: number;
58
- maxKWidth: number;
59
- panes: PaneSpec[];
60
- /** pane 之间的真实分隔空隙(逻辑像素) */
61
- paneGap?: number;
62
- /** 价格标签额外宽度(用于显示涨跌幅,默认 60px) */
63
- priceLabelWidth?: number;
64
- /** pane 最小高度(逻辑像素,默认 60) */
65
- defaultPaneMinHeightPx?: number;
66
- /**
67
- * 缩放级别数量(默认 10)
68
- * - 将 minKWidth ~ maxKWidth 划分为多少个离散级别
69
- * - 例如 10 表示有 10 个缩放级别(1-10)
70
- */
71
- zoomLevels?: number;
72
- /**
73
- * 初始缩放级别(1 ~ zoomLevels,默认 1)
74
- * 未指定时默认为最小级别
75
- */
76
- initialZoomLevel?: number;
77
- };
78
- /** K 线起始 x 坐标数组,positions[i] 表示第 i 根 K 线的起始 x 坐标(逻辑像素) */
79
- export type KLinePositions = number[];
80
- export type Viewport = {
81
- viewWidth: number;
82
- viewHeight: number;
83
- plotWidth: number;
84
- plotHeight: number;
85
- scrollLeft: number;
86
- dpr: number;
87
- };
88
- type ResolvedChartOptions = Omit<ChartOptions, 'kWidth' | 'kGap'> & {
89
- kWidth: number;
90
- kGap: number;
91
- };
92
- export declare class Chart {
93
- private dom;
94
- private opt;
95
- private data;
96
- private raf;
97
- private pendingUpdateLevel;
98
- private viewport;
99
- private paneRenderers;
100
- private markerManager;
101
- private drawingStore;
102
- readonly interaction: InteractionController;
103
- /** 插件宿主 */
104
- private pluginHost;
105
- /** 渲染器插件管理器 */
106
- private rendererPluginManager;
107
- /** 精确 DPR(来自 ResizeObserver 的 devicePixelContentBoxSize) */
108
- private preciseDpr;
109
- /** 统一监听容器尺寸与 DPR 变化 */
110
- private resizeObserver?;
111
- /** scroll 事件处理器引用(用于 cleanup) */
112
- private onScroll?;
113
- /** 最近一次观测到的容器尺寸 */
114
- private observedSize;
115
- /** 缓存的 scrollLeft(通过 scroll 事件同步,避免每帧读取 DOM 触发强制回流) */
116
- private cachedScrollLeft;
117
- /** overlay 上一帧是否有十字线(用于判断何时需要清除) */
118
- private overlayHadCrosshair;
119
- /** 用户设置配置(传递给渲染器) */
120
- private settings;
121
- /** pane ratio 状态(按 paneId 维护,sum=1 仅对可见 pane) */
122
- private paneRatios;
123
- /** 视口变化回调(供外部同步 DPR/尺寸) */
124
- private onViewportChange?;
125
- /** 共享 X 轴上下文缓存 */
126
- private xAxisCtx;
127
- /** Chart 级共享 WebGL canvas/context */
128
- private sharedWebGLSurface;
129
- /** pane 布局回流回调(Chart -> UI 单向) */
130
- private onPaneLayoutChange?;
131
- /** 数据变化回调(供外部同步 dataLength) */
132
- private onDataChange?;
133
- /** 当前缩放级别(1 ~ zoomLevelCount) */
134
- private currentZoomLevel;
135
- /** 缩放级别总数 */
136
- private readonly zoomLevelCount;
137
- /** 指标调度器(负责计算 MA 等指标并写入 StateStore)
138
- * TODO: 阶段5迁移为插件注册,Scheduler 通过事件监听 data/viewport 变更,Chart 不直接持有
139
- */
140
- private indicatorScheduler;
141
- /** 上次可见范围(用于检测视口变化) */
142
- private lastVisibleRange;
143
- /** Overlay 帧复用的最近主渲染结果 */
144
- private cachedDrawFrame;
145
- /** 副图管理器 */
146
- private subPaneManager;
147
- /** 当前激活的主图指标列表(如 ['boll', 'ma']) */
148
- private activeMainIndicators;
149
- /** 主图指标参数配置 */
150
- private mainIndicatorParams;
151
- /**
152
- * 启用主图指标
153
- * @param indicatorId 指标ID
154
- * @param params 可选的指标参数
155
- * @returns 是否成功启用
156
- */
157
- enableMainIndicator(indicatorId: string, params?: Record<string, number | boolean | string>): boolean;
158
- /**
159
- * 禁用主图指标
160
- * @param indicatorId 指标ID
161
- * @returns 是否成功禁用
162
- */
163
- disableMainIndicator(indicatorId: string): boolean;
164
- /**
165
- * 切换主图指标启用状态
166
- * @param indicatorId 指标ID
167
- * @param enabled 是否启用
168
- */
169
- toggleMainIndicator(indicatorId: string, enabled: boolean): void;
170
- /**
171
- * 获取当前激活的主图指标列表
172
- * @returns 激活的指标ID数组
173
- */
174
- getActiveMainIndicators(): string[];
175
- /**
176
- * 检查主图指标是否激活
177
- * @param indicatorId 指标ID
178
- */
179
- isMainIndicatorActive(indicatorId: string): boolean;
180
- /**
181
- * 更新主图指标参数
182
- * @param indicatorId 指标ID
183
- * @param params 参数对象
184
- */
185
- updateMainIndicatorParams(indicatorId: string, params: Record<string, number | boolean | string>): void;
186
- /**
187
- * 获取主图指标参数
188
- * @param indicatorId 指标ID
189
- */
190
- getMainIndicatorParams(indicatorId: string): Record<string, number | boolean | string> | null;
191
- /**
192
- * 清除所有主图指标
193
- */
194
- clearMainIndicators(): void;
195
- /**
196
- * 启用主图指标渲染器(内部方法)
197
- */
198
- private enableMainIndicatorRenderer;
199
- /**
200
- * 禁用主图指标渲染器(内部方法)
201
- */
202
- private disableMainIndicatorRenderer;
203
- /**
204
- * 更新调度器配置(内部方法)
205
- */
206
- private updateIndicatorSchedulerConfig;
207
- /**
208
- * @deprecated 使用 enableMainIndicator/disableMainIndicator 替代
209
- */
210
- setActiveMainIndicators(indicators: string[]): void;
211
- /**
212
- * 创建图表实例
213
- * @param dom 由 Vue 组件传入的 DOM 句柄
214
- * @param opt 初始配置
215
- */
216
- constructor(dom: ChartDom, opt: ChartOptions);
217
- private initResizeObserver;
218
- private updateObservedMetrics;
219
- private getEffectiveDpr;
220
- getViewport(): Viewport | null;
221
- getCurrentDpr(): number;
222
- /** 获取缓存的 scrollLeft(避免读取 DOM 触发强制回流) */
223
- getCachedScrollLeft(): number;
224
- /** 获取插件宿主 */
225
- get plugin(): PluginHostImpl;
226
- /** 安装渲染器插件 */
227
- useRenderer(plugin: RendererPlugin | RendererPluginWithHost, config?: Record<string, unknown>): void;
228
- /** 移除渲染器插件 */
229
- removeRenderer(name: string): void;
230
- /** 获取渲染器插件 */
231
- getRenderer<T extends RendererPlugin = RendererPlugin>(name: string): T | undefined;
232
- /** 更新渲染器配置(自动重绘) */
233
- updateRendererConfig(name: string, config: Record<string, unknown>): void;
234
- /** 启用/禁用渲染器 */
235
- setRendererEnabled(name: string, enabled: boolean): void;
236
- /** 获取所有渲染器 */
237
- getAllRenderers(): RendererPlugin[];
238
- /** 更新用户设置(触发重绘) */
239
- updateSettings(settings: ChartSettings): void;
240
- /**
241
- * 绘制一帧
242
- * @param level 更新级别,决定渲染哪些层
243
- */
244
- draw(level?: UpdateLevel): void;
245
- private prepareFrameData;
246
- private renderPanes;
247
- private renderXAxis;
248
- /**
249
- * 应用渲染状态(由 Vue/Store 层在状态更新后调用)
250
- * Chart 不拥有业务 SSOT,只负责接收参数并渲染
251
- * 这是写入 opt.kWidth/kGap 和 currentZoomLevel 的唯一入口
252
- */
253
- applyRenderState(kWidth: number, kGap: number, zoomLevel?: number): void;
254
- /** 获取总缩放级别数 */
255
- getZoomLevelCount(): number;
256
- /** 注册视口变化回调 */
257
- setOnViewportChange(cb: (viewport: Viewport) => void): void;
258
- /** 注册 pane 布局回流回调 */
259
- setOnPaneLayoutChange(cb: (panes: PaneSpec[]) => void): void;
260
- /** 注册数据变化回调 */
261
- setOnDataChange(cb: (data: KLineData[]) => void): void;
262
- /** 获取所有 PaneRenderer */
263
- getPaneRenderers(): PaneRenderer[];
264
- /** 获取 MarkerManager(供 InteractionController 使用) */
265
- getMarkerManager(): MarkerManager;
266
- /** 更新自定义标记 */
267
- updateCustomMarkers(markers: CustomMarkerEntity[]): void;
268
- /** 清除自定义标记 */
269
- clearCustomMarkers(): void;
270
- /** 获取 ChartDom(供 InteractionController 使用) */
271
- getDom(): ChartDom;
272
- /** 获取当前 ChartOptions(返回内部当前快照) */
273
- getOption(): ResolvedChartOptions;
274
- /**
275
- * 计算 K 线起始 x 坐标数组,与 candle.ts 的像素对齐方式保持一致
276
- * @param range 可见 K 线索引范围
277
- * @returns x 坐标数组(逻辑像素,经过物理像素对齐)
278
- */
279
- calcKLinePositions(range: VisibleRange): KLinePositions;
280
- /**
281
- * 更新配置并触发布局/重绘
282
- * @param partial 部分配置项
283
- */
284
- updateOptions(partial: Partial<ChartOptions>): void;
285
- /** 更新 pane 布局配置
286
- * @param panes 新的 pane 配置数组
287
- */
288
- updatePaneLayout(panes: PaneSpec[]): void;
289
- setPaneDefinitions(defs: PaneSpec[]): void;
290
- upsertPane(def: PaneSpec): void;
291
- removePaneDefinition(paneId: string): void;
292
- bindIndicatorToPane(paneId: string, indicatorId: SubIndicatorType, params?: Record<string, number | boolean | string>): void;
293
- /** 更新绘图对象 */
294
- setDrawings(drawings: import('../plugin').DrawingObject[]): void;
295
- /** 更新选中的绘图 ID */
296
- setSelectedDrawingId(id: string | null): void;
297
- /** 获取当前 pane 布局快照(含 ratio) */
298
- getPaneLayoutSpecs(): PaneSpec[];
299
- private emitPaneLayoutChange;
300
- private applyPaneLayoutSpecs;
301
- /**
302
- * 调整相邻 pane 边界(支持连锁挤压)
303
- * @param upperPaneId 上方 pane ID(边界位于此 pane 与其下方邻居之间)
304
- * @param deltaY Y 方向位移(逻辑像素,正数表示边界向下,upper 增大;负数表示向上,upper 减小)
305
- */
306
- resizePaneBoundary(upperPaneId: string, deltaY: number): boolean;
307
- private resolvePaneRole;
308
- addPane(paneId: string): void;
309
- /**
310
- * 动态移除 pane
311
- * @param paneId pane 标识符
312
- */
313
- removePane(paneId: string): void;
314
- /**
315
- * 检查 pane 是否存在
316
- * @param paneId pane 标识符
317
- */
318
- hasPane(paneId: string): boolean;
319
- /**
320
- * 创建副图面板并注册指标渲染器
321
- * @param paneId 副图实例标识符(如 'RSI_0', 'MACD_0')
322
- * @param indicatorId 指标类型
323
- * @param params 指标参数
324
- * @returns 是否创建成功
325
- */
326
- createSubPane(paneId: string, indicatorId: SubIndicatorType, params?: Record<string, number | boolean | string>): boolean;
327
- /**
328
- * 移除副图面板及其渲染器
329
- * @param paneId 副图实例标识符
330
- */
331
- removeSubPane(paneId: string): void;
332
- /**
333
- * 替换副图的指标类型
334
- * @param paneId 副图实例标识符
335
- * @param newIndicatorId 新的指标类型
336
- * @param params 新指标参数
337
- */
338
- replaceSubPaneIndicator(paneId: string, newIndicatorId: SubIndicatorType, params?: Record<string, number | boolean | string>): void;
339
- /**
340
- * 更新副图指标参数
341
- * @param paneId 副图实例标识符
342
- * @param params 新参数
343
- */
344
- updateSubPaneParams(paneId: string, params: Record<string, unknown>): void;
345
- /**
346
- * 清除所有副图面板
347
- */
348
- clearSubPanes(): void;
349
- /**
350
- * 获取当前所有副图指标类型
351
- * @deprecated 使用 getSubPaneEntries 获取完整信息
352
- */
353
- getSubPaneIndicators(): SubIndicatorType[];
354
- /**
355
- * 获取所有副图条目
356
- */
357
- getSubPaneEntries(): SubPaneEntry[];
358
- /**
359
- * 根据 paneId 获取副图条目
360
- * @param paneId 副图实例标识符
361
- */
362
- getSubPaneEntry(paneId: string): SubPaneEntry | undefined;
363
- private getDefaultSubPaneParams;
364
- /** 副图渲染器名称前缀(保留向后兼容) */
365
- private static readonly SUB_PANE_PREFIX;
366
- /**
367
- * 平移价格轴(用于主图区域上下拖动)
368
- * @param paneId 目标 pane ID
369
- * @param deltaY Y轴像素偏移(正数向下拖动)
370
- */
371
- translatePrice(paneId: string, deltaY: number): void;
372
- /**
373
- * 重置价格轴垂直偏移
374
- * @param paneId 目标 pane ID
375
- */
376
- resetPriceOffset(paneId: string): void;
377
- /**
378
- * 缩放价格轴(用于右侧刻度栏上下拖动)
379
- * @param paneId 目标 pane ID
380
- * @param deltaY Y轴像素偏移(向上拖动放大,向下拖动缩小)
381
- */
382
- scalePrice(paneId: string, deltaY: number): void;
383
- /**
384
- * 更新数据并请求重绘
385
- * @param data K 线数据数组
386
- */
387
- updateData(data: KLineData[]): void;
388
- /** 获取当前数据源(供 renderers 和 interaction 使用) */
389
- getData(): KLineData[];
390
- /** 获取指标调度器(供外部控制器更新指标配置) */
391
- getIndicatorScheduler(): IndicatorScheduler;
392
- private getTrailingSlotCount;
393
- getLogicalSlotCount(): number;
394
- getTimestampAtLogicalIndex(index: number): number | null;
395
- /** 根据视口内 X 坐标反查逻辑索引(允许超出最后一根 K 线) */
396
- getLogicalIndexAtX(mouseX: number): number | null;
397
- /** 根据视口内 X 坐标反查数据索引(用于绘图落点) */
398
- getDataIndexAtX(mouseX: number): number | null;
399
- /** 获取内容总宽度(用于外部 scroll-content 撑开 scrollWidth) */
400
- getContentWidth(): number;
401
- /** 容器尺寸变化时调用 */
402
- resize(): void;
403
- /**
404
- * 请求下一帧重绘(RAF 合并,支持分层更新)
405
- * @param level 更新级别,默认为 All
406
- */
407
- scheduleDraw(level?: UpdateLevel): void;
408
- /** 销毁图表实例 */
409
- destroy(): Promise<void>;
410
- /** 初始化所有 pane */
411
- private initPanes;
412
- private syncPaneRatiosFromSpecs;
413
- private syncPaneRatiosToSpecs;
414
- private normalizeVisiblePaneRatios;
415
- private getPaneMinHeight;
416
- private computePaneHeightsByRatio;
417
- /** 计算每个 pane 的布局(top 和 height) */
418
- private layoutPanes;
419
- private computeViewport;
420
- }
@@ -1,167 +0,0 @@
1
- import { Chart } from '../chart';
2
- import { MarkerEntity, CustomMarkerEntity } from '../marker/registry';
3
- import { ChartSettings } from '../../config/chartSettings';
4
- export interface InteractionSnapshot {
5
- crosshairPos: {
6
- x: number;
7
- y: number;
8
- } | null;
9
- crosshairIndex: number | null;
10
- crosshairPrice: number | null;
11
- hoveredIndex: number | null;
12
- activePaneId: string | null;
13
- tooltipPos: {
14
- x: number;
15
- y: number;
16
- };
17
- tooltipAnchorPlacement: 'right-bottom' | 'left-bottom';
18
- hoveredMarkerData: MarkerEntity | null;
19
- hoveredCustomMarker: CustomMarkerEntity | null;
20
- isDragging: boolean;
21
- isResizingPaneBoundary: boolean;
22
- isHoveringPaneBoundary: boolean;
23
- hoveredPaneBoundaryId: string | null;
24
- isHoveringRightAxis: boolean;
25
- }
26
- /**
27
- * 交互控制器,处理拖拽滚动、缩放、十字线 hover 等交互逻辑
28
- */
29
- export declare class InteractionController {
30
- private chart;
31
- private isDragging;
32
- private dragMode;
33
- private dragStartX;
34
- private scrollStartX;
35
- private applyPanScroll;
36
- /** 垂直拖动相关 */
37
- private dragStartY;
38
- private activePaneIdOnDrag;
39
- /** 分隔线拖拽相关 */
40
- private activeSeparatorUpperPaneId;
41
- private hoveredSeparatorUpperPaneId;
42
- /** 右轴悬浮相关 */
43
- private hoveredRightAxisPaneId;
44
- /** [触屏]:触摸会话标记,避免触摸触发的模拟 mouse 事件干扰 */
45
- private isTouchSession;
46
- private pinchTracker;
47
- /** 十字线位置 */
48
- crosshairPos: {
49
- x: number;
50
- y: number;
51
- } | null;
52
- /** 十字线当前指向的 K 线索引 */
53
- crosshairIndex: number | null;
54
- /** 十字线指向的价格(用于价格轴平移时跟随) */
55
- crosshairPrice: number | null;
56
- /** 鼠标悬停的 K 线索引(命中 candle 时有效) */
57
- hoveredIndex: number | null;
58
- /** 当前活跃的 pane ID */
59
- activePaneId: string | null;
60
- /** tooltip 位置 */
61
- tooltipPos: {
62
- x: number;
63
- y: number;
64
- };
65
- /** tooltip 尺寸 */
66
- tooltipSize: {
67
- width: number;
68
- height: number;
69
- };
70
- /** tooltip 锚定位放置方向 */
71
- tooltipAnchorPlacement: 'right-bottom' | 'left-bottom';
72
- /** 是否使用 CSS 锚定位 */
73
- private useTooltipAnchorPositioning;
74
- /** 统一交互状态变更回调 */
75
- private onInteractionChangeCallback?;
76
- /** 用户设置 */
77
- private settings;
78
- private markerState;
79
- /** 当前帧的 K 线起始 x 坐标数组 */
80
- private kLinePositions;
81
- /** 当前帧的可见 K 线索引范围 */
82
- private visibleRange;
83
- /** hover 去重快照 */
84
- private lastHoverRenderKey;
85
- /** K 线宽度(物理像素),用于计算 K 线中心偏移 */
86
- private kWidthPx;
87
- constructor(chart: Chart);
88
- setOnPinchZoom(callback: (delta: number, centerX: number) => void): void;
89
- /** 更新用户设置 */
90
- updateSettings(settings: ChartSettings): void;
91
- getInteractionSnapshot(): InteractionSnapshot;
92
- setOnInteractionChange(callback: (snapshot: InteractionSnapshot) => void): void;
93
- private notifyInteractionChange;
94
- private getHoverRenderKey;
95
- /**
96
- * [触屏]:处理 Pointer 按下事件
97
- * @param e PointerEvent
98
- */
99
- onPointerDown(e: PointerEvent): void;
100
- /**
101
- * 设置 tooltip 尺寸
102
- * @param size 宽高对象
103
- */
104
- setTooltipSize(size: {
105
- width: number;
106
- height: number;
107
- }): void;
108
- setTooltipAnchorPositioning(enabled: boolean): void;
109
- /**
110
- * 处理 Pointer 抬起事件
111
- * @param e PointerEvent
112
- */
113
- onPointerUp(e: PointerEvent): void;
114
- /**
115
- * 处理 Pointer 离开事件
116
- * @param e PointerEvent
117
- */
118
- onPointerLeave(e: PointerEvent): void;
119
- /** 处理滚动事件 */
120
- onScroll(): void;
121
- /**
122
- * 处理 Pointer 移动事件(支持鼠标和触屏)
123
- * @param e PointerEvent
124
- */
125
- onPointerMove(e: PointerEvent): void;
126
- /**
127
- * 设置当前帧的 K 线起始 x 坐标数组和可见范围
128
- * @param positions K 线起始 x 坐标数组
129
- * @param visibleRange 可见 K 线索引范围
130
- * @param kWidthPx K 线宽度(物理像素)
131
- */
132
- setKLinePositions(positions: number[] | null, visibleRange: {
133
- start: number;
134
- end: number;
135
- } | null, kWidthPx?: number): void;
136
- onRightAxisPointerDown(e: PointerEvent): void;
137
- onRightAxisPointerMove(e: PointerEvent): void;
138
- onRightAxisPointerUp(e: PointerEvent): void;
139
- onRightAxisPointerLeave(e: PointerEvent): void;
140
- /** 检查是否正在拖拽 */
141
- isDraggingState(): boolean;
142
- setOnMarkerHover(callback: (marker: MarkerEntity | null) => void): void;
143
- setOnMarkerClick(callback: (marker: MarkerEntity) => void): void;
144
- setOnCustomMarkerHover(callback: (marker: CustomMarkerEntity | null) => void): void;
145
- setOnCustomMarkerClick(callback: (marker: CustomMarkerEntity) => void): void;
146
- /** 命中可拖拽分隔线(返回上方 paneId) */
147
- private hitTestPaneSeparator;
148
- private getPaneByY;
149
- private getPlotPointerLocation;
150
- private getRightAxisPointerLocation;
151
- private beginScalePriceDrag;
152
- clearHover(): void;
153
- private clearSeparatorState;
154
- /**
155
- * 从屏幕坐标更新 hover 状态
156
- * @param clientX 屏幕 x 坐标
157
- * @param clientY 屏幕 y 坐标
158
- */
159
- private updateRightAxisHoverFromPoint;
160
- private updatePlotHoverFromPoint;
161
- /**
162
- * 重置所有交互状态(数据更新时调用)
163
- */
164
- reset(): void;
165
- /** 获取十字线指向的 K 线索引 */
166
- getCrosshairIndex(): number | null;
167
- }
@@ -1,28 +0,0 @@
1
- import { MarkerEntity, CustomMarkerEntity, MarkerManager } from '../marker/registry';
2
- /** Marker交互状态,管理标记 hover/click 状态和回调,与 InteractionController 正交。 */
3
- export declare class MarkerInteractionState {
4
- hoveredMarkerId: string | null;
5
- clickedMarkerId: string | null;
6
- hoveredMarkerData: MarkerEntity | null;
7
- clickedMarkerData: MarkerEntity | null;
8
- hoveredCustomMarker: CustomMarkerEntity | null;
9
- private onMarkerHoverCallback?;
10
- private onMarkerClickCallback?;
11
- private onCustomMarkerHoverCallback?;
12
- private onCustomMarkerClickCallback?;
13
- setOnMarkerHover(callback: (marker: MarkerEntity | null) => void): void;
14
- setOnMarkerClick(callback: (marker: MarkerEntity) => void): void;
15
- setOnCustomMarkerHover(callback: (marker: CustomMarkerEntity | null) => void): void;
16
- setOnCustomMarkerClick(callback: (marker: CustomMarkerEntity) => void): void;
17
- handleClick(hitMarker: MarkerEntity): void;
18
- /** 从坐标更新 hover 状态。返回 true 表示命中 marker/custom-marker,调用方应跳过后续 hover 逻辑。 */
19
- updateHoverFromPoint(worldX: number, mouseX: number, mouseY: number, markerManager: MarkerManager): boolean;
20
- private enterMarkerHover;
21
- private leaveMarkerHover;
22
- private enterCustomMarkerHover;
23
- private leaveCustomMarkerHover;
24
- /** 清空 hover 状态并触发回调(拖拽/离开时调用)。需要 markerManager 以便同步清除 Native hover。 */
25
- clearAll(markerManager: MarkerManager): void;
26
- /** 全量重置(数据更新时调用,不触发热点回调) */
27
- reset(): void;
28
- }
@@ -1,18 +0,0 @@
1
- /** 触屏双指捏合跟踪,与 InteractionController 正交。 */
2
- export declare class PinchTracker {
3
- private activePointers;
4
- private lastPinchDistance;
5
- private pinchCenter;
6
- private isPinching;
7
- private onPinchZoomCallback?;
8
- setOnPinchZoom(callback: (delta: number, centerX: number) => void): void;
9
- getIsPinching(): boolean;
10
- getPointerCount(): number;
11
- /** Returns true if pinch started (caller should early-return, not process drag). */
12
- handlePointerDown(e: PointerEvent, isTouchSession: boolean): boolean;
13
- handlePointerUp(e: PointerEvent): void;
14
- handlePointerLeave(e: PointerEvent): void;
15
- /** Returns true if pinch zoom was processed (caller should skip further pointer-move handling). */
16
- handlePointerMove(e: PointerEvent): boolean;
17
- reset(): void;
18
- }
@@ -1,21 +0,0 @@
1
- export interface TooltipPositionInput {
2
- mouseX: number;
3
- mouseY: number;
4
- viewWidth: number;
5
- viewHeight: number;
6
- plotWidth: number;
7
- plotHeight: number;
8
- tooltipSize: {
9
- width: number;
10
- height: number;
11
- };
12
- useAnchorPositioning: boolean;
13
- }
14
- export interface TooltipPositionOutput {
15
- pos: {
16
- x: number;
17
- y: number;
18
- };
19
- anchorPlacement?: 'right-bottom' | 'left-bottom';
20
- }
21
- export declare function computeTooltipPosition(input: TooltipPositionInput): TooltipPositionOutput;