@baron1996/klinecharts-adapter 0.9.5 → 0.9.7

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
@@ -29,6 +29,8 @@ export interface AdapterSnapshot {
29
29
  readonly engineVersion: string;
30
30
  readonly runtimeVersion: ChartScene['runtime']['runtimeVersion'];
31
31
  readonly dataCount: number;
32
+ readonly timelineSlotCount: number;
33
+ readonly gapCount: number;
32
34
  readonly paneIds: readonly string[];
33
35
  readonly indicators: readonly AdapterIndicatorSnapshot[];
34
36
  readonly overlays: readonly SceneOverlay[];
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,UAAU,EAEV,OAAO,EACP,UAAU,EACV,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,yBAAyB,EACzB,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,yBAAyB,EACzB,gCAAgC,EAChC,2BAA2B,EAC3B,qBAAqB,EACrB,qBAAqB,EACrB,wBAAwB,EACxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAKN,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,EACjC,MAAM,+BAA+B,CAAC;AAKvC,OAAO,EAKN,KAAK,gBAAgB,EAErB,KAAK,eAAe,EACpB,MAAM,8BAA8B,CAAC;AAWtC,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;AAyDtE;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,iBAAiB,EAAE,wBAAwB,EAAE,0BAA0B;;IAiJtH,OAAO;WA2Ba,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,EACd,OAAO,CAAC,EAAE;QACT,QAAQ,CAAC,qBAAqB,CAAC,EAAE;YAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;SAAE,CAAC;QAC/D,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;QAClC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,yBAAyB,CAAC;KACxD,GACC,OAAO,CAAC,uBAAuB,CAAC;IAozC5B,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;IA0E3C,8BAA8B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAgBtD,+BAA+B,CACrC,QAAQ,EAAE,CAAC,OAAO,EAAE,2BAA2B,KAAK,IAAI,GACtD,MAAM,IAAI;IAWN,oBAAoB,CAC1B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,SAAS,UAAU,EAAE,EAC3B,OAAO,EAAE,OAAO,GACd,gCAAgC;IAmD5B,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAcvD,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;IAyCxD,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;IAyCjB,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,qBAAqB;IAmClE,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,qBAAqB;IAsCvE,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;CA2BtB"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
package/dist/adapter.js CHANGED
@@ -8,6 +8,7 @@ import { createSceneOverlays, fromEngineOverlay, normalizeSceneOverlayPrices, to
8
8
  import { normalizePriceValue } from './conversion/price.js';
9
9
  import { applyViewport } from './conversion/viewport.js';
10
10
  import { createStaticDataLoader } from './static-data-loader.js';
11
+ import { assertGapAwareSceneSupported, engineDataForScene, GAP_AWARE_CANDLE_INDICATOR_ID, gapCount, installGapAwareMainSeries, isGapAwareScene, timelineItemOf, timelineSlotCount, } from './gap-aware-series.js';
11
12
  import { toOverlayStyles } from './conversion/overlays.js';
12
13
  import { drawingToSceneOverlay, sceneOverlayToDrawing, } from './drawing/overlay-conversion.js';
13
14
  import { MainSeriesPresentationError, presentationToSceneCandle, STANDARD_CLOSE_LINE_PRESENTATION, } from './main-series-presentation.js';
@@ -83,14 +84,16 @@ export class KLineChartsSceneAdapter {
83
84
  }
84
85
  const match = barIndex === null ? undefined : data[barIndex];
85
86
  const timestamp = match?.timestamp ?? null;
86
- const bar = match === undefined
87
+ const timelineItem = timelineItemOf(match);
88
+ const source = timelineItem?.kind === 'bar' ? timelineItem.bar : match;
89
+ const bar = source === undefined || timelineItem?.kind === 'gap'
87
90
  ? null
88
91
  : {
89
- open: match.open,
90
- high: match.high,
91
- low: match.low,
92
- close: match.close,
93
- volume: match.volume ?? null,
92
+ open: source.open,
93
+ high: source.high,
94
+ low: source.low,
95
+ close: source.close,
96
+ volume: source.volume ?? null,
94
97
  };
95
98
  const snapshot = { timestamp, bar };
96
99
  for (const listener of this.#crosshairListeners) {
@@ -184,6 +187,7 @@ export class KLineChartsSceneAdapter {
184
187
  let adapter;
185
188
  try {
186
189
  handle = await createEngine(container, scene);
190
+ installGapAwareMainSeries(scene, handle.chart, handle.module.registerIndicator);
187
191
  registerProjectOverlays(handle.module.registerOverlay);
188
192
  const idMap = createEngineIdMap(scene, handle.chart);
189
193
  applyPanes(scene, handle.chart, idMap);
@@ -221,6 +225,7 @@ export class KLineChartsSceneAdapter {
221
225
  ? {}
222
226
  : { displayTimezone: options.displayTimezone }),
223
227
  });
228
+ installGapAwareMainSeries(scene, handle.chart, handle.module.registerIndicator);
224
229
  registerProjectOverlays(handle.module.registerOverlay);
225
230
  const idMap = createEngineIdMap(scene, handle.chart);
226
231
  applyPanes(scene, handle.chart, idMap);
@@ -307,7 +312,7 @@ export class KLineChartsSceneAdapter {
307
312
  }
308
313
  }
309
314
  #historicalDataLoader(scene) {
310
- const snapshot = structuredClone(scene.data);
315
+ const snapshot = structuredClone(engineDataForScene(scene));
311
316
  return {
312
317
  getBars: ({ type, timestamp, callback }) => {
313
318
  if (type === 'init') {
@@ -1319,6 +1324,10 @@ export class KLineChartsSceneAdapter {
1319
1324
  replaceScene(value) {
1320
1325
  this.#assertActive();
1321
1326
  const candidate = parseChartScene(value);
1327
+ if (candidate.version !== this.#scene.version) {
1328
+ throw new SceneError('INVALID_REFERENCE', '/version', 'Scene replacement requires the same ChartScene contract version.');
1329
+ }
1330
+ assertGapAwareSceneSupported(candidate);
1322
1331
  const paneShape = (scene) => JSON.stringify(scene.panes.map((pane) => ({
1323
1332
  id: pane.id,
1324
1333
  kind: pane.kind,
@@ -1343,7 +1352,7 @@ export class KLineChartsSceneAdapter {
1343
1352
  this.#historicalDataLoading = { hasMore: true };
1344
1353
  }
1345
1354
  this.#chart.setDataLoader(this.#historicalDataLoading === undefined
1346
- ? createStaticDataLoader(candidate.data)
1355
+ ? createStaticDataLoader(engineDataForScene(candidate))
1347
1356
  : this.#historicalDataLoader(candidate));
1348
1357
  this.#chart.resetData();
1349
1358
  applyViewport(this.#chart, candidate.viewport);
@@ -1366,7 +1375,7 @@ export class KLineChartsSceneAdapter {
1366
1375
  this.#historicalDataLoading = { hasMore: previousHistoricalHasMore };
1367
1376
  }
1368
1377
  this.#chart.setDataLoader(this.#historicalDataLoading === undefined
1369
- ? createStaticDataLoader(previous.data)
1378
+ ? createStaticDataLoader(engineDataForScene(previous))
1370
1379
  : this.#historicalDataLoader(previous));
1371
1380
  this.#chart.resetData();
1372
1381
  applyViewport(this.#chart, previous.viewport);
@@ -1624,6 +1633,9 @@ export class KLineChartsSceneAdapter {
1624
1633
  applyMainSeriesPresentation(presentation) {
1625
1634
  this.#assertActive();
1626
1635
  this.#assertNotTerminated();
1636
+ if (isGapAwareScene(this.#scene)) {
1637
+ throw new MainSeriesPresentationError('MAIN_SERIES_PRESENTATION_UNSUPPORTED', '/chart/candle/type', 'ChartScene v2 main-series switching is disabled until every presentation is Gap-aware.');
1638
+ }
1627
1639
  if (presentation.type === 'area') {
1628
1640
  const expected = STANDARD_CLOSE_LINE_PRESENTATION;
1629
1641
  if (presentation.value !== expected.value ||
@@ -1913,7 +1925,9 @@ export class KLineChartsSceneAdapter {
1913
1925
  }
1914
1926
  inspect() {
1915
1927
  this.#assertActive();
1916
- const indicators = this.#chart.getIndicators().map((indicator) => {
1928
+ const indicators = this.#chart.getIndicators()
1929
+ .filter((indicator) => indicator.id !== GAP_AWARE_CANDLE_INDICATOR_ID)
1930
+ .map((indicator) => {
1917
1931
  const paneId = this.#idMap.paneFromEngine.get(indicator.paneId);
1918
1932
  const yAxisId = this.#idMap.yAxisFromEngine.get(indicator.yAxisId);
1919
1933
  if (paneId === undefined || yAxisId === undefined) {
@@ -1929,7 +1943,9 @@ export class KLineChartsSceneAdapter {
1929
1943
  return {
1930
1944
  engineVersion: this.#engine.version(),
1931
1945
  runtimeVersion: this.#scene.runtime.runtimeVersion,
1932
- dataCount: this.#chart.getDataList().length,
1946
+ dataCount: this.#scene.data.length,
1947
+ timelineSlotCount: timelineSlotCount(this.#scene),
1948
+ gapCount: gapCount(this.#scene),
1933
1949
  paneIds: this.#scene.panes.map((pane) => pane.id),
1934
1950
  indicators,
1935
1951
  overlays: this.exportScene().overlays,
@@ -1 +1 @@
1
- {"version":3,"file":"id-map.d.ts","sourceRoot":"","sources":["../../src/conversion/id-map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,KAAK,EAAE,KAAK,EAAS,MAAM,aAAa,CAAC;AAOhD,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpD,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtD;AAMD,gCAAgC;AAChC,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,WAAW,CAqC9E;AAED,wBAAgB,eAAe,CAC9B,GAAG,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACX,MAAM,CAMR"}
1
+ {"version":3,"file":"id-map.d.ts","sourceRoot":"","sources":["../../src/conversion/id-map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,KAAK,EAAE,KAAK,EAAS,MAAM,aAAa,CAAC;AAYhD,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpD,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtD;AAMD,gCAAgC;AAChC,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,WAAW,CAyC9E;AAED,wBAAgB,eAAe,CAC9B,GAAG,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACX,MAAM,CAMR"}
@@ -1,4 +1,5 @@
1
1
  import { SceneError } from '@baron1996/kline-scene-schema';
2
+ import { GAP_AWARE_CANDLE_PANE_ID, isGapAwareScene, } from '../gap-aware-series.js';
2
3
  function invert(source) {
3
4
  return new Map(Array.from(source, ([sceneId, engineId]) => [engineId, sceneId]));
4
5
  }
@@ -11,7 +12,11 @@ export function createEngineIdMap(scene, chart) {
11
12
  if (pane === undefined) {
12
13
  continue;
13
14
  }
14
- const enginePaneId = pane.kind === 'candle' ? 'candle_pane' : `baron_pane_${paneIndex}`;
15
+ const enginePaneId = pane.kind === 'candle'
16
+ ? isGapAwareScene(scene)
17
+ ? GAP_AWARE_CANDLE_PANE_ID
18
+ : 'candle_pane'
19
+ : `baron_pane_${paneIndex}`;
15
20
  paneToEngine.set(pane.id, enginePaneId);
16
21
  for (let axisIndex = 0; axisIndex < pane.yAxes.length; axisIndex++) {
17
22
  const axis = pane.yAxes[axisIndex];
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAUzC,MAAM,MAAM,iBAAiB,GAAG,cAAc,aAAa,CAAC,CAAC;AAE7D,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,4CAA4C;IAC5C,QAAQ,CAAC,qBAAqB,EAAE,MAAM,IAAI,CAAC;IAC3C,kCAAkC;IAClC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACpE,gCAAgC;IAChC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,CAAC;CACrE;AAED,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACvB;AAqFD,qCAAqC;AACrC,wBAAsB,YAAY,CACjC,SAAS,EAAE,WAAW,EACtB,KAAK,EAAE,UAAU,EACjB,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7C,OAAO,CAAC,YAAY,CAAC,CAyCvB"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAWzC,MAAM,MAAM,iBAAiB,GAAG,cAAc,aAAa,CAAC,CAAC;AAE7D,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,4CAA4C;IAC5C,QAAQ,CAAC,qBAAqB,EAAE,MAAM,IAAI,CAAC;IAC3C,kCAAkC;IAClC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACpE,gCAAgC;IAChC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,CAAC;CACrE;AAED,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACvB;AAqFD,qCAAqC;AACrC,wBAAsB,YAAY,CACjC,SAAS,EAAE,WAAW,EACtB,KAAK,EAAE,UAAU,EACjB,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7C,OAAO,CAAC,YAAY,CAAC,CAyCvB"}
package/dist/engine.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { SceneError } from '@baron1996/kline-scene-schema';
2
2
  import { toKLineChartsOptions } from './conversion/chart-options.js';
3
3
  import { createStaticDataLoader } from './static-data-loader.js';
4
+ import { engineDataForScene } from './gap-aware-series.js';
4
5
  import { KLINECHARTS_ENGINE_VERSION, KLINECHARTS_RUNTIME_VERSION, SUPPORTED_KLINECHARTS_RUNTIME_VERSIONS, } from './version.js';
5
6
  function resolveMouseInteractionDispatch(chart) {
6
7
  const chartEvent = chart._chartEvent;
@@ -62,7 +63,7 @@ export async function createEngine(container, scene, options) {
62
63
  ...(scene.symbol.name === undefined ? {} : { name: scene.symbol.name }),
63
64
  });
64
65
  chart.setPeriod(structuredClone(scene.period));
65
- chart.setDataLoader(createStaticDataLoader(scene.data));
66
+ chart.setDataLoader(createStaticDataLoader(engineDataForScene(scene)));
66
67
  const mouseInteraction = resolveMouseInteractionDispatch(chart);
67
68
  return {
68
69
  chart,
@@ -0,0 +1,44 @@
1
+ import type { ChartScene, MarketData, MarketDataGap } from '@baron1996/kline-scene-schema';
2
+ import type { Chart, IndicatorTemplate, KLineData } from 'klinecharts';
3
+ export declare const GAP_AWARE_CANDLE_INDICATOR_ID = "baron_gap_aware_candle";
4
+ export declare const GAP_AWARE_CANDLE_INDICATOR_NAME = "BARON_GAP_AWARE_CANDLE";
5
+ export declare const GAP_AWARE_CANDLE_PANE_ID = "baron_gap_aware_candle_pane";
6
+ export declare const GAP_AWARE_CANDLE_Y_AXIS_ID = "baron_gap_aware_candle_y_axis";
7
+ export type GapAwareTimelineItem = {
8
+ readonly kind: 'bar';
9
+ readonly bar: MarketData;
10
+ } | {
11
+ readonly kind: 'gap';
12
+ readonly gap: MarketDataGap;
13
+ };
14
+ export interface GapAwareCarrierData extends KLineData {
15
+ /** 仅供 Adapter 内部绘制与十字线识别,不属于公开 MarketData。 */
16
+ readonly __baronTimelineItem: GapAwareTimelineItem;
17
+ }
18
+ interface GapAwareCandleValue {
19
+ readonly open: number | null;
20
+ readonly high: number | null;
21
+ readonly low: number | null;
22
+ readonly close: number | null;
23
+ }
24
+ interface GapAwareCandleStyles {
25
+ readonly upColor: string;
26
+ readonly downColor: string;
27
+ readonly noChangeColor: string;
28
+ readonly upWickColor: string;
29
+ readonly downWickColor: string;
30
+ readonly noChangeWickColor: string;
31
+ }
32
+ export declare function isGapAwareScene(scene: ChartScene): boolean;
33
+ export declare function timelineSlotCount(scene: ChartScene): number;
34
+ export declare function gapCount(scene: ChartScene): number;
35
+ /** 将真实 Bar 与 Gap 合并为严格时间序的引擎索引载体。 */
36
+ export declare function toGapAwareCarrierData(scene: ChartScene): GapAwareCarrierData[];
37
+ export declare function engineDataForScene(scene: ChartScene): readonly KLineData[];
38
+ export declare function timelineItemOf(data: KLineData | undefined): GapAwareTimelineItem | undefined;
39
+ export declare const gapAwareCandleIndicatorTemplate: IndicatorTemplate<GapAwareCandleValue, never, GapAwareCandleStyles>;
40
+ /** 初始化仅绘制真实 Bar 的主序列;Gap 只保留横轴槽位。 */
41
+ export declare function installGapAwareMainSeries(scene: ChartScene, chart: Chart, registerIndicator: typeof import('klinecharts').registerIndicator): void;
42
+ export declare function assertGapAwareSceneSupported(scene: ChartScene): void;
43
+ export {};
44
+ //# sourceMappingURL=gap-aware-series.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gap-aware-series.d.ts","sourceRoot":"","sources":["../src/gap-aware-series.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,UAAU,EACV,UAAU,EACV,aAAa,EACb,MAAM,+BAA+B,CAAC;AAEvC,OAAO,KAAK,EACX,KAAK,EAEL,iBAAiB,EACjB,SAAS,EACT,MAAM,aAAa,CAAC;AAErB,eAAO,MAAM,6BAA6B,2BAA2B,CAAC;AACtE,eAAO,MAAM,+BAA+B,2BAA2B,CAAC;AACxE,eAAO,MAAM,wBAAwB,gCAAgC,CAAC;AACtE,eAAO,MAAM,0BAA0B,kCAAkC,CAAC;AAE1E,MAAM,MAAM,oBAAoB,GAC7B;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAA;CAAE,GAClD;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAA;CAAE,CAAC;AAEzD,MAAM,WAAW,mBAAoB,SAAQ,SAAS;IACrD,8CAA8C;IAC9C,QAAQ,CAAC,mBAAmB,EAAE,oBAAoB,CAAC;CACnD;AAED,UAAU,mBAAmB;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,UAAU,oBAAoB;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACnC;AAMD,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAE1D;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAE3D;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAElD;AAED,qCAAqC;AACrC,wBAAgB,qBAAqB,CACpC,KAAK,EAAE,UAAU,GACf,mBAAmB,EAAE,CAgCvB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,SAAS,EAAE,CAI1E;AAED,wBAAgB,cAAc,CAC7B,IAAI,EAAE,SAAS,GAAG,SAAS,GACzB,oBAAoB,GAAG,SAAS,CAElC;AAkCD,eAAO,MAAM,+BAA+B,EAAE,iBAAiB,CAC9D,mBAAmB,EACnB,KAAK,EACL,oBAAoB,CA4FpB,CAAC;AA4BF,qCAAqC;AACrC,wBAAgB,yBAAyB,CACxC,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,KAAK,EACZ,iBAAiB,EAAE,cAAc,aAAa,EAAE,iBAAiB,GAC/D,IAAI,CAkBN;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAgBpE"}
@@ -0,0 +1,221 @@
1
+ import { SceneError } from '@baron1996/kline-scene-schema';
2
+ export const GAP_AWARE_CANDLE_INDICATOR_ID = 'baron_gap_aware_candle';
3
+ export const GAP_AWARE_CANDLE_INDICATOR_NAME = 'BARON_GAP_AWARE_CANDLE';
4
+ export const GAP_AWARE_CANDLE_PANE_ID = 'baron_gap_aware_candle_pane';
5
+ export const GAP_AWARE_CANDLE_Y_AXIS_ID = 'baron_gap_aware_candle_y_axis';
6
+ function adapterError(path, message) {
7
+ return new SceneError('RUNTIME_INIT_FAILED', path, message);
8
+ }
9
+ export function isGapAwareScene(scene) {
10
+ return scene.version === 2;
11
+ }
12
+ export function timelineSlotCount(scene) {
13
+ return scene.data.length + (scene.gaps?.length ?? 0);
14
+ }
15
+ export function gapCount(scene) {
16
+ return scene.gaps?.length ?? 0;
17
+ }
18
+ /** 将真实 Bar 与 Gap 合并为严格时间序的引擎索引载体。 */
19
+ export function toGapAwareCarrierData(scene) {
20
+ if (!isGapAwareScene(scene) || scene.gaps === undefined) {
21
+ throw adapterError('/gaps', 'Gap-aware carrier requires a ChartScene v2 gaps array.');
22
+ }
23
+ const carriers = [];
24
+ let barIndex = 0;
25
+ let gapIndex = 0;
26
+ while (barIndex < scene.data.length || gapIndex < scene.gaps.length) {
27
+ const bar = scene.data[barIndex];
28
+ const gap = scene.gaps[gapIndex];
29
+ if (gap === undefined || (bar !== undefined && bar.timestamp < gap.timestamp)) {
30
+ const snapshot = structuredClone(bar);
31
+ carriers.push({
32
+ ...snapshot,
33
+ __baronTimelineItem: { kind: 'bar', bar: snapshot },
34
+ });
35
+ barIndex += 1;
36
+ continue;
37
+ }
38
+ const snapshot = structuredClone(gap);
39
+ carriers.push({
40
+ timestamp: snapshot.timestamp,
41
+ open: 0,
42
+ high: 0,
43
+ low: 0,
44
+ close: 0,
45
+ volume: 0,
46
+ __baronTimelineItem: { kind: 'gap', gap: snapshot },
47
+ });
48
+ gapIndex += 1;
49
+ }
50
+ return carriers;
51
+ }
52
+ export function engineDataForScene(scene) {
53
+ return isGapAwareScene(scene)
54
+ ? toGapAwareCarrierData(scene)
55
+ : structuredClone(scene.data);
56
+ }
57
+ export function timelineItemOf(data) {
58
+ return data?.__baronTimelineItem;
59
+ }
60
+ function directionOf(value) {
61
+ if (value.close > value.open) {
62
+ return 'up';
63
+ }
64
+ if (value.close < value.open) {
65
+ return 'down';
66
+ }
67
+ return 'flat';
68
+ }
69
+ function bodyColor(styles, direction) {
70
+ return direction === 'up'
71
+ ? styles.upColor
72
+ : direction === 'down'
73
+ ? styles.downColor
74
+ : styles.noChangeColor;
75
+ }
76
+ function wickColor(styles, direction) {
77
+ return direction === 'up'
78
+ ? styles.upWickColor
79
+ : direction === 'down'
80
+ ? styles.downWickColor
81
+ : styles.noChangeWickColor;
82
+ }
83
+ export const gapAwareCandleIndicatorTemplate = {
84
+ name: GAP_AWARE_CANDLE_INDICATOR_NAME,
85
+ shortName: '',
86
+ series: 'price',
87
+ shouldOhlc: false,
88
+ shouldFormatBigNumber: false,
89
+ figures: [
90
+ // 只参与 Y 轴范围计算;没有 type 就不会创建引擎 Figure。
91
+ { key: 'low' },
92
+ {
93
+ key: 'high',
94
+ type: 'bar',
95
+ attrs({ data, coordinate, yAxis }) {
96
+ if (data.current == null || data.current.close === null) {
97
+ return null;
98
+ }
99
+ const high = yAxis.convertToPixel(data.current.high);
100
+ const low = yAxis.convertToPixel(data.current.low);
101
+ return {
102
+ x: coordinate.current.x - 0.5,
103
+ y: Math.min(high, low),
104
+ width: 1,
105
+ height: Math.max(1, Math.abs(high - low)),
106
+ };
107
+ },
108
+ styles({ data, indicator }) {
109
+ if (data.current == null || data.current.close === null) {
110
+ return null;
111
+ }
112
+ return {
113
+ style: 'fill',
114
+ color: wickColor(indicator.extendData, directionOf(data.current)),
115
+ };
116
+ },
117
+ },
118
+ {
119
+ key: 'close',
120
+ type: 'bar',
121
+ attrs({ data, coordinate, barSpace, yAxis }) {
122
+ if (data.current == null || data.current.close === null) {
123
+ return null;
124
+ }
125
+ const width = Math.max(1, barSpace.bar * 0.62);
126
+ const open = yAxis.convertToPixel(data.current.open);
127
+ const close = yAxis.convertToPixel(data.current.close);
128
+ const top = Math.min(open, close);
129
+ return {
130
+ x: coordinate.current.x - width / 2,
131
+ y: top,
132
+ width,
133
+ height: Math.max(1, Math.abs(open - close)),
134
+ };
135
+ },
136
+ styles({ data, indicator }) {
137
+ if (data.current == null || data.current.close === null) {
138
+ return null;
139
+ }
140
+ const color = bodyColor(indicator.extendData, directionOf(data.current));
141
+ return {
142
+ style: 'fill',
143
+ color,
144
+ borderColor: color,
145
+ borderSize: 0,
146
+ borderRadius: 0,
147
+ };
148
+ },
149
+ },
150
+ ],
151
+ calc(dataList) {
152
+ return dataList.map((data) => {
153
+ const item = timelineItemOf(data);
154
+ if (item?.kind !== 'bar') {
155
+ return { open: null, high: null, low: null, close: null };
156
+ }
157
+ return {
158
+ open: item.bar.open,
159
+ high: item.bar.high,
160
+ low: item.bar.low,
161
+ close: item.bar.close,
162
+ };
163
+ });
164
+ },
165
+ };
166
+ function indicatorCreate(scene) {
167
+ const candle = scene.chart.candle;
168
+ return {
169
+ id: GAP_AWARE_CANDLE_INDICATOR_ID,
170
+ name: GAP_AWARE_CANDLE_INDICATOR_NAME,
171
+ shortName: '',
172
+ paneId: GAP_AWARE_CANDLE_PANE_ID,
173
+ yAxisId: GAP_AWARE_CANDLE_Y_AXIS_ID,
174
+ precision: scene.symbol.pricePrecision,
175
+ visible: true,
176
+ zLevel: 0,
177
+ extendData: {
178
+ upColor: candle.upColor,
179
+ downColor: candle.downColor,
180
+ noChangeColor: candle.noChangeColor,
181
+ upWickColor: candle.upWickColor,
182
+ downWickColor: candle.downWickColor,
183
+ noChangeWickColor: candle.noChangeWickColor,
184
+ },
185
+ styles: {
186
+ lastValueMark: { show: false },
187
+ tooltip: { showRule: 'none' },
188
+ },
189
+ };
190
+ }
191
+ /** 初始化仅绘制真实 Bar 的主序列;Gap 只保留横轴槽位。 */
192
+ export function installGapAwareMainSeries(scene, chart, registerIndicator) {
193
+ if (!isGapAwareScene(scene)) {
194
+ return;
195
+ }
196
+ assertGapAwareSceneSupported(scene);
197
+ registerIndicator(gapAwareCandleIndicatorTemplate);
198
+ const createdId = chart.createIndicator(indicatorCreate(scene), true);
199
+ if (createdId !== GAP_AWARE_CANDLE_INDICATOR_ID) {
200
+ throw adapterError('/gaps', 'KLineCharts failed to create the Gap-aware main series.');
201
+ }
202
+ chart.setPaneOptions({
203
+ id: 'candle_pane',
204
+ height: 0,
205
+ minHeight: 0,
206
+ order: scene.panes.length,
207
+ state: 'minimize',
208
+ dragEnabled: false,
209
+ });
210
+ }
211
+ export function assertGapAwareSceneSupported(scene) {
212
+ if (!isGapAwareScene(scene)) {
213
+ return;
214
+ }
215
+ if (scene.chart.candle.type !== 'candle_solid') {
216
+ throw adapterError('/chart/candle/type', 'ChartScene v2 MVP only supports the candle_solid gap-aware main series.');
217
+ }
218
+ if (scene.panes.some((pane) => pane.indicators.length > 0)) {
219
+ throw adapterError('/panes', 'ChartScene v2 indicators are disabled until their Gap semantics are implemented.');
220
+ }
221
+ }
@@ -1,6 +1,5 @@
1
- import type { MarketData } from '@baron1996/kline-scene-schema';
2
- import type { DataLoader, DataLoaderGetBarsParams } from 'klinecharts';
1
+ import type { DataLoader, DataLoaderGetBarsParams, KLineData } from 'klinecharts';
3
2
  export type StaticDataLoadType = DataLoaderGetBarsParams['type'];
4
3
  /** 创建只读取场景内嵌行情的不可变数据加载器。 */
5
- export declare function createStaticDataLoader(data: readonly MarketData[]): DataLoader;
4
+ export declare function createStaticDataLoader(data: readonly KLineData[]): DataLoader;
6
5
  //# sourceMappingURL=static-data-loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"static-data-loader.d.ts","sourceRoot":"","sources":["../src/static-data-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EACX,UAAU,EACV,uBAAuB,EAEvB,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,kBAAkB,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;AAEjE,4BAA4B;AAC5B,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,SAAS,UAAU,EAAE,GAAG,UAAU,CAU9E"}
1
+ {"version":3,"file":"static-data-loader.d.ts","sourceRoot":"","sources":["../src/static-data-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,UAAU,EACV,uBAAuB,EACvB,SAAS,EACT,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,kBAAkB,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;AAEjE,4BAA4B;AAC5B,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,SAAS,SAAS,EAAE,GAAG,UAAU,CAU7E"}
package/dist/version.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /** Adapter 包版本。 */
2
- export declare const ADAPTER_PACKAGE_VERSION: "0.9.5";
2
+ export declare const ADAPTER_PACKAGE_VERSION: "0.9.7";
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.9.5';
2
+ export const ADAPTER_PACKAGE_VERSION = '0.9.7';
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.9.5",
3
+ "version": "0.9.7",
4
4
  "description": "Controlled ChartScene adapter for KLineCharts.",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -38,7 +38,7 @@
38
38
  "typecheck": "tsc -p tsconfig.json --noEmit"
39
39
  },
40
40
  "dependencies": {
41
- "@baron1996/kline-scene-schema": "0.6.0",
41
+ "@baron1996/kline-scene-schema": "0.9.7",
42
42
  "klinecharts": "10.0.0"
43
43
  }
44
44
  }