@363045841yyt/klinechart 0.7.1 → 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 (236) 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 +75 -112
  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 -617
  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/indicatorDefinitionRegistry.d.ts +0 -30
  90. package/dist/src/core/indicators/indicatorMetadata.d.ts +0 -81
  91. package/dist/src/core/indicators/indicatorRegistry.d.ts +0 -57
  92. package/dist/src/core/indicators/indicatorRuntime.d.ts +0 -126
  93. package/dist/src/core/indicators/kamaState.d.ts +0 -20
  94. package/dist/src/core/indicators/keltnerState.d.ts +0 -27
  95. package/dist/src/core/indicators/kstState.d.ts +0 -21
  96. package/dist/src/core/indicators/maState.d.ts +0 -26
  97. package/dist/src/core/indicators/macdState.d.ts +0 -58
  98. package/dist/src/core/indicators/mfiState.d.ts +0 -16
  99. package/dist/src/core/indicators/momState.d.ts +0 -15
  100. package/dist/src/core/indicators/obvState.d.ts +0 -14
  101. package/dist/src/core/indicators/parkinsonState.d.ts +0 -18
  102. package/dist/src/core/indicators/pivotState.d.ts +0 -29
  103. package/dist/src/core/indicators/pvtState.d.ts +0 -14
  104. package/dist/src/core/indicators/rocState.d.ts +0 -16
  105. package/dist/src/core/indicators/rsiState.d.ts +0 -43
  106. package/dist/src/core/indicators/sarState.d.ts +0 -26
  107. package/dist/src/core/indicators/scheduler.d.ts +0 -262
  108. package/dist/src/core/indicators/soa.d.ts +0 -115
  109. package/dist/src/core/indicators/stateComposer.d.ts +0 -146
  110. package/dist/src/core/indicators/stochState.d.ts +0 -18
  111. package/dist/src/core/indicators/structureState.d.ts +0 -43
  112. package/dist/src/core/indicators/supertrendState.d.ts +0 -22
  113. package/dist/src/core/indicators/temaState.d.ts +0 -16
  114. package/dist/src/core/indicators/trixState.d.ts +0 -20
  115. package/dist/src/core/indicators/vmaState.d.ts +0 -16
  116. package/dist/src/core/indicators/volumeProfileState.d.ts +0 -34
  117. package/dist/src/core/indicators/vwapState.d.ts +0 -16
  118. package/dist/src/core/indicators/wmaState.d.ts +0 -16
  119. package/dist/src/core/indicators/wmsrState.d.ts +0 -15
  120. package/dist/src/core/indicators/workerProtocol.d.ts +0 -496
  121. package/dist/src/core/indicators/zonesState.d.ts +0 -26
  122. package/dist/src/core/layout/pane.d.ts +0 -103
  123. package/dist/src/core/marker/registry.d.ts +0 -174
  124. package/dist/src/core/paneRenderer.d.ts +0 -45
  125. package/dist/src/core/renderers/Indicator/atr.d.ts +0 -17
  126. package/dist/src/core/renderers/Indicator/boll.d.ts +0 -2
  127. package/dist/src/core/renderers/Indicator/cci.d.ts +0 -22
  128. package/dist/src/core/renderers/Indicator/chaikinVol.d.ts +0 -4
  129. package/dist/src/core/renderers/Indicator/cmf.d.ts +0 -4
  130. package/dist/src/core/renderers/Indicator/dema.d.ts +0 -5
  131. package/dist/src/core/renderers/Indicator/donchian.d.ts +0 -5
  132. package/dist/src/core/renderers/Indicator/ene.d.ts +0 -2
  133. package/dist/src/core/renderers/Indicator/expma.d.ts +0 -2
  134. package/dist/src/core/renderers/Indicator/fastk.d.ts +0 -22
  135. package/dist/src/core/renderers/Indicator/fib.d.ts +0 -4
  136. package/dist/src/core/renderers/Indicator/hma.d.ts +0 -5
  137. package/dist/src/core/renderers/Indicator/hv.d.ts +0 -4
  138. package/dist/src/core/renderers/Indicator/ichimoku.d.ts +0 -5
  139. package/dist/src/core/renderers/Indicator/index.d.ts +0 -59
  140. package/dist/src/core/renderers/Indicator/indicatorData.d.ts +0 -13
  141. package/dist/src/core/renderers/Indicator/kama.d.ts +0 -5
  142. package/dist/src/core/renderers/Indicator/keltner.d.ts +0 -5
  143. package/dist/src/core/renderers/Indicator/kst.d.ts +0 -22
  144. package/dist/src/core/renderers/Indicator/ma.d.ts +0 -3
  145. package/dist/src/core/renderers/Indicator/macd.d.ts +0 -50
  146. package/dist/src/core/renderers/Indicator/macdLegend.d.ts +0 -12
  147. package/dist/src/core/renderers/Indicator/mainIndicatorLegend.d.ts +0 -10
  148. package/dist/src/core/renderers/Indicator/mfi.d.ts +0 -4
  149. package/dist/src/core/renderers/Indicator/mom.d.ts +0 -22
  150. package/dist/src/core/renderers/Indicator/obv.d.ts +0 -4
  151. package/dist/src/core/renderers/Indicator/parkinson.d.ts +0 -4
  152. package/dist/src/core/renderers/Indicator/pivot.d.ts +0 -4
  153. package/dist/src/core/renderers/Indicator/pvt.d.ts +0 -4
  154. package/dist/src/core/renderers/Indicator/roc.d.ts +0 -5
  155. package/dist/src/core/renderers/Indicator/rsi.d.ts +0 -33
  156. package/dist/src/core/renderers/Indicator/sar.d.ts +0 -5
  157. package/dist/src/core/renderers/Indicator/scale/atr_scale.d.ts +0 -11
  158. package/dist/src/core/renderers/Indicator/scale/cci_scale.d.ts +0 -11
  159. package/dist/src/core/renderers/Indicator/scale/fastk_scale.d.ts +0 -11
  160. package/dist/src/core/renderers/Indicator/scale/indicator_scale.d.ts +0 -38
  161. package/dist/src/core/renderers/Indicator/scale/kst_scale.d.ts +0 -11
  162. package/dist/src/core/renderers/Indicator/scale/macd_scale.d.ts +0 -14
  163. package/dist/src/core/renderers/Indicator/scale/mom_scale.d.ts +0 -11
  164. package/dist/src/core/renderers/Indicator/scale/rsi_scale.d.ts +0 -11
  165. package/dist/src/core/renderers/Indicator/scale/stoch_scale.d.ts +0 -11
  166. package/dist/src/core/renderers/Indicator/scale/volume_scale.d.ts +0 -14
  167. package/dist/src/core/renderers/Indicator/scale/wmsr_scale.d.ts +0 -11
  168. package/dist/src/core/renderers/Indicator/stoch.d.ts +0 -22
  169. package/dist/src/core/renderers/Indicator/structure.d.ts +0 -4
  170. package/dist/src/core/renderers/Indicator/subPaneConfig.d.ts +0 -9
  171. package/dist/src/core/renderers/Indicator/supertrend.d.ts +0 -5
  172. package/dist/src/core/renderers/Indicator/tema.d.ts +0 -5
  173. package/dist/src/core/renderers/Indicator/trix.d.ts +0 -5
  174. package/dist/src/core/renderers/Indicator/vma.d.ts +0 -4
  175. package/dist/src/core/renderers/Indicator/volumeProfile.d.ts +0 -4
  176. package/dist/src/core/renderers/Indicator/vwap.d.ts +0 -4
  177. package/dist/src/core/renderers/Indicator/wma.d.ts +0 -5
  178. package/dist/src/core/renderers/Indicator/wmsr.d.ts +0 -22
  179. package/dist/src/core/renderers/Indicator/zones.d.ts +0 -4
  180. package/dist/src/core/renderers/candle.d.ts +0 -21
  181. package/dist/src/core/renderers/crosshair.d.ts +0 -17
  182. package/dist/src/core/renderers/customMarkers.d.ts +0 -6
  183. package/dist/src/core/renderers/extremaMarkers.d.ts +0 -5
  184. package/dist/src/core/renderers/gridLines.d.ts +0 -7
  185. package/dist/src/core/renderers/lastPrice.d.ts +0 -9
  186. package/dist/src/core/renderers/paneTitle.d.ts +0 -40
  187. package/dist/src/core/renderers/subVolume.d.ts +0 -13
  188. package/dist/src/core/renderers/timeAxis.d.ts +0 -14
  189. package/dist/src/core/renderers/webgl/candleSurface.d.ts +0 -80
  190. package/dist/src/core/renderers/webgl/sharedWebGLSurface.d.ts +0 -33
  191. package/dist/src/core/renderers/yAxis.d.ts +0 -14
  192. package/dist/src/core/scale/logFormula.d.ts +0 -66
  193. package/dist/src/core/scale/price.d.ts +0 -11
  194. package/dist/src/core/scale/priceScale.d.ts +0 -87
  195. package/dist/src/core/subPaneManager.d.ts +0 -22
  196. package/dist/src/core/theme/colors.d.ts +0 -222
  197. package/dist/src/core/theme/fonts.d.ts +0 -12
  198. package/dist/src/core/utils/klineConfig.d.ts +0 -28
  199. package/dist/src/core/utils/tickCount.d.ts +0 -8
  200. package/dist/src/core/utils/tickPosition.d.ts +0 -24
  201. package/dist/src/core/utils/zoom.d.ts +0 -30
  202. package/dist/src/core/viewport/viewport.d.ts +0 -31
  203. package/dist/src/index.d.ts +0 -8
  204. package/dist/src/main.d.ts +0 -0
  205. package/dist/src/plugin/ConfigManager.d.ts +0 -31
  206. package/dist/src/plugin/EventBus.d.ts +0 -34
  207. package/dist/src/plugin/HookSystem.d.ts +0 -28
  208. package/dist/src/plugin/PluginHost.d.ts +0 -57
  209. package/dist/src/plugin/PluginRegistry.d.ts +0 -40
  210. package/dist/src/plugin/StateStore.d.ts +0 -37
  211. package/dist/src/plugin/index.d.ts +0 -11
  212. package/dist/src/plugin/rendererPluginManager.d.ts +0 -77
  213. package/dist/src/plugin/stateKeys.d.ts +0 -6
  214. package/dist/src/plugin/types.d.ts +0 -445
  215. package/dist/src/semantic/controller.d.ts +0 -35
  216. package/dist/src/semantic/drawShape.d.ts +0 -14
  217. package/dist/src/semantic/index.d.ts +0 -8
  218. package/dist/src/semantic/types.d.ts +0 -298
  219. package/dist/src/semantic/validator.d.ts +0 -43
  220. package/dist/src/test-setup.d.ts +0 -6
  221. package/dist/src/types/kLine.d.ts +0 -3
  222. package/dist/src/types/price.d.ts +0 -31
  223. package/dist/src/types/volumePrice.d.ts +0 -26
  224. package/dist/src/utils/cache.d.ts +0 -33
  225. package/dist/src/utils/dateFormat.d.ts +0 -83
  226. package/dist/src/utils/http.d.ts +0 -14
  227. package/dist/src/utils/kLineDraw/MA.d.ts +0 -7
  228. package/dist/src/utils/kLineDraw/axis.d.ts +0 -150
  229. package/dist/src/utils/kLineDraw/grid.d.ts +0 -30
  230. package/dist/src/utils/kLineDraw/kLine.d.ts +0 -15
  231. package/dist/src/utils/kline/format.d.ts +0 -11
  232. package/dist/src/utils/kline/viewport.d.ts +0 -10
  233. package/dist/src/utils/logger.d.ts +0 -5
  234. package/dist/src/utils/mock/genRandomPriceData.d.ts +0 -3
  235. package/dist/src/utils/priceToY.d.ts +0 -7
  236. package/dist/src/utils/volumePrice.d.ts +0 -54
@@ -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;
@@ -1,114 +0,0 @@
1
- /**
2
- * 像素对齐工具函数 - 逻辑像素空间(配合 ctx.scale(dpr) 使用)
3
- */
4
- /**
5
- * 将逻辑坐标对齐到物理像素边界(用于矩形填充)
6
- * @param value - 逻辑坐标值
7
- * @param dpr - 设备像素比
8
- * @returns 对齐后的逻辑坐标
9
- */
10
- export declare function roundToPhysicalPixel(value: number, dpr: number, theme?: 'light' | 'dark'): number;
11
- /**
12
- * 将逻辑坐标对齐到物理像素中心(用于 1px 线条)
13
- * @param value - 逻辑坐标值
14
- * @param dpr - 设备像素比
15
- * @returns 对齐后的逻辑坐标
16
- */
17
- export declare function alignToPhysicalPixelCenter(value: number, dpr: number, theme?: 'light' | 'dark'): number;
18
- /**
19
- * 对齐矩形到物理像素边界
20
- * @param x - 矩形左边界 X 坐标
21
- * @param y - 矩形顶部 Y 坐标
22
- * @param width - 矩形宽度
23
- * @param height - 矩形高度
24
- * @param dpr - 设备像素比
25
- * @returns 对齐后的矩形信息
26
- */
27
- export declare function alignRect(x: number, y: number, width: number, height: number, dpr: number, theme?: 'light' | 'dark'): {
28
- x: number;
29
- y: number;
30
- width: number;
31
- height: number;
32
- };
33
- /**
34
- * 创建用于绘制垂直线的矩形(1 物理像素宽)
35
- * @param centerX - 垂直线中心 X 坐标
36
- * @param y1 - 垂直线起始点 Y 坐标
37
- * @param y2 - 垂直线结束点 Y 坐标
38
- * @param dpr - 设备像素比
39
- * @returns 对齐到物理像素的矩形信息,如果 y1 和 y2 相等则返回 null
40
- */
41
- export declare function createVerticalLineRect(centerX: number, y1: number, y2: number, dpr: number, theme?: 'light' | 'dark'): {
42
- x: number;
43
- y: number;
44
- width: number;
45
- height: number;
46
- } | null;
47
- /**
48
- * 创建用于绘制水平线的矩形(1 物理像素高)
49
- * @param x1 - 水平线起始点的 X 坐标
50
- * @param x2 - 水平线结束点的 X 坐标
51
- * @param centerY - 水平线中心 Y 坐标
52
- * @param dpr - 设备像素比
53
- * @returns 对齐到物理像素的矩形信息,如果 x1 和 x2 相等则返回 null
54
- */
55
- export declare function createHorizontalLineRect(x1: number, x2: number, centerY: number, dpr: number, theme?: 'light' | 'dark'): {
56
- x: number;
57
- y: number;
58
- width: number;
59
- height: number;
60
- } | null;
61
- /**
62
- * 创建对齐的K线实体和影线
63
- * @param rectX - 实体左边界 X 坐标(逻辑像素)
64
- * @param rectY - 实体顶部 Y 坐标(逻辑像素)
65
- * @param kWidth - 实体宽度(逻辑像素)
66
- * @param height - 实体高度(逻辑像素)
67
- * @param dpr - 设备像素比
68
- * @returns 对齐后的实体和影线信息
69
- */
70
- export declare function createAlignedKLine(rectX: number, rectY: number, kWidth: number, height: number, dpr: number, theme?: 'light' | 'dark'): {
71
- bodyRect: {
72
- x: number;
73
- y: number;
74
- width: number;
75
- height: number;
76
- };
77
- physBodyLeft: number;
78
- physBodyRight: number;
79
- physBodyWidth: number;
80
- physBodyCenter: number;
81
- physWickX: number;
82
- wickRect: {
83
- x: number;
84
- width: number;
85
- };
86
- isPerfectlyAligned: boolean;
87
- };
88
- /**
89
- * 创建对齐的K线实体和影线(物理像素直接版)
90
- * @param leftPx - 实体左边界物理像素坐标(整数)
91
- * @param rectY - 实体顶部 Y 坐标(逻辑像素)
92
- * @param widthPx - 实体宽度物理像素(奇数)
93
- * @param height - 实体高度(逻辑像素)
94
- * @param dpr - 设备像素比
95
- * @returns 对齐后的实体和影线信息
96
- */
97
- export declare function createAlignedKLineFromPx(leftPx: number, rectY: number, widthPx: number, height: number, dpr: number, theme?: 'light' | 'dark'): {
98
- bodyRect: {
99
- x: number;
100
- y: number;
101
- width: number;
102
- height: number;
103
- };
104
- physBodyLeft: number;
105
- physBodyRight: number;
106
- physBodyWidth: number;
107
- physBodyCenter: number;
108
- physWickX: number;
109
- wickRect: {
110
- x: number;
111
- width: number;
112
- };
113
- isPerfectlyAligned: boolean;
114
- };
@@ -1,47 +0,0 @@
1
- import { DrawingObject, DrawingKind, DrawingDefinition, DrawingComputeContext, DrawingGeometry, DrawingStyle, PointPrimitive, LinePrimitive, AreaPrimitive, TextPrimitive } from '../../plugin';
2
- export type { DrawingObject, DrawingKind, DrawingDefinition, DrawingComputeContext, DrawingGeometry, DrawingStyle, PointPrimitive, LinePrimitive, AreaPrimitive, TextPrimitive, };
3
- export declare class DrawingStore {
4
- private drawings;
5
- private selectedId;
6
- getSelectedId(): string | null;
7
- setSelectedId(id: string | null): void;
8
- getAll(): DrawingObject[];
9
- getVisibleByPane(paneId: string): DrawingObject[];
10
- setAll(drawings: DrawingObject[]): void;
11
- upsert(drawing: DrawingObject): void;
12
- remove(id: string): void;
13
- clear(): void;
14
- }
15
- export declare class DrawingDefinitionRegistry {
16
- private definitions;
17
- register<TParams = Record<string, unknown>>(definition: DrawingDefinition<TParams>): void;
18
- get(kind: DrawingKind): DrawingDefinition | undefined;
19
- compute(drawing: DrawingObject, context: DrawingComputeContext): DrawingGeometry | null;
20
- }
21
- export type PrimitiveRendererSet = {
22
- point: (ctx: CanvasRenderingContext2D, primitive: PointPrimitive, dpr: number) => void;
23
- line: (ctx: CanvasRenderingContext2D, primitive: LinePrimitive, viewportClip: {
24
- left: number;
25
- top: number;
26
- right: number;
27
- bottom: number;
28
- }, dpr: number) => void;
29
- area: (ctx: CanvasRenderingContext2D, primitive: AreaPrimitive, dpr: number) => void;
30
- text: (ctx: CanvasRenderingContext2D, primitive: TextPrimitive, dpr: number) => void;
31
- };
32
- export declare function computeLinearRegression(values: number[]): {
33
- slope: number;
34
- intercept: number;
35
- stdDev: number;
36
- } | null;
37
- export declare function createDefaultPrimitiveRendererSet(): PrimitiveRendererSet;
38
- export declare function createTwoPointLineDefinition(kind: DrawingKind, extend: LinePrimitive['extend']): DrawingDefinition;
39
- export declare function createSingleAnchorLineDefinition(kind: DrawingKind): DrawingDefinition;
40
- export declare function createInfoLineDefinition(): DrawingDefinition;
41
- export declare function createParallelChannelDefinition(): DrawingDefinition;
42
- export declare function createFlatLineDefinition(): DrawingDefinition;
43
- export declare function createDisjointChannelDefinition(): DrawingDefinition;
44
- export declare function createRegressionChannelDefinition(): DrawingDefinition;
45
- export declare function registerDefaultDrawingDefinitions(registry: DrawingDefinitionRegistry): void;
46
- export { DrawingInteractionController } from './interaction';
47
- export type { DrawingToolId, DrawingAnchorInput, DrawingInteractionCallbacks } from './interaction';
@@ -1,75 +0,0 @@
1
- import { DrawingObject, DrawingStyle } from '../../plugin';
2
- import { Chart } from '../chart';
3
- export type DrawingToolId = 'cursor' | 'trend-line' | 'ray' | 'h-line' | 'h-ray' | 'v-line' | 'crosshair-line' | 'info-line' | 'parallel-channel' | 'regression-channel' | 'flat-line' | 'disjoint-channel';
4
- export interface DrawingAnchorInput {
5
- index: number;
6
- time?: number;
7
- price: number;
8
- }
9
- export interface DrawingInteractionCallbacks {
10
- onDrawingCreated?: (drawing: DrawingObject) => void;
11
- onToolChange?: (toolId: DrawingToolId) => void;
12
- onDrawingSelected?: (drawing: DrawingObject | null) => void;
13
- }
14
- /**
15
- * 绘图交互控制器
16
- * 封装绘图工具的交互逻辑,与 Vue 组件解耦
17
- */
18
- export declare class DrawingInteractionController {
19
- private chart;
20
- private activeTool;
21
- private pendingAnchors;
22
- private drawings;
23
- private callbacks;
24
- private previewDrawingId;
25
- private dragState;
26
- private selectedDrawingId;
27
- private static readonly SINGLE_ANCHOR_TOOLS;
28
- private static readonly DOUBLE_ANCHOR_TOOLS;
29
- private static readonly TRIPLE_ANCHOR_TOOLS;
30
- constructor(chart: Chart);
31
- setCallbacks(callbacks: DrawingInteractionCallbacks): void;
32
- getActiveTool(): DrawingToolId;
33
- setTool(toolId: DrawingToolId): void;
34
- getDrawings(): DrawingObject[];
35
- setDrawings(drawings: DrawingObject[]): void;
36
- clear(): void;
37
- getSelectedDrawing(): DrawingObject | null;
38
- updateDrawingStyle(drawingId: string, style: Partial<DrawingStyle>): void;
39
- removeDrawing(drawingId: string): void;
40
- /**
41
- * 处理指针移动事件
42
- * @returns 是否处理了事件(阻止冒泡)
43
- */
44
- onPointerMove(e: PointerEvent, container: HTMLElement): boolean;
45
- /**
46
- * 处理指针按下事件
47
- * @returns 是否处理了事件(阻止冒泡)
48
- */
49
- onPointerDown(e: PointerEvent, container: HTMLElement): boolean;
50
- /**
51
- * 处理指针释放事件
52
- * @returns 是否处理了事件(阻止冒泡)
53
- */
54
- onPointerUp(_e: PointerEvent, _container: HTMLElement): boolean;
55
- private handleCursorDown;
56
- private handleDragMove;
57
- private handlePreviewMove;
58
- private hitTest;
59
- private getDrawingLineSegments;
60
- /**
61
- * regression-channel 专用:回归线端点也是可拖拽的锚点区域
62
- * 回归线端点可能远离存储的锚点,需要额外检测
63
- */
64
- private hitTestRegressionEndpoints;
65
- private getRegressionChannelGeometry;
66
- private getExtendMode;
67
- private anchorToScreen;
68
- private screenToAnchor;
69
- private setSelected;
70
- private removePreview;
71
- private resolveAnchorFromPointer;
72
- private createSingleAnchorDrawing;
73
- private createMultiAnchorDrawing;
74
- private getDrawingKind;
75
- }
@@ -1,27 +0,0 @@
1
- import { RendererPlugin } from '../../plugin';
2
- import { DrawingStore, DrawingDefinitionRegistry, PrimitiveRendererSet } from './index';
3
- /**
4
- * 创建绘图渲染器插件(主层,负责绘制 shape)
5
- * 注意:此插件不再推送轴标签,标签由 createDrawingLabelOverlayPlugin 负责
6
- */
7
- export declare function createDrawingRendererPlugin(options: {
8
- store: DrawingStore;
9
- paneId?: string;
10
- definitions?: DrawingDefinitionRegistry;
11
- renderers?: PrimitiveRendererSet;
12
- }): RendererPlugin;
13
- /**
14
- * 创建绘图标签 Overlay 插件
15
- *
16
- * ⚠️ 警告:此插件必须在 All 和 Overlay 更新级别运行
17
- * 当前代码库中没有 UpdateLevel.Main 的触发点,因此此插件设置为 layer: 'overlay' 是安全的
18
- * 如果将来添加 Main 级别的更新,此插件会被跳过,导致选中绘图的轴标签消失
19
- *
20
- * 解决方案:如果将来需要使用 Main 级别,请将此插件改为同时在 main 和 overlay 层注册,
21
- * 或移除分层过滤让此插件在所有级别运行
22
- */
23
- export declare function createDrawingLabelOverlayPlugin(options: {
24
- store: DrawingStore;
25
- paneId?: string;
26
- definitions?: DrawingDefinitionRegistry;
27
- }): RendererPlugin;
@@ -1,16 +0,0 @@
1
- import { BaseIndicatorState } from '../../plugin';
2
- export interface ATRRenderState extends BaseIndicatorState {
3
- timestamp: number;
4
- series: (number | undefined)[];
5
- params: {
6
- period: number;
7
- showATR: boolean;
8
- };
9
- valueMin: number;
10
- valueMax: number;
11
- visibleMin: number;
12
- visibleMax: number;
13
- }
14
- export declare const createATRStateKey: (paneId: string) => `indicator:${string}:${string}`;
15
- export declare const DEFAULT_ATR_PERIOD = 14;
16
- export declare const EMPTY_ATR_STATE: ATRRenderState;
@@ -1,34 +0,0 @@
1
- import { BaseIndicatorState } from '../../plugin';
2
- import { BOLLPoint } from './calculators';
3
- /**
4
- * BOLL 渲染器状态(共享给渲染器和图例)
5
- * 包含全量 BOLL 数组、计算参数、以及视口极值
6
- */
7
- export interface BOLLRenderState extends BaseIndicatorState {
8
- timestamp: number;
9
- /** 全量 BOLL 数组(稀疏:前 period-1 个为 undefined) */
10
- series: BOLLPoint[];
11
- /** 计算和渲染参数(渲染器从此读取 showUpper/showMiddle/showLower/showBand) */
12
- params: {
13
- period: number;
14
- multiplier: number;
15
- showUpper: boolean;
16
- showMiddle: boolean;
17
- showLower: boolean;
18
- showBand: boolean;
19
- };
20
- /** 视口内所有 BOLL 线的最低价 */
21
- visibleMin: number;
22
- /** 视口内所有 BOLL 线的最高价 */
23
- visibleMax: number;
24
- }
25
- /**
26
- * BOLL 状态的 StateStore 键名
27
- * 格式:indicator:boll:main
28
- */
29
- export declare const BOLL_STATE_KEY: `indicator:${string}:${string}`;
30
- /**
31
- * 空数据占位状态
32
- * 消费者应检查 visibleMin > visibleMax 判断"无有效数据"
33
- */
34
- export declare const EMPTY_BOLL_STATE: BOLLRenderState;