@baron1996/klinecharts-adapter 0.4.3 → 0.5.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.
- package/dist/adapter.d.ts +27 -0
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +114 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -2
package/dist/adapter.d.ts
CHANGED
|
@@ -13,6 +13,18 @@ export interface AdapterIndicatorSnapshot {
|
|
|
13
13
|
readonly paneId: string;
|
|
14
14
|
readonly yAxisId: string;
|
|
15
15
|
}
|
|
16
|
+
export interface AdapterCrosshairBar {
|
|
17
|
+
readonly open: number;
|
|
18
|
+
readonly high: number;
|
|
19
|
+
readonly low: number;
|
|
20
|
+
readonly close: number;
|
|
21
|
+
readonly volume: number | null;
|
|
22
|
+
}
|
|
23
|
+
export interface AdapterCrosshairSnapshot {
|
|
24
|
+
readonly timestamp: number | null;
|
|
25
|
+
readonly bar: AdapterCrosshairBar | null;
|
|
26
|
+
}
|
|
27
|
+
export type AdapterCrosshairListener = (snapshot: AdapterCrosshairSnapshot) => void;
|
|
16
28
|
export interface AdapterSnapshot {
|
|
17
29
|
readonly engineVersion: string;
|
|
18
30
|
readonly runtimeVersion: ChartScene['runtime']['runtimeVersion'];
|
|
@@ -33,6 +45,12 @@ interface AdapterDragEventIdentity {
|
|
|
33
45
|
export type AdapterSceneEvent = {
|
|
34
46
|
readonly type: 'overlay-created';
|
|
35
47
|
readonly overlay: SceneOverlay;
|
|
48
|
+
} | {
|
|
49
|
+
readonly type: 'indicator-created';
|
|
50
|
+
readonly indicator: SceneIndicator;
|
|
51
|
+
} | {
|
|
52
|
+
readonly type: 'indicator-removed';
|
|
53
|
+
readonly id: string;
|
|
36
54
|
} | {
|
|
37
55
|
readonly type: 'overlay-updated';
|
|
38
56
|
readonly overlay: SceneOverlay;
|
|
@@ -62,6 +80,10 @@ export type AdapterSceneEvent = {
|
|
|
62
80
|
readonly type: 'overlay-drag-cancelled';
|
|
63
81
|
readonly reason: AdapterDragCancelReason;
|
|
64
82
|
} & AdapterDragEventIdentity) | {
|
|
83
|
+
readonly type: 'crosshair-changed';
|
|
84
|
+
readonly timestamp: number | null;
|
|
85
|
+
readonly bar: AdapterCrosshairBar | null;
|
|
86
|
+
} | {
|
|
65
87
|
readonly type: 'scene-error';
|
|
66
88
|
readonly issues: readonly SceneError['issues'][number][];
|
|
67
89
|
};
|
|
@@ -114,6 +136,11 @@ export declare class KLineChartsSceneAdapter implements DrawingEnginePort, MainS
|
|
|
114
136
|
startOverlayDrawing(request: OverlayDrawingRequest): string;
|
|
115
137
|
getOverlay(id: string): SceneOverlay | undefined;
|
|
116
138
|
listOverlays(): readonly SceneOverlay[];
|
|
139
|
+
getContainer(): HTMLElement;
|
|
140
|
+
listIndicators(): readonly SceneIndicator[];
|
|
141
|
+
addIndicator(value: SceneIndicator): SceneIndicator;
|
|
142
|
+
removeIndicator(id: string): boolean;
|
|
143
|
+
subscribeCrosshair(listener: AdapterCrosshairListener): () => void;
|
|
117
144
|
inspect(): AdapterSnapshot;
|
|
118
145
|
dispose(): void;
|
|
119
146
|
}
|
package/dist/adapter.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,UAAU,EAEV,OAAO,EACP,cAAc,EACd,YAAY,EACZ,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAGN,UAAU,EACV,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/adapter.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { parseDrawableWorkspaceDocument, parseChartScene, SceneError, } from '@baron1996/kline-scene-schema';
|
|
2
2
|
import { createEngine } from './engine.js';
|
|
3
|
+
import { toIndicatorCreate } from './conversion/indicators.js';
|
|
3
4
|
import { registerProjectOverlays } from './extensions/register.js';
|
|
4
5
|
import { createEngineIdMap, } from './conversion/id-map.js';
|
|
5
6
|
import { applyPanes, overrideSceneYAxis } from './conversion/panes.js';
|
|
@@ -40,6 +41,53 @@ export class KLineChartsSceneAdapter {
|
|
|
40
41
|
#engine;
|
|
41
42
|
/** 引擎点击仲裁显式复位;每次绘制开始前调用,保证新绘制首击独立成单击。 */
|
|
42
43
|
#resetClickArbitration;
|
|
44
|
+
/** 引擎十字线动作监听器集合。 */
|
|
45
|
+
#crosshairListeners = new Set();
|
|
46
|
+
/** 引擎十字线动作退订函数。 */
|
|
47
|
+
#unsubscribeCrosshair = null;
|
|
48
|
+
/** 引擎十字线动作的绑定处理函数。 */
|
|
49
|
+
#handleCrosshairChange = (payload) => {
|
|
50
|
+
const event = (typeof payload === 'object' && payload !== null
|
|
51
|
+
? payload
|
|
52
|
+
: {});
|
|
53
|
+
const data = this.#chart.getDataList();
|
|
54
|
+
const store = this.#chart._chartStore;
|
|
55
|
+
const current = store?._crosshair;
|
|
56
|
+
let barIndex = null;
|
|
57
|
+
if (typeof event.dataIndex === 'number' &&
|
|
58
|
+
event.dataIndex >= 0 &&
|
|
59
|
+
event.dataIndex < data.length) {
|
|
60
|
+
barIndex = event.dataIndex;
|
|
61
|
+
}
|
|
62
|
+
else if (current !== undefined &&
|
|
63
|
+
typeof current.dataIndex === 'number' &&
|
|
64
|
+
current.dataIndex >= 0 &&
|
|
65
|
+
current.dataIndex < data.length) {
|
|
66
|
+
barIndex = current.dataIndex;
|
|
67
|
+
}
|
|
68
|
+
else if (current !== undefined &&
|
|
69
|
+
typeof current.timestamp === 'number') {
|
|
70
|
+
const index = data.findIndex((item) => item.timestamp === current.timestamp);
|
|
71
|
+
if (index >= 0) {
|
|
72
|
+
barIndex = index;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const match = barIndex === null ? undefined : data[barIndex];
|
|
76
|
+
const timestamp = match?.timestamp ?? null;
|
|
77
|
+
const bar = match === undefined
|
|
78
|
+
? null
|
|
79
|
+
: {
|
|
80
|
+
open: match.open,
|
|
81
|
+
high: match.high,
|
|
82
|
+
low: match.low,
|
|
83
|
+
close: match.close,
|
|
84
|
+
volume: match.volume ?? null,
|
|
85
|
+
};
|
|
86
|
+
const snapshot = { timestamp, bar };
|
|
87
|
+
for (const listener of this.#crosshairListeners) {
|
|
88
|
+
listener(structuredClone(snapshot));
|
|
89
|
+
}
|
|
90
|
+
};
|
|
43
91
|
/** 场景 ID 与引擎内部 ID 的双向映射。 */
|
|
44
92
|
#idMap;
|
|
45
93
|
/** 当前最后一次成功提交、可导出的规范化场景。 */
|
|
@@ -88,6 +136,10 @@ export class KLineChartsSceneAdapter {
|
|
|
88
136
|
this.#idMap = idMap;
|
|
89
137
|
this.#originalBackground = originalBackground;
|
|
90
138
|
this.#installInteractionListeners();
|
|
139
|
+
this.#chart.subscribeAction('onCrosshairChange', this.#handleCrosshairChange);
|
|
140
|
+
this.#unsubscribeCrosshair = () => {
|
|
141
|
+
this.#chart.unsubscribeAction('onCrosshairChange', this.#handleCrosshairChange);
|
|
142
|
+
};
|
|
91
143
|
}
|
|
92
144
|
static async create(container, value) {
|
|
93
145
|
const scene = parseChartScene(value);
|
|
@@ -1208,6 +1260,65 @@ export class KLineChartsSceneAdapter {
|
|
|
1208
1260
|
this.#assertActive();
|
|
1209
1261
|
return structuredClone(this.#scene.overlays);
|
|
1210
1262
|
}
|
|
1263
|
+
getContainer() {
|
|
1264
|
+
this.#assertActive();
|
|
1265
|
+
return this.#container;
|
|
1266
|
+
}
|
|
1267
|
+
listIndicators() {
|
|
1268
|
+
this.#assertActive();
|
|
1269
|
+
return structuredClone(this.#scene.panes.flatMap((pane) => pane.indicators));
|
|
1270
|
+
}
|
|
1271
|
+
addIndicator(value) {
|
|
1272
|
+
this.#assertActive();
|
|
1273
|
+
const paneIndex = this.#scene.panes.findIndex((pane) => pane.id === value.paneId);
|
|
1274
|
+
if (paneIndex < 0) {
|
|
1275
|
+
throw new SceneError('INVALID_REFERENCE', '/panes', `Pane ${value.paneId} does not exist.`);
|
|
1276
|
+
}
|
|
1277
|
+
const pane = this.#scene.panes[paneIndex];
|
|
1278
|
+
if (pane.indicators.some((indicator) => indicator.id === value.id)) {
|
|
1279
|
+
throw new SceneError('DUPLICATE_ID', `/panes/${paneIndex}/indicators`, `Indicator ${value.id} already exists.`);
|
|
1280
|
+
}
|
|
1281
|
+
const path = `/panes/${pane.order}/indicators/${pane.indicators.length}`;
|
|
1282
|
+
const createdId = this.#chart.createIndicator(toIndicatorCreate(value, this.#idMap, path), true);
|
|
1283
|
+
if (createdId === null || createdId !== value.id) {
|
|
1284
|
+
throw new SceneError('RUNTIME_INIT_FAILED', path, `KLineCharts failed to create Indicator ${value.id}.`);
|
|
1285
|
+
}
|
|
1286
|
+
const panes = structuredClone(this.#scene.panes);
|
|
1287
|
+
panes[paneIndex].indicators.push(structuredClone(value));
|
|
1288
|
+
this.#scene = parseChartScene({
|
|
1289
|
+
...structuredClone(this.#scene),
|
|
1290
|
+
panes,
|
|
1291
|
+
});
|
|
1292
|
+
const committed = this.#scene.panes[paneIndex].indicators.at(-1);
|
|
1293
|
+
this.#emit({ type: 'indicator-created', indicator: committed });
|
|
1294
|
+
return structuredClone(committed);
|
|
1295
|
+
}
|
|
1296
|
+
removeIndicator(id) {
|
|
1297
|
+
this.#assertActive();
|
|
1298
|
+
const paneIndex = this.#scene.panes.findIndex((pane) => pane.indicators.some((indicator) => indicator.id === id));
|
|
1299
|
+
if (paneIndex < 0) {
|
|
1300
|
+
return false;
|
|
1301
|
+
}
|
|
1302
|
+
if (!this.#chart.removeIndicator({ id })) {
|
|
1303
|
+
return false;
|
|
1304
|
+
}
|
|
1305
|
+
const panes = structuredClone(this.#scene.panes);
|
|
1306
|
+
const targetPane = panes[paneIndex];
|
|
1307
|
+
targetPane.indicators = targetPane.indicators.filter((indicator) => indicator.id !== id);
|
|
1308
|
+
this.#scene = parseChartScene({
|
|
1309
|
+
...structuredClone(this.#scene),
|
|
1310
|
+
panes,
|
|
1311
|
+
});
|
|
1312
|
+
this.#emit({ type: 'indicator-removed', id });
|
|
1313
|
+
return true;
|
|
1314
|
+
}
|
|
1315
|
+
subscribeCrosshair(listener) {
|
|
1316
|
+
this.#assertActive();
|
|
1317
|
+
this.#crosshairListeners.add(listener);
|
|
1318
|
+
return () => {
|
|
1319
|
+
this.#crosshairListeners.delete(listener);
|
|
1320
|
+
};
|
|
1321
|
+
}
|
|
1211
1322
|
inspect() {
|
|
1212
1323
|
this.#assertActive();
|
|
1213
1324
|
const indicators = this.#chart.getIndicators().map((indicator) => {
|
|
@@ -1243,6 +1354,9 @@ export class KLineChartsSceneAdapter {
|
|
|
1243
1354
|
this.#drawingInProgressId = null;
|
|
1244
1355
|
this.#disposed = true;
|
|
1245
1356
|
this.#removeInteractionListeners();
|
|
1357
|
+
this.#unsubscribeCrosshair?.();
|
|
1358
|
+
this.#unsubscribeCrosshair = null;
|
|
1359
|
+
this.#crosshairListeners.clear();
|
|
1246
1360
|
this.#listeners.clear();
|
|
1247
1361
|
this.#portListeners.clear();
|
|
1248
1362
|
this.#workspaceSources.clear();
|
package/dist/version.d.ts
CHANGED
package/dist/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@baron1996/klinecharts-adapter",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.1",
|
|
4
4
|
"description": "Controlled ChartScene adapter for KLineCharts.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@baron1996/kline-scene-schema": "0.
|
|
41
|
+
"@baron1996/kline-scene-schema": "0.5.1",
|
|
42
42
|
"klinecharts": "10.0.0"
|
|
43
43
|
}
|
|
44
44
|
}
|