@visactor/vrender-core 1.1.12 → 1.1.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/cjs/canvas/conical-gradient.js +1 -1
  2. package/cjs/canvas/constants.js +1 -1
  3. package/cjs/canvas/empty-context.js +1 -1
  4. package/cjs/canvas/index.js +1 -1
  5. package/cjs/canvas/util.js +1 -1
  6. package/cjs/common/bezier-utils.js +1 -2
  7. package/cjs/common/contribution-store-state.js +2 -1
  8. package/cjs/common/path-svg.js +1 -2
  9. package/cjs/common/render-command-list.js +2 -1
  10. package/cjs/common/seg-context.js +1 -1
  11. package/cjs/common/simplify.js +1 -1
  12. package/cjs/common/sort.js +1 -1
  13. package/cjs/common/split-path.js +1 -1
  14. package/cjs/common/text.js +1 -1
  15. package/cjs/core/contributions/layerHandler/modules.js +4 -2
  16. package/cjs/core/contributions/layerHandler/modules.js.map +1 -1
  17. package/cjs/core/stage.d.ts +10 -3
  18. package/cjs/core/stage.js +39 -20
  19. package/cjs/core/stage.js.map +1 -1
  20. package/cjs/event/event-manager.d.ts +29 -1
  21. package/cjs/event/event-manager.js +161 -42
  22. package/cjs/event/event-manager.js.map +1 -1
  23. package/cjs/event/event-system.d.ts +19 -3
  24. package/cjs/event/event-system.js +110 -62
  25. package/cjs/event/event-system.js.map +1 -1
  26. package/cjs/event/federated-event/base-event.js +3 -1
  27. package/cjs/event/federated-event/base-event.js.map +1 -1
  28. package/cjs/event/input-source.d.ts +7 -0
  29. package/cjs/event/input-source.js +37 -0
  30. package/cjs/event/input-source.js.map +1 -0
  31. package/cjs/interface/event.d.ts +9 -0
  32. package/cjs/interface/event.js.map +1 -1
  33. package/cjs/interface/stage.d.ts +10 -2
  34. package/cjs/interface/stage.js.map +1 -1
  35. package/cjs/render/contributions/render/draw-interceptor.js +13 -3
  36. package/cjs/render/contributions/render/draw-interceptor.js.map +1 -1
  37. package/dist/index.es.js +622 -145
  38. package/es/canvas/conical-gradient.js +1 -1
  39. package/es/canvas/constants.js +1 -1
  40. package/es/canvas/empty-context.js +1 -1
  41. package/es/canvas/index.js +1 -1
  42. package/es/canvas/util.js +1 -1
  43. package/es/common/bezier-utils.js +1 -2
  44. package/es/common/contribution-store-state.js +2 -1
  45. package/es/common/path-svg.js +1 -2
  46. package/es/common/render-command-list.js +2 -1
  47. package/es/common/seg-context.js +1 -1
  48. package/es/common/simplify.js +1 -1
  49. package/es/common/sort.js +1 -1
  50. package/es/common/split-path.js +1 -1
  51. package/es/common/text.js +1 -1
  52. package/es/core/contributions/layerHandler/modules.js +6 -2
  53. package/es/core/contributions/layerHandler/modules.js.map +1 -1
  54. package/es/core/stage.d.ts +10 -3
  55. package/es/core/stage.js +40 -21
  56. package/es/core/stage.js.map +1 -1
  57. package/es/event/event-manager.d.ts +29 -1
  58. package/es/event/event-manager.js +162 -41
  59. package/es/event/event-manager.js.map +1 -1
  60. package/es/event/event-system.d.ts +19 -3
  61. package/es/event/event-system.js +110 -62
  62. package/es/event/event-system.js.map +1 -1
  63. package/es/event/federated-event/base-event.js +2 -1
  64. package/es/event/federated-event/base-event.js.map +1 -1
  65. package/es/event/input-source.d.ts +7 -0
  66. package/es/event/input-source.js +29 -0
  67. package/es/event/input-source.js.map +1 -0
  68. package/es/interface/event.d.ts +9 -0
  69. package/es/interface/event.js.map +1 -1
  70. package/es/interface/stage.d.ts +10 -2
  71. package/es/interface/stage.js.map +1 -1
  72. package/es/render/contributions/render/draw-interceptor.js +12 -3
  73. package/es/render/contributions/render/draw-interceptor.js.map +1 -1
  74. package/package.json +3 -3
@@ -123,4 +123,4 @@ export function createConicalGradient(context, stops, x, y, deltaAngle, startAng
123
123
  pattern && ConicalPatternStore.Set(stops, x, y, startAngle, endAngle, pattern, width, height),
124
124
  pattern;
125
125
  }
126
- //# sourceMappingURL=conical-gradient.js.map
126
+ //# sourceMappingURL=conical-gradient.js.map
@@ -1,4 +1,4 @@
1
1
  export const CanvasFactory = Symbol.for("CanvasFactory");
2
2
 
3
3
  export const Context2dFactory = Symbol.for("Context2dFactory");
4
- //# sourceMappingURL=constants.js.map
4
+ //# sourceMappingURL=constants.js.map
@@ -206,4 +206,4 @@ export class EmptyContext2d {
206
206
  this.stack.forEach((m => matrixAllocate.free(m))), this.stack.length = 0;
207
207
  }
208
208
  }
209
- //# sourceMappingURL=empty-context.js.map
209
+ //# sourceMappingURL=empty-context.js.map
@@ -5,4 +5,4 @@ export * from "./empty-context";
5
5
  export * from "./contributions/base-canvas";
6
6
 
7
7
  export * from "./conical-gradient";
8
- //# sourceMappingURL=index.js.map
8
+ //# sourceMappingURL=index.js.map
package/es/canvas/util.js CHANGED
@@ -382,4 +382,4 @@ export function contain(commands, x, y) {
382
382
  export function containStroke(commands, lineWidth, x, y) {
383
383
  return containPath(commands, lineWidth, !0, x, y);
384
384
  }
385
- //# sourceMappingURL=util.js.map
385
+ //# sourceMappingURL=util.js.map
@@ -36,5 +36,4 @@ export function quadPointAt(p0, p1, p2, t) {
36
36
 
37
37
  export function quadLength(p0, p1, p2, iterationCount) {
38
38
  return snapLength([ p0.x, p1.x, p2.x ], [ p0.y, p1.y, p2.y ]);
39
- }
40
- //# sourceMappingURL=bezier-utils.js.map
39
+ }
@@ -10,4 +10,5 @@ export function getContributionStoreState() {
10
10
  const scope = globalThis;
11
11
  return scope[CONTRIBUTION_STORE_STATE_SYMBOL] || (scope[CONTRIBUTION_STORE_STATE_SYMBOL] = createContributionStoreState()),
12
12
  scope[CONTRIBUTION_STORE_STATE_SYMBOL];
13
- }
13
+ }
14
+ //# sourceMappingURL=contribution-store-state.js.map
@@ -54,5 +54,4 @@ export function parseSvgPath(str) {
54
54
  } else result.push(currCommandData);
55
55
  } else result.push(currCommandData);
56
56
  return result;
57
- }
58
- //# sourceMappingURL=path-svg.js.map
57
+ }
@@ -5,4 +5,5 @@ export function renderCommandList(commandList, context, x = 0, y = 0, sx = 1, sy
5
5
  const command = commandList[i];
6
6
  commandFuncs[command[0]](command, context, x, y, sx, sy, z);
7
7
  }
8
- }
8
+ }
9
+ //# sourceMappingURL=render-command-list.js.map
@@ -91,4 +91,4 @@ export class ReflectSegContext extends SegContext {
91
91
  return super.clear();
92
92
  }
93
93
  }
94
- //# sourceMappingURL=seg-context.js.map
94
+ //# sourceMappingURL=seg-context.js.map
@@ -30,4 +30,4 @@ export function flatten_simplify(points, tolerance, highestQuality) {
30
30
  if (points.length <= 10) return points;
31
31
  return points = highestQuality ? points : simplifyRadialDist(points, void 0 !== tolerance ? tolerance * tolerance : 1);
32
32
  }
33
- //# sourceMappingURL=simplify.js.map
33
+ //# sourceMappingURL=simplify.js.map
package/es/common/sort.js CHANGED
@@ -94,4 +94,4 @@ export function findNextGraphic(graphic, id, defaultZIndex, reverse = !1) {
94
94
  !1)), reverse);
95
95
  return result;
96
96
  }
97
- //# sourceMappingURL=sort.js.map
97
+ //# sourceMappingURL=sort.js.map
@@ -248,4 +248,4 @@ export const splitPath = (path, count) => {
248
248
  }
249
249
  return res;
250
250
  };
251
- //# sourceMappingURL=split-path.js.map
251
+ //# sourceMappingURL=split-path.js.map
package/es/common/text.js CHANGED
@@ -24,4 +24,4 @@ export function textAttributesToStyle(attrs) {
24
24
  attrs.underline ? style["text-decoration"] = "underline" : attrs.lineThrough && (style["text-decoration"] = "line-through"),
25
25
  attrs.fill && isString(attrs.fill) && (style.color = attrs.fill), style;
26
26
  }
27
- //# sourceMappingURL=text.js.map
27
+ //# sourceMappingURL=text.js.map
@@ -1,9 +1,13 @@
1
- import { StaticLayerHandlerContribution } from "../../constants";
1
+ import { StaticLayerHandlerContribution, VirtualLayerHandlerContribution } from "../../constants";
2
2
 
3
3
  import { CanvasLayerHandlerContribution } from "./canvas2d-contribution";
4
4
 
5
+ import { EmptyLayerHandlerContribution } from "./empty-contribution";
6
+
5
7
  export function bindLayerHandlerModules({bind: bind}) {
6
- bind(CanvasLayerHandlerContribution).toSelf(), bind(StaticLayerHandlerContribution).toService(CanvasLayerHandlerContribution);
8
+ bind(CanvasLayerHandlerContribution).toSelf(), bind(EmptyLayerHandlerContribution).toSelf(),
9
+ bind(StaticLayerHandlerContribution).toService(CanvasLayerHandlerContribution),
10
+ bind(VirtualLayerHandlerContribution).toService(EmptyLayerHandlerContribution);
7
11
  }
8
12
 
9
13
  export default bindLayerHandlerModules;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/contributions/layerHandler/modules.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,8BAA8B,EAE/B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AAIzE,MAAM,UAAU,uBAAuB,CAAC,EAAE,IAAI,EAAiB;IAC7D,IAAI,CAAC,8BAA8B,CAAC,CAAC,MAAM,EAAE,CAAC;IAG9C,IAAI,CAAC,8BAA8B,CAAC,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;AAUjF,CAAC;AAED,eAAe,uBAAuB,CAAC","file":"modules.js","sourcesContent":["import {\n // DynamicLayerHandlerContribution,\n StaticLayerHandlerContribution\n // VirtualLayerHandlerContribution\n} from '../../constants';\nimport { CanvasLayerHandlerContribution } from './canvas2d-contribution';\n// import { EmptyLayerHandlerContribution } from './empty-contribution';\n// import { OffscreenLayerHandlerContribution } from './offscreen2d-contribution';\n\nexport function bindLayerHandlerModules({ bind }: { bind: any }) {\n bind(CanvasLayerHandlerContribution).toSelf();\n // bind(OffscreenLayerHandlerContribution).toSelf();\n // bind(EmptyLayerHandlerContribution).toSelf();\n bind(StaticLayerHandlerContribution).toService(CanvasLayerHandlerContribution);\n // bind(DynamicLayerHandlerContribution).toService(OffscreenLayerHandlerContribution);\n // bind(VirtualLayerHandlerContribution).toService(EmptyLayerHandlerContribution);\n // try {\n // if (typeof OffscreenCanvas === 'function') {\n // bind(LayerHandlerContribution).toService(OffscreenLayerHandlerContribution);\n // }\n // } catch (err) {\n // bind(LayerHandlerContribution).toService(CanvasLayerHandlerContribution);\n // }\n}\n\nexport default bindLayerHandlerModules;\n"]}
1
+ {"version":3,"sources":["../src/core/contributions/layerHandler/modules.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,8BAA8B,EAC9B,+BAA+B,EAChC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AAGrE,MAAM,UAAU,uBAAuB,CAAC,EAAE,IAAI,EAAiB;IAC7D,IAAI,CAAC,8BAA8B,CAAC,CAAC,MAAM,EAAE,CAAC;IAE9C,IAAI,CAAC,6BAA6B,CAAC,CAAC,MAAM,EAAE,CAAC;IAC7C,IAAI,CAAC,8BAA8B,CAAC,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;IAE/E,IAAI,CAAC,+BAA+B,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;AAQjF,CAAC;AAED,eAAe,uBAAuB,CAAC","file":"modules.js","sourcesContent":["import {\n // DynamicLayerHandlerContribution,\n StaticLayerHandlerContribution,\n VirtualLayerHandlerContribution\n} from '../../constants';\nimport { CanvasLayerHandlerContribution } from './canvas2d-contribution';\nimport { EmptyLayerHandlerContribution } from './empty-contribution';\n// import { OffscreenLayerHandlerContribution } from './offscreen2d-contribution';\n\nexport function bindLayerHandlerModules({ bind }: { bind: any }) {\n bind(CanvasLayerHandlerContribution).toSelf();\n // bind(OffscreenLayerHandlerContribution).toSelf();\n bind(EmptyLayerHandlerContribution).toSelf();\n bind(StaticLayerHandlerContribution).toService(CanvasLayerHandlerContribution);\n // bind(DynamicLayerHandlerContribution).toService(OffscreenLayerHandlerContribution);\n bind(VirtualLayerHandlerContribution).toService(EmptyLayerHandlerContribution);\n // try {\n // if (typeof OffscreenCanvas === 'function') {\n // bind(LayerHandlerContribution).toService(OffscreenLayerHandlerContribution);\n // }\n // } catch (err) {\n // bind(LayerHandlerContribution).toService(CanvasLayerHandlerContribution);\n // }\n}\n\nexport default bindLayerHandlerModules;\n"]}
@@ -1,6 +1,7 @@
1
1
  import { type IAABBBounds, type IBounds, type IBoundsLike, type IMatrix } from '@visactor/vutils';
2
- import type { IGraphic, IExportType, IStage, IStageParams, ILayer, IColor, IOption3D, ICamera, vec3, IDirectionLight, ITicker, IRenderService, IPickerService, IPluginService, ISyncHook, IDrawContext, IWindow, ILayerService, ITimeline, IOptimizeType, LayerMode, PickResult, IPlugin, IGraphicService, IRenderServiceDrawParams } from '../interface';
2
+ import type { IGraphic, IExportType, IStage, IStageParams, ILayer, IColor, IOption3D, ICamera, vec3, IDirectionLight, ITicker, IRenderService, IPickerService, IPluginService, ISyncHook, IDrawContext, IWindow, ILayerService, ITimeline, IOptimizeType, LayerMode, PickResult, IPlugin, IGraphicService, IRenderServiceDrawParams, IRenderToOptions } from '../interface';
3
3
  import type { Layer } from './layer';
4
+ import { FederatedMouseEvent } from '../event';
4
5
  import { Group } from '../graphic/group';
5
6
  import { type IStageFactoryDeps } from '../factory';
6
7
  import { type SharedStateScope } from '../graphic/state/shared-state-scope';
@@ -147,6 +148,7 @@ export declare class Stage extends Group implements IStage {
147
148
  sortLayer(cb: (ILayer1: ILayer, layer2: ILayer) => number): void;
148
149
  removeLayer(ILayerId: number): ILayer | false;
149
150
  tryInitInteractiveLayer(): void;
151
+ private prepareRenderLayers;
150
152
  clearViewBox(color?: string): void;
151
153
  render(layers?: ILayer[], params?: Partial<IDrawContext>): void;
152
154
  protected combineLayersToWindow(): void;
@@ -168,12 +170,17 @@ export declare class Stage extends Group implements IStage {
168
170
  setStage(stage?: IStage): void;
169
171
  dirty(b: IBounds, matrix?: IMatrix): void;
170
172
  getLayer(name: string): undefined | ILayer;
171
- renderTo(window: IWindow): void;
173
+ renderTo(window: IWindow, _params?: {
174
+ x: number;
175
+ y: number;
176
+ width: number;
177
+ height: number;
178
+ }, options?: IRenderToOptions): void;
172
179
  renderToNewWindow(fullImage?: boolean, viewBox?: IAABBBounds): IWindow;
173
180
  toCanvas(fullImage?: boolean, viewBox?: IAABBBounds): HTMLCanvasElement | null;
174
181
  setCursor(mode?: string): void;
175
182
  getCursor(): string;
176
- eventPointTransform(e: PointerEvent | WheelEvent | TouchEvent): {
183
+ eventPointTransform(e: PointerEvent | WheelEvent | TouchEvent | FederatedMouseEvent): {
177
184
  x: number;
178
185
  y: number;
179
186
  };
package/es/core/stage.js CHANGED
@@ -2,7 +2,7 @@ import { Bounds, Point, isString } from "@visactor/vutils";
2
2
 
3
3
  import { DefaultWindow } from "./window";
4
4
 
5
- import { EventSystem } from "../event";
5
+ import { EventSystem, FederatedMouseEvent } from "../event";
6
6
 
7
7
  import { Group } from "../graphic/group";
8
8
 
@@ -381,31 +381,37 @@ export class Stage extends Group {
381
381
  layerMode: layerMode,
382
382
  canvasId: canvasId
383
383
  });
384
- return this.appendChild(layer), layer;
384
+ return this.appendChild(layer), this.interactiveLayer && layer !== this.interactiveLayer && this.appendChild(this.interactiveLayer),
385
+ layer;
385
386
  }
386
387
  sortLayer(cb) {
387
388
  const children = this.children;
388
389
  children.sort(cb), this.removeAllChild(), children.forEach((c => {
389
390
  this.appendChild(c);
390
- }));
391
+ })), this.interactiveLayer && this.appendChild(this.interactiveLayer);
391
392
  }
392
393
  removeLayer(ILayerId) {
393
394
  return this.removeChild(this.findChildByUid(ILayerId));
394
395
  }
395
396
  tryInitInteractiveLayer() {
396
- "released" !== this.releaseStatus && this.supportInteractiveLayer && !this.interactiveLayer && (this.interactiveLayer = this.createLayer(),
397
+ "released" !== this.releaseStatus && this.supportInteractiveLayer && !this.interactiveLayer && (this.interactiveLayer = this.createLayer(void 0, this.params.interactiveLayerMode),
397
398
  this.interactiveLayer.name = "_builtin_interactive", this.interactiveLayer.attribute.pickable = !1,
398
399
  this.nextFrameRenderLayerSet.add(this.interactiveLayer));
399
400
  }
401
+ prepareRenderLayers() {
402
+ "virtual" === this.params.interactiveLayerMode && this.tryInitInteractiveLayer(),
403
+ this.layerService.prepareStageLayer(this);
404
+ }
400
405
  clearViewBox(color) {
401
406
  this.window.clearViewBox(color);
402
407
  }
403
408
  render(layers, params) {
404
409
  if ("released" === this.releaseStatus) return;
410
+ if (this.params.requestRender) return void this.params.requestRender();
405
411
  this.startAnimate();
406
412
  const state = this.state;
407
- this.state = "rendering", this.layerService.prepareStageLayer(this), this._skipRender || (this.lastRenderparams = params,
408
- this.hooks.beforeRender.call(this), this._skipRender || (this.renderLayerList(this.children),
413
+ this.state = "rendering", this._skipRender || (this.lastRenderparams = params, this.hooks.beforeRender.call(this),
414
+ this._skipRender || (this.prepareRenderLayers(), this.renderLayerList(this.children),
409
415
  this.combineLayersToWindow(), this.nextFrameRenderLayerSet.clear()), this.hooks.afterRender.call(this)),
410
416
  this.state = state, this._skipRender && this._skipRender++;
411
417
  }
@@ -421,11 +427,11 @@ export class Stage extends Group {
421
427
  }
422
428
  }
423
429
  renderNextFrame(layers, force) {
424
- this.nextFrameRenderLayerSet.size !== this.childrenCount && (layers || this).forEach((layer => {
430
+ "released" !== this.releaseStatus && (this.params.requestRender ? "rendering" !== this.state && this.params.requestRender() : (this.nextFrameRenderLayerSet.size !== this.childrenCount && (layers || this).forEach((layer => {
425
431
  this.nextFrameRenderLayerSet.add(layer);
426
432
  })), this.willNextFrameRender || (this.willNextFrameRender = !0, this.global.getSpecifiedRequestAnimationFrame(this.rafId)((() => {
427
433
  this._doRenderInThisFrame(), this.willNextFrameRender = !1;
428
- })));
434
+ })))));
429
435
  }
430
436
  ensureRootSharedStateScope(themeStateDefinitions) {
431
437
  return this.rootSharedStateScope ? (this.rootSharedStateScope.ownerStage = this,
@@ -436,8 +442,8 @@ export class Stage extends Group {
436
442
  if ("released" === this.releaseStatus) return;
437
443
  this.startAnimate();
438
444
  const state = this.state;
439
- this.state = "rendering", this.layerService.prepareStageLayer(this), this.nextFrameRenderLayerSet.size && !this._skipRender && (this.hooks.beforeRender.call(this),
440
- this._skipRender || (this.renderLayerList(Array.from(this.nextFrameRenderLayerSet.values()), this.lastRenderparams || {}),
445
+ this.state = "rendering", this.nextFrameRenderLayerSet.size && !this._skipRender && (this.hooks.beforeRender.call(this),
446
+ this._skipRender || (this.prepareRenderLayers(), this.renderLayerList(Array.from(this.nextFrameRenderLayerSet.values()), this.lastRenderparams || {}),
441
447
  this.combineLayersToWindow(), this.nextFrameRenderLayerSet.clear()), this.hooks.afterRender.call(this)),
442
448
  this.state = state, this._skipRender && this._skipRender++;
443
449
  }
@@ -536,17 +542,26 @@ export class Stage extends Group {
536
542
  getLayer(name) {
537
543
  return this.children.filter((layer => layer.name === name))[0];
538
544
  }
539
- renderTo(window) {
540
- "released" !== this.releaseStatus && this.forEachChildren(((layer, i) => {
541
- layer.drawTo(window, {
542
- renderService: this.renderService,
543
- viewBox: window.getViewBox(),
544
- transMatrix: window.getViewBoxTransform(),
545
- background: layer === this.defaultLayer ? this.background : void 0,
546
- clear: 0 === i,
547
- updateBounds: !(!this.dirtyBounds || this.dirtyBounds.empty())
548
- });
549
- }));
545
+ renderTo(window, _params, options) {
546
+ if ("released" === this.releaseStatus) return;
547
+ const state = this.state;
548
+ this.state = "rendering";
549
+ try {
550
+ this.params.requestRender && this.hooks.beforeRender.call(this), this.prepareRenderLayers(),
551
+ this.forEachChildren(((layer, i) => {
552
+ var _a, _b;
553
+ layer.drawTo(window, {
554
+ renderService: this.renderService,
555
+ viewBox: null !== (_a = null == options ? void 0 : options.viewBox) && void 0 !== _a ? _a : window.getViewBox(),
556
+ transMatrix: null !== (_b = null == options ? void 0 : options.transMatrix) && void 0 !== _b ? _b : window.getViewBoxTransform(),
557
+ background: layer === this.defaultLayer ? this.background : void 0,
558
+ clear: 0 === i && !1 !== (null == options ? void 0 : options.clear),
559
+ updateBounds: !(!this.dirtyBounds || this.dirtyBounds.empty())
560
+ });
561
+ })), this.params.requestRender && this.hooks.afterRender.call(this);
562
+ } finally {
563
+ this.state = state;
564
+ }
550
565
  }
551
566
  renderToNewWindow(fullImage = !0, viewBox) {
552
567
  if ("released" === this.releaseStatus) return;
@@ -578,6 +593,10 @@ export class Stage extends Group {
578
593
  return this._cursor;
579
594
  }
580
595
  eventPointTransform(e) {
596
+ if (e instanceof FederatedMouseEvent) return {
597
+ x: e.viewX,
598
+ y: e.viewY
599
+ };
581
600
  const point = this.global.mapToCanvasPoint(e, this.window);
582
601
  return this.stage.window.pointTransform(point.x, point.y);
583
602
  }