@baron1996/klinecharts-runtime 0.9.4 → 0.9.6

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,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.6.0 @baron1996/klinecharts-runtime@0.9.4
7
+ npm install --save-exact @baron1996/kline-scene-schema@0.6.0 @baron1996/klinecharts-runtime@0.9.6
8
8
  ```
9
9
 
10
10
  ```ts
@@ -77,6 +77,14 @@ import {
77
77
  const runtime = await createDrawableWorkspaceRuntime(container, loadedWorkspace, {
78
78
  commitMode: 'host-confirmed',
79
79
  displayTimezone: 'UTC',
80
+ drawingInteraction: {
81
+ touch: 'precision-cursor',
82
+ exclusiveSelection: true,
83
+ hitTolerance: {
84
+ mouse: { body: 12, anchor: 14 },
85
+ touch: { body: 22, anchor: 24 },
86
+ },
87
+ },
80
88
  });
81
89
 
82
90
  const coordinator = createCrossPeriodDrawingCoordinator(
@@ -111,6 +119,20 @@ KLineCharts time axis and adds the active timezone to tooltip dates, but it is n
111
119
  written into the Workspace and does not change candle timestamps, period rules,
112
120
  Drawing projection, or host alerts. Omit it to use the Scene chart timezone.
113
121
 
122
+ `drawingInteraction.touch: 'precision-cursor'` enables the mobile precision flow for
123
+ `segment`: moving a touch positions an offset virtual crosshair, while a stationary
124
+ tap confirms each endpoint. The mode is selected from the actual touch pointer type,
125
+ so mouse input keeps KLineCharts' native two-click behavior even when the option is
126
+ enabled. The guide UI and interaction state are transient and are never written into
127
+ the Workspace. Omit the option (or use `touch: 'native'`) for native touch behavior.
128
+
129
+ `drawingInteraction.exclusiveSelection` routes existing Drawing selection and dragging
130
+ through the adapter. While a Drawing is selected, chart scrolling, zooming, and the
131
+ crosshair are suspended. The first blank pointer gesture only clears the selection;
132
+ the following gesture returns to chart navigation. `hitTolerance` uses CSS pixels and
133
+ defaults to a 24px mouse body band and a 44px touch body band, with 14px and 24px anchor
134
+ radii respectively.
135
+
114
136
  The coordinator never derives `scopeKey` from `scene.symbol.ticker`, never accesses
115
137
  the KLineCharts `Chart`, and never converts legacy `ChartScene.overlays` into a
116
138
  Workspace. A Scene switch changes only `workspace.scene`; the confirmed
@@ -1,5 +1,5 @@
1
1
  import type { ChartScene, DrawableWorkspaceDocument, TimeSeriesScene } from '@baron1996/kline-scene-schema';
2
- import { type DrawingEnginePort, type DrawingProjectionPolicy } from '@baron1996/klinecharts-adapter';
2
+ import { type DrawingInteractionOptions, type DrawingEnginePort, type DrawingProjectionPolicy } from '@baron1996/klinecharts-adapter';
3
3
  export interface SceneRuntimeRegistration {
4
4
  readonly sceneKind: 'chart' | 'time-series';
5
5
  parseScene(value: unknown): ChartScene | TimeSeriesScene;
@@ -16,6 +16,8 @@ export interface SceneRuntimeAdapterOptions {
16
16
  };
17
17
  /** 仅改变时间文本与坐标轴的展示时区,不改变 Scene/Drawings 的业务时区。 */
18
18
  readonly displayTimezone?: string;
19
+ /** 仅改变输入交互,不改变 Drawing 几何与持久化协议。 */
20
+ readonly drawingInteraction?: DrawingInteractionOptions;
19
21
  }
20
22
  export declare function registerSceneRuntime(registration: SceneRuntimeRegistration): void;
21
23
  export declare function getSceneRuntime(kind: 'chart' | 'time-series'): SceneRuntimeRegistration;
@@ -1 +1 @@
1
- {"version":3,"file":"scene-runtime-factory.d.ts","sourceRoot":"","sources":["../../src/drawing/scene-runtime-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,UAAU,EACV,yBAAyB,EACzB,eAAe,EACf,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAKN,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,MAAM,gCAAgC,CAAC;AAExC,MAAM,WAAW,wBAAwB;IACxC,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,aAAa,CAAC;IAC5C,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,GAAG,eAAe,CAAC;IACzD,aAAa,CACZ,SAAS,EAAE,WAAW,EACtB,SAAS,EAAE,yBAAyB,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;CAClC;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,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,5 +1,5 @@
1
1
  import type { ChartScene, DrawableWorkspaceDocument, Drawing, DrawingDocument, MarketData, TimeSeriesScene } from '@baron1996/kline-scene-schema';
2
- import type { EngineDrawingSnapshot, EngineHistoricalDataCommitResult, MainSeriesPresentation } from '@baron1996/klinecharts-adapter';
2
+ import type { DrawingInteractionOptions, 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';
@@ -13,6 +13,8 @@ export interface DrawableWorkspaceRuntimeOptions {
13
13
  };
14
14
  /** 仅用于 UI 展示;不会写入 Workspace,也不会改变投影与会话时区。 */
15
15
  readonly displayTimezone?: string;
16
+ /** 可选输入策略;默认使用图表引擎原生 Drawing 交互。 */
17
+ readonly drawingInteraction?: DrawingInteractionOptions;
16
18
  }
17
19
  export interface DrawableWorkspaceRuntimeHandle extends DrawingRuntimeCapability, HistoricalDataRuntimeCapability, RuntimeAuxiliaryCapability {
18
20
  }
@@ -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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"}
@@ -98,6 +98,10 @@ export class DrawableWorkspaceRuntime {
98
98
  workspace.scene.kind !== 'chart') {
99
99
  throw new Error('HISTORICAL_DATA_UNSUPPORTED: only chart Workspaces support historical data loading.');
100
100
  }
101
+ if (options.drawingInteraction?.touch === 'precision-cursor' &&
102
+ workspace.scene.kind !== 'chart') {
103
+ throw new Error('TOUCH_DRAWING_UNSUPPORTED: precision cursor requires a chart Workspace.');
104
+ }
101
105
  const registration = getSceneRuntime(workspace.scene.kind);
102
106
  const engine = await registration.createAdapter(container, workspace, {
103
107
  ...(options.historicalDataLoading === undefined
@@ -106,6 +110,9 @@ export class DrawableWorkspaceRuntime {
106
110
  ...(options.displayTimezone === undefined
107
111
  ? {}
108
112
  : { displayTimezone: options.displayTimezone }),
113
+ ...(options.drawingInteraction === undefined
114
+ ? {}
115
+ : { drawingInteraction: options.drawingInteraction }),
109
116
  });
110
117
  return new DrawableWorkspaceRuntime(container, workspace, engine, options);
111
118
  }
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.4";
2
+ export declare const WEB_RUNTIME_PACKAGE_VERSION: "0.9.6";
3
3
  export { SUPPORTED_OVERLAYS } from '@baron1996/klinecharts-adapter';
4
4
  export * from './cross-period/coordinator.js';
5
5
  export * from './drawing/capabilities.js';
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.4';
2
+ export const WEB_RUNTIME_PACKAGE_VERSION = '0.9.6';
3
3
  export { SUPPORTED_OVERLAYS } from '@baron1996/klinecharts-adapter';
4
4
  export * from './cross-period/coordinator.js';
5
5
  export * from './drawing/capabilities.js';
@@ -1 +1 @@
1
- {"version":3,"file":"standard-toolbar-styles.d.ts","sourceRoot":"","sources":["../../src/toolbar/standard-toolbar-styles.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,QAgSnC,CAAC"}
1
+ {"version":3,"file":"standard-toolbar-styles.d.ts","sourceRoot":"","sources":["../../src/toolbar/standard-toolbar-styles.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,QAsSnC,CAAC"}
@@ -10,6 +10,7 @@ export const STANDARD_TOOLBAR_STYLES = String.raw `
10
10
  position: relative;
11
11
  display: flex;
12
12
  width: 100%;
13
+ max-width: 100%;
13
14
  min-width: 0;
14
15
  color: rgba(32, 35, 42, 1);
15
16
  background: rgba(255, 255, 255, 1);
@@ -18,12 +19,17 @@ export const STANDARD_TOOLBAR_STYLES = String.raw `
18
19
  }
19
20
 
20
21
  .baron-kline-toolbar__viewport {
22
+ flex: 1 1 auto;
21
23
  width: 100%;
24
+ max-width: 100%;
22
25
  min-width: 0;
23
26
  overflow-x: auto;
24
27
  overflow-y: hidden;
25
28
  contain: layout paint;
29
+ overscroll-behavior-x: contain;
26
30
  scrollbar-width: none;
31
+ touch-action: pan-x;
32
+ -webkit-overflow-scrolling: touch;
27
33
  }
28
34
 
29
35
  .baron-kline-toolbar__viewport::-webkit-scrollbar {
@@ -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;AAyKpF,2BAA2B;AAC3B,wBAAgB,qBAAqB,CACpC,SAAS,EAAE,WAAW,EACtB,OAAO,EAAE,sBAAsB,EAC/B,OAAO,GAAE,sBAA2B,GAClC,eAAe,CA2QjB"}
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;AAyKpF,2BAA2B;AAC3B,wBAAgB,qBAAqB,CACpC,SAAS,EAAE,WAAW,EACtB,OAAO,EAAE,sBAAsB,EAC/B,OAAO,GAAE,sBAA2B,GAClC,eAAe,CA8RjB"}
@@ -177,6 +177,21 @@ export function createStandardToolbar(container, runtime, options = {}) {
177
177
  root.append(style, viewport);
178
178
  const tooltip = createTooltip(viewport, `baron-kline-toolbar-tooltip-${toolbarId}`);
179
179
  const cleanupCallbacks = [];
180
+ const handleViewportWheel = (event) => {
181
+ if (event.ctrlKey ||
182
+ viewport.scrollWidth <= viewport.clientWidth ||
183
+ Math.abs(event.deltaX) >= Math.abs(event.deltaY)) {
184
+ return;
185
+ }
186
+ const previousScrollLeft = viewport.scrollLeft;
187
+ viewport.scrollLeft += event.deltaY;
188
+ if (viewport.scrollLeft !== previousScrollLeft) {
189
+ event.preventDefault();
190
+ tooltip.hide();
191
+ }
192
+ };
193
+ viewport.addEventListener('wheel', handleViewportWheel, { passive: false });
194
+ cleanupCallbacks.push(() => viewport.removeEventListener('wheel', handleViewportWheel));
180
195
  const overlayButtons = [];
181
196
  const hostActionControls = new Map();
182
197
  const textInput = document.createElement('input');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@baron1996/klinecharts-runtime",
3
- "version": "0.9.4",
3
+ "version": "0.9.6",
4
4
  "description": "Web runtime for deterministic KLineCharts scenes.",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -40,7 +40,7 @@
40
40
  },
41
41
  "dependencies": {
42
42
  "@baron1996/kline-scene-schema": "0.6.0",
43
- "@baron1996/klinecharts-adapter": "0.9.4",
43
+ "@baron1996/klinecharts-adapter": "0.9.5",
44
44
  "@js-temporal/polyfill": "0.5.1"
45
45
  }
46
46
  }