@baron1996/klinecharts-runtime 0.7.2 → 0.9.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/README.md +16 -2
- package/dist/drawing/capabilities.d.ts +10 -2
- package/dist/drawing/capabilities.d.ts.map +1 -1
- package/dist/drawing/scene-runtime-factory.d.ts +6 -1
- package/dist/drawing/scene-runtime-factory.d.ts.map +1 -1
- package/dist/drawing/scene-runtime-factory.js +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-events.d.ts +13 -0
- package/dist/drawing/workspace-events.d.ts.map +1 -1
- package/dist/drawing/workspace-runtime.d.ts +12 -4
- package/dist/drawing/workspace-runtime.d.ts.map +1 -1
- package/dist/drawing/workspace-runtime.js +87 -1
- 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 +22 -0
- package/dist/toolbar/toolbar-icons.d.ts.map +1 -1
- package/dist/toolbar/toolbar-icons.js +8 -0
- 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.2
|
|
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
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { ChartScene, Drawing } from '@baron1996/kline-scene-schema';
|
|
2
|
-
import type { EngineDrawingSnapshot, EnginePixelCoordinate, MainSeriesPresentation } from '@baron1996/klinecharts-adapter';
|
|
1
|
+
import type { ChartScene, Drawing, MarketData } from '@baron1996/kline-scene-schema';
|
|
2
|
+
import type { EngineHistoricalDataCommitResult, EngineDrawingSnapshot, EnginePixelCoordinate, MainSeriesPresentation } from '@baron1996/klinecharts-adapter';
|
|
3
3
|
import type { HostActionDescriptor, RuntimeCapabilityDescriptor } from './runtime-capability-descriptor.js';
|
|
4
4
|
/** 公共 Drawing 能力;工具栏与所有正式交互式图表 Runtime 共用。 */
|
|
5
5
|
export interface DrawingRuntimeCapability {
|
|
@@ -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?: {
|
|
@@ -35,4 +38,9 @@ export interface RuntimeAuxiliaryCapability {
|
|
|
35
38
|
};
|
|
36
39
|
requestHostAction(actionId: string, drawingId?: string | null): void;
|
|
37
40
|
}
|
|
41
|
+
/** 由宿主接管网络请求的更早行情能力。 */
|
|
42
|
+
export interface HistoricalDataRuntimeCapability {
|
|
43
|
+
commitHistoricalData(requestId: string, data: readonly MarketData[], hasMore: boolean): EngineHistoricalDataCommitResult;
|
|
44
|
+
rejectHistoricalData(requestId: string, message: string): boolean;
|
|
45
|
+
}
|
|
38
46
|
//# sourceMappingURL=capabilities.d.ts.map
|
|
@@ -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,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EACX,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":"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"}
|
|
@@ -3,13 +3,18 @@ import { type DrawingEnginePort, type DrawingProjectionPolicy } from '@baron1996
|
|
|
3
3
|
export interface SceneRuntimeRegistration {
|
|
4
4
|
readonly sceneKind: 'chart' | 'time-series';
|
|
5
5
|
parseScene(value: unknown): ChartScene | TimeSeriesScene;
|
|
6
|
-
createAdapter(container: HTMLElement, workspace: DrawableWorkspaceDocument): Promise<DrawingEnginePort>;
|
|
6
|
+
createAdapter(container: HTMLElement, workspace: DrawableWorkspaceDocument, options?: SceneRuntimeAdapterOptions): Promise<DrawingEnginePort>;
|
|
7
7
|
createPolicy(): DrawingProjectionPolicy;
|
|
8
8
|
readonly defaultTarget: {
|
|
9
9
|
readonly paneRole: string;
|
|
10
10
|
readonly yAxisRole: 'primary';
|
|
11
11
|
};
|
|
12
12
|
}
|
|
13
|
+
export interface SceneRuntimeAdapterOptions {
|
|
14
|
+
readonly historicalDataLoading?: {
|
|
15
|
+
readonly hasMore: boolean;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
13
18
|
export declare function registerSceneRuntime(registration: SceneRuntimeRegistration): void;
|
|
14
19
|
export declare function getSceneRuntime(kind: 'chart' | 'time-series'): SceneRuntimeRegistration;
|
|
15
20
|
//# sourceMappingURL=scene-runtime-factory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scene-runtime-factory.d.ts","sourceRoot":"","sources":["../../src/drawing/scene-runtime-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,UAAU,EACV,yBAAyB,EACzB,eAAe,EACf,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAKN,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,MAAM,gCAAgC,CAAC;AAExC,MAAM,WAAW,wBAAwB;IACxC,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,aAAa,CAAC;IAC5C,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,GAAG,eAAe,CAAC;IACzD,aAAa,CACZ,SAAS,EAAE,WAAW,EACtB,SAAS,EAAE,yBAAyB,GAClC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC9B,YAAY,IAAI,uBAAuB,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE;QACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;KAC9B,CAAC;CACF;AAID,wBAAgB,oBAAoB,CACnC,YAAY,EAAE,wBAAwB,GACpC,IAAI,CAEN;AAED,wBAAgB,eAAe,CAC9B,IAAI,EAAE,OAAO,GAAG,aAAa,GAC3B,wBAAwB,CAM1B"}
|
|
1
|
+
{"version":3,"file":"scene-runtime-factory.d.ts","sourceRoot":"","sources":["../../src/drawing/scene-runtime-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,UAAU,EACV,yBAAyB,EACzB,eAAe,EACf,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAKN,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,MAAM,gCAAgC,CAAC;AAExC,MAAM,WAAW,wBAAwB;IACxC,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,aAAa,CAAC;IAC5C,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,GAAG,eAAe,CAAC;IACzD,aAAa,CACZ,SAAS,EAAE,WAAW,EACtB,SAAS,EAAE,yBAAyB,EACpC,OAAO,CAAC,EAAE,0BAA0B,GAClC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC9B,YAAY,IAAI,uBAAuB,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE;QACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;KAC9B,CAAC;CACF;AAED,MAAM,WAAW,0BAA0B;IAC1C,QAAQ,CAAC,qBAAqB,CAAC,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CAC/D;AAID,wBAAgB,oBAAoB,CACnC,YAAY,EAAE,wBAAwB,GACpC,IAAI,CAEN;AAED,wBAAgB,eAAe,CAC9B,IAAI,EAAE,OAAO,GAAG,aAAa,GAC3B,wBAAwB,CAM1B"}
|
|
@@ -14,7 +14,7 @@ export function getSceneRuntime(kind) {
|
|
|
14
14
|
registerSceneRuntime({
|
|
15
15
|
sceneKind: 'chart',
|
|
16
16
|
parseScene: (value) => parseChartScene(value),
|
|
17
|
-
createAdapter: (container, workspace) => KLineChartsSceneAdapter.createWorkspace(container, workspace),
|
|
17
|
+
createAdapter: (container, workspace, options) => KLineChartsSceneAdapter.createWorkspace(container, workspace, options),
|
|
18
18
|
createPolicy: () => new KLineDrawingProjectionPolicy(),
|
|
19
19
|
defaultTarget: { paneRole: 'candle', yAxisRole: 'primary' },
|
|
20
20
|
});
|
|
@@ -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() {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ChartScene, DrawingDocument, TimeSeriesScene } from '@baron1996/kline-scene-schema';
|
|
2
2
|
import type { EngineDrawingSnapshot } from '@baron1996/klinecharts-adapter';
|
|
3
|
+
import type { EngineHistoricalDataRequest } from '@baron1996/klinecharts-adapter';
|
|
3
4
|
import type { ActiveMainSeriesType } from '@baron1996/klinecharts-adapter';
|
|
4
5
|
export declare const WORKSPACE_EVENT_PROTOCOL: "@baron1996/drawable-workspace-events";
|
|
5
6
|
export declare const WORKSPACE_EVENT_PROTOCOL_VERSION: "1.0.0";
|
|
@@ -42,6 +43,18 @@ export type WorkspaceRuntimeEvent = ({
|
|
|
42
43
|
} | {
|
|
43
44
|
readonly type: 'scene-replaced';
|
|
44
45
|
readonly scene: WorkspaceSceneSnapshot;
|
|
46
|
+
} | ({
|
|
47
|
+
readonly type: 'historical-data-requested';
|
|
48
|
+
} & EngineHistoricalDataRequest) | {
|
|
49
|
+
readonly type: 'historical-data-appended';
|
|
50
|
+
readonly requestId: string;
|
|
51
|
+
readonly addedCount: number;
|
|
52
|
+
readonly totalCount: number;
|
|
53
|
+
readonly hasMore: boolean;
|
|
54
|
+
} | {
|
|
55
|
+
readonly type: 'historical-data-rejected';
|
|
56
|
+
readonly requestId: string;
|
|
57
|
+
readonly message: string;
|
|
45
58
|
} | {
|
|
46
59
|
readonly type: 'value-axis-scale-changed';
|
|
47
60
|
readonly scale: 'linear' | 'logarithmic';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-events.d.ts","sourceRoot":"","sources":["../../src/drawing/workspace-events.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workspace-events.d.ts","sourceRoot":"","sources":["../../src/drawing/workspace-events.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { ChartScene, DrawableWorkspaceDocument, Drawing, DrawingDocument, TimeSeriesScene } from '@baron1996/kline-scene-schema';
|
|
2
|
-
import type { EngineDrawingSnapshot, MainSeriesPresentation } from '@baron1996/klinecharts-adapter';
|
|
3
|
-
import type { DrawingRuntimeCapability, RuntimeAuxiliaryCapability } from './capabilities.js';
|
|
1
|
+
import type { ChartScene, DrawableWorkspaceDocument, Drawing, DrawingDocument, MarketData, TimeSeriesScene } from '@baron1996/kline-scene-schema';
|
|
2
|
+
import type { EngineDrawingSnapshot, EngineHistoricalDataCommitResult, MainSeriesPresentation } from '@baron1996/klinecharts-adapter';
|
|
3
|
+
import type { DrawingRuntimeCapability, HistoricalDataRuntimeCapability, RuntimeAuxiliaryCapability } from './capabilities.js';
|
|
4
4
|
import type { HostActionDescriptor, RuntimeCapabilityDescriptor } from './runtime-capability-descriptor.js';
|
|
5
5
|
import { DrawingSessionController } from './session-controller.js';
|
|
6
6
|
import { type WorkspaceRuntimeListener } from './workspace-events.js';
|
|
@@ -8,8 +8,11 @@ export interface DrawableWorkspaceRuntimeOptions {
|
|
|
8
8
|
readonly commitMode: 'immediate' | 'host-confirmed';
|
|
9
9
|
readonly onEvent?: WorkspaceRuntimeListener;
|
|
10
10
|
readonly hostActions?: readonly HostActionDescriptor[];
|
|
11
|
+
readonly historicalDataLoading?: {
|
|
12
|
+
readonly hasMore: boolean;
|
|
13
|
+
};
|
|
11
14
|
}
|
|
12
|
-
export interface DrawableWorkspaceRuntimeHandle extends DrawingRuntimeCapability, RuntimeAuxiliaryCapability {
|
|
15
|
+
export interface DrawableWorkspaceRuntimeHandle extends DrawingRuntimeCapability, HistoricalDataRuntimeCapability, RuntimeAuxiliaryCapability {
|
|
13
16
|
}
|
|
14
17
|
/**
|
|
15
18
|
* 组合 Scene Adapter、Drawing 会话与公共能力的工作区 Runtime。
|
|
@@ -34,6 +37,7 @@ export declare class DrawableWorkspaceRuntime implements DrawableWorkspaceRuntim
|
|
|
34
37
|
getDrawing(id: string): EngineDrawingSnapshot | undefined;
|
|
35
38
|
updateDrawingStyles(id: string, styles: Drawing['styles']): EngineDrawingSnapshot;
|
|
36
39
|
updateDrawingText(id: string, text: string): EngineDrawingSnapshot;
|
|
40
|
+
updateDrawingLocked(id: string, locked: boolean): EngineDrawingSnapshot;
|
|
37
41
|
removeDrawing(id: string): boolean;
|
|
38
42
|
requestDrawingDelete(id: string): void;
|
|
39
43
|
selectDrawing(id: string | null): void;
|
|
@@ -42,6 +46,8 @@ export declare class DrawableWorkspaceRuntime implements DrawableWorkspaceRuntim
|
|
|
42
46
|
readonly x: number;
|
|
43
47
|
readonly y: number;
|
|
44
48
|
}): string | null;
|
|
49
|
+
getDrawingMutationState(): 'ready' | 'busy';
|
|
50
|
+
subscribeDrawingChanges(listener: () => void): () => void;
|
|
45
51
|
subscribe(listener: WorkspaceRuntimeListener): () => void;
|
|
46
52
|
getRuntimeCapabilityDescriptor(options?: {
|
|
47
53
|
readonly hostActions?: readonly HostActionDescriptor[];
|
|
@@ -58,6 +64,8 @@ export declare class DrawableWorkspaceRuntime implements DrawableWorkspaceRuntim
|
|
|
58
64
|
readonly activeType: string;
|
|
59
65
|
};
|
|
60
66
|
replaceScene(scene: ChartScene | TimeSeriesScene): ChartScene | TimeSeriesScene;
|
|
67
|
+
commitHistoricalData(requestId: string, data: readonly MarketData[], hasMore: boolean): EngineHistoricalDataCommitResult;
|
|
68
|
+
rejectHistoricalData(requestId: string, message: string): boolean;
|
|
61
69
|
commitDrawingChange(requestId: string, canonicalHash: string): boolean;
|
|
62
70
|
rejectDrawingChange(requestId: string): boolean;
|
|
63
71
|
requestHostAction(actionId: string, drawingId?: string | null): void;
|
|
@@ -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,eAAe,EACf,MAAM,+BAA+B,CAAC;AAOvC,OAAO,KAAK,EAGX,qBAAqB,EACrB,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,9 @@ export class DrawableWorkspaceRuntime {
|
|
|
53
54
|
/** 宿主确认策略在 Runtime 生命周期内不可切换。 */
|
|
54
55
|
#commitMode;
|
|
55
56
|
#listeners = new Set();
|
|
57
|
+
#drawingChangeListeners = new Set();
|
|
58
|
+
/** 释放历史行情请求订阅,避免 Runtime 销毁后宿主收到旧请求。 */
|
|
59
|
+
#unsubscribeHistoricalData;
|
|
56
60
|
#sequence = 0;
|
|
57
61
|
#destroyed = false;
|
|
58
62
|
#scene;
|
|
@@ -81,11 +85,25 @@ export class DrawableWorkspaceRuntime {
|
|
|
81
85
|
if (options.onEvent !== undefined) {
|
|
82
86
|
this.#listeners.add(options.onEvent);
|
|
83
87
|
}
|
|
88
|
+
const historicalDataPort = this.#historicalDataPort();
|
|
89
|
+
this.#unsubscribeHistoricalData = options.historicalDataLoading === undefined
|
|
90
|
+
? undefined
|
|
91
|
+
: historicalDataPort?.subscribeHistoricalDataRequests((request) => {
|
|
92
|
+
this.#emit({ type: 'historical-data-requested', ...request });
|
|
93
|
+
});
|
|
84
94
|
}
|
|
85
95
|
static async create(container, value, options) {
|
|
86
96
|
const workspace = parseDrawableWorkspaceDocument(value);
|
|
97
|
+
if (options.historicalDataLoading !== undefined &&
|
|
98
|
+
workspace.scene.kind !== 'chart') {
|
|
99
|
+
throw new Error('HISTORICAL_DATA_UNSUPPORTED: only chart Workspaces support historical data loading.');
|
|
100
|
+
}
|
|
87
101
|
const registration = getSceneRuntime(workspace.scene.kind);
|
|
88
|
-
const engine = await registration.createAdapter(container, workspace
|
|
102
|
+
const engine = await registration.createAdapter(container, workspace, {
|
|
103
|
+
...(options.historicalDataLoading === undefined
|
|
104
|
+
? {}
|
|
105
|
+
: { historicalDataLoading: options.historicalDataLoading }),
|
|
106
|
+
});
|
|
89
107
|
return new DrawableWorkspaceRuntime(container, workspace, engine, options);
|
|
90
108
|
}
|
|
91
109
|
/** 跨周期等宿主编排只能连接显式 host-confirmed Runtime。 */
|
|
@@ -111,6 +129,9 @@ export class DrawableWorkspaceRuntime {
|
|
|
111
129
|
updateDrawingText(id, text) {
|
|
112
130
|
return this.#session.updateDrawingText(id, text);
|
|
113
131
|
}
|
|
132
|
+
updateDrawingLocked(id, locked) {
|
|
133
|
+
return this.#session.updateDrawingLocked(id, locked);
|
|
134
|
+
}
|
|
114
135
|
removeDrawing(id) {
|
|
115
136
|
return this.#session.removeDrawing(id);
|
|
116
137
|
}
|
|
@@ -126,6 +147,15 @@ export class DrawableWorkspaceRuntime {
|
|
|
126
147
|
hitTestDrawing(point) {
|
|
127
148
|
return this.#engine.hitTestDrawing(point);
|
|
128
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
|
+
}
|
|
129
159
|
subscribe(listener) {
|
|
130
160
|
this.#listeners.add(listener);
|
|
131
161
|
return () => {
|
|
@@ -266,6 +296,36 @@ export class DrawableWorkspaceRuntime {
|
|
|
266
296
|
this.#emit({ type: 'scene-replaced', scene: { kind: this.#sceneKind(), document: applied } });
|
|
267
297
|
return structuredClone(applied);
|
|
268
298
|
}
|
|
299
|
+
commitHistoricalData(requestId, data, hasMore) {
|
|
300
|
+
this.#assertUsable();
|
|
301
|
+
const port = this.#requireHistoricalDataPort();
|
|
302
|
+
const current = parseChartScene(this.#scene);
|
|
303
|
+
const candidate = parseChartScene({
|
|
304
|
+
...structuredClone(current),
|
|
305
|
+
data: [...structuredClone(data), ...structuredClone(current.data)],
|
|
306
|
+
});
|
|
307
|
+
const result = this.#session.replaceProjectionScene({ kind: 'chart', document: candidate }, () => port.commitHistoricalData(requestId, data, hasMore));
|
|
308
|
+
this.#scene = result.scene;
|
|
309
|
+
this.#emit({
|
|
310
|
+
type: 'historical-data-appended',
|
|
311
|
+
requestId,
|
|
312
|
+
addedCount: result.addedCount,
|
|
313
|
+
totalCount: result.scene.data.length,
|
|
314
|
+
hasMore: result.hasMore,
|
|
315
|
+
});
|
|
316
|
+
return {
|
|
317
|
+
...result,
|
|
318
|
+
scene: structuredClone(result.scene),
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
rejectHistoricalData(requestId, message) {
|
|
322
|
+
this.#assertUsable();
|
|
323
|
+
const rejected = this.#requireHistoricalDataPort().rejectHistoricalData(requestId);
|
|
324
|
+
if (rejected) {
|
|
325
|
+
this.#emit({ type: 'historical-data-rejected', requestId, message });
|
|
326
|
+
}
|
|
327
|
+
return rejected;
|
|
328
|
+
}
|
|
269
329
|
commitDrawingChange(requestId, canonicalHash) {
|
|
270
330
|
return this.#session.commitDrawingChange(requestId, canonicalHash);
|
|
271
331
|
}
|
|
@@ -284,9 +344,12 @@ export class DrawableWorkspaceRuntime {
|
|
|
284
344
|
return;
|
|
285
345
|
}
|
|
286
346
|
this.#destroyed = true;
|
|
347
|
+
runRuntimeTeardowns(this);
|
|
348
|
+
this.#unsubscribeHistoricalData?.();
|
|
287
349
|
this.#session.destroy();
|
|
288
350
|
this.#engine.dispose();
|
|
289
351
|
this.#listeners.clear();
|
|
352
|
+
this.#drawingChangeListeners.clear();
|
|
290
353
|
this.#emit({ type: 'destroyed' });
|
|
291
354
|
}
|
|
292
355
|
#buildDocument(drawings) {
|
|
@@ -324,6 +387,21 @@ export class DrawableWorkspaceRuntime {
|
|
|
324
387
|
#sceneKind() {
|
|
325
388
|
return 'panes' in this.#scene ? 'chart' : 'time-series';
|
|
326
389
|
}
|
|
390
|
+
#historicalDataPort() {
|
|
391
|
+
const candidate = this.#engine;
|
|
392
|
+
return (typeof candidate.subscribeHistoricalDataRequests === 'function' &&
|
|
393
|
+
typeof candidate.commitHistoricalData === 'function' &&
|
|
394
|
+
typeof candidate.rejectHistoricalData === 'function')
|
|
395
|
+
? candidate
|
|
396
|
+
: undefined;
|
|
397
|
+
}
|
|
398
|
+
#requireHistoricalDataPort() {
|
|
399
|
+
const port = this.#historicalDataPort();
|
|
400
|
+
if (port === undefined) {
|
|
401
|
+
throw new Error('HISTORICAL_DATA_UNSUPPORTED: the current Scene Adapter has no historical data port.');
|
|
402
|
+
}
|
|
403
|
+
return port;
|
|
404
|
+
}
|
|
327
405
|
#emit(event) {
|
|
328
406
|
const envelope = deepFreeze({
|
|
329
407
|
protocol: WORKSPACE_EVENT_PROTOCOL,
|
|
@@ -340,6 +418,14 @@ export class DrawableWorkspaceRuntime {
|
|
|
340
418
|
// 单个监听器抛错不改变状态、不阻断其他监听器。
|
|
341
419
|
}
|
|
342
420
|
}
|
|
421
|
+
for (const listener of this.#drawingChangeListeners) {
|
|
422
|
+
try {
|
|
423
|
+
listener();
|
|
424
|
+
}
|
|
425
|
+
catch {
|
|
426
|
+
// 编辑器监听失败不影响 Runtime 状态。
|
|
427
|
+
}
|
|
428
|
+
}
|
|
343
429
|
}
|
|
344
430
|
#assertUsable() {
|
|
345
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.2";
|
|
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.2';
|
|
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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"}
|