@baron1996/klinecharts-runtime 0.9.11 → 0.9.13
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 +1 -1
- package/dist/drawing/progressive-workspace-runtime.d.ts +69 -0
- package/dist/drawing/progressive-workspace-runtime.d.ts.map +1 -0
- package/dist/drawing/progressive-workspace-runtime.js +342 -0
- package/dist/drawing/scene-runtime-factory.d.ts +2 -1
- package/dist/drawing/scene-runtime-factory.d.ts.map +1 -1
- package/dist/drawing/scene-runtime-factory.js +1 -0
- package/dist/drawing/workspace-runtime.d.ts +7 -1
- package/dist/drawing/workspace-runtime.d.ts.map +1 -1
- package/dist/drawing/workspace-runtime.js +92 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/toolbar/standard-toolbar.d.ts.map +1 -1
- package/dist/toolbar/standard-toolbar.js +55 -0
- package/dist/types.d.ts +4 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@ 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.9.
|
|
7
|
+
npm install --save-exact @baron1996/kline-scene-schema@0.9.13 @baron1996/klinecharts-runtime@0.9.13
|
|
8
8
|
```
|
|
9
9
|
|
|
10
10
|
```ts
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { ChartScene, Drawing, DrawingDocument, DrawableWorkspaceDocument, MarketData } from '@baron1996/kline-scene-schema';
|
|
2
|
+
import type { EmptyChartRuntimeBootstrap, EngineDrawingSnapshot, EngineHistoricalDataCommitResult, MainSeriesPresentation } from '@baron1996/klinecharts-adapter';
|
|
3
|
+
import type { RuntimeCapabilityDescriptor } from './runtime-capability-descriptor.js';
|
|
4
|
+
import { type WorkspaceRuntimeListener } from './workspace-events.js';
|
|
5
|
+
import { DrawableWorkspaceRuntime, type DrawableWorkspaceRuntimeOptions } from './workspace-runtime.js';
|
|
6
|
+
export type ProgressiveWorkspaceRuntimeState = 'empty' | 'loading-history' | 'error' | 'ready';
|
|
7
|
+
export interface EmptyDrawableWorkspaceBootstrap extends EmptyChartRuntimeBootstrap {
|
|
8
|
+
/** Drawing 的业务身份;只用于首份 Scene 就绪后创建空文档,不进入空 Scene。 */
|
|
9
|
+
readonly scopeKey: string;
|
|
10
|
+
readonly drawingMetadata?: DrawingDocument['metadata'];
|
|
11
|
+
}
|
|
12
|
+
export interface EmptyDrawableWorkspaceRuntimeOptions extends DrawableWorkspaceRuntimeOptions {
|
|
13
|
+
readonly emptyStateText?: string;
|
|
14
|
+
readonly loadingStateText?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface ProgressiveRuntimeStateCapability {
|
|
17
|
+
getRuntimeState(): ProgressiveWorkspaceRuntimeState;
|
|
18
|
+
subscribeRuntimeState(listener: (state: ProgressiveWorkspaceRuntimeState) => void): () => void;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* 浏览器专用渐进 Runtime。空阶段只有真实的 KLineCharts 容器和网格,
|
|
22
|
+
* 不存在可序列化 Scene/Workspace,也不会构造占位行情。
|
|
23
|
+
*/
|
|
24
|
+
export declare class ProgressiveDrawableWorkspaceRuntime implements ProgressiveRuntimeStateCapability {
|
|
25
|
+
#private;
|
|
26
|
+
private constructor();
|
|
27
|
+
static create(container: HTMLElement, bootstrap: EmptyDrawableWorkspaceBootstrap, options: EmptyDrawableWorkspaceRuntimeOptions): Promise<ProgressiveDrawableWorkspaceRuntime>;
|
|
28
|
+
get commitMode(): DrawableWorkspaceRuntimeOptions['commitMode'];
|
|
29
|
+
getRuntimeState(): ProgressiveWorkspaceRuntimeState;
|
|
30
|
+
subscribeRuntimeState(listener: (state: ProgressiveWorkspaceRuntimeState) => void): () => void;
|
|
31
|
+
setLoadingState(state: Exclude<ProgressiveWorkspaceRuntimeState, 'ready'>, message?: string): void;
|
|
32
|
+
installInitialScene(value: ChartScene): ChartScene;
|
|
33
|
+
installDrawingDocument(value: unknown): DrawingDocument;
|
|
34
|
+
replaceDrawingDocumentProjection(value: unknown): DrawingDocument;
|
|
35
|
+
startDrawing(type: Drawing['type'], options?: Parameters<DrawableWorkspaceRuntime['startDrawing']>[1]): string;
|
|
36
|
+
listDrawings(): readonly EngineDrawingSnapshot[];
|
|
37
|
+
getDrawing(id: string): EngineDrawingSnapshot | undefined;
|
|
38
|
+
updateDrawingStyles(id: string, styles: Drawing['styles']): EngineDrawingSnapshot;
|
|
39
|
+
updateDrawingText(id: string, text: string): EngineDrawingSnapshot;
|
|
40
|
+
updateDrawingLocked(id: string, locked: boolean): EngineDrawingSnapshot;
|
|
41
|
+
removeDrawing(id: string): boolean;
|
|
42
|
+
requestDrawingDelete(id: string): void;
|
|
43
|
+
selectDrawing(id: string | null): void;
|
|
44
|
+
getSelectedDrawingId(): string | undefined;
|
|
45
|
+
hitTestDrawing(point: {
|
|
46
|
+
readonly x: number;
|
|
47
|
+
readonly y: number;
|
|
48
|
+
}): string | null;
|
|
49
|
+
getDrawingMutationState(): 'ready' | 'busy';
|
|
50
|
+
subscribeDrawingChanges(listener: () => void): () => void;
|
|
51
|
+
subscribe(listener: WorkspaceRuntimeListener): () => void;
|
|
52
|
+
getRuntimeCapabilityDescriptor(options?: Parameters<DrawableWorkspaceRuntime['getRuntimeCapabilityDescriptor']>[0]): RuntimeCapabilityDescriptor;
|
|
53
|
+
exportDrawingDocument(): DrawingDocument;
|
|
54
|
+
exportWorkspace(): DrawableWorkspaceDocument;
|
|
55
|
+
exportArtifact(fileName?: string): ReturnType<DrawableWorkspaceRuntime['exportArtifact']>;
|
|
56
|
+
setValueAxisScale(scale: 'linear' | 'logarithmic'): Promise<ChartScene>;
|
|
57
|
+
setMainSeriesPresentation(presentation: MainSeriesPresentation): {
|
|
58
|
+
readonly activeType: string;
|
|
59
|
+
};
|
|
60
|
+
replaceScene(scene: ChartScene): ChartScene;
|
|
61
|
+
commitHistoricalData(requestId: string, data: readonly MarketData[], hasMore: boolean): EngineHistoricalDataCommitResult;
|
|
62
|
+
rejectHistoricalData(requestId: string, message: string): boolean;
|
|
63
|
+
commitDrawingChange(requestId: string, canonicalHash: string): boolean;
|
|
64
|
+
rejectDrawingChange(requestId: string): boolean;
|
|
65
|
+
requestHostAction(actionId: string, drawingId?: string | null): void;
|
|
66
|
+
destroy(): void;
|
|
67
|
+
}
|
|
68
|
+
export declare function createEmptyDrawableWorkspaceRuntime(container: HTMLElement, bootstrap: EmptyDrawableWorkspaceBootstrap, options: EmptyDrawableWorkspaceRuntimeOptions): Promise<ProgressiveDrawableWorkspaceRuntime>;
|
|
69
|
+
//# sourceMappingURL=progressive-workspace-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progressive-workspace-runtime.d.ts","sourceRoot":"","sources":["../../src/drawing/progressive-workspace-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
import { STANDARD_CLOSE_LINE_PRESENTATION, SUPPORTED_OVERLAYS, } from '@baron1996/klinecharts-adapter';
|
|
2
|
+
import { runRuntimeTeardowns } from '../lifecycle.js';
|
|
3
|
+
import { getSceneRuntime } from './scene-runtime-factory.js';
|
|
4
|
+
import { deepFreeze, WORKSPACE_EVENT_PROTOCOL, WORKSPACE_EVENT_PROTOCOL_VERSION, } from './workspace-events.js';
|
|
5
|
+
import { DrawableWorkspaceRuntime, } from './workspace-runtime.js';
|
|
6
|
+
const EMPTY_RUNTIME_STYLES = `
|
|
7
|
+
.baron-progressive-runtime-state {
|
|
8
|
+
position: absolute;
|
|
9
|
+
inset: 0;
|
|
10
|
+
z-index: 2;
|
|
11
|
+
display: flex;
|
|
12
|
+
align-items: center;
|
|
13
|
+
justify-content: center;
|
|
14
|
+
padding: 24px;
|
|
15
|
+
color: rgba(120, 123, 134, 1);
|
|
16
|
+
font: 500 13px/1.5 system-ui, sans-serif;
|
|
17
|
+
text-align: center;
|
|
18
|
+
pointer-events: none;
|
|
19
|
+
}
|
|
20
|
+
.baron-progressive-runtime-state[hidden] { display: none; }
|
|
21
|
+
`;
|
|
22
|
+
/**
|
|
23
|
+
* 浏览器专用渐进 Runtime。空阶段只有真实的 KLineCharts 容器和网格,
|
|
24
|
+
* 不存在可序列化 Scene/Workspace,也不会构造占位行情。
|
|
25
|
+
*/
|
|
26
|
+
export class ProgressiveDrawableWorkspaceRuntime {
|
|
27
|
+
#container;
|
|
28
|
+
#bootstrap;
|
|
29
|
+
#options;
|
|
30
|
+
#adapter;
|
|
31
|
+
#listeners = new Set();
|
|
32
|
+
#stateListeners = new Set();
|
|
33
|
+
#runtimeId = `progressive-workspace-${Math.random().toString(36).slice(2)}`;
|
|
34
|
+
#stateElement;
|
|
35
|
+
#stateStyle;
|
|
36
|
+
#originalPosition;
|
|
37
|
+
#inner;
|
|
38
|
+
#state = 'empty';
|
|
39
|
+
#sequence = 0;
|
|
40
|
+
#destroyed = false;
|
|
41
|
+
constructor(container, bootstrap, options, adapter) {
|
|
42
|
+
this.#container = container;
|
|
43
|
+
this.#bootstrap = structuredClone(bootstrap);
|
|
44
|
+
this.#options = options;
|
|
45
|
+
this.#adapter = adapter;
|
|
46
|
+
this.#originalPosition = container.style.position;
|
|
47
|
+
if (getComputedStyle(container).position === 'static') {
|
|
48
|
+
container.style.position = 'relative';
|
|
49
|
+
}
|
|
50
|
+
this.#stateStyle = document.createElement('style');
|
|
51
|
+
this.#stateStyle.dataset.baronProgressiveRuntimeStyles = '';
|
|
52
|
+
this.#stateStyle.textContent = EMPTY_RUNTIME_STYLES;
|
|
53
|
+
this.#stateElement = document.createElement('div');
|
|
54
|
+
this.#stateElement.className = 'baron-progressive-runtime-state';
|
|
55
|
+
this.#stateElement.dataset.runtimeState = 'empty';
|
|
56
|
+
this.#stateElement.setAttribute('role', 'status');
|
|
57
|
+
this.#stateElement.setAttribute('aria-live', 'polite');
|
|
58
|
+
this.#stateElement.textContent = options.emptyStateText ?? '暂无历史 K 线';
|
|
59
|
+
container.append(this.#stateStyle, this.#stateElement);
|
|
60
|
+
if (options.onEvent !== undefined) {
|
|
61
|
+
this.#listeners.add(options.onEvent);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
static async create(container, bootstrap, options) {
|
|
65
|
+
const registration = getSceneRuntime('chart');
|
|
66
|
+
if (registration.createEmptyAdapter === undefined) {
|
|
67
|
+
throw new Error('EMPTY_RUNTIME_UNSUPPORTED: chart Adapter has no empty Runtime factory.');
|
|
68
|
+
}
|
|
69
|
+
const adapter = await registration.createEmptyAdapter(container, bootstrap, {
|
|
70
|
+
...(options.displayTimezone === undefined
|
|
71
|
+
? {}
|
|
72
|
+
: { displayTimezone: options.displayTimezone }),
|
|
73
|
+
...(options.drawingInteraction === undefined
|
|
74
|
+
? {}
|
|
75
|
+
: { drawingInteraction: options.drawingInteraction }),
|
|
76
|
+
});
|
|
77
|
+
return new ProgressiveDrawableWorkspaceRuntime(container, bootstrap, options, adapter);
|
|
78
|
+
}
|
|
79
|
+
get commitMode() {
|
|
80
|
+
return this.#options.commitMode;
|
|
81
|
+
}
|
|
82
|
+
getRuntimeState() {
|
|
83
|
+
return this.#state;
|
|
84
|
+
}
|
|
85
|
+
subscribeRuntimeState(listener) {
|
|
86
|
+
this.#stateListeners.add(listener);
|
|
87
|
+
return () => this.#stateListeners.delete(listener);
|
|
88
|
+
}
|
|
89
|
+
setLoadingState(state, message) {
|
|
90
|
+
this.#assertAlive();
|
|
91
|
+
if (this.#inner !== undefined) {
|
|
92
|
+
throw new Error('EMPTY_RUNTIME_ALREADY_READY: loading state cannot replace an installed Scene.');
|
|
93
|
+
}
|
|
94
|
+
this.#stateElement.textContent = message ?? (state === 'loading-history'
|
|
95
|
+
? this.#options.loadingStateText ?? '正在加载历史 K 线…'
|
|
96
|
+
: state === 'error'
|
|
97
|
+
? '历史 K 线加载失败,可重试'
|
|
98
|
+
: this.#options.emptyStateText ?? '暂无历史 K 线');
|
|
99
|
+
this.#setState(state);
|
|
100
|
+
}
|
|
101
|
+
installInitialScene(value) {
|
|
102
|
+
this.#assertAlive();
|
|
103
|
+
if (this.#inner !== undefined) {
|
|
104
|
+
throw new Error('EMPTY_RUNTIME_ALREADY_READY: initial Scene can only be installed once.');
|
|
105
|
+
}
|
|
106
|
+
const scene = this.#adapter.installInitialScene(value);
|
|
107
|
+
const candlePane = scene.panes.find((pane) => pane.kind === 'candle');
|
|
108
|
+
const primaryAxis = candlePane?.yAxes.find((axis) => axis.role === 'primary');
|
|
109
|
+
if (candlePane === undefined || primaryAxis === undefined) {
|
|
110
|
+
throw new Error('EMPTY_RUNTIME_INVALID_SCENE: candle primary axis is required.');
|
|
111
|
+
}
|
|
112
|
+
const drawings = {
|
|
113
|
+
schema: '@baron1996/drawing-document',
|
|
114
|
+
version: 1,
|
|
115
|
+
scopeKey: this.#bootstrap.scopeKey,
|
|
116
|
+
coordinateSystem: {
|
|
117
|
+
timezone: scene.chart.timezone,
|
|
118
|
+
valueAxes: [{
|
|
119
|
+
paneRole: 'candle',
|
|
120
|
+
yAxisRole: 'primary',
|
|
121
|
+
valuePrecision: scene.symbol.pricePrecision,
|
|
122
|
+
}],
|
|
123
|
+
},
|
|
124
|
+
drawings: [],
|
|
125
|
+
metadata: structuredClone(this.#bootstrap.drawingMetadata ?? {}),
|
|
126
|
+
};
|
|
127
|
+
const workspace = {
|
|
128
|
+
schema: '@baron1996/drawable-workspace',
|
|
129
|
+
version: 1,
|
|
130
|
+
runtime: {
|
|
131
|
+
engine: 'klinecharts',
|
|
132
|
+
engineVersion: '10.0.0',
|
|
133
|
+
workspaceRuntimeVersion: '1.0.0',
|
|
134
|
+
},
|
|
135
|
+
scene: { kind: 'chart', document: structuredClone(scene) },
|
|
136
|
+
drawings,
|
|
137
|
+
binding: {
|
|
138
|
+
scopeKey: drawings.scopeKey,
|
|
139
|
+
timezone: drawings.coordinateSystem.timezone,
|
|
140
|
+
valueAxes: structuredClone(drawings.coordinateSystem.valueAxes),
|
|
141
|
+
},
|
|
142
|
+
metadata: {},
|
|
143
|
+
};
|
|
144
|
+
this.#inner = DrawableWorkspaceRuntime.createFromEmptyAdapter(this.#container, workspace, this.#adapter, {
|
|
145
|
+
commitMode: this.#options.commitMode,
|
|
146
|
+
onEvent: (event) => this.#dispatch(event),
|
|
147
|
+
...(this.#options.hostActions === undefined
|
|
148
|
+
? {}
|
|
149
|
+
: { hostActions: this.#options.hostActions }),
|
|
150
|
+
...(this.#options.historicalDataLoading === undefined
|
|
151
|
+
? {}
|
|
152
|
+
: { historicalDataLoading: this.#options.historicalDataLoading }),
|
|
153
|
+
...(this.#options.displayTimezone === undefined
|
|
154
|
+
? {}
|
|
155
|
+
: { displayTimezone: this.#options.displayTimezone }),
|
|
156
|
+
...(this.#options.drawingInteraction === undefined
|
|
157
|
+
? {}
|
|
158
|
+
: { drawingInteraction: this.#options.drawingInteraction }),
|
|
159
|
+
});
|
|
160
|
+
this.#stateElement.hidden = true;
|
|
161
|
+
this.#setState('ready');
|
|
162
|
+
return structuredClone(scene);
|
|
163
|
+
}
|
|
164
|
+
installDrawingDocument(value) {
|
|
165
|
+
return this.#requireReady().installDrawingDocument(value);
|
|
166
|
+
}
|
|
167
|
+
replaceDrawingDocumentProjection(value) {
|
|
168
|
+
return this.#requireReady().replaceDrawingDocumentProjection(value);
|
|
169
|
+
}
|
|
170
|
+
startDrawing(type, options) {
|
|
171
|
+
return this.#requireReady().startDrawing(type, options);
|
|
172
|
+
}
|
|
173
|
+
listDrawings() {
|
|
174
|
+
return this.#inner?.listDrawings() ?? [];
|
|
175
|
+
}
|
|
176
|
+
getDrawing(id) {
|
|
177
|
+
return this.#inner?.getDrawing(id);
|
|
178
|
+
}
|
|
179
|
+
updateDrawingStyles(id, styles) {
|
|
180
|
+
return this.#requireReady().updateDrawingStyles(id, styles);
|
|
181
|
+
}
|
|
182
|
+
updateDrawingText(id, text) {
|
|
183
|
+
return this.#requireReady().updateDrawingText(id, text);
|
|
184
|
+
}
|
|
185
|
+
updateDrawingLocked(id, locked) {
|
|
186
|
+
return this.#requireReady().updateDrawingLocked(id, locked);
|
|
187
|
+
}
|
|
188
|
+
removeDrawing(id) {
|
|
189
|
+
return this.#requireReady().removeDrawing(id);
|
|
190
|
+
}
|
|
191
|
+
requestDrawingDelete(id) {
|
|
192
|
+
this.#requireReady().requestDrawingDelete(id);
|
|
193
|
+
}
|
|
194
|
+
selectDrawing(id) {
|
|
195
|
+
this.#requireReady().selectDrawing(id);
|
|
196
|
+
}
|
|
197
|
+
getSelectedDrawingId() {
|
|
198
|
+
return this.#inner?.getSelectedDrawingId();
|
|
199
|
+
}
|
|
200
|
+
hitTestDrawing(point) {
|
|
201
|
+
return this.#requireReady().hitTestDrawing(point);
|
|
202
|
+
}
|
|
203
|
+
getDrawingMutationState() {
|
|
204
|
+
return this.#inner?.getDrawingMutationState() ?? 'busy';
|
|
205
|
+
}
|
|
206
|
+
subscribeDrawingChanges(listener) {
|
|
207
|
+
return this.#requireReady().subscribeDrawingChanges(listener);
|
|
208
|
+
}
|
|
209
|
+
subscribe(listener) {
|
|
210
|
+
this.#listeners.add(listener);
|
|
211
|
+
return () => this.#listeners.delete(listener);
|
|
212
|
+
}
|
|
213
|
+
getRuntimeCapabilityDescriptor(options = {}) {
|
|
214
|
+
if (this.#inner !== undefined) {
|
|
215
|
+
return this.#inner.getRuntimeCapabilityDescriptor(options);
|
|
216
|
+
}
|
|
217
|
+
return {
|
|
218
|
+
drawingTypes: SUPPORTED_OVERLAYS,
|
|
219
|
+
valueAxis: {
|
|
220
|
+
supportedScales: ['linear', 'logarithmic'],
|
|
221
|
+
activeScale: this.#bootstrap.panes
|
|
222
|
+
.find((pane) => pane.kind === 'candle')
|
|
223
|
+
?.yAxes.find((axis) => axis.role === 'primary')?.scale ?? 'linear',
|
|
224
|
+
mutable: true,
|
|
225
|
+
},
|
|
226
|
+
exportArtifact: {
|
|
227
|
+
kind: 'drawable-workspace',
|
|
228
|
+
mediaType: 'application/json',
|
|
229
|
+
defaultFileName: 'drawable-workspace.json',
|
|
230
|
+
},
|
|
231
|
+
mainSeriesPresentation: {
|
|
232
|
+
presentations: [
|
|
233
|
+
{ type: 'candle_solid' },
|
|
234
|
+
{ type: 'candle_stroke' },
|
|
235
|
+
{ type: 'candle_up_stroke' },
|
|
236
|
+
{ type: 'candle_down_stroke' },
|
|
237
|
+
{ type: 'ohlc' },
|
|
238
|
+
STANDARD_CLOSE_LINE_PRESENTATION,
|
|
239
|
+
],
|
|
240
|
+
activeType: this.#bootstrap.chart.candle.type,
|
|
241
|
+
mutable: true,
|
|
242
|
+
},
|
|
243
|
+
hostActions: options.hostActions ?? [],
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
exportDrawingDocument() {
|
|
247
|
+
return this.#requireReady().exportDrawingDocument();
|
|
248
|
+
}
|
|
249
|
+
exportWorkspace() {
|
|
250
|
+
return this.#requireReady().exportWorkspace();
|
|
251
|
+
}
|
|
252
|
+
exportArtifact(fileName) {
|
|
253
|
+
return this.#requireReady().exportArtifact(fileName);
|
|
254
|
+
}
|
|
255
|
+
setValueAxisScale(scale) {
|
|
256
|
+
return this.#requireReady().setValueAxisScale(scale);
|
|
257
|
+
}
|
|
258
|
+
setMainSeriesPresentation(presentation) {
|
|
259
|
+
return this.#requireReady().setMainSeriesPresentation(presentation);
|
|
260
|
+
}
|
|
261
|
+
replaceScene(scene) {
|
|
262
|
+
return this.#requireReady().replaceScene(scene);
|
|
263
|
+
}
|
|
264
|
+
commitHistoricalData(requestId, data, hasMore) {
|
|
265
|
+
return this.#requireReady().commitHistoricalData(requestId, data, hasMore);
|
|
266
|
+
}
|
|
267
|
+
rejectHistoricalData(requestId, message) {
|
|
268
|
+
return this.#requireReady().rejectHistoricalData(requestId, message);
|
|
269
|
+
}
|
|
270
|
+
commitDrawingChange(requestId, canonicalHash) {
|
|
271
|
+
return this.#requireReady().commitDrawingChange(requestId, canonicalHash);
|
|
272
|
+
}
|
|
273
|
+
rejectDrawingChange(requestId) {
|
|
274
|
+
return this.#requireReady().rejectDrawingChange(requestId);
|
|
275
|
+
}
|
|
276
|
+
requestHostAction(actionId, drawingId) {
|
|
277
|
+
if (this.#inner !== undefined) {
|
|
278
|
+
this.#inner.requestHostAction(actionId, drawingId);
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
this.#emit({
|
|
282
|
+
type: 'host-action-requested',
|
|
283
|
+
actionId,
|
|
284
|
+
drawingId: drawingId ?? null,
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
destroy() {
|
|
288
|
+
if (this.#destroyed) {
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
291
|
+
this.#destroyed = true;
|
|
292
|
+
runRuntimeTeardowns(this);
|
|
293
|
+
if (this.#inner !== undefined) {
|
|
294
|
+
this.#inner.destroy();
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
297
|
+
this.#adapter.dispose();
|
|
298
|
+
}
|
|
299
|
+
this.#stateElement.remove();
|
|
300
|
+
this.#stateStyle.remove();
|
|
301
|
+
this.#container.style.position = this.#originalPosition;
|
|
302
|
+
this.#listeners.clear();
|
|
303
|
+
this.#stateListeners.clear();
|
|
304
|
+
}
|
|
305
|
+
#requireReady() {
|
|
306
|
+
this.#assertAlive();
|
|
307
|
+
if (this.#inner === undefined) {
|
|
308
|
+
throw new Error('EMPTY_RUNTIME_NOT_READY: install a non-empty ChartScene first.');
|
|
309
|
+
}
|
|
310
|
+
return this.#inner;
|
|
311
|
+
}
|
|
312
|
+
#assertAlive() {
|
|
313
|
+
if (this.#destroyed) {
|
|
314
|
+
throw new Error('DRAWABLE_WORKSPACE_RUNTIME_DESTROYED');
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
#setState(state) {
|
|
318
|
+
this.#state = state;
|
|
319
|
+
this.#stateElement.dataset.runtimeState = state;
|
|
320
|
+
for (const listener of this.#stateListeners) {
|
|
321
|
+
listener(state);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
#dispatch(event) {
|
|
325
|
+
for (const listener of this.#listeners) {
|
|
326
|
+
listener(structuredClone(event));
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
#emit(event) {
|
|
330
|
+
const envelope = deepFreeze({
|
|
331
|
+
protocol: WORKSPACE_EVENT_PROTOCOL,
|
|
332
|
+
protocolVersion: WORKSPACE_EVENT_PROTOCOL_VERSION,
|
|
333
|
+
runtimeId: this.#runtimeId,
|
|
334
|
+
sequence: ++this.#sequence,
|
|
335
|
+
...event,
|
|
336
|
+
});
|
|
337
|
+
this.#dispatch(envelope);
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
export async function createEmptyDrawableWorkspaceRuntime(container, bootstrap, options) {
|
|
341
|
+
return ProgressiveDrawableWorkspaceRuntime.create(container, bootstrap, options);
|
|
342
|
+
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { ChartScene, DrawableWorkspaceDocument, TimeSeriesScene } from '@baron1996/kline-scene-schema';
|
|
2
|
-
import { type DrawingInteractionOptions, type DrawingEnginePort, type DrawingProjectionPolicy } from '@baron1996/klinecharts-adapter';
|
|
2
|
+
import { type DrawingInteractionOptions, type DrawingEnginePort, type DrawingProjectionPolicy, type EmptyChartEnginePort, type EmptyChartRuntimeBootstrap } from '@baron1996/klinecharts-adapter';
|
|
3
3
|
export interface SceneRuntimeRegistration {
|
|
4
4
|
readonly sceneKind: 'chart' | 'time-series';
|
|
5
5
|
parseScene(value: unknown): ChartScene | TimeSeriesScene;
|
|
6
6
|
createAdapter(container: HTMLElement, workspace: DrawableWorkspaceDocument, options?: SceneRuntimeAdapterOptions): Promise<DrawingEnginePort>;
|
|
7
|
+
createEmptyAdapter?(container: HTMLElement, bootstrap: EmptyChartRuntimeBootstrap, options?: SceneRuntimeAdapterOptions): Promise<EmptyChartEnginePort>;
|
|
7
8
|
createPolicy(): DrawingProjectionPolicy;
|
|
8
9
|
readonly defaultTarget: {
|
|
9
10
|
readonly paneRole: string;
|
|
@@ -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,yBAAyB,EAC9B,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;IAC/D,iDAAiD;IACjD,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,oCAAoC;IACpC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,yBAAyB,CAAC;CACxD;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,yBAAyB,EAC9B,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAC/B,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,kBAAkB,CAAC,CAClB,SAAS,EAAE,WAAW,EACtB,SAAS,EAAE,0BAA0B,EACrC,OAAO,CAAC,EAAE,0BAA0B,GAClC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACjC,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;IAC/D,iDAAiD;IACjD,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,oCAAoC;IACpC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,yBAAyB,CAAC;CACxD;AAID,wBAAgB,oBAAoB,CACnC,YAAY,EAAE,wBAAwB,GACpC,IAAI,CAEN;AAED,wBAAgB,eAAe,CAC9B,IAAI,EAAE,OAAO,GAAG,aAAa,GAC3B,wBAAwB,CAM1B"}
|
|
@@ -15,6 +15,7 @@ registerSceneRuntime({
|
|
|
15
15
|
sceneKind: 'chart',
|
|
16
16
|
parseScene: (value) => parseChartScene(value),
|
|
17
17
|
createAdapter: (container, workspace, options) => KLineChartsSceneAdapter.createWorkspace(container, workspace, options),
|
|
18
|
+
createEmptyAdapter: (container, bootstrap, options) => KLineChartsSceneAdapter.createEmptyWorkspace(container, bootstrap, options),
|
|
18
19
|
createPolicy: () => new KLineDrawingProjectionPolicy(),
|
|
19
20
|
defaultTarget: { paneRole: 'candle', yAxisRole: 'primary' },
|
|
20
21
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ChartScene, DrawableWorkspaceDocument, Drawing, DrawingDocument, MarketData, TimeSeriesScene } from '@baron1996/kline-scene-schema';
|
|
2
|
-
import type { DrawingInteractionOptions, EngineDrawingSnapshot, EngineHistoricalDataCommitResult, MainSeriesPresentation } from '@baron1996/klinecharts-adapter';
|
|
2
|
+
import type { DrawingInteractionOptions, DrawingEnginePort, EngineDrawingSnapshot, EngineHistoricalDataCommitResult, MainSeriesPresentation } from '@baron1996/klinecharts-adapter';
|
|
3
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';
|
|
@@ -26,6 +26,8 @@ export declare class DrawableWorkspaceRuntime implements DrawableWorkspaceRuntim
|
|
|
26
26
|
#private;
|
|
27
27
|
private constructor();
|
|
28
28
|
static create(container: HTMLElement, value: unknown, options: DrawableWorkspaceRuntimeOptions): Promise<DrawableWorkspaceRuntime>;
|
|
29
|
+
/** 复用空运行态已经创建的 Adapter,不重新初始化图表容器。 */
|
|
30
|
+
static createFromEmptyAdapter(container: HTMLElement, value: unknown, engine: DrawingEnginePort, options: DrawableWorkspaceRuntimeOptions): DrawableWorkspaceRuntime;
|
|
29
31
|
/** 跨周期等宿主编排只能连接显式 host-confirmed Runtime。 */
|
|
30
32
|
get commitMode(): DrawableWorkspaceRuntimeOptions['commitMode'];
|
|
31
33
|
/** 只暴露公共会话状态,不暴露 Adapter 或 Chart。 */
|
|
@@ -57,6 +59,10 @@ export declare class DrawableWorkspaceRuntime implements DrawableWorkspaceRuntim
|
|
|
57
59
|
readonly hostActions?: readonly HostActionDescriptor[];
|
|
58
60
|
}): RuntimeCapabilityDescriptor;
|
|
59
61
|
exportDrawingDocument(): DrawingDocument;
|
|
62
|
+
/** 在首份正式 Scene 建立坐标系后,独立安装宿主加载的 DrawingDocument。 */
|
|
63
|
+
installDrawingDocument(value: unknown): DrawingDocument;
|
|
64
|
+
/** 在无交互事务时刷新宿主派生的 Drawing 投影,不产生保存候选。 */
|
|
65
|
+
replaceDrawingDocumentProjection(value: unknown): DrawingDocument;
|
|
60
66
|
exportWorkspace(): DrawableWorkspaceDocument;
|
|
61
67
|
exportArtifact(fileName?: string): {
|
|
62
68
|
readonly bytes: Uint8Array;
|
|
@@ -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,EAEX,yBAAyB,
|
|
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,EAEX,yBAAyB,EACzB,iBAAiB,EACjB,qBAAqB,EACrB,gCAAgC,EAEhC,sBAAsB,EACtB,MAAM,gCAAgC,CAAC;AAOxC,OAAO,KAAK,EACX,wBAAwB,EACxB,+BAA+B,EAC/B,0BAA0B,EAC1B,MAAM,mBAAmB,CAAC;AAK3B,OAAO,KAAK,EACX,oBAAoB,EACpB,2BAA2B,EAC3B,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EACN,wBAAwB,EAExB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAKN,KAAK,wBAAwB,EAC7B,MAAM,uBAAuB,CAAC;AAE/B,MAAM,WAAW,+BAA+B;IAC/C,QAAQ,CAAC,UAAU,EAAE,WAAW,GAAG,gBAAgB,CAAC;IACpD,QAAQ,CAAC,OAAO,CAAC,EAAE,wBAAwB,CAAC;IAC5C,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACvD,QAAQ,CAAC,qBAAqB,CAAC,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAC/D,6CAA6C;IAC7C,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,oCAAoC;IACpC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,yBAAyB,CAAC;CACxD;AAED,MAAM,WAAW,8BAChB,SAAQ,wBAAwB,EAAE,+BAA+B,EAAE,0BAA0B;CAAG;AAsCjG;;;GAGG;AACH,qBAAa,wBAAyB,YAAW,8BAA8B;;IAsB9E,OAAO;WA6Ca,MAAM,CACzB,SAAS,EAAE,WAAW,EACtB,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,+BAA+B,GACtC,OAAO,CAAC,wBAAwB,CAAC;IA6BpC,sCAAsC;WACxB,sBAAsB,CACnC,SAAS,EAAE,WAAW,EACtB,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,+BAA+B,GACtC,wBAAwB;IAkB3B,6CAA6C;IAC7C,IAAW,UAAU,IAAI,+BAA+B,CAAC,YAAY,CAAC,CAErE;IAED,qCAAqC;IAC9B,sBAAsB,IAAI,wBAAwB,CAAC,OAAO,CAAC;IAI3D,YAAY,CAClB,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;IAIF,YAAY,IAAI,SAAS,qBAAqB,EAAE;IAIhD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS;IAIzD,mBAAmB,CACzB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,GACvB,qBAAqB;IAIjB,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,qBAAqB;IAIlE,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,qBAAqB;IAIvE,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIlC,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAItC,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAItC,oBAAoB,IAAI,MAAM,GAAG,SAAS;IAI1C,cAAc,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,GAAG,IAAI;IAIhF,uBAAuB,IAAI,OAAO,GAAG,MAAM;IAI3C,uBAAuB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAOzD,SAAS,CAAC,QAAQ,EAAE,wBAAwB,GAAG,MAAM,IAAI;IAOzD,8BAA8B,CACpC,OAAO,GAAE;QAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAA;KAAO,GACtE,2BAA2B;IA8CvB,qBAAqB,IAAI,eAAe;IAO/C,oDAAoD;IAC7C,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe;IAgB9D,yCAAyC;IAClC,gCAAgC,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe;IAoEjE,eAAe,IAAI,yBAAyB;IAmB5C,cAAc,CACpB,QAAQ,SAA4B,GAClC;QACF,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;QAC3B,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;QACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;KAC1B;IASY,iBAAiB,CAC7B,KAAK,EAAE,QAAQ,GAAG,aAAa,GAC7B,OAAO,CAAC,UAAU,CAAC;IAyCf,yBAAyB,CAC/B,YAAY,EAAE,sBAAsB,GAClC;QAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE;IAyB3B,YAAY,CAClB,KAAK,EAAE,UAAU,GAAG,eAAe,GACjC,UAAU,GAAG,eAAe;IAwBxB,oBAAoB,CAC1B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,SAAS,UAAU,EAAE,EAC3B,OAAO,EAAE,OAAO,GACd,gCAAgC;IA0B5B,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IASjE,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO;IAItE,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI/C,iBAAiB,CACvB,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GACvB,IAAI;IAQA,OAAO,IAAI,IAAI;CA8GtB;AAgBD,wBAAsB,8BAA8B,CACnD,SAAS,EAAE,WAAW,EACtB,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE,+BAA+B,GACtC,OAAO,CAAC,wBAAwB,CAAC,CAEnC"}
|
|
@@ -60,13 +60,19 @@ export class DrawableWorkspaceRuntime {
|
|
|
60
60
|
#sequence = 0;
|
|
61
61
|
#destroyed = false;
|
|
62
62
|
#scene;
|
|
63
|
-
|
|
63
|
+
/** 渐进 Runtime 只允许安装一次首份 DrawingDocument。 */
|
|
64
|
+
#drawingDocumentInstalled;
|
|
65
|
+
/** 首次 Scene 建立时固定的 Drawing 业务身份,不随投影 metadata 变化。 */
|
|
66
|
+
#drawingMetadataIdentity;
|
|
67
|
+
constructor(container, workspace, engine, options, drawingDocumentInstalled = true) {
|
|
64
68
|
this.#container = container;
|
|
65
69
|
this.#workspace = workspace;
|
|
66
70
|
this.#engine = engine;
|
|
67
71
|
this.#commitMode = options.commitMode;
|
|
68
72
|
this.#runtimeId = `drawable-workspace-${Math.random().toString(36).slice(2)}`;
|
|
69
73
|
this.#scene = workspace.scene.document;
|
|
74
|
+
this.#drawingDocumentInstalled = drawingDocumentInstalled;
|
|
75
|
+
this.#drawingMetadataIdentity = structuredClone(workspace.drawings.metadata);
|
|
70
76
|
this.#registration = getSceneRuntime(workspace.scene.kind);
|
|
71
77
|
this.#session = new DrawingSessionController({
|
|
72
78
|
runtimeId: this.#runtimeId,
|
|
@@ -116,6 +122,18 @@ export class DrawableWorkspaceRuntime {
|
|
|
116
122
|
});
|
|
117
123
|
return new DrawableWorkspaceRuntime(container, workspace, engine, options);
|
|
118
124
|
}
|
|
125
|
+
/** 复用空运行态已经创建的 Adapter,不重新初始化图表容器。 */
|
|
126
|
+
static createFromEmptyAdapter(container, value, engine, options) {
|
|
127
|
+
const workspace = parseDrawableWorkspaceDocument(value);
|
|
128
|
+
if (workspace.scene.kind !== 'chart' || engine.sceneKind !== 'chart') {
|
|
129
|
+
throw new Error('DRAWABLE_SCENE_KIND_UNSUPPORTED: empty Runtime only supports chart Workspaces.');
|
|
130
|
+
}
|
|
131
|
+
if (options.historicalDataLoading !== undefined) {
|
|
132
|
+
const port = engine;
|
|
133
|
+
port.configureHistoricalDataLoading(options.historicalDataLoading.hasMore);
|
|
134
|
+
}
|
|
135
|
+
return new DrawableWorkspaceRuntime(container, workspace, engine, options, false);
|
|
136
|
+
}
|
|
119
137
|
/** 跨周期等宿主编排只能连接显式 host-confirmed Runtime。 */
|
|
120
138
|
get commitMode() {
|
|
121
139
|
return this.#commitMode;
|
|
@@ -221,6 +239,70 @@ export class DrawableWorkspaceRuntime {
|
|
|
221
239
|
this.#assertUsable();
|
|
222
240
|
return parseDrawingDocument(this.#buildDocument(this.#session.confirmedDrawings));
|
|
223
241
|
}
|
|
242
|
+
/** 在首份正式 Scene 建立坐标系后,独立安装宿主加载的 DrawingDocument。 */
|
|
243
|
+
installDrawingDocument(value) {
|
|
244
|
+
this.#assertUsable();
|
|
245
|
+
if (this.#drawingDocumentInstalled) {
|
|
246
|
+
throw new DrawingSessionError('DRAWING_CHANGE_IN_PROGRESS', '/drawings', 'The initial DrawingDocument has already been installed.');
|
|
247
|
+
}
|
|
248
|
+
const installed = this.#applyDrawingDocumentProjection(this.#validateDrawingDocumentProjection(value));
|
|
249
|
+
this.#drawingDocumentInstalled = true;
|
|
250
|
+
return installed;
|
|
251
|
+
}
|
|
252
|
+
/** 在无交互事务时刷新宿主派生的 Drawing 投影,不产生保存候选。 */
|
|
253
|
+
replaceDrawingDocumentProjection(value) {
|
|
254
|
+
this.#assertUsable();
|
|
255
|
+
if (!this.#drawingDocumentInstalled || this.#session.state !== 'ready') {
|
|
256
|
+
throw new DrawingSessionError('DRAWING_CHANGE_IN_PROGRESS', '/drawings', 'Drawing projection can only be replaced after installation and outside interactions.');
|
|
257
|
+
}
|
|
258
|
+
return this.#applyDrawingDocumentProjection(this.#validateDrawingDocumentProjection(value));
|
|
259
|
+
}
|
|
260
|
+
#validateDrawingDocumentProjection(value) {
|
|
261
|
+
const document = parseDrawingDocument(value);
|
|
262
|
+
const expected = this.#workspace.drawings;
|
|
263
|
+
if (document.scopeKey !== expected.scopeKey ||
|
|
264
|
+
document.coordinateSystem.timezone !== expected.coordinateSystem.timezone ||
|
|
265
|
+
JSON.stringify(document.coordinateSystem.valueAxes) !==
|
|
266
|
+
JSON.stringify(expected.coordinateSystem.valueAxes) ||
|
|
267
|
+
!containsMetadataIdentity(document.metadata, this.#drawingMetadataIdentity)) {
|
|
268
|
+
throw new DrawingSessionError('DRAWING_PROJECTION_INVALID', '/drawings', 'DrawingDocument identity or coordinate system does not match the installed Scene.');
|
|
269
|
+
}
|
|
270
|
+
this.#projectionService.projectDocument({
|
|
271
|
+
scene: this.#projectionScene(),
|
|
272
|
+
drawings: document,
|
|
273
|
+
});
|
|
274
|
+
return document;
|
|
275
|
+
}
|
|
276
|
+
#applyDrawingDocumentProjection(document) {
|
|
277
|
+
const previousDrawings = this.#session.confirmedDrawings;
|
|
278
|
+
const previousWorkspace = this.#workspace;
|
|
279
|
+
try {
|
|
280
|
+
this.#session.restoreConfirmed(document.drawings.map((drawing) => drawingToSnapshot(drawing)));
|
|
281
|
+
this.#workspace = parseDrawableWorkspaceDocument({
|
|
282
|
+
...structuredClone(this.#workspace),
|
|
283
|
+
drawings: structuredClone(document),
|
|
284
|
+
binding: {
|
|
285
|
+
scopeKey: document.scopeKey,
|
|
286
|
+
timezone: document.coordinateSystem.timezone,
|
|
287
|
+
valueAxes: structuredClone(document.coordinateSystem.valueAxes),
|
|
288
|
+
},
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
catch (error) {
|
|
292
|
+
this.#session.restoreConfirmed(previousDrawings);
|
|
293
|
+
this.#workspace = previousWorkspace;
|
|
294
|
+
throw error;
|
|
295
|
+
}
|
|
296
|
+
for (const listener of this.#drawingChangeListeners) {
|
|
297
|
+
try {
|
|
298
|
+
listener();
|
|
299
|
+
}
|
|
300
|
+
catch {
|
|
301
|
+
// 宿主投影刷新已经提交;单个 UI 监听失败不能回滚 Drawing。
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
return structuredClone(document);
|
|
305
|
+
}
|
|
224
306
|
exportWorkspace() {
|
|
225
307
|
this.#assertUsable();
|
|
226
308
|
const drawings = this.exportDrawingDocument();
|
|
@@ -443,6 +525,15 @@ export class DrawableWorkspaceRuntime {
|
|
|
443
525
|
}
|
|
444
526
|
}
|
|
445
527
|
}
|
|
528
|
+
function containsMetadataIdentity(actual, expected) {
|
|
529
|
+
if (expected === undefined) {
|
|
530
|
+
return true;
|
|
531
|
+
}
|
|
532
|
+
if (actual === undefined) {
|
|
533
|
+
return false;
|
|
534
|
+
}
|
|
535
|
+
return Object.entries(expected).every(([key, value]) => JSON.stringify(actual[key]) === JSON.stringify(value));
|
|
536
|
+
}
|
|
446
537
|
export async function createDrawableWorkspaceRuntime(container, workspace, options) {
|
|
447
538
|
return DrawableWorkspaceRuntime.create(container, workspace, options);
|
|
448
539
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/** Web Runtime npm 包版本;ChartScene runtimeVersion 是独立的数据契约版本。 */
|
|
2
|
-
export declare const WEB_RUNTIME_PACKAGE_VERSION: "0.9.
|
|
2
|
+
export declare const WEB_RUNTIME_PACKAGE_VERSION: "0.9.13";
|
|
3
3
|
export { SUPPORTED_OVERLAYS } from '@baron1996/klinecharts-adapter';
|
|
4
4
|
export * from './cross-period/coordinator.js';
|
|
5
5
|
export * from './drawing/capabilities.js';
|
|
6
6
|
export * from './drawing/projection-service.js';
|
|
7
|
+
export * from './drawing/progressive-workspace-runtime.js';
|
|
7
8
|
export * from './drawing/runtime-capability-descriptor.js';
|
|
8
9
|
export * from './drawing/scene-runtime-factory.js';
|
|
9
10
|
export * from './drawing/session-controller.js';
|
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,QAAiB,CAAC;AAE7D,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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,eAAO,MAAM,2BAA2B,EAAG,QAAiB,CAAC;AAE7D,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,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,9 +1,10 @@
|
|
|
1
1
|
/** Web Runtime npm 包版本;ChartScene runtimeVersion 是独立的数据契约版本。 */
|
|
2
|
-
export const WEB_RUNTIME_PACKAGE_VERSION = '0.9.
|
|
2
|
+
export const WEB_RUNTIME_PACKAGE_VERSION = '0.9.13';
|
|
3
3
|
export { SUPPORTED_OVERLAYS } from '@baron1996/klinecharts-adapter';
|
|
4
4
|
export * from './cross-period/coordinator.js';
|
|
5
5
|
export * from './drawing/capabilities.js';
|
|
6
6
|
export * from './drawing/projection-service.js';
|
|
7
|
+
export * from './drawing/progressive-workspace-runtime.js';
|
|
7
8
|
export * from './drawing/runtime-capability-descriptor.js';
|
|
8
9
|
export * from './drawing/scene-runtime-factory.js';
|
|
9
10
|
export * from './drawing/session-controller.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standard-toolbar.d.ts","sourceRoot":"","sources":["../../src/toolbar/standard-toolbar.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACX,wBAAwB,EACxB,0BAA0B,EAC1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACX,eAAe,EACf,sBAAsB,EAEtB,MAAM,aAAa,CAAC;AAgErB,KAAK,sBAAsB,GAAG,wBAAwB,GAAG,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"standard-toolbar.d.ts","sourceRoot":"","sources":["../../src/toolbar/standard-toolbar.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACX,wBAAwB,EACxB,0BAA0B,EAC1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACX,eAAe,EACf,sBAAsB,EAEtB,MAAM,aAAa,CAAC;AAgErB,KAAK,sBAAsB,GAAG,wBAAwB,GAAG,0BAA0B,CAAC;AAwLpF,2BAA2B;AAC3B,wBAAgB,qBAAqB,CACpC,SAAS,EAAE,WAAW,EACtB,OAAO,EAAE,sBAAsB,EAC/B,OAAO,GAAE,sBAA2B,GAClC,eAAe,CA+UjB"}
|
|
@@ -26,6 +26,13 @@ function applyHostActionState(control, state) {
|
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
+
function runtimeStateCapability(runtime) {
|
|
30
|
+
const candidate = runtime;
|
|
31
|
+
return typeof candidate.getRuntimeState === 'function' &&
|
|
32
|
+
typeof candidate.subscribeRuntimeState === 'function'
|
|
33
|
+
? candidate
|
|
34
|
+
: undefined;
|
|
35
|
+
}
|
|
29
36
|
function downloadArtifact(runtime, fileName) {
|
|
30
37
|
const artifact = runtime.exportArtifact(fileName);
|
|
31
38
|
const blob = new Blob([artifact.bytes], { type: artifact.mediaType });
|
|
@@ -177,6 +184,8 @@ export function createStandardToolbar(container, runtime, options = {}) {
|
|
|
177
184
|
root.append(style, viewport);
|
|
178
185
|
const tooltip = createTooltip(viewport, `baron-kline-toolbar-tooltip-${toolbarId}`);
|
|
179
186
|
const cleanupCallbacks = [];
|
|
187
|
+
const dataDependentControls = [];
|
|
188
|
+
const drawingDependentControls = [];
|
|
180
189
|
const handleViewportWheel = (event) => {
|
|
181
190
|
if (event.ctrlKey ||
|
|
182
191
|
viewport.scrollWidth <= viewport.clientWidth ||
|
|
@@ -200,6 +209,8 @@ export function createStandardToolbar(container, runtime, options = {}) {
|
|
|
200
209
|
textInput.dataset.action = 'overlay-text';
|
|
201
210
|
textInput.setAttribute('aria-label', '标注文本');
|
|
202
211
|
textInput.placeholder = '输入标注文本';
|
|
212
|
+
dataDependentControls.push(textInput);
|
|
213
|
+
drawingDependentControls.push(textInput);
|
|
203
214
|
const scaleControl = createSelectControl('价格轴', 'price-scale', [
|
|
204
215
|
{ value: 'linear', label: '线性' },
|
|
205
216
|
{ value: 'logarithmic', label: '对数' },
|
|
@@ -229,6 +240,10 @@ export function createStandardToolbar(container, runtime, options = {}) {
|
|
|
229
240
|
mainSeriesControl.select.value = mainSeries.activeType;
|
|
230
241
|
}
|
|
231
242
|
scaleControl.select.value = descriptor.valueAxis.activeScale;
|
|
243
|
+
dataDependentControls.push(scaleControl.select);
|
|
244
|
+
if (mainSeriesControl !== null) {
|
|
245
|
+
dataDependentControls.push(mainSeriesControl.select);
|
|
246
|
+
}
|
|
232
247
|
const handleScaleChange = async () => {
|
|
233
248
|
await runtime.setValueAxisScale(scaleControl.select.value);
|
|
234
249
|
};
|
|
@@ -286,6 +301,7 @@ export function createStandardToolbar(container, runtime, options = {}) {
|
|
|
286
301
|
};
|
|
287
302
|
const button = createIconButton(presentation, action);
|
|
288
303
|
button.element.dataset.action = presentation.action;
|
|
304
|
+
dataDependentControls.push(button.element);
|
|
289
305
|
groupElement.append(button.element);
|
|
290
306
|
cleanupCallbacks.push(button.cleanup, tooltip.bind(button.element, presentation.label, presentation.action));
|
|
291
307
|
}
|
|
@@ -334,6 +350,8 @@ export function createStandardToolbar(container, runtime, options = {}) {
|
|
|
334
350
|
buttonElement.dataset.overlayType = overlayType;
|
|
335
351
|
buttonElement.setAttribute('aria-pressed', 'false');
|
|
336
352
|
overlayButtons.push(buttonElement);
|
|
353
|
+
dataDependentControls.push(buttonElement);
|
|
354
|
+
drawingDependentControls.push(buttonElement);
|
|
337
355
|
groupElement.append(buttonElement);
|
|
338
356
|
cleanupCallbacks.push(button.cleanup, tooltip.bind(buttonElement, presentation.label, overlayType));
|
|
339
357
|
}
|
|
@@ -347,11 +365,48 @@ export function createStandardToolbar(container, runtime, options = {}) {
|
|
|
347
365
|
textLabel.textContent = '标注文本';
|
|
348
366
|
textField.append(textLabel, textInput);
|
|
349
367
|
content.append(textField);
|
|
368
|
+
const stateCapability = runtimeStateCapability(runtime);
|
|
369
|
+
let runtimeReady = stateCapability === undefined;
|
|
370
|
+
let hostDataActionsDisabled = false;
|
|
371
|
+
let hostDrawingActionsDisabled = false;
|
|
372
|
+
const applyDataActionState = () => {
|
|
373
|
+
for (const control of dataDependentControls) {
|
|
374
|
+
control.disabled = !runtimeReady || hostDataActionsDisabled;
|
|
375
|
+
}
|
|
376
|
+
if (hostDrawingActionsDisabled) {
|
|
377
|
+
for (const control of drawingDependentControls) {
|
|
378
|
+
control.disabled = true;
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
};
|
|
382
|
+
if (stateCapability !== undefined) {
|
|
383
|
+
const applyRuntimeState = (state) => {
|
|
384
|
+
runtimeReady = state === 'ready';
|
|
385
|
+
applyDataActionState();
|
|
386
|
+
root.dataset.runtimeState = state;
|
|
387
|
+
};
|
|
388
|
+
applyRuntimeState(stateCapability.getRuntimeState());
|
|
389
|
+
cleanupCallbacks.push(stateCapability.subscribeRuntimeState(applyRuntimeState));
|
|
390
|
+
}
|
|
350
391
|
container.append(root);
|
|
351
392
|
let destroyed = false;
|
|
352
393
|
let unregisterRuntime = () => { };
|
|
353
394
|
const toolbar = {
|
|
354
395
|
element: root,
|
|
396
|
+
setDataActionsDisabled(disabled) {
|
|
397
|
+
if (destroyed) {
|
|
398
|
+
throw new Error('STANDARD_TOOLBAR_DESTROYED');
|
|
399
|
+
}
|
|
400
|
+
hostDataActionsDisabled = disabled;
|
|
401
|
+
applyDataActionState();
|
|
402
|
+
},
|
|
403
|
+
setDrawingActionsDisabled(disabled) {
|
|
404
|
+
if (destroyed) {
|
|
405
|
+
throw new Error('STANDARD_TOOLBAR_DESTROYED');
|
|
406
|
+
}
|
|
407
|
+
hostDrawingActionsDisabled = disabled;
|
|
408
|
+
applyDataActionState();
|
|
409
|
+
},
|
|
355
410
|
setHostActionState(actionId, state) {
|
|
356
411
|
if (destroyed) {
|
|
357
412
|
throw new Error('STANDARD_TOOLBAR_DESTROYED');
|
package/dist/types.d.ts
CHANGED
|
@@ -125,6 +125,10 @@ export interface DrawingFloatingToolbar {
|
|
|
125
125
|
}
|
|
126
126
|
export interface StandardToolbar {
|
|
127
127
|
readonly element: HTMLElement;
|
|
128
|
+
/** 宿主需要整体只读时,独立禁用所有依赖真实数据的动作。 */
|
|
129
|
+
setDataActionsDisabled(disabled: boolean): void;
|
|
130
|
+
/** 只禁用画线创建与文本输入,保留已就绪历史 Scene 的轴和导出能力。 */
|
|
131
|
+
setDrawingActionsDisabled(disabled: boolean): void;
|
|
128
132
|
setHostActionState(actionId: string, state: {
|
|
129
133
|
readonly pressed?: boolean;
|
|
130
134
|
readonly disabled?: boolean;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@baron1996/klinecharts-runtime",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.13",
|
|
4
4
|
"description": "Web runtime for deterministic KLineCharts scenes.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@baron1996/kline-scene-schema": "0.9.
|
|
43
|
-
"@baron1996/klinecharts-adapter": "0.9.
|
|
42
|
+
"@baron1996/kline-scene-schema": "0.9.13",
|
|
43
|
+
"@baron1996/klinecharts-adapter": "0.9.13",
|
|
44
44
|
"@js-temporal/polyfill": "0.5.1"
|
|
45
45
|
}
|
|
46
46
|
}
|