@baron1996/klinecharts-runtime 0.9.15 → 0.9.18

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.9.15 @baron1996/klinecharts-runtime@0.9.15
7
+ npm install --save-exact @baron1996/kline-scene-schema@0.9.18 @baron1996/klinecharts-runtime@0.9.18
8
8
  ```
9
9
 
10
10
  ```ts
@@ -17,6 +17,8 @@ export interface DrawingRuntimeCapability {
17
17
  updateDrawingText(id: string, text: string): EngineDrawingSnapshot;
18
18
  updateDrawingLocked(id: string, locked: boolean): EngineDrawingSnapshot;
19
19
  removeDrawing(id: string): boolean;
20
+ /** 将多个 Drawing 的删除收敛为一次 Runtime 变更。 */
21
+ removeDrawings(ids: readonly string[]): boolean;
20
22
  requestDrawingDelete(id: string): void;
21
23
  selectDrawing(id: string | null): void;
22
24
  getSelectedDrawingId(): string | undefined;
@@ -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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"}
@@ -40,6 +40,7 @@ export declare class ProgressiveDrawableWorkspaceRuntime implements ProgressiveR
40
40
  updateDrawingText(id: string, text: string): EngineDrawingSnapshot;
41
41
  updateDrawingLocked(id: string, locked: boolean): EngineDrawingSnapshot;
42
42
  removeDrawing(id: string): boolean;
43
+ removeDrawings(ids: readonly string[]): boolean;
43
44
  requestDrawingDelete(id: string): void;
44
45
  selectDrawing(id: string | null): void;
45
46
  getSelectedDrawingId(): string | undefined;
@@ -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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"}
@@ -189,6 +189,9 @@ export class ProgressiveDrawableWorkspaceRuntime {
189
189
  removeDrawing(id) {
190
190
  return this.#requireReady().removeDrawing(id);
191
191
  }
192
+ removeDrawings(ids) {
193
+ return this.#requireReady().removeDrawings(ids);
194
+ }
192
195
  requestDrawingDelete(id) {
193
196
  this.#requireReady().requestDrawingDelete(id);
194
197
  }
@@ -49,6 +49,11 @@ export declare class DrawingSessionController {
49
49
  updateDrawingText(id: string, text: string): EngineDrawingSnapshot;
50
50
  updateDrawingLocked(id: string, locked: boolean): EngineDrawingSnapshot;
51
51
  removeDrawing(id: string): boolean;
52
+ /**
53
+ * 原子删除多个 Drawing:引擎只应用一次完整后态,会话只发布一个候选文档。
54
+ * 调用方负责决定业务上允许删除的 ID(例如工具栏会排除锁定标注)。
55
+ */
56
+ removeDrawings(ids: readonly string[]): boolean;
52
57
  selectDrawing(id: string | null): void;
53
58
  /**
54
59
  * 在同一个 Adapter 内原子替换 Scene 投影上下文。
@@ -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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"}
@@ -109,6 +109,38 @@ export class DrawingSessionController {
109
109
  this.#assertReady();
110
110
  return this.#options.engine.removeDrawing(id);
111
111
  }
112
+ /**
113
+ * 原子删除多个 Drawing:引擎只应用一次完整后态,会话只发布一个候选文档。
114
+ * 调用方负责决定业务上允许删除的 ID(例如工具栏会排除锁定标注)。
115
+ */
116
+ removeDrawings(ids) {
117
+ this.#assertReady();
118
+ const requestedIds = new Set(ids);
119
+ if (requestedIds.size === 0) {
120
+ return false;
121
+ }
122
+ const rollbackDrawings = this.#confirmed.map((drawing) => structuredClone(drawing));
123
+ const removedDrawings = rollbackDrawings.filter((drawing) => requestedIds.has(drawing.id));
124
+ if (removedDrawings.length === 0) {
125
+ return false;
126
+ }
127
+ const confirmedAfter = rollbackDrawings.filter((drawing) => !requestedIds.has(drawing.id));
128
+ this.#state = 'interacting';
129
+ this.#suppressEngineEvents = true;
130
+ try {
131
+ this.#options.engine.restoreDrawings(confirmedAfter);
132
+ }
133
+ catch (error) {
134
+ this.#restoreBatchAfterFailure(error, rollbackDrawings);
135
+ return false;
136
+ }
137
+ finally {
138
+ this.#suppressEngineEvents = false;
139
+ }
140
+ const representative = removedDrawings[0];
141
+ void this.#onBatchDelete(representative, confirmedAfter, rollbackDrawings);
142
+ return true;
143
+ }
112
144
  selectDrawing(id) {
113
145
  this.#assertUsable();
114
146
  this.#selectedId = id;
@@ -206,7 +238,10 @@ export class DrawingSessionController {
206
238
  throw new DrawingSessionError('DRAWING_CHANGE_REJECTED', '/drawings', `Unknown drawing change request: ${requestId}.`);
207
239
  }
208
240
  try {
209
- if (candidate.before !== undefined) {
241
+ if (candidate.rollbackDrawings !== undefined) {
242
+ this.#restoreDrawingSet(candidate.rollbackDrawings);
243
+ }
244
+ else if (candidate.before !== undefined) {
210
245
  this.#options.engine.restoreDrawing(candidate.before);
211
246
  }
212
247
  else {
@@ -390,6 +425,45 @@ export class DrawingSessionController {
390
425
  this.#state = 'awaiting-host-confirmation';
391
426
  }
392
427
  }
428
+ async #onBatchDelete(representative, confirmedAfter, rollbackDrawings) {
429
+ try {
430
+ const candidateDocument = this.#options.buildDocument(confirmedAfter);
431
+ this.#options.projectionService.projectDocument({
432
+ scene: this.#scene,
433
+ drawings: candidateDocument,
434
+ });
435
+ const canonicalHash = await hashCanonicalDrawingDocument(candidateDocument);
436
+ const candidate = {
437
+ requestId: `change-${++this.#requestSequence}`,
438
+ operation: 'delete',
439
+ before: structuredClone(representative),
440
+ after: structuredClone(representative),
441
+ document: structuredClone(candidateDocument),
442
+ canonicalHash,
443
+ confirmedAfter: confirmedAfter.map((drawing) => structuredClone(drawing)),
444
+ rollbackDrawings: rollbackDrawings.map((drawing) => structuredClone(drawing)),
445
+ };
446
+ this.#candidate = candidate;
447
+ this.#options.emit(deepFreeze({
448
+ type: 'drawing-candidate',
449
+ requestId: candidate.requestId,
450
+ operation: 'delete',
451
+ before: structuredClone(representative),
452
+ candidate: structuredClone(representative),
453
+ candidateDocument: structuredClone(candidateDocument),
454
+ canonicalHash,
455
+ }));
456
+ if (this.#options.commitMode === 'immediate') {
457
+ this.#commitCandidate(candidate);
458
+ }
459
+ else {
460
+ this.#state = 'awaiting-host-confirmation';
461
+ }
462
+ }
463
+ catch (error) {
464
+ this.#restoreBatchAfterFailure(error, rollbackDrawings);
465
+ }
466
+ }
393
467
  #confirmedWith(operation, before, after) {
394
468
  if (operation === 'delete') {
395
469
  return this.#confirmed.filter((drawing) => drawing.id !== after.id);
@@ -400,7 +474,9 @@ export class DrawingSessionController {
400
474
  return this.#confirmed.map((drawing) => drawing.id === before.id ? structuredClone(after) : drawing);
401
475
  }
402
476
  #commitCandidate(candidate) {
403
- this.#confirmed = this.#confirmedWith(candidate.operation, candidate.before, candidate.after);
477
+ this.#confirmed = candidate.confirmedAfter === undefined
478
+ ? this.#confirmedWith(candidate.operation, candidate.before, candidate.after)
479
+ : candidate.confirmedAfter.map((drawing) => structuredClone(drawing));
404
480
  this.#candidate = null;
405
481
  this.#state = 'ready';
406
482
  this.#options.emit({
@@ -424,6 +500,32 @@ export class DrawingSessionController {
424
500
  this.#enterTerminalError('DRAWING_PROJECTION_INVALID', `Failed to restore the rejected candidate: ${String(error)}`);
425
501
  }
426
502
  }
503
+ #restoreBatchAfterFailure(error, rollbackDrawings) {
504
+ try {
505
+ this.#restoreDrawingSet(rollbackDrawings);
506
+ }
507
+ catch (restoreError) {
508
+ this.#enterTerminalError('DRAWING_PROJECTION_INVALID', `Failed to restore the rejected candidate: ${String(restoreError)}`);
509
+ return;
510
+ }
511
+ this.#state = 'ready';
512
+ this.#options.emit({
513
+ type: 'workspace-error',
514
+ code: error instanceof DrawingSessionError
515
+ ? error.code
516
+ : 'DRAWING_PROJECTION_INVALID',
517
+ message: error instanceof Error ? error.message : String(error),
518
+ });
519
+ }
520
+ #restoreDrawingSet(drawings) {
521
+ this.#suppressEngineEvents = true;
522
+ try {
523
+ this.#options.engine.restoreDrawings(drawings);
524
+ }
525
+ finally {
526
+ this.#suppressEngineEvents = false;
527
+ }
528
+ }
427
529
  #enterTerminalError(code, message) {
428
530
  this.#state = 'terminal-error';
429
531
  this.#candidate = null;
@@ -46,6 +46,7 @@ export declare class DrawableWorkspaceRuntime implements DrawableWorkspaceRuntim
46
46
  updateDrawingText(id: string, text: string): EngineDrawingSnapshot;
47
47
  updateDrawingLocked(id: string, locked: boolean): EngineDrawingSnapshot;
48
48
  removeDrawing(id: string): boolean;
49
+ removeDrawings(ids: readonly string[]): boolean;
49
50
  requestDrawingDelete(id: string): void;
50
51
  selectDrawing(id: string | null): void;
51
52
  getSelectedDrawingId(): string | undefined;
@@ -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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"}
@@ -169,6 +169,9 @@ export class DrawableWorkspaceRuntime {
169
169
  removeDrawing(id) {
170
170
  return this.#session.removeDrawing(id);
171
171
  }
172
+ removeDrawings(ids) {
173
+ return this.#session.removeDrawings(ids);
174
+ }
172
175
  requestDrawingDelete(id) {
173
176
  this.removeDrawing(id);
174
177
  }
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.15";
2
+ export declare const WEB_RUNTIME_PACKAGE_VERSION: "0.9.18";
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.15';
2
+ export const WEB_RUNTIME_PACKAGE_VERSION = '0.9.18';
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/runtime.d.ts CHANGED
@@ -37,6 +37,7 @@ export declare class KLineSceneRuntime implements DrawingRuntimeCapability, Runt
37
37
  updateDrawingText(id: string, text: string): EngineDrawingSnapshot;
38
38
  updateDrawingLocked(id: string, locked: boolean): EngineDrawingSnapshot;
39
39
  removeDrawing(id: string): boolean;
40
+ removeDrawings(ids: readonly string[]): boolean;
40
41
  requestDrawingDelete(id: string): void;
41
42
  getSelectedDrawingId(): string | undefined;
42
43
  selectDrawing(id: string | null): void;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
package/dist/runtime.js CHANGED
@@ -307,6 +307,13 @@ export class KLineSceneRuntime {
307
307
  removeDrawing(id) {
308
308
  return this.removeOverlay(id);
309
309
  }
310
+ removeDrawings(ids) {
311
+ let removed = false;
312
+ for (const id of new Set(ids)) {
313
+ removed = this.removeOverlay(id) || removed;
314
+ }
315
+ return removed;
316
+ }
310
317
  requestDrawingDelete(id) {
311
318
  this.requestOverlayDelete(id);
312
319
  }
@@ -1 +1 @@
1
- {"version":3,"file":"chart-workspace-toolbar.d.ts","sourceRoot":"","sources":["../../src/toolbar/chart-workspace-toolbar.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,gCAAgC,EAChC,wBAAwB,EACxB,8BAA8B,EAC9B,0BAA0B,EAC1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAYxF,KAAK,qBAAqB,GAAG,wBAAwB,GACpD,0BAA0B,GAC1B,8BAA8B,GAC9B,gCAAgC,CAAC;AAElC,MAAM,WAAW,8BAA8B;IAC9C,6CAA6C;IAC7C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,yBAAyB;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,4BAA4B;IAC5C,uDAAuD;IACvD,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACzD,8BAA8B;IAC9B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC/D,QAAQ,CAAC,sBAAsB,CAAC,EAAE,SAAS,8BAA8B,EAAE,CAAC;IAC5E,QAAQ,CAAC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IAC7C,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAClC,MAAM,EAAE,8BAA8B,KAClC,IAAI,CAAC;IACV,QAAQ,CAAC,gBAAgB,CAAC,EAAE,WAAW,CAAC;IACxC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CAClD;AAED,MAAM,WAAW,+BAA+B;IAC/C,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,sBAAsB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IAChD,yBAAyB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IACnD,kBAAkB,CACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE;QACN,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;QAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;QAC3B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACtC,GACC,IAAI,CAAC;IACR,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,OAAO,IAAI,IAAI,CAAC;CAChB;AAsPD;;;GAGG;AACH,wBAAgB,2BAA2B,CAC1C,UAAU,EAAE,+BAA+B,EAC3C,OAAO,EAAE,qBAAqB,EAC9B,OAAO,GAAE,4BAAiC,GACxC,qBAAqB,CAuiBvB"}
1
+ {"version":3,"file":"chart-workspace-toolbar.d.ts","sourceRoot":"","sources":["../../src/toolbar/chart-workspace-toolbar.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,gCAAgC,EAChC,wBAAwB,EACxB,8BAA8B,EAC9B,0BAA0B,EAC1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAaxF,KAAK,qBAAqB,GAAG,wBAAwB,GACpD,0BAA0B,GAC1B,8BAA8B,GAC9B,gCAAgC,CAAC;AAElC,MAAM,WAAW,8BAA8B;IAC9C,6CAA6C;IAC7C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,yBAAyB;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,4BAA4B;IAC5C,uDAAuD;IACvD,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACzD,8BAA8B;IAC9B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC/D,QAAQ,CAAC,sBAAsB,CAAC,EAAE,SAAS,8BAA8B,EAAE,CAAC;IAC5E,QAAQ,CAAC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IAC7C,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAClC,MAAM,EAAE,8BAA8B,KAClC,IAAI,CAAC;IACV,QAAQ,CAAC,gBAAgB,CAAC,EAAE,WAAW,CAAC;IACxC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CAClD;AAED,MAAM,WAAW,+BAA+B;IAC/C,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,sBAAsB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IAChD,yBAAyB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IACnD,kBAAkB,CACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE;QACN,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;QAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;QAC3B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACtC,GACC,IAAI,CAAC;IACR,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,OAAO,IAAI,IAAI,CAAC;CAChB;AAiTD;;;GAGG;AACH,wBAAgB,2BAA2B,CAC1C,UAAU,EAAE,+BAA+B,EAC3C,OAAO,EAAE,qBAAqB,EAC9B,OAAO,GAAE,4BAAiC,GACxC,qBAAqB,CA0jBvB"}
@@ -5,6 +5,12 @@ import { CHART_WORKSPACE_TOOLBAR_STYLES } from './chart-workspace-toolbar-styles
5
5
  import { createToolbarIcon } from './toolbar-icons.js';
6
6
  import { OVERLAY_TOOL_PRESENTATIONS, TEXT_OVERLAY_TYPES, TOOLBAR_GROUPS, } from './toolbar-tools.js';
7
7
  let nextWorkspaceToolbarId = 1;
8
+ function resolvePortalHost(anchor) {
9
+ const fullscreenElement = document.fullscreenElement;
10
+ return fullscreenElement !== null && fullscreenElement.contains(anchor)
11
+ ? fullscreenElement
12
+ : document.body;
13
+ }
8
14
  function runtimeStateCapability(runtime) {
9
15
  const candidate = runtime;
10
16
  return typeof candidate.getRuntimeState === 'function' &&
@@ -12,6 +18,12 @@ function runtimeStateCapability(runtime) {
12
18
  ? candidate
13
19
  : undefined;
14
20
  }
21
+ function workspaceEventCapability(runtime) {
22
+ const candidate = runtime;
23
+ return typeof candidate.subscribe === 'function'
24
+ ? candidate
25
+ : undefined;
26
+ }
15
27
  function createButton(options) {
16
28
  const button = document.createElement('button');
17
29
  button.type = 'button';
@@ -39,7 +51,7 @@ function createPopover(button, id, cleanupCallbacks) {
39
51
  element.hidden = true;
40
52
  button.setAttribute('aria-controls', id);
41
53
  button.setAttribute('aria-expanded', 'false');
42
- document.body.append(element);
54
+ resolvePortalHost(button).append(element);
43
55
  const position = () => {
44
56
  const anchor = button.getBoundingClientRect();
45
57
  const bounds = element.getBoundingClientRect();
@@ -53,6 +65,10 @@ function createPopover(button, id, cleanupCallbacks) {
53
65
  element.hidden = true;
54
66
  };
55
67
  const open = () => {
68
+ const portalHost = resolvePortalHost(button);
69
+ if (element.parentNode !== portalHost) {
70
+ portalHost.append(element);
71
+ }
56
72
  element.hidden = false;
57
73
  position();
58
74
  button.setAttribute('aria-expanded', 'true');
@@ -86,15 +102,26 @@ function createPopover(button, id, cleanupCallbacks) {
86
102
  }
87
103
  };
88
104
  const handleViewportChange = () => close();
105
+ const handleFullscreenChange = () => {
106
+ const portalHost = resolvePortalHost(button);
107
+ if (element.parentNode !== portalHost) {
108
+ portalHost.append(element);
109
+ }
110
+ if (!element.hidden) {
111
+ position();
112
+ }
113
+ };
89
114
  button.addEventListener('click', handleButtonClick);
90
115
  document.addEventListener('pointerdown', handleOutsidePointer, true);
91
116
  document.addEventListener('keydown', handleKeyDown);
117
+ document.addEventListener('fullscreenchange', handleFullscreenChange);
92
118
  window.addEventListener('resize', handleViewportChange);
93
119
  window.addEventListener('scroll', handleViewportChange, true);
94
120
  cleanupCallbacks.push(() => {
95
121
  button.removeEventListener('click', handleButtonClick);
96
122
  document.removeEventListener('pointerdown', handleOutsidePointer, true);
97
123
  document.removeEventListener('keydown', handleKeyDown);
124
+ document.removeEventListener('fullscreenchange', handleFullscreenChange);
98
125
  window.removeEventListener('resize', handleViewportChange);
99
126
  window.removeEventListener('scroll', handleViewportChange, true);
100
127
  });
@@ -114,19 +141,29 @@ function createTooltip(cleanupCallbacks) {
114
141
  tooltip.setAttribute('role', 'tooltip');
115
142
  tooltip.hidden = true;
116
143
  document.body.append(tooltip);
144
+ let activeButton = null;
117
145
  const hide = () => {
118
146
  tooltip.hidden = true;
147
+ activeButton = null;
148
+ };
149
+ const position = (button) => {
150
+ const bounds = button.getBoundingClientRect();
151
+ const tooltipBounds = tooltip.getBoundingClientRect();
152
+ const left = Math.min(bounds.right + 8, window.innerWidth - tooltipBounds.width - 8);
153
+ const top = Math.min(Math.max(8, bounds.top + (bounds.height - tooltipBounds.height) / 2), window.innerHeight - tooltipBounds.height - 8);
154
+ tooltip.style.left = `${Math.round(left)}px`;
155
+ tooltip.style.top = `${Math.round(top)}px`;
119
156
  };
120
157
  const bind = (button, label) => {
121
158
  const show = () => {
122
- const bounds = button.getBoundingClientRect();
159
+ activeButton = button;
160
+ const portalHost = resolvePortalHost(button);
161
+ if (tooltip.parentNode !== portalHost) {
162
+ portalHost.append(tooltip);
163
+ }
123
164
  tooltip.textContent = label;
124
165
  tooltip.hidden = false;
125
- const tooltipBounds = tooltip.getBoundingClientRect();
126
- const left = Math.min(bounds.right + 8, window.innerWidth - tooltipBounds.width - 8);
127
- const top = Math.min(Math.max(8, bounds.top + (bounds.height - tooltipBounds.height) / 2), window.innerHeight - tooltipBounds.height - 8);
128
- tooltip.style.left = `${Math.round(left)}px`;
129
- tooltip.style.top = `${Math.round(top)}px`;
166
+ position(button);
130
167
  };
131
168
  button.addEventListener('mouseenter', show);
132
169
  button.addEventListener('mouseleave', hide);
@@ -139,6 +176,18 @@ function createTooltip(cleanupCallbacks) {
139
176
  button.removeEventListener('blur', hide);
140
177
  });
141
178
  };
179
+ const handleFullscreenChange = () => {
180
+ if (activeButton === null || tooltip.hidden) {
181
+ return;
182
+ }
183
+ const portalHost = resolvePortalHost(activeButton);
184
+ if (tooltip.parentNode !== portalHost) {
185
+ portalHost.append(tooltip);
186
+ }
187
+ position(activeButton);
188
+ };
189
+ document.addEventListener('fullscreenchange', handleFullscreenChange);
190
+ cleanupCallbacks.push(() => document.removeEventListener('fullscreenchange', handleFullscreenChange));
142
191
  return { bind, hide, destroy: () => tooltip.remove() };
143
192
  }
144
193
  function applyHostActionState(control, state) {
@@ -547,15 +596,18 @@ export function createChartWorkspaceToolbar(containers, runtime, options = {}) {
547
596
  left.append(section);
548
597
  }
549
598
  }
599
+ const clearDrawingToolSelection = () => {
600
+ for (const button of overlayButtons) {
601
+ button.setAttribute('aria-pressed', 'false');
602
+ }
603
+ };
550
604
  const drawingActions = createSection('标注操作');
551
605
  const clearButton = createButton({ label: '清空全部标注', icon: 'clearAll' });
552
606
  clearButton.dataset.action = 'clear-all';
553
607
  const clearDrawings = () => {
554
- for (const drawing of runtime.listDrawings()) {
555
- if (!drawing.locked) {
556
- runtime.removeDrawing(drawing.id);
557
- }
558
- }
608
+ runtime.removeDrawings(runtime.listDrawings()
609
+ .filter((drawing) => !drawing.locked)
610
+ .map((drawing) => drawing.id));
559
611
  runtime.selectDrawing(null);
560
612
  };
561
613
  clearButton.addEventListener('click', clearDrawings);
@@ -567,6 +619,18 @@ export function createChartWorkspaceToolbar(containers, runtime, options = {}) {
567
619
  left.append(drawingActions);
568
620
  containers.top.append(top);
569
621
  containers.left.append(left);
622
+ const eventCapability = workspaceEventCapability(runtime);
623
+ if (eventCapability !== undefined) {
624
+ cleanupCallbacks.push(eventCapability.subscribe((event) => {
625
+ if ((event.type === 'drawing-candidate' && event.operation === 'create') ||
626
+ event.type === 'drawing-committed' ||
627
+ event.type === 'drawing-rejected' ||
628
+ (event.type === 'selection-changed' && event.id === null) ||
629
+ event.type === 'workspace-error') {
630
+ clearDrawingToolSelection();
631
+ }
632
+ }));
633
+ }
570
634
  const stateCapability = runtimeStateCapability(runtime);
571
635
  let runtimeReady = stateCapability === undefined;
572
636
  let hostDataDisabled = false;
@@ -289,11 +289,9 @@ export function createStandardToolbar(container, runtime, options = {}) {
289
289
  const action = presentation.action === 'clear-all'
290
290
  ? () => {
291
291
  // 清空全部 Drawing;锁定的 Drawing 保持既有“不接受 mutation”契约。
292
- for (const drawing of runtime.listDrawings()) {
293
- if (!drawing.locked) {
294
- runtime.removeDrawing(drawing.id);
295
- }
296
- }
292
+ runtime.removeDrawings(runtime.listDrawings()
293
+ .filter((drawing) => !drawing.locked)
294
+ .map((drawing) => drawing.id));
297
295
  runtime.selectDrawing(null);
298
296
  }
299
297
  : () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@baron1996/klinecharts-runtime",
3
- "version": "0.9.15",
3
+ "version": "0.9.18",
4
4
  "description": "Web runtime for deterministic KLineCharts scenes.",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -39,8 +39,8 @@
39
39
  "typecheck": "tsc -p tsconfig.json --noEmit"
40
40
  },
41
41
  "dependencies": {
42
- "@baron1996/kline-scene-schema": "0.9.15",
43
- "@baron1996/klinecharts-adapter": "0.9.15",
42
+ "@baron1996/kline-scene-schema": "0.9.18",
43
+ "@baron1996/klinecharts-adapter": "0.9.18",
44
44
  "@js-temporal/polyfill": "0.5.1"
45
45
  }
46
46
  }