@baron1996/klinecharts-adapter 0.6.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/adapter.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import type { ChartScene, Drawing, SceneIndicator, SceneOverlay } from '@baron1996/kline-scene-schema';
1
+ import type { ChartScene, Drawing, MarketData, SceneIndicator, SceneOverlay } from '@baron1996/kline-scene-schema';
2
2
  import { SceneError } from '@baron1996/kline-scene-schema';
3
3
  import { type OverlayDrawingSource } from './conversion/overlays.js';
4
- import type { DrawingEnginePort, EngineDrawingEvent, EngineDrawingSnapshot, EngineDrawingStartRequest, EnginePixelCoordinate, EnginePointProjection } from './drawing/engine-port.js';
4
+ import type { DrawingEnginePort, EngineDrawingEvent, EngineDrawingSnapshot, EngineDrawingStartRequest, EngineHistoricalDataCommitResult, EngineHistoricalDataRequest, EnginePixelCoordinate, EnginePointProjection, HistoricalDataEnginePort } from './drawing/engine-port.js';
5
5
  import { type MainSeriesPresentation, type MainSeriesPresentationPort, type MainSeriesPresentationResult } from './main-series-presentation.js';
6
6
  import { type OverlayHitResult, type PixelCoordinate } from './interaction/hit-testing.js';
7
7
  export type PriceScale = 'linear' | 'logarithmic';
@@ -94,17 +94,25 @@ export interface OverlayDrawingRequest extends OverlayDrawingSource {
94
94
  * ChartScene 与 KLineCharts 之间的唯一边界。
95
95
  * 引擎对象和内部 ID 永不从该类的公共接口泄露。
96
96
  */
97
- export declare class KLineChartsSceneAdapter implements DrawingEnginePort, MainSeriesPresentationPort {
97
+ export declare class KLineChartsSceneAdapter implements DrawingEnginePort, HistoricalDataEnginePort, MainSeriesPresentationPort {
98
98
  #private;
99
99
  private constructor();
100
100
  static create(container: HTMLElement, value: unknown): Promise<KLineChartsSceneAdapter>;
101
101
  /** 显式 Workspace factory:非空 Legacy overlays 由工作区语义校验拒绝。 */
102
- static createWorkspace(container: HTMLElement, value: unknown): Promise<KLineChartsSceneAdapter>;
102
+ static createWorkspace(container: HTMLElement, value: unknown, options?: {
103
+ readonly historicalDataLoading?: {
104
+ readonly hasMore: boolean;
105
+ };
106
+ }): Promise<KLineChartsSceneAdapter>;
103
107
  subscribe(listener: AdapterSceneEventListener): () => void;
104
108
  exportScene(): ChartScene;
105
109
  setPriceScale(scale: PriceScale): Promise<ChartScene>;
106
110
  /** 同结构场景替换:symbol/period/data/viewport 原子更新,失败恢复旧场景。 */
107
111
  replaceScene(value: ChartScene): ChartScene;
112
+ configureHistoricalDataLoading(hasMore: boolean): void;
113
+ subscribeHistoricalDataRequests(listener: (request: EngineHistoricalDataRequest) => void): () => void;
114
+ commitHistoricalData(requestId: string, data: readonly MarketData[], hasMore: boolean): EngineHistoricalDataCommitResult;
115
+ rejectHistoricalData(requestId: string): boolean;
108
116
  get sceneKind(): 'chart' | 'time-series';
109
117
  restoreDrawings(drawings: readonly EngineDrawingSnapshot[]): void;
110
118
  startDrawing(request: EngineDrawingStartRequest): string;
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,UAAU,EAEV,OAAO,EACP,cAAc,EACd,YAAY,EACZ,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAGN,UAAU,EACV,MAAM,+BAA+B,CAAC;AAWvC,OAAO,EAKN,KAAK,oBAAoB,EAGzB,MAAM,0BAA0B,CAAC;AASlC,OAAO,KAAK,EACX,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,yBAAyB,EACzB,qBAAqB,EACrB,qBAAqB,EACrB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAKN,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,EACjC,MAAM,+BAA+B,CAAC;AAKvC,OAAO,EAEN,KAAK,gBAAgB,EAErB,KAAK,eAAe,EACpB,MAAM,8BAA8B,CAAC;AAGtC,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,aAAa,CAAC;AAClD,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,QAAQ,CAAC;AAClD,MAAM,MAAM,uBAAuB,GAChC,QAAQ,GACR,gBAAgB,GAChB,aAAa,GACb,SAAS,GACT,kBAAkB,CAAC;AAEtB,MAAM,WAAW,wBAAwB;IACxC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACxC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,GAAG,EAAE,mBAAmB,GAAG,IAAI,CAAC;CACzC;AAED,MAAM,MAAM,wBAAwB,GAAG,CACtC,QAAQ,EAAE,wBAAwB,KAC9B,IAAI,CAAC;AAEV,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,CAAC;IACjE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,SAAS,wBAAwB,EAAE,CAAC;IACzD,QAAQ,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACrC;AAED,UAAU,wBAAwB;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;CAC9B;AAED,MAAM,MAAM,iBAAiB,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;CAAE,GACpE;IAAE,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAA;CAAE,GAC1E;IAAE,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC3D;IAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;CAAE,GACpE;IAAE,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;CAAE,GACzG;IAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACzD;IAAE,QAAQ,CAAC,IAAI,EAAE,2BAA2B,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC9G;IAAE,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC1D,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAA;CAAE,GAAG,wBAAwB,CAAC,GACtE,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAA;CAAE,GAAG,wBAAwB,CAAC,GACpG,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,wBAAwB,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;CAAE,GAAG,wBAAwB,CAAC,GACxG,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,wBAAwB,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAA;CAAE,GAAG,wBAAwB,CAAC,GAClH;IAAE,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,mBAAmB,GAAG,IAAI,CAAA;CAAE,GACnH;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,CAAA;CAAE,CAAC;AAE9F,MAAM,MAAM,yBAAyB,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;AAE3E,MAAM,WAAW,qBAAsB,SAAQ,oBAAoB;CAAG;AAuCtE;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,iBAAiB,EAAE,0BAA0B;;IA+G5F,OAAO;WAqBa,MAAM,CACzB,SAAS,EAAE,WAAW,EACtB,KAAK,EAAE,OAAO,GACZ,OAAO,CAAC,uBAAuB,CAAC;IAsCnC,0DAA0D;WACtC,eAAe,CAClC,SAAS,EAAE,WAAW,EACtB,KAAK,EAAE,OAAO,GACZ,OAAO,CAAC,uBAAuB,CAAC;IAwzB5B,SAAS,CAAC,QAAQ,EAAE,yBAAyB,GAAG,MAAM,IAAI;IAQ1D,WAAW,IAAI,UAAU;IAenB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IA0ClE,wDAAwD;IACjD,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU;IAuDlD,IAAW,SAAS,IAAI,OAAO,GAAG,aAAa,CAE9C;IAEM,eAAe,CACrB,QAAQ,EAAE,SAAS,qBAAqB,EAAE,GACxC,IAAI;IAaA,YAAY,CAAC,OAAO,EAAE,yBAAyB,GAAG,MAAM;IAsCxD,YAAY,IAAI,SAAS,qBAAqB,EAAE;IAQhD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS;IAMzD,mBAAmB,CACzB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,GACvB,qBAAqB;IAoCjB,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,qBAAqB;IA8BlE,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAMlC,cAAc,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI;IA6CrD,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAKtC,cAAc,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,GAAG,IAAI;IAK3D,cAAc,CACpB,MAAM,EAAE;QAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAChE,QAAQ,EAAE,MAAM,GACd,qBAAqB;IAMjB,kBAAkB,CACxB,KAAK,EAAE,qBAAqB,EAC5B,QAAQ,EAAE,MAAM,GACd,qBAAqB;IAKjB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAK3C,sBAAsB,CAC5B,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,GAC3C,MAAM,IAAI;IAON,2BAA2B,CACjC,YAAY,EAAE,sBAAsB,GAClC,4BAA4B;IA8IxB,YAAY,CAClB,KAAK,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAC7D,MAAM,CAAC,EAAE,MAAM,GACb,eAAe;IAMX,cAAc,CAAC,KAAK,EAAE,eAAe,GAAG,gBAAgB,GAAG,IAAI;IAK/D,UAAU,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY;IA4E7C,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY;IAIhD,mBAAmB,CACzB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,GAC5B,YAAY;IAQR,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IA0BlC,mBAAmB,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM;IA0C3D,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAMhD,YAAY,IAAI,SAAS,YAAY,EAAE;IAKvC,YAAY,IAAI,WAAW;IAK3B,cAAc,IAAI,SAAS,cAAc,EAAE;IAK3C,YAAY,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc;IA2CnD,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAwBpC,kBAAkB,CACxB,QAAQ,EAAE,wBAAwB,GAChC,MAAM,IAAI;IAQN,OAAO,IAAI,eAAe;IA+B1B,OAAO,IAAI,IAAI;CAoBtB"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
package/dist/adapter.js CHANGED
@@ -118,6 +118,14 @@ export class KLineChartsSceneAdapter {
118
118
  #workspaceSources = new Map();
119
119
  /** 公共 Drawing 端口监听器。 */
120
120
  #portListeners = new Set();
121
+ /** 更早行情请求监听器;仅传递纯数据请求。 */
122
+ #historicalDataListeners = new Set();
123
+ /** 历史行情加载开关及服务端是否仍可能存在更早数据。 */
124
+ #historicalDataLoading;
125
+ /** 当前唯一待完成的历史行情请求,防止重复并发前插。 */
126
+ #pendingHistoricalData;
127
+ /** 历史行情请求的单调序号。 */
128
+ #historicalDataSequence = 0;
121
129
  /** 交互启用开关。 */
122
130
  #mutationsEnabled = true;
123
131
  /** 主序列回滚失败后的只能销毁终止态。 */
@@ -170,7 +178,7 @@ export class KLineChartsSceneAdapter {
170
178
  }
171
179
  }
172
180
  /** 显式 Workspace factory:非空 Legacy overlays 由工作区语义校验拒绝。 */
173
- static async createWorkspace(container, value) {
181
+ static async createWorkspace(container, value, options) {
174
182
  const workspace = parseDrawableWorkspaceDocument(value);
175
183
  if (workspace.scene.kind !== 'chart') {
176
184
  throw new SceneError('INVALID_REFERENCE', '/scene/kind', 'KLineChartsSceneAdapter requires a chart Workspace Scene.');
@@ -188,6 +196,9 @@ export class KLineChartsSceneAdapter {
188
196
  applyViewport(handle.chart, scene.viewport);
189
197
  container.style.backgroundColor = scene.chart.layout.backgroundColor;
190
198
  adapter.#workspaceMode = true;
199
+ if (options?.historicalDataLoading !== undefined) {
200
+ adapter.configureHistoricalDataLoading(options.historicalDataLoading.hasMore);
201
+ }
191
202
  adapter.#restoreWorkspaceDrawings(workspace.drawings.drawings.map((drawing) => snapshotOfDrawing(drawing)));
192
203
  return adapter;
193
204
  }
@@ -263,6 +274,48 @@ export class KLineChartsSceneAdapter {
263
274
  listener(structuredClone(event));
264
275
  }
265
276
  }
277
+ #historicalDataLoader(scene) {
278
+ const snapshot = structuredClone(scene.data);
279
+ return {
280
+ getBars: ({ type, timestamp, callback }) => {
281
+ if (type === 'init') {
282
+ callback(structuredClone(snapshot), {
283
+ forward: this.#historicalDataLoading?.hasMore ?? false,
284
+ backward: false,
285
+ });
286
+ return;
287
+ }
288
+ if (type !== 'forward' ||
289
+ this.#historicalDataLoading?.hasMore !== true ||
290
+ timestamp === null) {
291
+ callback([], { forward: false, backward: false });
292
+ return;
293
+ }
294
+ if (this.#pendingHistoricalData !== undefined) {
295
+ callback([], { forward: true, backward: false });
296
+ return;
297
+ }
298
+ const request = {
299
+ requestId: `historical-data-${++this.#historicalDataSequence}`,
300
+ beforeTimestamp: timestamp,
301
+ period: structuredClone(this.#scene.period),
302
+ dataCount: this.#scene.data.length,
303
+ };
304
+ this.#pendingHistoricalData = { request, callback };
305
+ for (const listener of this.#historicalDataListeners) {
306
+ listener(structuredClone(request));
307
+ }
308
+ },
309
+ };
310
+ }
311
+ #settlePendingHistoricalData(hasMore) {
312
+ const pending = this.#pendingHistoricalData;
313
+ if (pending === undefined) {
314
+ return;
315
+ }
316
+ this.#pendingHistoricalData = undefined;
317
+ pending.callback([], { forward: hasMore, backward: false });
318
+ }
266
319
  #restoreWorkspaceDrawings(drawings) {
267
320
  for (const overlay of this.#workspaceOverlays) {
268
321
  this.#chart.removeOverlay({ id: overlay.id });
@@ -856,6 +909,8 @@ export class KLineChartsSceneAdapter {
856
909
  }
857
910
  const previous = this.#scene;
858
911
  const previousBackground = this.#container.style.backgroundColor;
912
+ const previousHistoricalHasMore = this.#historicalDataLoading?.hasMore;
913
+ this.#settlePendingHistoricalData(false);
859
914
  try {
860
915
  this.#chart.setSymbol({
861
916
  ticker: candidate.symbol.ticker,
@@ -864,7 +919,12 @@ export class KLineChartsSceneAdapter {
864
919
  ...(candidate.symbol.name === undefined ? {} : { name: candidate.symbol.name }),
865
920
  });
866
921
  this.#chart.setPeriod(structuredClone(candidate.period));
867
- this.#chart.setDataLoader(createStaticDataLoader(candidate.data));
922
+ if (this.#historicalDataLoading !== undefined) {
923
+ this.#historicalDataLoading = { hasMore: true };
924
+ }
925
+ this.#chart.setDataLoader(this.#historicalDataLoading === undefined
926
+ ? createStaticDataLoader(candidate.data)
927
+ : this.#historicalDataLoader(candidate));
868
928
  this.#chart.resetData();
869
929
  applyViewport(this.#chart, candidate.viewport);
870
930
  this.#scene = candidate;
@@ -881,7 +941,13 @@ export class KLineChartsSceneAdapter {
881
941
  ...(previous.symbol.name === undefined ? {} : { name: previous.symbol.name }),
882
942
  });
883
943
  this.#chart.setPeriod(structuredClone(previous.period));
884
- this.#chart.setDataLoader(createStaticDataLoader(previous.data));
944
+ if (this.#historicalDataLoading !== undefined &&
945
+ previousHistoricalHasMore !== undefined) {
946
+ this.#historicalDataLoading = { hasMore: previousHistoricalHasMore };
947
+ }
948
+ this.#chart.setDataLoader(this.#historicalDataLoading === undefined
949
+ ? createStaticDataLoader(previous.data)
950
+ : this.#historicalDataLoader(previous));
885
951
  this.#chart.resetData();
886
952
  applyViewport(this.#chart, previous.viewport);
887
953
  this.#container.style.backgroundColor = previousBackground;
@@ -892,6 +958,76 @@ export class KLineChartsSceneAdapter {
892
958
  throw error;
893
959
  }
894
960
  }
961
+ configureHistoricalDataLoading(hasMore) {
962
+ this.#assertActive();
963
+ if (!this.#workspaceMode) {
964
+ throw new SceneError('INVALID_REFERENCE', '/', 'Historical data loading requires the Workspace factory.');
965
+ }
966
+ this.#settlePendingHistoricalData(hasMore);
967
+ this.#historicalDataLoading = { hasMore };
968
+ this.#chart.setDataLoader(this.#historicalDataLoader(this.#scene));
969
+ this.#chart.resetData();
970
+ applyViewport(this.#chart, this.#scene.viewport);
971
+ }
972
+ subscribeHistoricalDataRequests(listener) {
973
+ this.#assertActive();
974
+ this.#historicalDataListeners.add(listener);
975
+ if (this.#pendingHistoricalData !== undefined) {
976
+ listener(structuredClone(this.#pendingHistoricalData.request));
977
+ }
978
+ return () => {
979
+ this.#historicalDataListeners.delete(listener);
980
+ };
981
+ }
982
+ commitHistoricalData(requestId, data, hasMore) {
983
+ this.#assertActive();
984
+ const pending = this.#pendingHistoricalData;
985
+ if (pending === undefined || pending.request.requestId !== requestId) {
986
+ throw new SceneError('INVALID_REFERENCE', '/requestId', `Historical data request is not pending: ${requestId}.`);
987
+ }
988
+ if (data.length === 0 && hasMore) {
989
+ throw new SceneError('INVALID_REFERENCE', '/data', 'An empty historical page cannot advertise more data.');
990
+ }
991
+ const page = structuredClone(data);
992
+ const earliestTimestamp = this.#scene.data[0].timestamp;
993
+ for (let index = 0; index < page.length; index += 1) {
994
+ const current = page[index];
995
+ const previous = page[index - 1];
996
+ if (current.timestamp >= earliestTimestamp ||
997
+ (previous !== undefined && current.timestamp <= previous.timestamp)) {
998
+ throw new SceneError('INVALID_REFERENCE', `/data/${index}/timestamp`, 'Historical data must be strictly ascending and earlier than the current first bar.');
999
+ }
1000
+ }
1001
+ const candidate = parseChartScene({
1002
+ ...structuredClone(this.#scene),
1003
+ data: [...page, ...structuredClone(this.#scene.data)],
1004
+ });
1005
+ this.#pendingHistoricalData = undefined;
1006
+ this.#historicalDataLoading = { hasMore };
1007
+ this.#scene = candidate;
1008
+ pending.callback(structuredClone(page), {
1009
+ forward: hasMore,
1010
+ backward: false,
1011
+ });
1012
+ return {
1013
+ scene: structuredClone(candidate),
1014
+ addedCount: page.length,
1015
+ hasMore,
1016
+ };
1017
+ }
1018
+ rejectHistoricalData(requestId) {
1019
+ this.#assertActive();
1020
+ const pending = this.#pendingHistoricalData;
1021
+ if (pending === undefined || pending.request.requestId !== requestId) {
1022
+ return false;
1023
+ }
1024
+ this.#pendingHistoricalData = undefined;
1025
+ pending.callback([], {
1026
+ forward: this.#historicalDataLoading?.hasMore ?? false,
1027
+ backward: false,
1028
+ });
1029
+ return true;
1030
+ }
895
1031
  get sceneKind() {
896
1032
  return 'chart';
897
1033
  }
@@ -1359,6 +1495,8 @@ export class KLineChartsSceneAdapter {
1359
1495
  this.#crosshairListeners.clear();
1360
1496
  this.#listeners.clear();
1361
1497
  this.#portListeners.clear();
1498
+ this.#historicalDataListeners.clear();
1499
+ this.#settlePendingHistoricalData(false);
1362
1500
  this.#workspaceSources.clear();
1363
1501
  this.#workspaceOverlays = [];
1364
1502
  this.#engine.dispose(this.#container);
@@ -1370,9 +1508,13 @@ function snapshotOfDrawing(drawing) {
1370
1508
  return {
1371
1509
  id: drawing.id,
1372
1510
  type: drawing.type,
1511
+ ...(drawing.groupId === undefined ? {} : { groupId: drawing.groupId }),
1373
1512
  target: structuredClone(drawing.target),
1374
1513
  geometry: structuredClone(drawing.geometry),
1375
1514
  styles: structuredClone(drawing.styles),
1515
+ ...(drawing.metadata === undefined
1516
+ ? {}
1517
+ : { metadata: structuredClone(drawing.metadata) }),
1376
1518
  locked: drawing.locked,
1377
1519
  visible: drawing.visible,
1378
1520
  zLevel: drawing.zLevel,
@@ -1383,9 +1525,13 @@ function drawingFromSnapshot(snapshot) {
1383
1525
  return {
1384
1526
  id: snapshot.id,
1385
1527
  type: snapshot.type,
1528
+ ...(snapshot.groupId === undefined ? {} : { groupId: snapshot.groupId }),
1386
1529
  target: structuredClone(snapshot.target),
1387
1530
  geometry: structuredClone(snapshot.geometry),
1388
1531
  styles: structuredClone(snapshot.styles),
1532
+ ...(snapshot.metadata === undefined
1533
+ ? {}
1534
+ : { metadata: structuredClone(snapshot.metadata) }),
1389
1535
  visible: snapshot.visible,
1390
1536
  locked: snapshot.locked,
1391
1537
  zLevel: snapshot.zLevel,
@@ -1457,9 +1603,11 @@ function placeholderDrawing(request) {
1457
1603
  return {
1458
1604
  id: request.id,
1459
1605
  type: request.type,
1606
+ ...(request.groupId === undefined ? {} : { groupId: request.groupId }),
1460
1607
  target: structuredClone(request.target),
1461
1608
  geometry: placeholderGeometry(request.type),
1462
1609
  styles: structuredClone(request.styles),
1610
+ metadata: structuredClone(request.metadata ?? {}),
1463
1611
  visible: true,
1464
1612
  locked: false,
1465
1613
  zLevel: 0,
@@ -1,4 +1,4 @@
1
- import type { Drawing } from '@baron1996/kline-scene-schema';
1
+ import type { ChartScene, Drawing, MarketData } from '@baron1996/kline-scene-schema';
2
2
  export interface EngineDrawingTarget {
3
3
  readonly paneRole: string;
4
4
  readonly yAxisRole: 'primary';
@@ -7,9 +7,11 @@ export interface EngineDrawingTarget {
7
7
  export interface EngineDrawingSnapshot {
8
8
  readonly id: string;
9
9
  readonly type: Drawing['type'];
10
+ readonly groupId?: string;
10
11
  readonly target: EngineDrawingTarget;
11
12
  readonly geometry: Drawing['geometry'];
12
13
  readonly styles: Drawing['styles'];
14
+ readonly metadata?: NonNullable<Drawing['metadata']>;
13
15
  readonly text?: string;
14
16
  readonly locked: boolean;
15
17
  readonly visible: boolean;
@@ -19,8 +21,10 @@ export interface EngineDrawingSnapshot {
19
21
  export interface EngineDrawingStartRequest {
20
22
  readonly id: string;
21
23
  readonly type: Drawing['type'];
24
+ readonly groupId?: string;
22
25
  readonly target: EngineDrawingTarget;
23
26
  readonly styles: Drawing['styles'];
27
+ readonly metadata?: NonNullable<Drawing['metadata']>;
24
28
  readonly text?: string;
25
29
  }
26
30
  export type EngineDrawingEventType = 'created' | 'updated' | 'removed' | 'selected' | 'deselected' | 'edit-candidate';
@@ -43,6 +47,25 @@ export interface EnginePixelCoordinate {
43
47
  readonly x: number;
44
48
  readonly y: number;
45
49
  }
50
+ /** 宿主加载更早行情所需的纯数据请求;不暴露 KLineCharts 的 forward 命名。 */
51
+ export interface EngineHistoricalDataRequest {
52
+ readonly requestId: string;
53
+ readonly beforeTimestamp: number;
54
+ readonly period: ChartScene['period'];
55
+ readonly dataCount: number;
56
+ }
57
+ export interface EngineHistoricalDataCommitResult {
58
+ readonly scene: ChartScene;
59
+ readonly addedCount: number;
60
+ readonly hasMore: boolean;
61
+ }
62
+ /** Chart Adapter 可选实现的历史行情端口。 */
63
+ export interface HistoricalDataEnginePort {
64
+ configureHistoricalDataLoading(hasMore: boolean): void;
65
+ subscribeHistoricalDataRequests(listener: (request: EngineHistoricalDataRequest) => void): () => void;
66
+ commitHistoricalData(requestId: string, data: readonly MarketData[], hasMore: boolean): EngineHistoricalDataCommitResult;
67
+ rejectHistoricalData(requestId: string): boolean;
68
+ }
46
69
  /**
47
70
  * 两个 Scene Adapter 共同实现的公共 Drawing 引擎端口。
48
71
  * 所有 DTO 都是纯数据;端口调用方不能取得 Chart/Overlay 实例或引擎内部 ID。
@@ -1 +1 @@
1
- {"version":3,"file":"engine-port.d.ts","sourceRoot":"","sources":["../../src/drawing/engine-port.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine-port.d.ts","sourceRoot":"","sources":["../../src/drawing/engine-port.ts"],"names":[],"mappings":"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"}
@@ -125,11 +125,11 @@ export function sceneOverlayToDrawing(overlay, source) {
125
125
  styles: structuredClone(overlay.styles),
126
126
  type: overlay.type,
127
127
  };
128
- if (overlay.groupId !== undefined) {
129
- result.groupId = overlay.groupId;
128
+ if (source.groupId !== undefined) {
129
+ result.groupId = source.groupId;
130
130
  }
131
- if (overlay.metadata !== undefined) {
132
- result.metadata = structuredClone(overlay.metadata);
131
+ if (source.metadata !== undefined) {
132
+ result.metadata = structuredClone(source.metadata);
133
133
  }
134
134
  switch (overlay.type) {
135
135
  case 'horizontalStraightLine':
@@ -1077,9 +1077,13 @@ function timeSeriesSnapshotOfDrawing(drawing) {
1077
1077
  return {
1078
1078
  id: drawing.id,
1079
1079
  type: drawing.type,
1080
+ ...(drawing.groupId === undefined ? {} : { groupId: drawing.groupId }),
1080
1081
  target: structuredClone(drawing.target),
1081
1082
  geometry: structuredClone(drawing.geometry),
1082
1083
  styles: structuredClone(drawing.styles),
1084
+ ...(drawing.metadata === undefined
1085
+ ? {}
1086
+ : { metadata: structuredClone(drawing.metadata) }),
1083
1087
  locked: drawing.locked,
1084
1088
  visible: drawing.visible,
1085
1089
  zLevel: drawing.zLevel,
@@ -1090,9 +1094,13 @@ function timeSeriesDrawingFromSnapshot(snapshot) {
1090
1094
  return {
1091
1095
  id: snapshot.id,
1092
1096
  type: snapshot.type,
1097
+ ...(snapshot.groupId === undefined ? {} : { groupId: snapshot.groupId }),
1093
1098
  target: structuredClone(snapshot.target),
1094
1099
  geometry: structuredClone(snapshot.geometry),
1095
1100
  styles: structuredClone(snapshot.styles),
1101
+ ...(snapshot.metadata === undefined
1102
+ ? {}
1103
+ : { metadata: structuredClone(snapshot.metadata) }),
1096
1104
  visible: snapshot.visible,
1097
1105
  locked: snapshot.locked,
1098
1106
  zLevel: snapshot.zLevel,
@@ -1164,9 +1172,11 @@ function timeSeriesPlaceholderDrawing(request) {
1164
1172
  return {
1165
1173
  id: request.id,
1166
1174
  type: request.type,
1175
+ ...(request.groupId === undefined ? {} : { groupId: request.groupId }),
1167
1176
  target: structuredClone(request.target),
1168
1177
  geometry: timeSeriesPlaceholderGeometry(request.type),
1169
1178
  styles: structuredClone(request.styles),
1179
+ metadata: structuredClone(request.metadata ?? {}),
1170
1180
  visible: true,
1171
1181
  locked: false,
1172
1182
  zLevel: 0,
package/dist/version.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /** Adapter 包版本。 */
2
- export declare const ADAPTER_PACKAGE_VERSION: "0.6.0";
2
+ export declare const ADAPTER_PACKAGE_VERSION: "0.8.0";
3
3
  /** 唯一允许加载的 KLineCharts 引擎版本。 */
4
4
  export declare const KLINECHARTS_ENGINE_VERSION: "10.0.0";
5
5
  /** 与 ChartScene 绑定的 Runtime 协议版本。 */
package/dist/version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /** Adapter 包版本。 */
2
- export const ADAPTER_PACKAGE_VERSION = '0.6.0';
2
+ export const ADAPTER_PACKAGE_VERSION = '0.8.0';
3
3
  /** 唯一允许加载的 KLineCharts 引擎版本。 */
4
4
  export const KLINECHARTS_ENGINE_VERSION = '10.0.0';
5
5
  /** 与 ChartScene 绑定的 Runtime 协议版本。 */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@baron1996/klinecharts-adapter",
3
- "version": "0.6.0",
3
+ "version": "0.8.0",
4
4
  "description": "Controlled ChartScene adapter for KLineCharts.",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",