@baron1996/klinecharts-runtime 0.9.12 → 0.9.14

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 CHANGED
@@ -4,12 +4,13 @@ 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.12 @baron1996/klinecharts-runtime@0.9.12
7
+ npm install --save-exact @baron1996/kline-scene-schema@0.9.14 @baron1996/klinecharts-runtime@0.9.14
8
8
  ```
9
9
 
10
10
  ```ts
11
11
  import { parseChartScene } from '@baron1996/kline-scene-schema';
12
12
  import {
13
+ createChartWorkspaceToolbar,
13
14
  createDrawingFloatingToolbar,
14
15
  createKLineSceneRuntime,
15
16
  createStandardToolbar,
@@ -54,6 +55,39 @@ line style, width, color, text, lock/unlock, and explicit deletion. The floating
54
55
  toolbar can be dragged within the chart's visible bounds. Baron does not replace or
55
56
  cancel the browser context menu; right-click never deletes a Drawing.
56
57
 
58
+ For a chart Workspace, `createChartWorkspaceToolbar` provides the split layout used
59
+ by professional charting screens: period and display controls at the top, and Drawing
60
+ tools on the left. Period and adjustment actions remain opaque host actions. Main
61
+ indicators are calculated by KLineCharts in the browser from the Scene OHLC data.
62
+
63
+ ```ts
64
+ const toolbar = createChartWorkspaceToolbar(
65
+ { top: topToolbarContainer, left: leftToolbarContainer },
66
+ runtime,
67
+ {
68
+ periodActions: [
69
+ { actionId: 'period.1h', label: '1小时', pressed: true },
70
+ { actionId: 'period.1d', label: '日' },
71
+ ],
72
+ settingsHostActions: [
73
+ { actionId: 'adjustment.qfq', label: '前复权', pressed: true },
74
+ ],
75
+ displayTimezoneChoices: [
76
+ { value: 'instrument', label: '标的时区', timezone: 'Asia/Shanghai' },
77
+ { value: 'utc', label: 'UTC', timezone: 'UTC' },
78
+ ],
79
+ activeDisplayTimezoneValue: 'instrument',
80
+ fullscreenTarget: chartWorkspaceElement,
81
+ },
82
+ );
83
+ ```
84
+
85
+ The indicator menu currently manages main-pane `MA`, `EMA`, `SMA`, `BOLL`, `SAR`,
86
+ and `BBI`. `replaceScene()` preserves these Runtime-owned selections by default, so
87
+ a host can fetch and install another historical period without adding indicator
88
+ fields to its datafeed request. Pass `{ preserveMainIndicators: false }` only when an
89
+ explicit reset is required. Secondary indicator panes are outside this API.
90
+
57
91
  The runtime does not provide undo or redo and does not fetch market data.
58
92
  Runtime `0.2.0` events are structured-cloneable pure data with
59
93
  `sceneVersion: 1` and `runtimeVersion: '0.2.0'`. Measurement scenes persist only
@@ -114,7 +148,8 @@ coordinator.destroy();
114
148
  runtime.destroy();
115
149
  ```
116
150
 
117
- `displayTimezone` is a presentation-only IANA timezone override. It changes the
151
+ `displayTimezone` is the initial presentation-only IANA timezone override, and
152
+ `runtime.setDisplayTimezone(timezone)` changes it in place. It changes the
118
153
  KLineCharts time axis and adds the active timezone to tooltip dates, but it is not
119
154
  written into the Workspace and does not change candle timestamps, period rules,
120
155
  Drawing projection, or host alerts. Omit it to use the Scene chart timezone.
@@ -1,6 +1,7 @@
1
- import type { ChartScene, Drawing, MarketData } from '@baron1996/kline-scene-schema';
1
+ import type { ChartScene, Drawing, MarketData, SceneIndicator } from '@baron1996/kline-scene-schema';
2
2
  import type { EngineHistoricalDataCommitResult, EngineDrawingSnapshot, EnginePixelCoordinate, MainSeriesPresentation } from '@baron1996/klinecharts-adapter';
3
3
  import type { HostActionDescriptor, RuntimeCapabilityDescriptor } from './runtime-capability-descriptor.js';
4
+ import type { AddIndicatorOptions } from '../types.js';
4
5
  /** 公共 Drawing 能力;工具栏与所有正式交互式图表 Runtime 共用。 */
5
6
  export interface DrawingRuntimeCapability {
6
7
  startDrawing(type: Drawing['type'], options?: {
@@ -43,4 +44,15 @@ export interface HistoricalDataRuntimeCapability {
43
44
  commitHistoricalData(requestId: string, data: readonly MarketData[], hasMore: boolean): EngineHistoricalDataCommitResult;
44
45
  rejectHistoricalData(requestId: string, message: string): boolean;
45
46
  }
47
+ /** 主图指标配置能力;指标值由浏览器内图表引擎基于 OHLC 数据计算。 */
48
+ export interface MainIndicatorRuntimeCapability {
49
+ listMainIndicators(): readonly SceneIndicator[];
50
+ addMainIndicator(options: AddIndicatorOptions): SceneIndicator;
51
+ removeMainIndicator(id: string): boolean;
52
+ }
53
+ /** 展示时区能力;不改变 Scene 的证券时区与 Drawing 坐标语义。 */
54
+ export interface DisplayTimezoneRuntimeCapability {
55
+ getDisplayTimezone(): string;
56
+ setDisplayTimezone(timezone: string): void;
57
+ }
46
58
  //# sourceMappingURL=capabilities.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/drawing/capabilities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/drawing/capabilities.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
- import type { ChartScene, Drawing, DrawingDocument, DrawableWorkspaceDocument, MarketData } from '@baron1996/kline-scene-schema';
1
+ import type { ChartScene, Drawing, DrawingDocument, DrawableWorkspaceDocument, MarketData, SceneIndicator } from '@baron1996/kline-scene-schema';
2
2
  import type { EmptyChartRuntimeBootstrap, EngineDrawingSnapshot, EngineHistoricalDataCommitResult, MainSeriesPresentation } from '@baron1996/klinecharts-adapter';
3
+ import type { AddIndicatorOptions } from '../types.js';
3
4
  import type { RuntimeCapabilityDescriptor } from './runtime-capability-descriptor.js';
4
5
  import { type WorkspaceRuntimeListener } from './workspace-events.js';
5
6
  import { DrawableWorkspaceRuntime, type DrawableWorkspaceRuntimeOptions } from './workspace-runtime.js';
@@ -57,7 +58,14 @@ export declare class ProgressiveDrawableWorkspaceRuntime implements ProgressiveR
57
58
  setMainSeriesPresentation(presentation: MainSeriesPresentation): {
58
59
  readonly activeType: string;
59
60
  };
60
- replaceScene(scene: ChartScene): ChartScene;
61
+ listMainIndicators(): readonly SceneIndicator[];
62
+ addMainIndicator(options: AddIndicatorOptions): SceneIndicator;
63
+ removeMainIndicator(id: string): boolean;
64
+ getDisplayTimezone(): string;
65
+ setDisplayTimezone(timezone: string): void;
66
+ replaceScene(scene: ChartScene, options?: {
67
+ readonly preserveMainIndicators?: boolean;
68
+ }): ChartScene;
61
69
  commitHistoricalData(requestId: string, data: readonly MarketData[], hasMore: boolean): EngineHistoricalDataCommitResult;
62
70
  rejectHistoricalData(requestId: string, message: string): boolean;
63
71
  commitDrawingChange(requestId: string, canonicalHash: string): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"progressive-workspace-runtime.d.ts","sourceRoot":"","sources":["../../src/drawing/progressive-workspace-runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"progressive-workspace-runtime.d.ts","sourceRoot":"","sources":["../../src/drawing/progressive-workspace-runtime.ts"],"names":[],"mappings":"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"}
@@ -34,6 +34,8 @@ export class ProgressiveDrawableWorkspaceRuntime {
34
34
  #stateElement;
35
35
  #stateStyle;
36
36
  #originalPosition;
37
+ /** 空态和就绪态共用的当前展示时区。 */
38
+ #displayTimezone;
37
39
  #inner;
38
40
  #state = 'empty';
39
41
  #sequence = 0;
@@ -43,6 +45,7 @@ export class ProgressiveDrawableWorkspaceRuntime {
43
45
  this.#bootstrap = structuredClone(bootstrap);
44
46
  this.#options = options;
45
47
  this.#adapter = adapter;
48
+ this.#displayTimezone = options.displayTimezone ?? bootstrap.chart.timezone;
46
49
  this.#originalPosition = container.style.position;
47
50
  if (getComputedStyle(container).position === 'static') {
48
51
  container.style.position = 'relative';
@@ -150,9 +153,7 @@ export class ProgressiveDrawableWorkspaceRuntime {
150
153
  ...(this.#options.historicalDataLoading === undefined
151
154
  ? {}
152
155
  : { historicalDataLoading: this.#options.historicalDataLoading }),
153
- ...(this.#options.displayTimezone === undefined
154
- ? {}
155
- : { displayTimezone: this.#options.displayTimezone }),
156
+ displayTimezone: this.#displayTimezone,
156
157
  ...(this.#options.drawingInteraction === undefined
157
158
  ? {}
158
159
  : { drawingInteraction: this.#options.drawingInteraction }),
@@ -258,8 +259,34 @@ export class ProgressiveDrawableWorkspaceRuntime {
258
259
  setMainSeriesPresentation(presentation) {
259
260
  return this.#requireReady().setMainSeriesPresentation(presentation);
260
261
  }
261
- replaceScene(scene) {
262
- return this.#requireReady().replaceScene(scene);
262
+ listMainIndicators() {
263
+ return this.#inner?.listMainIndicators() ?? [];
264
+ }
265
+ addMainIndicator(options) {
266
+ return this.#requireReady().addMainIndicator(options);
267
+ }
268
+ removeMainIndicator(id) {
269
+ return this.#requireReady().removeMainIndicator(id);
270
+ }
271
+ getDisplayTimezone() {
272
+ return this.#inner?.getDisplayTimezone() ?? this.#displayTimezone;
273
+ }
274
+ setDisplayTimezone(timezone) {
275
+ if (this.#inner !== undefined) {
276
+ this.#inner.setDisplayTimezone(timezone);
277
+ return;
278
+ }
279
+ try {
280
+ new Intl.DateTimeFormat('en-US', { timeZone: timezone }).format(0);
281
+ }
282
+ catch {
283
+ throw new Error(`DISPLAY_TIMEZONE_INVALID: ${timezone} is not a valid IANA timezone.`);
284
+ }
285
+ this.#adapter.setDisplayTimezone(timezone);
286
+ this.#displayTimezone = timezone;
287
+ }
288
+ replaceScene(scene, options = {}) {
289
+ return this.#requireReady().replaceScene(scene, options);
263
290
  }
264
291
  commitHistoricalData(requestId, data, hasMore) {
265
292
  return this.#requireReady().commitHistoricalData(requestId, data, hasMore);
@@ -1 +1 @@
1
- {"version":3,"file":"session-controller.d.ts","sourceRoot":"","sources":["../../src/drawing/session-controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-controller.d.ts","sourceRoot":"","sources":["../../src/drawing/session-controller.ts"],"names":[],"mappings":"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"}
@@ -62,7 +62,7 @@ export class DrawingSessionController {
62
62
  startCreate(type, options) {
63
63
  this.#assertReady();
64
64
  this.#state = 'interacting';
65
- const id = options?.id ?? `drawing-${++this.#requestSequence}`;
65
+ const id = options?.id ?? this.#nextGeneratedDrawingId();
66
66
  this.#interactingDrawingId = id;
67
67
  try {
68
68
  const startedId = this.#options.engine.startDrawing({
@@ -85,6 +85,14 @@ export class DrawingSessionController {
85
85
  throw error;
86
86
  }
87
87
  }
88
+ /** 自动 ID 只跳过当前已确认 Drawing;显式 ID 仍由引擎按原契约校验。 */
89
+ #nextGeneratedDrawingId() {
90
+ let id;
91
+ do {
92
+ id = `drawing-${++this.#requestSequence}`;
93
+ } while (this.#confirmed.some((drawing) => drawing.id === id));
94
+ return id;
95
+ }
88
96
  updateDrawingStyles(id, styles) {
89
97
  this.#assertReady();
90
98
  return this.#options.engine.updateDrawingStyles(id, styles);
@@ -1,4 +1,4 @@
1
- import type { ChartScene, DrawingDocument, TimeSeriesScene } from '@baron1996/kline-scene-schema';
1
+ import type { ChartScene, DrawingDocument, SceneIndicator, TimeSeriesScene } from '@baron1996/kline-scene-schema';
2
2
  import type { EngineDrawingSnapshot } from '@baron1996/klinecharts-adapter';
3
3
  import type { EngineHistoricalDataRequest } from '@baron1996/klinecharts-adapter';
4
4
  import type { ActiveMainSeriesType } from '@baron1996/klinecharts-adapter';
@@ -61,6 +61,15 @@ export type WorkspaceRuntimeEvent = ({
61
61
  } | {
62
62
  readonly type: 'main-series-presentation-changed';
63
63
  readonly activeType: ActiveMainSeriesType;
64
+ } | {
65
+ readonly type: 'main-indicator-created';
66
+ readonly indicator: SceneIndicator;
67
+ } | {
68
+ readonly type: 'main-indicator-removed';
69
+ readonly id: string;
70
+ } | {
71
+ readonly type: 'display-timezone-changed';
72
+ readonly timezone: string;
64
73
  } | {
65
74
  readonly type: 'host-action-requested';
66
75
  readonly actionId: string;
@@ -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":"AAAA,OAAO,KAAK,EACX,UAAU,EACV,eAAe,EACf,cAAc,EACd,eAAe,EACf,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAClF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,eAAO,MAAM,wBAAwB,EAAG,sCAA+C,CAAC;AACxF,eAAO,MAAM,gCAAgC,EAAG,OAAgB,CAAC;AAEjE,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,QAAQ,EAAE,OAAO,wBAAwB,CAAC;IACnD,QAAQ,CAAC,eAAe,EAAE,OAAO,gCAAgC,CAAC;IAClE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,yBAAyB,GAClC,QAAQ,GACR,QAAQ,GACR,cAAc,GACd,aAAa,GACb,QAAQ,GACR,QAAQ,GACR,UAAU,CAAC;AAEd,MAAM,WAAW,4BAA4B;IAC5C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,yBAAyB,CAAC;IAC9C,QAAQ,CAAC,MAAM,CAAC,EAAE,qBAAqB,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAC;IAC1C,QAAQ,CAAC,iBAAiB,EAAE,eAAe,CAAC;IAC5C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,aAAa,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,UAAU,GAAG,eAAe,CAAC;CAChD;AAED,MAAM,MAAM,qBAAqB,GAC9B,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAA;CAAE,GAAG,4BAA4B,CAAC,GACvE,CAAC;IACD,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAC9B,CAAC,GACF,CAAC;IACD,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAC9B,CAAC,GACF;IAAE,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAClE;IAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAA;CAAE,GAC3E,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,2BAA2B,CAAA;CAAE,GAAG,2BAA2B,CAAC,GAC9E;IACA,QAAQ,CAAC,IAAI,EAAE,0BAA0B,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CACzB,GACD;IACA,QAAQ,CAAC,IAAI,EAAE,0BAA0B,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACxB,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,0BAA0B,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,aAAa,CAAA;CAAE,GACvF;IAAE,QAAQ,CAAC,IAAI,EAAE,kCAAkC,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAA;CAAE,GAChG;IAAE,QAAQ,CAAC,IAAI,EAAE,wBAAwB,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAA;CAAE,GAC/E;IAAE,QAAQ,CAAC,IAAI,EAAE,wBAAwB,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAChE;IAAE,QAAQ,CAAC,IAAI,EAAE,0BAA0B,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACxE;IACA,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACrF;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC;AAElC,MAAM,MAAM,6BAA6B,GAAG,qBAAqB,GAAG,sBAAsB,CAAC;AAE3F,MAAM,MAAM,wBAAwB,GAAG,CACtC,KAAK,EAAE,6BAA6B,KAChC,IAAI,CAAC;AAEV,yBAAyB;AACzB,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAQzC"}
@@ -1,6 +1,7 @@
1
- import type { ChartScene, DrawableWorkspaceDocument, Drawing, DrawingDocument, MarketData, TimeSeriesScene } from '@baron1996/kline-scene-schema';
1
+ import type { ChartScene, DrawableWorkspaceDocument, Drawing, DrawingDocument, MarketData, SceneIndicator, TimeSeriesScene } from '@baron1996/kline-scene-schema';
2
2
  import type { DrawingInteractionOptions, DrawingEnginePort, EngineDrawingSnapshot, EngineHistoricalDataCommitResult, MainSeriesPresentation } from '@baron1996/klinecharts-adapter';
3
- import type { DrawingRuntimeCapability, HistoricalDataRuntimeCapability, RuntimeAuxiliaryCapability } from './capabilities.js';
3
+ import type { AddIndicatorOptions } from '../types.js';
4
+ import type { DisplayTimezoneRuntimeCapability, DrawingRuntimeCapability, HistoricalDataRuntimeCapability, MainIndicatorRuntimeCapability, RuntimeAuxiliaryCapability } from './capabilities.js';
4
5
  import type { HostActionDescriptor, RuntimeCapabilityDescriptor } from './runtime-capability-descriptor.js';
5
6
  import { DrawingSessionController } from './session-controller.js';
6
7
  import { type WorkspaceRuntimeListener } from './workspace-events.js';
@@ -16,7 +17,7 @@ export interface DrawableWorkspaceRuntimeOptions {
16
17
  /** 可选输入策略;默认使用图表引擎原生 Drawing 交互。 */
17
18
  readonly drawingInteraction?: DrawingInteractionOptions;
18
19
  }
19
- export interface DrawableWorkspaceRuntimeHandle extends DrawingRuntimeCapability, HistoricalDataRuntimeCapability, RuntimeAuxiliaryCapability {
20
+ export interface DrawableWorkspaceRuntimeHandle extends DrawingRuntimeCapability, HistoricalDataRuntimeCapability, MainIndicatorRuntimeCapability, DisplayTimezoneRuntimeCapability, RuntimeAuxiliaryCapability {
20
21
  }
21
22
  /**
22
23
  * 组合 Scene Adapter、Drawing 会话与公共能力的工作区 Runtime。
@@ -73,7 +74,14 @@ export declare class DrawableWorkspaceRuntime implements DrawableWorkspaceRuntim
73
74
  setMainSeriesPresentation(presentation: MainSeriesPresentation): {
74
75
  readonly activeType: string;
75
76
  };
76
- replaceScene(scene: ChartScene | TimeSeriesScene): ChartScene | TimeSeriesScene;
77
+ listMainIndicators(): readonly SceneIndicator[];
78
+ addMainIndicator(options: AddIndicatorOptions): SceneIndicator;
79
+ removeMainIndicator(id: string): boolean;
80
+ getDisplayTimezone(): string;
81
+ setDisplayTimezone(timezone: string): void;
82
+ replaceScene(scene: ChartScene | TimeSeriesScene, options?: {
83
+ readonly preserveMainIndicators?: boolean;
84
+ }): ChartScene | TimeSeriesScene;
77
85
  commitHistoricalData(requestId: string, data: readonly MarketData[], hasMore: boolean): EngineHistoricalDataCommitResult;
78
86
  rejectHistoricalData(requestId: string, message: string): boolean;
79
87
  commitDrawingChange(requestId: string, canonicalHash: string): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-runtime.d.ts","sourceRoot":"","sources":["../../src/drawing/workspace-runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace-runtime.d.ts","sourceRoot":"","sources":["../../src/drawing/workspace-runtime.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
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
3
  import { runRuntimeTeardowns } from '../lifecycle.js';
4
+ import { createSceneIndicator, isMainPaneIndicatorName, } from '../indicator-presentation.js';
4
5
  import { DrawingProjectionService, } from './projection-service.js';
5
6
  import { getSceneRuntime } from './scene-runtime-factory.js';
6
7
  import { DrawingSessionController, DrawingSessionError, } from './session-controller.js';
@@ -58,8 +59,12 @@ export class DrawableWorkspaceRuntime {
58
59
  /** 释放历史行情请求订阅,避免 Runtime 销毁后宿主收到旧请求。 */
59
60
  #unsubscribeHistoricalData;
60
61
  #sequence = 0;
62
+ /** 主图指标稳定 ID 的递增序号。 */
63
+ #indicatorSequence = 0;
61
64
  #destroyed = false;
62
65
  #scene;
66
+ /** 当前展示时区;不写入可序列化场景。 */
67
+ #displayTimezone;
63
68
  /** 渐进 Runtime 只允许安装一次首份 DrawingDocument。 */
64
69
  #drawingDocumentInstalled;
65
70
  /** 首次 Scene 建立时固定的 Drawing 业务身份,不随投影 metadata 变化。 */
@@ -71,6 +76,7 @@ export class DrawableWorkspaceRuntime {
71
76
  this.#commitMode = options.commitMode;
72
77
  this.#runtimeId = `drawable-workspace-${Math.random().toString(36).slice(2)}`;
73
78
  this.#scene = workspace.scene.document;
79
+ this.#displayTimezone = options.displayTimezone ?? this.#scene.chart.timezone;
74
80
  this.#drawingDocumentInstalled = drawingDocumentInstalled;
75
81
  this.#drawingMetadataIdentity = structuredClone(workspace.drawings.metadata);
76
82
  this.#registration = getSceneRuntime(workspace.scene.kind);
@@ -372,13 +378,92 @@ export class DrawableWorkspaceRuntime {
372
378
  });
373
379
  return result;
374
380
  }
375
- replaceScene(scene) {
381
+ listMainIndicators() {
376
382
  this.#assertUsable();
377
- const candidate = this.#registration.parseScene(scene);
383
+ if (this.#sceneKind() !== 'chart') {
384
+ return [];
385
+ }
386
+ return structuredClone(this.#scene.panes
387
+ .find((pane) => pane.kind === 'candle')?.indicators ?? []);
388
+ }
389
+ addMainIndicator(options) {
390
+ this.#assertUsable();
391
+ if (this.#sceneKind() !== 'chart') {
392
+ throw new Error('MAIN_INDICATOR_UNSUPPORTED: time-series Workspaces do not support main indicators.');
393
+ }
394
+ if (!isMainPaneIndicatorName(options.name)) {
395
+ throw new Error(`MAIN_INDICATOR_UNSUPPORTED: ${options.name} is not a supported main-pane indicator.`);
396
+ }
397
+ const scene = this.#scene;
398
+ const paneIndex = scene.panes.findIndex((pane) => pane.kind === 'candle');
399
+ const pane = scene.panes[paneIndex];
400
+ const primaryAxis = pane?.yAxes.find((axis) => axis.role === 'primary');
401
+ if (pane === undefined || primaryAxis === undefined) {
402
+ throw new Error('MAIN_INDICATOR_UNSUPPORTED: candle pane primary axis is missing.');
403
+ }
404
+ if (options.paneId !== undefined && options.paneId !== pane.id) {
405
+ throw new Error('MAIN_INDICATOR_INVALID_TARGET: paneId must reference the candle pane.');
406
+ }
407
+ if (options.yAxisId !== undefined && options.yAxisId !== primaryAxis.id) {
408
+ throw new Error('MAIN_INDICATOR_INVALID_TARGET: yAxisId must reference the candle primary axis.');
409
+ }
410
+ const indicator = createSceneIndicator(options, { paneId: pane.id, yAxisId: primaryAxis.id }, options.id ?? this.#nextIndicatorId(options.name));
411
+ const panes = structuredClone(scene.panes);
412
+ panes[paneIndex].indicators.push(structuredClone(indicator));
413
+ const candidate = parseChartScene({ ...structuredClone(scene), panes });
414
+ const committed = this.#requireIndicatorPort().addIndicator(indicator);
415
+ this.#scene = candidate;
416
+ this.#emit({ type: 'main-indicator-created', indicator: committed });
417
+ return structuredClone(committed);
418
+ }
419
+ removeMainIndicator(id) {
420
+ this.#assertUsable();
421
+ if (this.#sceneKind() !== 'chart') {
422
+ return false;
423
+ }
424
+ const scene = this.#scene;
425
+ const paneIndex = scene.panes.findIndex((pane) => pane.kind === 'candle' && pane.indicators.some((indicator) => indicator.id === id));
426
+ if (paneIndex < 0 || !this.#requireIndicatorPort().removeIndicator(id)) {
427
+ return false;
428
+ }
429
+ const panes = structuredClone(scene.panes);
430
+ panes[paneIndex].indicators = panes[paneIndex].indicators.filter((indicator) => indicator.id !== id);
431
+ this.#scene = parseChartScene({ ...structuredClone(scene), panes });
432
+ this.#emit({ type: 'main-indicator-removed', id });
433
+ return true;
434
+ }
435
+ getDisplayTimezone() {
436
+ this.#assertUsable();
437
+ return this.#displayTimezone;
438
+ }
439
+ setDisplayTimezone(timezone) {
440
+ this.#assertUsable();
441
+ try {
442
+ new Intl.DateTimeFormat('en-US', { timeZone: timezone }).format(0);
443
+ }
444
+ catch {
445
+ throw new Error(`DISPLAY_TIMEZONE_INVALID: ${timezone} is not a valid IANA timezone.`);
446
+ }
447
+ const port = this.#engine;
448
+ if (typeof port.setDisplayTimezone !== 'function') {
449
+ throw new Error('DISPLAY_TIMEZONE_UNSUPPORTED: the current Scene Adapter cannot change display timezone.');
450
+ }
451
+ port.setDisplayTimezone(timezone);
452
+ this.#displayTimezone = timezone;
453
+ this.#emit({ type: 'display-timezone-changed', timezone });
454
+ }
455
+ replaceScene(scene, options = {}) {
456
+ this.#assertUsable();
457
+ let candidate = this.#registration.parseScene(scene);
378
458
  if ((this.#sceneKind() === 'chart' && !('panes' in candidate)) ||
379
459
  (this.#sceneKind() === 'time-series' && !('series' in candidate))) {
380
460
  throw new Error('DRAWABLE_SCENE_KIND_UNSUPPORTED: cross-kind replacement is rejected.');
381
461
  }
462
+ if (this.#sceneKind() === 'chart' &&
463
+ 'panes' in candidate &&
464
+ options.preserveMainIndicators !== false) {
465
+ candidate = preserveMainIndicators(this.#scene, candidate);
466
+ }
382
467
  const engine = this.#engine;
383
468
  const applied = this.#session.replaceProjectionScene({
384
469
  kind: this.#sceneKind(),
@@ -494,6 +579,24 @@ export class DrawableWorkspaceRuntime {
494
579
  }
495
580
  return port;
496
581
  }
582
+ #requireIndicatorPort() {
583
+ const candidate = this.#engine;
584
+ if (typeof candidate.listIndicators !== 'function' ||
585
+ typeof candidate.addIndicator !== 'function' ||
586
+ typeof candidate.removeIndicator !== 'function') {
587
+ throw new Error('MAIN_INDICATOR_UNSUPPORTED: the current Scene Adapter has no indicator port.');
588
+ }
589
+ return candidate;
590
+ }
591
+ #nextIndicatorId(name) {
592
+ const existing = new Set(this.#scene.panes.flatMap((pane) => pane.indicators.map((indicator) => indicator.id)));
593
+ let id = '';
594
+ do {
595
+ id = `indicator-${name.toLowerCase()}-${this.#indicatorSequence}`;
596
+ this.#indicatorSequence++;
597
+ } while (existing.has(id));
598
+ return id;
599
+ }
497
600
  #emit(event) {
498
601
  const envelope = deepFreeze({
499
602
  protocol: WORKSPACE_EVENT_PROTOCOL,
@@ -525,6 +628,26 @@ export class DrawableWorkspaceRuntime {
525
628
  }
526
629
  }
527
630
  }
631
+ /** 周期切换只替换行情 Scene,主图指标作为 Runtime UI 状态继续保留。 */
632
+ function preserveMainIndicators(current, candidate) {
633
+ const currentIndicators = current.panes.find((pane) => pane.kind === 'candle')?.indicators ?? [];
634
+ if (currentIndicators.length === 0) {
635
+ return candidate;
636
+ }
637
+ const targetPaneIndex = candidate.panes.findIndex((pane) => pane.kind === 'candle');
638
+ const targetPane = candidate.panes[targetPaneIndex];
639
+ const targetAxis = targetPane?.yAxes.find((axis) => axis.role === 'primary');
640
+ if (targetPane === undefined || targetAxis === undefined) {
641
+ return candidate;
642
+ }
643
+ const panes = structuredClone(candidate.panes);
644
+ panes[targetPaneIndex].indicators = currentIndicators.map((indicator) => ({
645
+ ...structuredClone(indicator),
646
+ paneId: targetPane.id,
647
+ yAxisId: targetAxis.id,
648
+ }));
649
+ return parseChartScene({ ...structuredClone(candidate), panes });
650
+ }
528
651
  function containsMetadataIdentity(actual, expected) {
529
652
  if (expected === undefined) {
530
653
  return true;
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.9.12";
2
+ export declare const WEB_RUNTIME_PACKAGE_VERSION: "0.9.14";
3
3
  export { SUPPORTED_OVERLAYS } from '@baron1996/klinecharts-adapter';
4
4
  export * from './cross-period/coordinator.js';
5
5
  export * from './drawing/capabilities.js';
@@ -11,9 +11,11 @@ export * from './drawing/session-controller.js';
11
11
  export * from './drawing/workspace-events.js';
12
12
  export * from './drawing/workspace-runtime.js';
13
13
  export * from './runtime.js';
14
+ export * from './indicator-presentation.js';
14
15
  export * from './time-series-runtime.js';
15
16
  export * from './time-series-types.js';
16
17
  export * from './toolbar/standard-toolbar.js';
18
+ export * from './toolbar/chart-workspace-toolbar.js';
17
19
  export * from './toolbar/drawing-floating-toolbar.js';
18
20
  export * from './types.js';
19
21
  //# sourceMappingURL=index.d.ts.map
@@ -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,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,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sCAAsC,CAAC;AACrD,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.9.12';
2
+ export const WEB_RUNTIME_PACKAGE_VERSION = '0.9.14';
3
3
  export { SUPPORTED_OVERLAYS } from '@baron1996/klinecharts-adapter';
4
4
  export * from './cross-period/coordinator.js';
5
5
  export * from './drawing/capabilities.js';
@@ -11,8 +11,10 @@ export * from './drawing/session-controller.js';
11
11
  export * from './drawing/workspace-events.js';
12
12
  export * from './drawing/workspace-runtime.js';
13
13
  export * from './runtime.js';
14
+ export * from './indicator-presentation.js';
14
15
  export * from './time-series-runtime.js';
15
16
  export * from './time-series-types.js';
16
17
  export * from './toolbar/standard-toolbar.js';
18
+ export * from './toolbar/chart-workspace-toolbar.js';
17
19
  export * from './toolbar/drawing-floating-toolbar.js';
18
20
  export * from './types.js';
@@ -0,0 +1,34 @@
1
+ import type { SceneIndicator } from '@baron1996/kline-scene-schema';
2
+ import type { AddIndicatorOptions } from './types.js';
3
+ export declare const MAIN_PANE_INDICATOR_PRESETS: readonly [{
4
+ readonly name: "MA";
5
+ readonly label: "MA";
6
+ readonly calcParams: readonly [5, 10, 30, 60];
7
+ }, {
8
+ readonly name: "EMA";
9
+ readonly label: "EMA";
10
+ readonly calcParams: readonly [6, 12, 20];
11
+ }, {
12
+ readonly name: "SMA";
13
+ readonly label: "SMA";
14
+ readonly calcParams: readonly [12, 2];
15
+ }, {
16
+ readonly name: "BOLL";
17
+ readonly label: "BOLL";
18
+ readonly calcParams: readonly [20, 2];
19
+ }, {
20
+ readonly name: "SAR";
21
+ readonly label: "SAR";
22
+ readonly calcParams: readonly [2, 2, 20];
23
+ }, {
24
+ readonly name: "BBI";
25
+ readonly label: "BBI";
26
+ readonly calcParams: readonly [3, 6, 12, 24];
27
+ }];
28
+ export declare function defaultIndicatorStyles(name: SceneIndicator['name'], calcParams: readonly number[]): SceneIndicator['styles'];
29
+ export declare function createSceneIndicator(options: AddIndicatorOptions, target: {
30
+ readonly paneId: string;
31
+ readonly yAxisId: string;
32
+ }, id: string): SceneIndicator;
33
+ export declare function isMainPaneIndicatorName(name: SceneIndicator['name']): boolean;
34
+ //# sourceMappingURL=indicator-presentation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indicator-presentation.d.ts","sourceRoot":"","sources":["../src/indicator-presentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;EAWrC,CAAC;AAUJ,wBAAgB,sBAAsB,CACrC,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,EAC5B,UAAU,EAAE,SAAS,MAAM,EAAE,GAC3B,cAAc,CAAC,QAAQ,CAAC,CAuB1B;AAED,wBAAgB,oBAAoB,CACnC,OAAO,EAAE,mBAAmB,EAC5B,MAAM,EAAE;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAC7D,EAAE,EAAE,MAAM,GACR,cAAc,CAchB;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,OAAO,CAE7E"}