@363045841yyt/klinechart-core 0.8.10-alpha.2 → 0.8.10
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.
- package/dist/controllers/index.d.ts +1 -1
- package/dist/controllers/index.d.ts.map +1 -1
- package/dist/controllers/index.js.map +1 -1
- package/dist/data-fetchers/dataBuffer.d.ts +0 -1
- package/dist/data-fetchers/dataBuffer.d.ts.map +1 -1
- package/dist/data-fetchers/dataBuffer.effects.d.ts +21 -0
- package/dist/data-fetchers/dataBuffer.effects.d.ts.map +1 -0
- package/dist/data-fetchers/dataBuffer.effects.js +55 -0
- package/dist/data-fetchers/dataBuffer.effects.js.map +1 -0
- package/dist/data-fetchers/dataBuffer.js +58 -93
- package/dist/data-fetchers/dataBuffer.js.map +1 -1
- package/dist/data-fetchers/index.d.ts +1 -0
- package/dist/data-fetchers/index.d.ts.map +1 -1
- package/dist/data-fetchers/index.js +1 -0
- package/dist/data-fetchers/index.js.map +1 -1
- package/dist/data-fetchers/timeShareBuffer.d.ts +2 -1
- package/dist/data-fetchers/timeShareBuffer.d.ts.map +1 -1
- package/dist/data-fetchers/timeShareBuffer.js +36 -14
- package/dist/data-fetchers/timeShareBuffer.js.map +1 -1
- package/dist/engine/data/chartDataManager.d.ts.map +1 -1
- package/dist/engine/data/chartDataManager.js +2 -1
- package/dist/engine/data/chartDataManager.js.map +1 -1
- package/dist/engine/drawing/AnchorCollector.d.ts +26 -0
- package/dist/engine/drawing/AnchorCollector.d.ts.map +1 -0
- package/dist/engine/drawing/AnchorCollector.js +47 -0
- package/dist/engine/drawing/AnchorCollector.js.map +1 -0
- package/dist/engine/drawing/DragHandler.d.ts +38 -0
- package/dist/engine/drawing/DragHandler.d.ts.map +1 -0
- package/dist/engine/drawing/DragHandler.js +92 -0
- package/dist/engine/drawing/DragHandler.js.map +1 -0
- package/dist/engine/drawing/DrawingState.d.ts +51 -0
- package/dist/engine/drawing/DrawingState.d.ts.map +1 -0
- package/dist/engine/drawing/DrawingState.js +115 -0
- package/dist/engine/drawing/DrawingState.js.map +1 -0
- package/dist/engine/drawing/HitTester.d.ts +59 -0
- package/dist/engine/drawing/HitTester.d.ts.map +1 -0
- package/dist/engine/drawing/HitTester.js +219 -0
- package/dist/engine/drawing/HitTester.js.map +1 -0
- package/dist/engine/drawing/PreviewRenderer.d.ts +26 -0
- package/dist/engine/drawing/PreviewRenderer.d.ts.map +1 -0
- package/dist/engine/drawing/PreviewRenderer.js +131 -0
- package/dist/engine/drawing/PreviewRenderer.js.map +1 -0
- package/dist/engine/drawing/coordinateUtils.d.ts +57 -0
- package/dist/engine/drawing/coordinateUtils.d.ts.map +1 -0
- package/dist/engine/drawing/coordinateUtils.js +103 -0
- package/dist/engine/drawing/coordinateUtils.js.map +1 -0
- package/dist/engine/drawing/index.d.ts.map +1 -1
- package/dist/engine/drawing/index.js +11 -3
- package/dist/engine/drawing/index.js.map +1 -1
- package/dist/engine/drawing/interaction.d.ts +44 -40
- package/dist/engine/drawing/interaction.d.ts.map +1 -1
- package/dist/engine/drawing/interaction.js +132 -571
- package/dist/engine/drawing/interaction.js.map +1 -1
- package/dist/engine/drawing/toolConfig.d.ts +24 -0
- package/dist/engine/drawing/toolConfig.d.ts.map +1 -0
- package/dist/engine/drawing/toolConfig.js +76 -0
- package/dist/engine/drawing/toolConfig.js.map +1 -0
- package/dist/plugin/types.d.ts +1 -0
- package/dist/plugin/types.d.ts.map +1 -1
- package/dist/plugin/types.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +4 -1
- package/src/controllers/index.ts +1 -0
- package/src/data-fetchers/__tests__/dataBuffer.test.ts +1 -3
- package/src/data-fetchers/dataBuffer.effects.ts +118 -0
- package/src/data-fetchers/dataBuffer.ts +45 -86
- package/src/data-fetchers/index.ts +7 -0
- package/src/data-fetchers/timeShareBuffer.ts +58 -19
- package/src/engine/__tests__/paneRenderer.resize.test.ts +3 -0
- package/src/engine/__tests__/subPaneManager.test.ts +13 -3
- package/src/engine/data/chartDataManager.ts +2 -1
- package/src/engine/drawing/AnchorCollector.ts +57 -0
- package/src/engine/drawing/DragHandler.ts +121 -0
- package/src/engine/drawing/DrawingState.ts +132 -0
- package/src/engine/drawing/HitTester.ts +288 -0
- package/src/engine/drawing/PreviewRenderer.ts +157 -0
- package/src/engine/drawing/coordinateUtils.ts +139 -0
- package/src/engine/drawing/index.ts +10 -3
- package/src/engine/drawing/interaction.ts +177 -687
- package/src/engine/drawing/toolConfig.ts +103 -0
- package/src/engine/indicators/__tests__/chartIndicatorManager.test.ts +1 -0
- package/src/engine/indicators/__tests__/stateComposer.test.ts +5 -4
- package/src/engine/renderers/Indicator/__tests__/createSubIndicatorRenderer.test.ts +1 -0
- package/src/plugin/types.ts +1 -0
- package/src/tokens/__tests__/tokens.test.ts +2 -1
- package/src/version.ts +1 -1
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import type { DrawingKind } from '../../plugin'
|
|
2
|
+
|
|
3
|
+
// ---- Tool ID type ----
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* 所有支持的绘图工具 ID。
|
|
7
|
+
* UI 层通过 setTool(toolId) 切换工具,cursor 表示选择/交互模式。
|
|
8
|
+
*/
|
|
9
|
+
export type DrawingToolId =
|
|
10
|
+
| 'cursor'
|
|
11
|
+
| 'trend-line'
|
|
12
|
+
| 'ray'
|
|
13
|
+
| 'h-line'
|
|
14
|
+
| 'h-ray'
|
|
15
|
+
| 'v-line'
|
|
16
|
+
| 'crosshair-line'
|
|
17
|
+
| 'info-line'
|
|
18
|
+
| 'parallel-channel'
|
|
19
|
+
| 'regression-channel'
|
|
20
|
+
| 'flat-line'
|
|
21
|
+
| 'disjoint-channel'
|
|
22
|
+
|
|
23
|
+
// ---- Tool grouping ----
|
|
24
|
+
// 按所需锚点数量分组:1 个锚点(水平/垂直线)、2 个锚点(趋势线)、3 个锚点(通道线)。
|
|
25
|
+
// 新增工具类型时,加到对应数组即可,无需改其他模块。
|
|
26
|
+
|
|
27
|
+
/** 单锚点工具:点击一次即创建完成 */
|
|
28
|
+
export const SINGLE_ANCHOR_TOOLS: readonly DrawingToolId[] = [
|
|
29
|
+
'h-line',
|
|
30
|
+
'h-ray',
|
|
31
|
+
'v-line',
|
|
32
|
+
'crosshair-line',
|
|
33
|
+
]
|
|
34
|
+
|
|
35
|
+
/** 双锚点工具:需要两次点击才能完成 */
|
|
36
|
+
export const DOUBLE_ANCHOR_TOOLS: readonly DrawingToolId[] = [
|
|
37
|
+
'trend-line',
|
|
38
|
+
'ray',
|
|
39
|
+
'info-line',
|
|
40
|
+
'regression-channel',
|
|
41
|
+
]
|
|
42
|
+
|
|
43
|
+
/** 三锚点工具:需要三次点击才能完成 */
|
|
44
|
+
export const TRIPLE_ANCHOR_TOOLS: readonly DrawingToolId[] = [
|
|
45
|
+
'parallel-channel',
|
|
46
|
+
'flat-line',
|
|
47
|
+
'disjoint-channel',
|
|
48
|
+
]
|
|
49
|
+
|
|
50
|
+
/** 返回工具所需的锚点数量(cursor 返回 null) */
|
|
51
|
+
export function getAnchorCountForTool(toolId: DrawingToolId): 1 | 2 | 3 | null {
|
|
52
|
+
if (SINGLE_ANCHOR_TOOLS.includes(toolId as any)) return 1
|
|
53
|
+
if (DOUBLE_ANCHOR_TOOLS.includes(toolId as any)) return 2
|
|
54
|
+
if (TRIPLE_ANCHOR_TOOLS.includes(toolId as any)) return 3
|
|
55
|
+
return null
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// ---- Kind mapping ----
|
|
59
|
+
// toolId(UI 概念) → DrawingKind(引擎定义概念)。
|
|
60
|
+
// 大部分 toolId 与 kind 同名,h-line → horizontal-line 等少数需要映射。
|
|
61
|
+
|
|
62
|
+
/** 将 toolId 映射为引擎识别的 DrawingKind */
|
|
63
|
+
export function getDrawingKind(toolId: DrawingToolId): DrawingKind {
|
|
64
|
+
switch (toolId) {
|
|
65
|
+
case 'cursor':
|
|
66
|
+
throw new Error('cursor is not a drawing kind')
|
|
67
|
+
case 'h-line':
|
|
68
|
+
return 'horizontal-line'
|
|
69
|
+
case 'h-ray':
|
|
70
|
+
return 'horizontal-ray'
|
|
71
|
+
case 'v-line':
|
|
72
|
+
return 'vertical-line'
|
|
73
|
+
case 'crosshair-line':
|
|
74
|
+
return 'cross-line'
|
|
75
|
+
default:
|
|
76
|
+
return toolId
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// ---- Extend mode ----
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* 返回图元的线段延伸模式。
|
|
84
|
+
* ray → 向右延伸,extended-line → 两端延伸,其他 → 不延伸。
|
|
85
|
+
*/
|
|
86
|
+
export function getExtendMode(kind: DrawingKind): 'none' | 'left' | 'right' | 'both' {
|
|
87
|
+
switch (kind) {
|
|
88
|
+
case 'ray':
|
|
89
|
+
return 'right'
|
|
90
|
+
case 'extended-line':
|
|
91
|
+
return 'both'
|
|
92
|
+
default:
|
|
93
|
+
return 'none'
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/** 所有带填充区域的通道类图元 kind 列表 */
|
|
98
|
+
export const CHANNEL_KINDS: readonly DrawingKind[] = [
|
|
99
|
+
'parallel-channel',
|
|
100
|
+
'regression-channel',
|
|
101
|
+
'flat-line',
|
|
102
|
+
'disjoint-channel',
|
|
103
|
+
]
|
|
@@ -47,9 +47,9 @@ function createBundle(): IndicatorSeriesBundle {
|
|
|
47
47
|
mfi: { series: [], params: {} as never },
|
|
48
48
|
pivot: { series: [], params: {} as never },
|
|
49
49
|
fib: { series: [], params: {} as never },
|
|
50
|
-
structure: { series: { swings: [],
|
|
50
|
+
structure: { series: { swings: [], events: [], trend: 'range' }, params: {} as never },
|
|
51
51
|
zones: { series: [], params: {} as never },
|
|
52
|
-
volumeProfile: { series: { bins: [], vah: 0, val: 0, poc: 0 }, params: {} as never },
|
|
52
|
+
volumeProfile: { series: { bins: [], vah: 0, val: 0, poc: 0, totalVolume: 0 }, params: {} as never },
|
|
53
53
|
_changed: [],
|
|
54
54
|
}
|
|
55
55
|
}
|
|
@@ -330,7 +330,7 @@ describe('stateComposer', () => {
|
|
|
330
330
|
|
|
331
331
|
it('uses fixed unit range for structure overlay via metadata composer', () => {
|
|
332
332
|
const bundle = createBundle()
|
|
333
|
-
bundle.structure.series = { swings: [],
|
|
333
|
+
bundle.structure.series = { swings: [], events: [], trend: 'range' }
|
|
334
334
|
bundle.structure.params = { showStructure: true } as never
|
|
335
335
|
const timestamp = 1000
|
|
336
336
|
const visibleRange = { start: 0, end: 1 }
|
|
@@ -346,10 +346,11 @@ describe('stateComposer', () => {
|
|
|
346
346
|
it('derives volumeProfile range from bins and val/vah via metadata composer', () => {
|
|
347
347
|
const bundle = createBundle()
|
|
348
348
|
bundle.volumeProfile.series = {
|
|
349
|
-
bins: [{ priceLow: 95, priceHigh: 105, volume: 10
|
|
349
|
+
bins: [{ priceLow: 95, priceHigh: 105, volume: 10 }],
|
|
350
350
|
vah: 103,
|
|
351
351
|
val: 97,
|
|
352
352
|
poc: 100,
|
|
353
|
+
totalVolume: 0,
|
|
353
354
|
}
|
|
354
355
|
bundle.volumeProfile.params = { showVolumeProfile: true } as never
|
|
355
356
|
const timestamp = 1000
|
package/src/plugin/types.ts
CHANGED
|
@@ -24,6 +24,7 @@ import {
|
|
|
24
24
|
mergeTheme,
|
|
25
25
|
type Theme,
|
|
26
26
|
type ColorTokens,
|
|
27
|
+
type IndicatorPalette,
|
|
27
28
|
} from '..'
|
|
28
29
|
|
|
29
30
|
// ---------------------------------------------------------------------------
|
|
@@ -197,7 +198,7 @@ describe('mergeTheme', () => {
|
|
|
197
198
|
|
|
198
199
|
it('palette merges per-key, not whole-replace', () => {
|
|
199
200
|
const merged = mergeTheme(lightTheme, {
|
|
200
|
-
colors: { palette: { i1: '#000000' } },
|
|
201
|
+
colors: { palette: { i1: '#000000' } as IndicatorPalette },
|
|
201
202
|
})
|
|
202
203
|
expect(merged.colors.palette.i1).toBe('#000000')
|
|
203
204
|
expect(merged.colors.palette.i2).toBe(lightTheme.colors.palette.i2)
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const VERSION = "0.8.10
|
|
1
|
+
export const VERSION = "0.8.10"
|