@baron1996/klinecharts-adapter 0.4.0 → 0.4.2
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.map +1 -1
- package/dist/adapter.js +25 -0
- package/dist/engine.d.ts +2 -0
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +14 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -2
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;AAUvC,OAAO,EAIN,KAAK,oBAAoB,EAGzB,MAAM,0BAA0B,CAAC;AASlC,OAAO,KAAK,EACX,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,yBAAyB,EACzB,qBAAqB,EACrB,qBAAqB,EACrB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAKN,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,EACjC,MAAM,+BAA+B,CAAC;AAKvC,OAAO,EAEN,KAAK,gBAAgB,EAErB,KAAK,eAAe,EACpB,MAAM,8BAA8B,CAAC;AAGtC,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,aAAa,CAAC;AAClD,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,QAAQ,CAAC;AAClD,MAAM,MAAM,uBAAuB,GAChC,QAAQ,GACR,gBAAgB,GAChB,aAAa,GACb,SAAS,GACT,kBAAkB,CAAC;AAEtB,MAAM,WAAW,wBAAwB;IACxC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,CAAC;IACjE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,SAAS,wBAAwB,EAAE,CAAC;IACzD,QAAQ,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACrC;AAED,UAAU,wBAAwB;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;CAC9B;AAED,MAAM,MAAM,iBAAiB,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;CAAE,GACpE;IAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;CAAE,GACpE;IAAE,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;CAAE,GACzG;IAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACzD;IAAE,QAAQ,CAAC,IAAI,EAAE,2BAA2B,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC9G;IAAE,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC1D,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAA;CAAE,GAAG,wBAAwB,CAAC,GACtE,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAA;CAAE,GAAG,wBAAwB,CAAC,GACpG,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,wBAAwB,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;CAAE,GAAG,wBAAwB,CAAC,GACxG,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,wBAAwB,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAA;CAAE,GAAG,wBAAwB,CAAC,GAClH;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,CAAA;CAAE,CAAC;AAE9F,MAAM,MAAM,yBAAyB,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;AAE3E,MAAM,WAAW,qBAAsB,SAAQ,oBAAoB;CAAG;AAuCtE;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,iBAAiB,EAAE,0BAA0B;;
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/adapter.js
CHANGED
|
@@ -38,6 +38,8 @@ export class KLineChartsSceneAdapter {
|
|
|
38
38
|
#chart;
|
|
39
39
|
/** 引擎模块句柄,用于版本读取和精确销毁。 */
|
|
40
40
|
#engine;
|
|
41
|
+
/** 引擎点击仲裁显式复位;每次绘制开始前调用,保证新绘制首击独立成单击。 */
|
|
42
|
+
#resetClickArbitration;
|
|
41
43
|
/** 场景 ID 与引擎内部 ID 的双向映射。 */
|
|
42
44
|
#idMap;
|
|
43
45
|
/** 当前最后一次成功提交、可导出的规范化场景。 */
|
|
@@ -56,6 +58,8 @@ export class KLineChartsSceneAdapter {
|
|
|
56
58
|
#pointerInteraction;
|
|
57
59
|
/** 当前交互式量度的首锚点;只用于补偿引擎丢弃快速第二击,不进入 Scene。 */
|
|
58
60
|
#interactivePriceMeasurement;
|
|
61
|
+
/** 当前引擎进行中的绘制 Overlay ID;非 null 时 pointerdown 只路由给新绘制,不做命中测试。 */
|
|
62
|
+
#drawingInProgressId = null;
|
|
59
63
|
/** 确定性 opaque 交互 ID 序号。 */
|
|
60
64
|
#interactionSequence = 0;
|
|
61
65
|
/** 显式 Workspace 模式;Legacy 与 Workspace 状态严格隔离。 */
|
|
@@ -80,6 +84,7 @@ export class KLineChartsSceneAdapter {
|
|
|
80
84
|
this.#scene = scene;
|
|
81
85
|
this.#chart = handle.chart;
|
|
82
86
|
this.#engine = handle.module;
|
|
87
|
+
this.#resetClickArbitration = handle.resetClickArbitration;
|
|
83
88
|
this.#idMap = idMap;
|
|
84
89
|
this.#originalBackground = originalBackground;
|
|
85
90
|
this.#installInteractionListeners();
|
|
@@ -315,6 +320,9 @@ export class KLineChartsSceneAdapter {
|
|
|
315
320
|
this.#interactivePriceMeasurement?.source.id === source.id) {
|
|
316
321
|
this.#interactivePriceMeasurement = undefined;
|
|
317
322
|
}
|
|
323
|
+
if (drawing && this.#drawingInProgressId === source.id) {
|
|
324
|
+
this.#drawingInProgressId = null;
|
|
325
|
+
}
|
|
318
326
|
this.#safelyCommitEngineOverlay(overlay, source, drawing ? 'created' : 'updated');
|
|
319
327
|
},
|
|
320
328
|
onPressedMoveStart: ({ overlay }) => {
|
|
@@ -344,6 +352,9 @@ export class KLineChartsSceneAdapter {
|
|
|
344
352
|
if (this.#interactivePriceMeasurement?.source.id === overlay.id) {
|
|
345
353
|
this.#interactivePriceMeasurement = undefined;
|
|
346
354
|
}
|
|
355
|
+
if (this.#drawingInProgressId === overlay.id) {
|
|
356
|
+
this.#drawingInProgressId = null;
|
|
357
|
+
}
|
|
347
358
|
if (this.#activeOverlays().some((candidate) => candidate.id === overlay.id)) {
|
|
348
359
|
this.#setActiveOverlays(this.#activeOverlays().filter((candidate) => candidate.id !== overlay.id));
|
|
349
360
|
if (this.#selectedOverlayId === overlay.id) {
|
|
@@ -445,6 +456,7 @@ export class KLineChartsSceneAdapter {
|
|
|
445
456
|
const index = candidate.overlays.length - 1;
|
|
446
457
|
const overlay = candidate.overlays[index];
|
|
447
458
|
this.#interactivePriceMeasurement = undefined;
|
|
459
|
+
this.#drawingInProgressId = null;
|
|
448
460
|
if (!this.#chart.removeOverlay({ id: overlay.id })) {
|
|
449
461
|
throw new SceneError('RUNTIME_INIT_FAILED', `/overlays/${index}`, `KLineCharts failed to replace in-progress Overlay ${overlay.id}.`);
|
|
450
462
|
}
|
|
@@ -586,6 +598,12 @@ export class KLineChartsSceneAdapter {
|
|
|
586
598
|
throw error;
|
|
587
599
|
}
|
|
588
600
|
}
|
|
601
|
+
// 绘制进行中时 pointerdown 必须优先路由给新绘制:不得对已有 overlay 做命中测试、
|
|
602
|
+
// 选中、取消选中或拖拽,也不得 preventDefault / stopImmediatePropagation /
|
|
603
|
+
// setPointerCapture,否则引擎收不到 mousedown/click,新绘制首击会被消费。
|
|
604
|
+
if (this.#drawingInProgressId !== null) {
|
|
605
|
+
return;
|
|
606
|
+
}
|
|
589
607
|
const hit = hitTestOverlayGeometries(coordinate, this.#overlayGeometries());
|
|
590
608
|
if (hit === null) {
|
|
591
609
|
const selected = this.#activeOverlays().find((overlay) => overlay.id === this.#selectedOverlayId);
|
|
@@ -850,6 +868,7 @@ export class KLineChartsSceneAdapter {
|
|
|
850
868
|
this.#workspaceSources.delete(request.id);
|
|
851
869
|
throw new SceneError('RUNTIME_INIT_FAILED', '/drawings', `KLineCharts failed to start Drawing ${request.id}.`);
|
|
852
870
|
}
|
|
871
|
+
this.#drawingInProgressId = request.id;
|
|
853
872
|
return request.id;
|
|
854
873
|
}
|
|
855
874
|
listDrawings() {
|
|
@@ -1151,6 +1170,10 @@ export class KLineChartsSceneAdapter {
|
|
|
1151
1170
|
this.#engineOverlays().some((overlay) => overlay.id === request.id)) {
|
|
1152
1171
|
throw new SceneError('DUPLICATE_ID', '/overlays/id', `Overlay ${request.id} already exists.`);
|
|
1153
1172
|
}
|
|
1173
|
+
// 下一次绘制开始前显式复位引擎点击仲裁:klinecharts 10.0.0 会在 500ms 窗口内
|
|
1174
|
+
// 相距 ≥5px 的第二次 mouseup 上既不派发 click 也不派发 double-click,直接丢弃该次点击,
|
|
1175
|
+
// 导致“上一绘制提交后紧接着的新绘制首击”被吞。复位后新绘制首击总是独立的单击。
|
|
1176
|
+
this.#resetClickArbitration();
|
|
1154
1177
|
const candidate = request.type === 'priceMeasurement'
|
|
1155
1178
|
? parseChartScene(promoteSceneToM2(this.#scene))
|
|
1156
1179
|
: this.#scene;
|
|
@@ -1158,6 +1181,7 @@ export class KLineChartsSceneAdapter {
|
|
|
1158
1181
|
if (result !== request.id) {
|
|
1159
1182
|
throw new SceneError('RUNTIME_INIT_FAILED', '/overlays', `KLineCharts failed to start drawing Overlay ${request.id}.`);
|
|
1160
1183
|
}
|
|
1184
|
+
this.#drawingInProgressId = request.id;
|
|
1161
1185
|
this.#scene = candidate;
|
|
1162
1186
|
if (request.type === 'priceMeasurement') {
|
|
1163
1187
|
this.#interactivePriceMeasurement = {
|
|
@@ -1210,6 +1234,7 @@ export class KLineChartsSceneAdapter {
|
|
|
1210
1234
|
}
|
|
1211
1235
|
this.#cancelInteraction('destroy');
|
|
1212
1236
|
this.#interactivePriceMeasurement = undefined;
|
|
1237
|
+
this.#drawingInProgressId = null;
|
|
1213
1238
|
this.#disposed = true;
|
|
1214
1239
|
this.#removeInteractionListeners();
|
|
1215
1240
|
this.#listeners.clear();
|
package/dist/engine.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ export type KLineChartsModule = typeof import('klinecharts');
|
|
|
4
4
|
export interface EngineHandle {
|
|
5
5
|
readonly chart: Chart;
|
|
6
6
|
readonly module: KLineChartsModule;
|
|
7
|
+
/** 显式复位引擎点击仲裁状态;每次绘制开始前调用,避免快速连续绘制的首击被吞。 */
|
|
8
|
+
readonly resetClickArbitration: () => void;
|
|
7
9
|
}
|
|
8
10
|
/** 按固定顺序创建并初始化唯一的 KLineCharts 引擎。 */
|
|
9
11
|
export declare function createEngine(container: HTMLElement, scene: ChartScene): Promise<EngineHandle>;
|
package/dist/engine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAUzC,MAAM,MAAM,iBAAiB,GAAG,cAAc,aAAa,CAAC,CAAC;AAE7D,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAUzC,MAAM,MAAM,iBAAiB,GAAG,cAAc,aAAa,CAAC,CAAC;AAE7D,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,4CAA4C;IAC5C,QAAQ,CAAC,qBAAqB,EAAE,MAAM,IAAI,CAAC;CAC3C;AA+CD,qCAAqC;AACrC,wBAAsB,YAAY,CACjC,SAAS,EAAE,WAAW,EACtB,KAAK,EAAE,UAAU,GACf,OAAO,CAAC,YAAY,CAAC,CAmCvB"}
|
package/dist/engine.js
CHANGED
|
@@ -2,6 +2,15 @@ import { SceneError } from '@baron1996/kline-scene-schema';
|
|
|
2
2
|
import { toKLineChartsOptions } from './conversion/chart-options.js';
|
|
3
3
|
import { createStaticDataLoader } from './static-data-loader.js';
|
|
4
4
|
import { KLINECHARTS_ENGINE_VERSION, KLINECHARTS_RUNTIME_VERSION, SUPPORTED_KLINECHARTS_RUNTIME_VERSIONS, } from './version.js';
|
|
5
|
+
function resolveClickArbitrationReset(chart) {
|
|
6
|
+
const eventHandler = chart
|
|
7
|
+
._chartEvent?._event;
|
|
8
|
+
const reset = eventHandler?._resetClickTimeout;
|
|
9
|
+
if (eventHandler === undefined || typeof reset !== 'function') {
|
|
10
|
+
throw new SceneError('RUNTIME_INIT_FAILED', '/runtime', `KLineCharts ${KLINECHARTS_ENGINE_VERSION} 内部点击仲裁复位钩子不可用;引擎私有结构可能已变化。`);
|
|
11
|
+
}
|
|
12
|
+
return reset.bind(eventHandler);
|
|
13
|
+
}
|
|
5
14
|
function assertRuntimeIdentity(scene, actualEngineVersion) {
|
|
6
15
|
if (scene.runtime.engine !== 'klinecharts' ||
|
|
7
16
|
scene.runtime.engineVersion !== KLINECHARTS_ENGINE_VERSION ||
|
|
@@ -33,5 +42,9 @@ export async function createEngine(container, scene) {
|
|
|
33
42
|
});
|
|
34
43
|
chart.setPeriod(structuredClone(scene.period));
|
|
35
44
|
chart.setDataLoader(createStaticDataLoader(scene.data));
|
|
36
|
-
return {
|
|
45
|
+
return {
|
|
46
|
+
chart,
|
|
47
|
+
module: engine,
|
|
48
|
+
resetClickArbitration: resolveClickArbitrationReset(chart),
|
|
49
|
+
};
|
|
37
50
|
}
|
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.4.
|
|
3
|
+
"version": "0.4.2",
|
|
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.4.
|
|
41
|
+
"@baron1996/kline-scene-schema": "0.4.2",
|
|
42
42
|
"klinecharts": "10.0.0"
|
|
43
43
|
}
|
|
44
44
|
}
|