@baron1996/klinecharts-runtime 0.8.0 → 0.9.3
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/README.md +16 -2
- package/dist/drawing/capabilities.d.ts +3 -0
- package/dist/drawing/capabilities.d.ts.map +1 -1
- package/dist/drawing/session-controller.d.ts +1 -0
- package/dist/drawing/session-controller.d.ts.map +1 -1
- package/dist/drawing/session-controller.js +40 -2
- package/dist/drawing/workspace-runtime.d.ts +3 -0
- package/dist/drawing/workspace-runtime.d.ts.map +1 -1
- package/dist/drawing/workspace-runtime.js +24 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/runtime.d.ts +3 -0
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +26 -0
- package/dist/toolbar/drawing-floating-toolbar-styles.d.ts +2 -0
- package/dist/toolbar/drawing-floating-toolbar-styles.d.ts.map +1 -0
- package/dist/toolbar/drawing-floating-toolbar-styles.js +250 -0
- package/dist/toolbar/drawing-floating-toolbar.d.ts +8 -0
- package/dist/toolbar/drawing-floating-toolbar.d.ts.map +1 -0
- package/dist/toolbar/drawing-floating-toolbar.js +373 -0
- package/dist/toolbar/standard-toolbar-styles.d.ts.map +1 -1
- package/dist/toolbar/standard-toolbar-styles.js +0 -18
- package/dist/toolbar/standard-toolbar.d.ts.map +1 -1
- package/dist/toolbar/standard-toolbar.js +15 -172
- package/dist/toolbar/toolbar-icons.d.ts +33 -15
- package/dist/toolbar/toolbar-icons.d.ts.map +1 -1
- package/dist/toolbar/toolbar-icons.js +22 -5
- package/dist/toolbar/toolbar-tools.d.ts +1 -6
- package/dist/toolbar/toolbar-tools.d.ts.map +1 -1
- package/dist/toolbar/toolbar-tools.js +0 -6
- package/dist/types.d.ts +9 -5
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -4,16 +4,22 @@ Browser editing runtime and standard annotation toolbar for deterministic KLineC
|
|
|
4
4
|
ChartScene files.
|
|
5
5
|
|
|
6
6
|
```bash
|
|
7
|
-
npm install --save-exact @baron1996/kline-scene-schema@0.6.0 @baron1996/klinecharts-runtime@0.
|
|
7
|
+
npm install --save-exact @baron1996/kline-scene-schema@0.6.0 @baron1996/klinecharts-runtime@0.9.3
|
|
8
8
|
```
|
|
9
9
|
|
|
10
10
|
```ts
|
|
11
11
|
import { parseChartScene } from '@baron1996/kline-scene-schema';
|
|
12
|
-
import {
|
|
12
|
+
import {
|
|
13
|
+
createDrawingFloatingToolbar,
|
|
14
|
+
createKLineSceneRuntime,
|
|
15
|
+
createStandardToolbar,
|
|
16
|
+
} from '@baron1996/klinecharts-runtime';
|
|
13
17
|
|
|
14
18
|
// chartSceneInput is a complete embedded ChartScene JSON value from the host.
|
|
15
19
|
const scene = parseChartScene(chartSceneInput);
|
|
16
20
|
let runtime = await createKLineSceneRuntime(container, scene);
|
|
21
|
+
const standardToolbar = createStandardToolbar(toolbarContainer, runtime);
|
|
22
|
+
const drawingToolbar = createDrawingFloatingToolbar(container, runtime);
|
|
17
23
|
|
|
18
24
|
await runtime.setPriceScale('linear');
|
|
19
25
|
runtime.startOverlayDrawing('priceMeasurement');
|
|
@@ -32,6 +38,8 @@ const drawingCompleted = new Promise<void>((resolve) => {
|
|
|
32
38
|
await drawingCompleted;
|
|
33
39
|
const exportedScene = runtime.exportScene();
|
|
34
40
|
const serializedScene = JSON.stringify(exportedScene);
|
|
41
|
+
drawingToolbar.destroy();
|
|
42
|
+
standardToolbar.destroy();
|
|
35
43
|
runtime.destroy();
|
|
36
44
|
|
|
37
45
|
runtime = await createKLineSceneRuntime(
|
|
@@ -40,6 +48,12 @@ runtime = await createKLineSceneRuntime(
|
|
|
40
48
|
);
|
|
41
49
|
```
|
|
42
50
|
|
|
51
|
+
`createStandardToolbar` owns chart-level controls such as price scale and main-series
|
|
52
|
+
presentation. Selecting a Drawing shows `createDrawingFloatingToolbar`, which owns
|
|
53
|
+
line style, width, color, text, lock/unlock, and explicit deletion. The floating
|
|
54
|
+
toolbar can be dragged within the chart's visible bounds. Baron does not replace or
|
|
55
|
+
cancel the browser context menu; right-click never deletes a Drawing.
|
|
56
|
+
|
|
43
57
|
The runtime does not provide undo or redo and does not fetch market data.
|
|
44
58
|
Runtime `0.2.0` events are structured-cloneable pure data with
|
|
45
59
|
`sceneVersion: 1` and `runtimeVersion: '0.2.0'`. Measurement scenes persist only
|
|
@@ -14,11 +14,14 @@ export interface DrawingRuntimeCapability {
|
|
|
14
14
|
getDrawing(id: string): EngineDrawingSnapshot | undefined;
|
|
15
15
|
updateDrawingStyles(id: string, styles: Drawing['styles']): EngineDrawingSnapshot;
|
|
16
16
|
updateDrawingText(id: string, text: string): EngineDrawingSnapshot;
|
|
17
|
+
updateDrawingLocked(id: string, locked: boolean): EngineDrawingSnapshot;
|
|
17
18
|
removeDrawing(id: string): boolean;
|
|
18
19
|
requestDrawingDelete(id: string): void;
|
|
19
20
|
selectDrawing(id: string | null): void;
|
|
20
21
|
getSelectedDrawingId(): string | undefined;
|
|
21
22
|
hitTestDrawing(point: EnginePixelCoordinate): string | null;
|
|
23
|
+
getDrawingMutationState(): 'ready' | 'busy';
|
|
24
|
+
subscribeDrawingChanges(listener: () => void): () => void;
|
|
22
25
|
}
|
|
23
26
|
export interface RuntimeAuxiliaryCapability {
|
|
24
27
|
getRuntimeCapabilityDescriptor(options?: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/drawing/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,UAAU,EACV,OAAO,EACP,UAAU,EACV,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EACX,gCAAgC,EAChC,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EACX,oBAAoB,EACpB,2BAA2B,EAC3B,MAAM,oCAAoC,CAAC;AAG5C,8CAA8C;AAC9C,MAAM,WAAW,wBAAwB;IACxC,YAAY,CACX,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,EACrB,OAAO,CAAC,EAAE;QACT,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;KACrD,GACC,MAAM,CAAC;IACV,YAAY,IAAI,SAAS,qBAAqB,EAAE,CAAC;IACjD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAAC;IAC1D,mBAAmB,CAClB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,GACvB,qBAAqB,CAAC;IACzB,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,qBAAqB,CAAC;IACnE,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IACnC,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACvC,oBAAoB,IAAI,MAAM,GAAG,SAAS,CAAC;IAC3C,cAAc,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/drawing/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,UAAU,EACV,OAAO,EACP,UAAU,EACV,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EACX,gCAAgC,EAChC,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EACX,oBAAoB,EACpB,2BAA2B,EAC3B,MAAM,oCAAoC,CAAC;AAG5C,8CAA8C;AAC9C,MAAM,WAAW,wBAAwB;IACxC,YAAY,CACX,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,EACrB,OAAO,CAAC,EAAE;QACT,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;KACrD,GACC,MAAM,CAAC;IACV,YAAY,IAAI,SAAS,qBAAqB,EAAE,CAAC;IACjD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAAC;IAC1D,mBAAmB,CAClB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,GACvB,qBAAqB,CAAC;IACzB,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,qBAAqB,CAAC;IACnE,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,qBAAqB,CAAC;IACxE,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IACnC,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACvC,oBAAoB,IAAI,MAAM,GAAG,SAAS,CAAC;IAC3C,cAAc,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,GAAG,IAAI,CAAC;IAC5D,uBAAuB,IAAI,OAAO,GAAG,MAAM,CAAC;IAC5C,uBAAuB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;CAC1D;AAED,MAAM,WAAW,0BAA0B;IAC1C,8BAA8B,CAAC,OAAO,CAAC,EAAE;QACxC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;KACvD,GAAG,2BAA2B,CAAC;IAChC,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG;QAClC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;QAC3B,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;QACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,iBAAiB,CAAC,KAAK,EAAE,QAAQ,GAAG,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACxE,yBAAyB,CACxB,YAAY,EAAE,sBAAsB,GAClC;QAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;CACrE;AAED,wBAAwB;AACxB,MAAM,WAAW,+BAA+B;IAC/C,oBAAoB,CACnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,SAAS,UAAU,EAAE,EAC3B,OAAO,EAAE,OAAO,GACd,gCAAgC,CAAC;IACpC,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;CAClE"}
|
|
@@ -47,6 +47,7 @@ export declare class DrawingSessionController {
|
|
|
47
47
|
}): string;
|
|
48
48
|
updateDrawingStyles(id: string, styles: EngineDrawingSnapshot['styles']): EngineDrawingSnapshot;
|
|
49
49
|
updateDrawingText(id: string, text: string): EngineDrawingSnapshot;
|
|
50
|
+
updateDrawingLocked(id: string, locked: boolean): EngineDrawingSnapshot;
|
|
50
51
|
removeDrawing(id: string): boolean;
|
|
51
52
|
selectDrawing(id: string | null): void;
|
|
52
53
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-controller.d.ts","sourceRoot":"","sources":["../../src/drawing/session-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAIhF,OAAO,KAAK,EACX,iBAAiB,EAEjB,qBAAqB,EACrB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACN,wBAAwB,EACxB,KAAK,eAAe,EACpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAEX,qBAAqB,EACrB,MAAM,uBAAuB,CAAC;AAG/B,MAAM,MAAM,mBAAmB,GAC5B,OAAO,GACP,aAAa,GACb,4BAA4B,GAC5B,cAAc,GACd,gBAAgB,GAChB,WAAW,CAAC;AAEf,MAAM,MAAM,uBAAuB,GAChC,4BAA4B,GAC5B,8BAA8B,GAC9B,yBAAyB,GACzB,4BAA4B,GAC5B,sCAAsC,CAAC;AAE1C,qBAAa,mBAAoB,SAAQ,KAAK;IAC7C,SAAgB,IAAI,EAAE,uBAAuB,CAAC;IAC9C,SAAgB,IAAI,EAAE,MAAM,CAAC;gBAEV,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAM/E;AAWD,MAAM,WAAW,+BAA+B;IAC/C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,WAAW,GAAG,gBAAgB,CAAC;IACpD,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;IACrD,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,SAAS,SAAS,EAAE,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE;QAChB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;KAC9B,CAAC;IACF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,CAAC,QAAQ,EAAE,SAAS,qBAAqB,EAAE,KAAK,eAAe,CAAC;IACxF,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;CACtD;AAED;;;GAGG;AACH,qBAAa,wBAAwB;;
|
|
1
|
+
{"version":3,"file":"session-controller.d.ts","sourceRoot":"","sources":["../../src/drawing/session-controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,8 @@ export class DrawingSessionController {
|
|
|
23
23
|
#confirmed = [];
|
|
24
24
|
#candidate = null;
|
|
25
25
|
#selectedId = null;
|
|
26
|
+
/** 尚未完成首次创建提交的 Drawing;用于把引擎侧取消恢复为 ready。 */
|
|
27
|
+
#interactingDrawingId = null;
|
|
26
28
|
#requestSequence = 0;
|
|
27
29
|
#suppressEngineEvents = false;
|
|
28
30
|
#unsubscribeEngine;
|
|
@@ -60,9 +62,11 @@ export class DrawingSessionController {
|
|
|
60
62
|
startCreate(type, options) {
|
|
61
63
|
this.#assertReady();
|
|
62
64
|
this.#state = 'interacting';
|
|
65
|
+
const id = options?.id ?? `drawing-${++this.#requestSequence}`;
|
|
66
|
+
this.#interactingDrawingId = id;
|
|
63
67
|
try {
|
|
64
|
-
|
|
65
|
-
id
|
|
68
|
+
const startedId = this.#options.engine.startDrawing({
|
|
69
|
+
id,
|
|
66
70
|
type: type,
|
|
67
71
|
...(options?.groupId === undefined ? {} : { groupId: options.groupId }),
|
|
68
72
|
target: structuredClone(this.#options.target),
|
|
@@ -70,8 +74,13 @@ export class DrawingSessionController {
|
|
|
70
74
|
metadata: structuredClone(options?.metadata ?? {}),
|
|
71
75
|
...(options?.text === undefined ? {} : { text: options.text }),
|
|
72
76
|
});
|
|
77
|
+
if (this.#state === 'interacting') {
|
|
78
|
+
this.#interactingDrawingId = startedId;
|
|
79
|
+
}
|
|
80
|
+
return startedId;
|
|
73
81
|
}
|
|
74
82
|
catch (error) {
|
|
83
|
+
this.#interactingDrawingId = null;
|
|
75
84
|
this.#state = 'ready';
|
|
76
85
|
throw error;
|
|
77
86
|
}
|
|
@@ -84,6 +93,10 @@ export class DrawingSessionController {
|
|
|
84
93
|
this.#assertReady();
|
|
85
94
|
return this.#options.engine.updateDrawingText(id, text);
|
|
86
95
|
}
|
|
96
|
+
updateDrawingLocked(id, locked) {
|
|
97
|
+
this.#assertReady();
|
|
98
|
+
return this.#options.engine.updateDrawingLocked(id, locked);
|
|
99
|
+
}
|
|
87
100
|
removeDrawing(id) {
|
|
88
101
|
this.#assertReady();
|
|
89
102
|
return this.#options.engine.removeDrawing(id);
|
|
@@ -216,6 +229,7 @@ export class DrawingSessionController {
|
|
|
216
229
|
}
|
|
217
230
|
this.#state = 'destroyed';
|
|
218
231
|
this.#candidate = null;
|
|
232
|
+
this.#interactingDrawingId = null;
|
|
219
233
|
this.#confirmed = [];
|
|
220
234
|
this.#unsubscribeEngine();
|
|
221
235
|
}
|
|
@@ -230,6 +244,9 @@ export class DrawingSessionController {
|
|
|
230
244
|
if (event.drawing === undefined) {
|
|
231
245
|
return;
|
|
232
246
|
}
|
|
247
|
+
if (event.type === 'created' && event.id === this.#interactingDrawingId) {
|
|
248
|
+
this.#interactingDrawingId = null;
|
|
249
|
+
}
|
|
233
250
|
void this.#onMutation({
|
|
234
251
|
operation: event.type === 'created' ? 'create' : 'update',
|
|
235
252
|
...(this.#confirmed.find((drawing) => drawing.id === event.id) === undefined
|
|
@@ -239,6 +256,9 @@ export class DrawingSessionController {
|
|
|
239
256
|
}),
|
|
240
257
|
after: event.drawing,
|
|
241
258
|
}).catch((error) => {
|
|
259
|
+
if (this.#state === 'interacting') {
|
|
260
|
+
this.#state = 'ready';
|
|
261
|
+
}
|
|
242
262
|
this.#options.emit({
|
|
243
263
|
type: 'workspace-error',
|
|
244
264
|
code: error instanceof DrawingSessionError
|
|
@@ -252,6 +272,16 @@ export class DrawingSessionController {
|
|
|
252
272
|
return;
|
|
253
273
|
}
|
|
254
274
|
if (event.type === 'removed') {
|
|
275
|
+
if (event.id === this.#interactingDrawingId) {
|
|
276
|
+
this.#interactingDrawingId = null;
|
|
277
|
+
this.#candidate = null;
|
|
278
|
+
this.#state = 'ready';
|
|
279
|
+
if (this.#selectedId === event.id) {
|
|
280
|
+
this.#selectedId = null;
|
|
281
|
+
this.#options.emit({ type: 'selection-changed', id: null });
|
|
282
|
+
}
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
255
285
|
const before = this.#confirmed.find((drawing) => drawing.id === event.id);
|
|
256
286
|
if (before === undefined) {
|
|
257
287
|
return;
|
|
@@ -280,6 +310,10 @@ export class DrawingSessionController {
|
|
|
280
310
|
}
|
|
281
311
|
catch (error) {
|
|
282
312
|
if (error instanceof DrawingSessionError) {
|
|
313
|
+
if (this.#state === 'interacting') {
|
|
314
|
+
this.#state = 'ready';
|
|
315
|
+
this.#interactingDrawingId = null;
|
|
316
|
+
}
|
|
283
317
|
this.#options.emit({
|
|
284
318
|
type: 'workspace-error',
|
|
285
319
|
code: error.code,
|
|
@@ -311,6 +345,9 @@ export class DrawingSessionController {
|
|
|
311
345
|
catch (error) {
|
|
312
346
|
if (error instanceof DrawingSessionError) {
|
|
313
347
|
this.#restoreBefore(input.before, input.after);
|
|
348
|
+
if (input.operation === 'create' && this.#state === 'interacting') {
|
|
349
|
+
this.#state = 'ready';
|
|
350
|
+
}
|
|
314
351
|
this.#options.emit({
|
|
315
352
|
type: 'workspace-error',
|
|
316
353
|
code: error.code,
|
|
@@ -382,6 +419,7 @@ export class DrawingSessionController {
|
|
|
382
419
|
#enterTerminalError(code, message) {
|
|
383
420
|
this.#state = 'terminal-error';
|
|
384
421
|
this.#candidate = null;
|
|
422
|
+
this.#interactingDrawingId = null;
|
|
385
423
|
this.#options.emit({ type: 'workspace-error', code, message });
|
|
386
424
|
}
|
|
387
425
|
#assertUsable() {
|
|
@@ -37,6 +37,7 @@ export declare class DrawableWorkspaceRuntime implements DrawableWorkspaceRuntim
|
|
|
37
37
|
getDrawing(id: string): EngineDrawingSnapshot | undefined;
|
|
38
38
|
updateDrawingStyles(id: string, styles: Drawing['styles']): EngineDrawingSnapshot;
|
|
39
39
|
updateDrawingText(id: string, text: string): EngineDrawingSnapshot;
|
|
40
|
+
updateDrawingLocked(id: string, locked: boolean): EngineDrawingSnapshot;
|
|
40
41
|
removeDrawing(id: string): boolean;
|
|
41
42
|
requestDrawingDelete(id: string): void;
|
|
42
43
|
selectDrawing(id: string | null): void;
|
|
@@ -45,6 +46,8 @@ export declare class DrawableWorkspaceRuntime implements DrawableWorkspaceRuntim
|
|
|
45
46
|
readonly x: number;
|
|
46
47
|
readonly y: number;
|
|
47
48
|
}): string | null;
|
|
49
|
+
getDrawingMutationState(): 'ready' | 'busy';
|
|
50
|
+
subscribeDrawingChanges(listener: () => void): () => void;
|
|
48
51
|
subscribe(listener: WorkspaceRuntimeListener): () => void;
|
|
49
52
|
getRuntimeCapabilityDescriptor(options?: {
|
|
50
53
|
readonly hostActions?: readonly HostActionDescriptor[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-runtime.d.ts","sourceRoot":"","sources":["../../src/drawing/workspace-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,UAAU,EACV,yBAAyB,EACzB,OAAO,EACP,eAAe,EACf,UAAU,EACV,eAAe,EACf,MAAM,+BAA+B,CAAC;AAOvC,OAAO,KAAK,EAGX,qBAAqB,EACrB,gCAAgC,EAEhC,sBAAsB,EACtB,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"workspace-runtime.d.ts","sourceRoot":"","sources":["../../src/drawing/workspace-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { parseChartScene, parseDrawableWorkspaceDocument, parseDrawingDocument, serializeCanonicalDrawableWorkspace, } from '@baron1996/kline-scene-schema';
|
|
2
2
|
import { MainSeriesPresentationError, STANDARD_CLOSE_LINE_PRESENTATION, } from '@baron1996/klinecharts-adapter';
|
|
3
|
+
import { runRuntimeTeardowns } from '../lifecycle.js';
|
|
3
4
|
import { DrawingProjectionService, } from './projection-service.js';
|
|
4
5
|
import { getSceneRuntime } from './scene-runtime-factory.js';
|
|
5
6
|
import { DrawingSessionController, DrawingSessionError, } from './session-controller.js';
|
|
@@ -53,6 +54,7 @@ export class DrawableWorkspaceRuntime {
|
|
|
53
54
|
/** 宿主确认策略在 Runtime 生命周期内不可切换。 */
|
|
54
55
|
#commitMode;
|
|
55
56
|
#listeners = new Set();
|
|
57
|
+
#drawingChangeListeners = new Set();
|
|
56
58
|
/** 释放历史行情请求订阅,避免 Runtime 销毁后宿主收到旧请求。 */
|
|
57
59
|
#unsubscribeHistoricalData;
|
|
58
60
|
#sequence = 0;
|
|
@@ -127,6 +129,9 @@ export class DrawableWorkspaceRuntime {
|
|
|
127
129
|
updateDrawingText(id, text) {
|
|
128
130
|
return this.#session.updateDrawingText(id, text);
|
|
129
131
|
}
|
|
132
|
+
updateDrawingLocked(id, locked) {
|
|
133
|
+
return this.#session.updateDrawingLocked(id, locked);
|
|
134
|
+
}
|
|
130
135
|
removeDrawing(id) {
|
|
131
136
|
return this.#session.removeDrawing(id);
|
|
132
137
|
}
|
|
@@ -142,6 +147,15 @@ export class DrawableWorkspaceRuntime {
|
|
|
142
147
|
hitTestDrawing(point) {
|
|
143
148
|
return this.#engine.hitTestDrawing(point);
|
|
144
149
|
}
|
|
150
|
+
getDrawingMutationState() {
|
|
151
|
+
return this.#session.state === 'ready' ? 'ready' : 'busy';
|
|
152
|
+
}
|
|
153
|
+
subscribeDrawingChanges(listener) {
|
|
154
|
+
this.#drawingChangeListeners.add(listener);
|
|
155
|
+
return () => {
|
|
156
|
+
this.#drawingChangeListeners.delete(listener);
|
|
157
|
+
};
|
|
158
|
+
}
|
|
145
159
|
subscribe(listener) {
|
|
146
160
|
this.#listeners.add(listener);
|
|
147
161
|
return () => {
|
|
@@ -330,10 +344,12 @@ export class DrawableWorkspaceRuntime {
|
|
|
330
344
|
return;
|
|
331
345
|
}
|
|
332
346
|
this.#destroyed = true;
|
|
347
|
+
runRuntimeTeardowns(this);
|
|
333
348
|
this.#unsubscribeHistoricalData?.();
|
|
334
349
|
this.#session.destroy();
|
|
335
350
|
this.#engine.dispose();
|
|
336
351
|
this.#listeners.clear();
|
|
352
|
+
this.#drawingChangeListeners.clear();
|
|
337
353
|
this.#emit({ type: 'destroyed' });
|
|
338
354
|
}
|
|
339
355
|
#buildDocument(drawings) {
|
|
@@ -402,6 +418,14 @@ export class DrawableWorkspaceRuntime {
|
|
|
402
418
|
// 单个监听器抛错不改变状态、不阻断其他监听器。
|
|
403
419
|
}
|
|
404
420
|
}
|
|
421
|
+
for (const listener of this.#drawingChangeListeners) {
|
|
422
|
+
try {
|
|
423
|
+
listener();
|
|
424
|
+
}
|
|
425
|
+
catch {
|
|
426
|
+
// 编辑器监听失败不影响 Runtime 状态。
|
|
427
|
+
}
|
|
428
|
+
}
|
|
405
429
|
}
|
|
406
430
|
#assertUsable() {
|
|
407
431
|
if (this.#destroyed || this.#session.state === 'terminal-error') {
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Web Runtime npm 包版本;ChartScene runtimeVersion 是独立的数据契约版本。 */
|
|
2
|
-
export declare const WEB_RUNTIME_PACKAGE_VERSION: "0.
|
|
2
|
+
export declare const WEB_RUNTIME_PACKAGE_VERSION: "0.9.3";
|
|
3
3
|
export { SUPPORTED_OVERLAYS } from '@baron1996/klinecharts-adapter';
|
|
4
4
|
export * from './cross-period/coordinator.js';
|
|
5
5
|
export * from './drawing/capabilities.js';
|
|
@@ -13,5 +13,6 @@ export * from './runtime.js';
|
|
|
13
13
|
export * from './time-series-runtime.js';
|
|
14
14
|
export * from './time-series-types.js';
|
|
15
15
|
export * from './toolbar/standard-toolbar.js';
|
|
16
|
+
export * from './toolbar/drawing-floating-toolbar.js';
|
|
16
17
|
export * from './types.js';
|
|
17
18
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,eAAO,MAAM,2BAA2B,EAAG,OAAgB,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iCAAiC,CAAC;AAChD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,oCAAoC,CAAC;AACnD,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,eAAO,MAAM,2BAA2B,EAAG,OAAgB,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iCAAiC,CAAC;AAChD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,oCAAoC,CAAC;AACnD,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uCAAuC,CAAC;AACtD,cAAc,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Web Runtime npm 包版本;ChartScene runtimeVersion 是独立的数据契约版本。 */
|
|
2
|
-
export const WEB_RUNTIME_PACKAGE_VERSION = '0.
|
|
2
|
+
export const WEB_RUNTIME_PACKAGE_VERSION = '0.9.3';
|
|
3
3
|
export { SUPPORTED_OVERLAYS } from '@baron1996/klinecharts-adapter';
|
|
4
4
|
export * from './cross-period/coordinator.js';
|
|
5
5
|
export * from './drawing/capabilities.js';
|
|
@@ -13,4 +13,5 @@ export * from './runtime.js';
|
|
|
13
13
|
export * from './time-series-runtime.js';
|
|
14
14
|
export * from './time-series-types.js';
|
|
15
15
|
export * from './toolbar/standard-toolbar.js';
|
|
16
|
+
export * from './toolbar/drawing-floating-toolbar.js';
|
|
16
17
|
export * from './types.js';
|
package/dist/runtime.d.ts
CHANGED
|
@@ -35,11 +35,14 @@ export declare class KLineSceneRuntime implements DrawingRuntimeCapability, Runt
|
|
|
35
35
|
getDrawing(id: string): EngineDrawingSnapshot | undefined;
|
|
36
36
|
updateDrawingStyles(id: string, styles: SceneOverlay['styles']): EngineDrawingSnapshot;
|
|
37
37
|
updateDrawingText(id: string, text: string): EngineDrawingSnapshot;
|
|
38
|
+
updateDrawingLocked(id: string, locked: boolean): EngineDrawingSnapshot;
|
|
38
39
|
removeDrawing(id: string): boolean;
|
|
39
40
|
requestDrawingDelete(id: string): void;
|
|
40
41
|
getSelectedDrawingId(): string | undefined;
|
|
41
42
|
selectDrawing(id: string | null): void;
|
|
42
43
|
hitTestDrawing(point: EnginePixelCoordinate): string | null;
|
|
44
|
+
getDrawingMutationState(): 'ready';
|
|
45
|
+
subscribeDrawingChanges(listener: () => void): () => void;
|
|
43
46
|
exportArtifact(fileName?: string): {
|
|
44
47
|
bytes: Uint8Array;
|
|
45
48
|
mediaType: 'application/json';
|
package/dist/runtime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,MAAM,+BAA+B,CAAC;AAKvC,OAAO,EAMN,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EAErB,KAAK,eAAe,EACpB,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EACX,wBAAwB,EACxB,0BAA0B,EAC1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EACX,oBAAoB,EACpB,2BAA2B,EAC3B,MAAM,4CAA4C,CAAC;AAGpD,OAAO,KAAK,EACX,mBAAmB,EAEnB,yBAAyB,EACzB,wBAAwB,EACxB,UAAU,EACV,0BAA0B,EAC1B,oBAAoB,EACpB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,sBAAsB,EAAE,YAAY,CAAC,QAAQ,CAiBzD,CAAC;AA6CF;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,wBAAwB,EAAE,0BAA0B;;
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime.js
CHANGED
|
@@ -72,6 +72,8 @@ export class KLineSceneRuntime {
|
|
|
72
72
|
#unsubscribeCrosshair = null;
|
|
73
73
|
/** 当前选中标注的稳定 ID。 */
|
|
74
74
|
#selectedOverlayId = null;
|
|
75
|
+
/** 供对象级编辑器订阅 Drawing 变化,不暴露 Adapter 事件。 */
|
|
76
|
+
#drawingChangeListeners = new Set();
|
|
75
77
|
/** 确定性标注 ID 递增序号。 */
|
|
76
78
|
#overlaySequence = 0;
|
|
77
79
|
/** 确定性指标 ID 递增序号。 */
|
|
@@ -104,6 +106,11 @@ export class KLineSceneRuntime {
|
|
|
104
106
|
this.#selectedOverlayId = null;
|
|
105
107
|
}
|
|
106
108
|
this.#events.emit(toRuntimeEvent(event));
|
|
109
|
+
if (event.type.startsWith('overlay-')) {
|
|
110
|
+
for (const listener of this.#drawingChangeListeners) {
|
|
111
|
+
listener();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
107
114
|
});
|
|
108
115
|
this.#unsubscribeCrosshair = adapter.subscribeCrosshair((snapshot) => {
|
|
109
116
|
this.#events.emit({
|
|
@@ -281,6 +288,13 @@ export class KLineSceneRuntime {
|
|
|
281
288
|
}
|
|
282
289
|
return overlayToDrawingSnapshot(this.updateOverlay({ ...overlay, text }), this.getScene().period);
|
|
283
290
|
}
|
|
291
|
+
updateDrawingLocked(id, locked) {
|
|
292
|
+
const overlay = this.getOverlay(id);
|
|
293
|
+
if (overlay === undefined) {
|
|
294
|
+
throw new SceneError('INVALID_REFERENCE', `/overlays/${id}`, `Overlay ${id} does not exist.`);
|
|
295
|
+
}
|
|
296
|
+
return overlayToDrawingSnapshot(this.updateOverlay({ ...overlay, locked }), this.getScene().period);
|
|
297
|
+
}
|
|
284
298
|
removeDrawing(id) {
|
|
285
299
|
return this.removeOverlay(id);
|
|
286
300
|
}
|
|
@@ -296,6 +310,17 @@ export class KLineSceneRuntime {
|
|
|
296
310
|
hitTestDrawing(point) {
|
|
297
311
|
return this.#adapter.hitTestOverlay(point)?.overlayId ?? null;
|
|
298
312
|
}
|
|
313
|
+
getDrawingMutationState() {
|
|
314
|
+
this.#assertActive();
|
|
315
|
+
return 'ready';
|
|
316
|
+
}
|
|
317
|
+
subscribeDrawingChanges(listener) {
|
|
318
|
+
this.#assertActive();
|
|
319
|
+
this.#drawingChangeListeners.add(listener);
|
|
320
|
+
return () => {
|
|
321
|
+
this.#drawingChangeListeners.delete(listener);
|
|
322
|
+
};
|
|
323
|
+
}
|
|
299
324
|
exportArtifact(fileName = this.#defaultFileName) {
|
|
300
325
|
return {
|
|
301
326
|
bytes: serializeCanonicalScene(this.exportScene()),
|
|
@@ -436,6 +461,7 @@ export class KLineSceneRuntime {
|
|
|
436
461
|
this.#adapter.dispose();
|
|
437
462
|
this.#unsubscribeAdapter();
|
|
438
463
|
this.#events.clear();
|
|
464
|
+
this.#drawingChangeListeners.clear();
|
|
439
465
|
}
|
|
440
466
|
}
|
|
441
467
|
export async function createKLineSceneRuntime(container, scene, options = {}) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drawing-floating-toolbar-styles.d.ts","sourceRoot":"","sources":["../../src/toolbar/drawing-floating-toolbar-styles.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,+BAA+B,QAyP3C,CAAC"}
|