@visactor/vrender-core 0.17.5-alpha.0 → 0.17.5-alpha.1

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.
@@ -24,7 +24,7 @@ class EventSystem {
24
24
  const nativeEvent = events[i], federatedEvent = this.bootstrapEvent(this.rootPointerEvent, nativeEvent);
25
25
  this.manager.mapEvent(federatedEvent);
26
26
  }
27
- this.setCursor(this.manager.cursor, this.manager.cursorTarget);
27
+ this.setCursor(this.manager.cursor);
28
28
  }, this.onPointerMove = nativeEvent => {
29
29
  if (this.supportsTouchEvents && "touch" === nativeEvent.pointerType) return;
30
30
  if (this.isEventOutsideOfTargetElement(nativeEvent)) return;
@@ -33,7 +33,7 @@ class EventSystem {
33
33
  const event = this.bootstrapEvent(this.rootPointerEvent, normalizedEvents[i]);
34
34
  this.manager.mapEvent(event);
35
35
  }
36
- this.setCursor(this.manager.cursor, this.manager.cursorTarget);
36
+ this.setCursor(this.manager.cursor);
37
37
  }, this.onPointerUp = nativeEvent => {
38
38
  if (this.supportsTouchEvents && "touch" === nativeEvent.pointerType) return;
39
39
  const outside = this.isEventOutsideOfTargetElement(nativeEvent) ? "outside" : "", normalizedEvents = this.normalizeToPointerData(nativeEvent);
@@ -41,7 +41,7 @@ class EventSystem {
41
41
  const event = this.bootstrapEvent(this.rootPointerEvent, normalizedEvents[i]);
42
42
  event.type += outside, this.manager.mapEvent(event);
43
43
  }
44
- this.setCursor(this.manager.cursor, this.manager.cursorTarget);
44
+ this.setCursor(this.manager.cursor);
45
45
  }, this.onPointerOverOut = nativeEvent => {
46
46
  if (this.supportsTouchEvents && "touch" === nativeEvent.pointerType) return;
47
47
  const normalizedEvents = this.normalizeToPointerData(nativeEvent);
@@ -49,7 +49,7 @@ class EventSystem {
49
49
  const event = this.bootstrapEvent(this.rootPointerEvent, normalizedEvents[i]);
50
50
  this.manager.mapEvent(event);
51
51
  }
52
- this.setCursor(this.manager.cursor, this.manager.cursorTarget);
52
+ this.setCursor(this.manager.cursor);
53
53
  }, this.onWheel = nativeEvent => {
54
54
  const wheelEvent = this.normalizeWheelEvent(nativeEvent);
55
55
  this.manager.mapEvent(wheelEvent);
@@ -69,9 +69,7 @@ class EventSystem {
69
69
  release() {
70
70
  this.setTargetElement(null);
71
71
  }
72
- setCursor(mode, target) {
73
- if (!target && !this.manager.rootTarget.window._handler.canvas.controled) return;
74
- mode || (mode = "default");
72
+ setCursor(mode = "default") {
75
73
  const {applyStyles: applyStyles, domElement: domElement} = this;
76
74
  if (this.currentCursor === mode) return;
77
75
  this.currentCursor = mode;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/event/event-system.ts"],"names":[],"mappings":"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","file":"event-system.js","sourcesContent":["import { isUndefined, has, isString } from '@visactor/vutils';\nimport type { IGlobal } from '../interface';\nimport { EventManager } from './event-manager';\nimport { FederatedPointerEvent, FederatedWheelEvent } from './federated-event';\nimport type { FederatedMouseEvent } from './federated-event/mouse-event';\nimport type { EventPoint, IElementLike, IEventTarget, NativeEvent, RenderConfig } from '../interface/event';\nimport { clock } from './util';\n\nconst MOUSE_POINTER_ID = 1;\nconst TOUCH_TO_POINTER: Record<string, string> = {\n touchstart: 'pointerdown',\n touchend: 'pointerup',\n touchendoutside: 'pointerupoutside',\n touchmove: 'pointermove',\n touchcancel: 'pointercancel'\n};\n\n/**\n * 代码参考自 https://github.com/pixijs/pixijs\n * The MIT License\n\n Copyright (c) 2013-2023 Mathew Groves, Chad Engler\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n */\n\n/**\n * The system for handling UI events.\n */\nexport class EventSystem {\n private readonly globalObj: IGlobal;\n readonly manager: EventManager;\n\n /** Does the device support touch events https://www.w3.org/TR/touch-events/ */\n // readonly supportsTouchEvents = 'ontouchstart' in this.globalObj;\n readonly supportsTouchEvents: boolean;\n\n /** Does the device support pointer events https://www.w3.org/Submission/pointer-events/ */\n // readonly supportsPointerEvents = !!this.globalObj.PointerEvent;\n readonly supportsPointerEvents: boolean;\n\n readonly supportsMouseEvents: boolean;\n\n readonly applyStyles: boolean;\n\n readonly viewport: RenderConfig['viewport'];\n\n /**\n * Should default browser actions automatically be prevented.\n * Does not apply to pointer events for backwards compatibility\n * preventDefault on pointer events stops mouse events from firing\n * Thus, for every pointer event, there will always be either a mouse of touch event alongside it.\n * @default false\n */\n autoPreventDefault: boolean;\n\n /**\n * Dictionary of how different cursor modes are handled. Strings are handled as CSS cursor\n * values, objects are handled as dictionaries of CSS values for domElement,\n * and functions are called instead of changing the CSS.\n * Default CSS cursor values are provided for 'default' and 'pointer' modes.\n * @member {Object<string, string | ((mode: string) => void) | CSSStyleDeclaration>}\n */\n cursorStyles: Record<string, string | ((mode: string) => void) | CSSStyleDeclaration>;\n\n /**\n * The DOM element to which the root event listeners are bound. This is automatically set to\n */\n domElement: IElementLike | null;\n\n /** The resolution used to convert between the DOM client space into world space. */\n resolution = 1;\n\n private currentCursor: string;\n private rootPointerEvent: FederatedPointerEvent;\n private rootWheelEvent: FederatedWheelEvent;\n private eventsAdded: boolean;\n\n constructor(params: RenderConfig) {\n const { targetElement, resolution, rootNode, global, viewport, autoPreventDefault = false, clickInterval } = params;\n this.manager = new EventManager(rootNode, {\n clickInterval\n });\n\n this.globalObj = global;\n this.supportsPointerEvents = global.supportsPointerEvents;\n this.supportsTouchEvents = global.supportsTouchEvents;\n this.supportsMouseEvents = global.supportsMouseEvents;\n this.applyStyles = global.applyStyles;\n\n this.autoPreventDefault = autoPreventDefault;\n this.eventsAdded = false;\n this.viewport = viewport;\n\n this.rootPointerEvent = new FederatedPointerEvent();\n this.rootWheelEvent = new FederatedWheelEvent();\n\n this.cursorStyles = {\n default: 'inherit',\n pointer: 'pointer'\n };\n\n this.resolution = resolution;\n this.setTargetElement(targetElement);\n }\n\n release(): void {\n this.setTargetElement(null);\n }\n\n setCursor(mode: string, target: IEventTarget | null | 'ignore'): void {\n if (!target && !(this.manager.rootTarget as any).window._handler.canvas.controled) {\n return;\n }\n\n if (!mode) {\n mode = 'default';\n }\n const { applyStyles, domElement } = this;\n\n if (this.currentCursor === mode) {\n return;\n }\n this.currentCursor = mode;\n const style = this.cursorStyles[mode];\n if (style) {\n if (typeof style === 'string' && applyStyles) {\n domElement.style.cursor = style;\n } else if (typeof style === 'function') {\n style(mode);\n } else if (typeof style === 'object' && applyStyles) {\n Object.assign(domElement.style, style);\n }\n } else if (applyStyles && isString(mode) && !has(this.cursorStyles, mode)) {\n domElement.style.cursor = mode;\n }\n }\n\n private onPointerDown = (nativeEvent: NativeEvent): void => {\n if (this.supportsTouchEvents && (nativeEvent as PointerEvent).pointerType === 'touch') {\n return;\n }\n\n const events = this.normalizeToPointerData(nativeEvent);\n\n if (this.autoPreventDefault && (events[0] as any).isNormalized) {\n const cancelable = nativeEvent.cancelable || !('cancelable' in nativeEvent);\n\n if (cancelable) {\n nativeEvent.preventDefault();\n }\n }\n\n for (let i = 0, j = events.length; i < j; i++) {\n const nativeEvent = events[i];\n const federatedEvent = this.bootstrapEvent(this.rootPointerEvent, nativeEvent);\n\n this.manager.mapEvent(federatedEvent);\n }\n\n this.setCursor(this.manager.cursor, this.manager.cursorTarget);\n };\n\n private onPointerMove = (nativeEvent: NativeEvent): void => {\n if (this.supportsTouchEvents && (nativeEvent as PointerEvent).pointerType === 'touch') {\n return;\n }\n\n if (this.isEventOutsideOfTargetElement(nativeEvent)) {\n return;\n }\n\n const normalizedEvents = this.normalizeToPointerData(nativeEvent);\n for (let i = 0, j = normalizedEvents.length; i < j; i++) {\n const event = this.bootstrapEvent(this.rootPointerEvent, normalizedEvents[i]);\n\n this.manager.mapEvent(event);\n }\n\n this.setCursor(this.manager.cursor, this.manager.cursorTarget);\n };\n\n private onPointerUp = (nativeEvent: NativeEvent): void => {\n if (this.supportsTouchEvents && (nativeEvent as PointerEvent).pointerType === 'touch') {\n return;\n }\n\n const outside = this.isEventOutsideOfTargetElement(nativeEvent) ? 'outside' : '';\n const normalizedEvents = this.normalizeToPointerData(nativeEvent);\n\n for (let i = 0, j = normalizedEvents.length; i < j; i++) {\n const event = this.bootstrapEvent(this.rootPointerEvent, normalizedEvents[i]);\n\n event.type += outside;\n\n this.manager.mapEvent(event);\n }\n\n this.setCursor(this.manager.cursor, this.manager.cursorTarget);\n };\n\n private onPointerOverOut = (nativeEvent: NativeEvent): void => {\n if (this.supportsTouchEvents && (nativeEvent as PointerEvent).pointerType === 'touch') {\n return;\n }\n\n const normalizedEvents = this.normalizeToPointerData(nativeEvent);\n\n for (let i = 0, j = normalizedEvents.length; i < j; i++) {\n const event = this.bootstrapEvent(this.rootPointerEvent, normalizedEvents[i]);\n\n this.manager.mapEvent(event);\n }\n\n this.setCursor(this.manager.cursor, this.manager.cursorTarget);\n };\n\n protected onWheel = (nativeEvent: WheelEvent): void => {\n const wheelEvent = this.normalizeWheelEvent(nativeEvent);\n\n this.manager.mapEvent(wheelEvent);\n };\n\n setTargetElement(element: IElementLike | null): void {\n this.removeEvents();\n this.domElement = element;\n this.addEvents();\n }\n\n private addEvents(): void {\n if (this.eventsAdded || !this.domElement) {\n return;\n }\n const { globalObj, domElement } = this;\n\n if (this.supportsPointerEvents) {\n if (globalObj.getDocument()) {\n globalObj.getDocument().addEventListener('pointermove', this.onPointerMove, true);\n globalObj.getDocument().addEventListener('pointerup', this.onPointerUp, true);\n } else {\n domElement.addEventListener('pointermove', this.onPointerMove, true);\n domElement.addEventListener('pointerup', this.onPointerUp, true);\n }\n domElement.addEventListener('pointerdown', this.onPointerDown, true);\n domElement.addEventListener('pointerleave', this.onPointerOverOut, true);\n domElement.addEventListener('pointerover', this.onPointerOverOut, true);\n } else {\n if (globalObj.getDocument()) {\n globalObj.getDocument().addEventListener('mousemove', this.onPointerMove, true);\n globalObj.getDocument().addEventListener('mouseup', this.onPointerUp, true);\n } else {\n domElement.addEventListener('mousemove', this.onPointerMove, true);\n domElement.addEventListener('mouseup', this.onPointerUp, true);\n }\n domElement.addEventListener('mousedown', this.onPointerDown, true);\n domElement.addEventListener('mouseout', this.onPointerOverOut, true);\n domElement.addEventListener('mouseover', this.onPointerOverOut, true);\n }\n\n if (this.supportsTouchEvents) {\n domElement.addEventListener('touchstart', this.onPointerDown, true);\n domElement.addEventListener('touchend', this.onPointerUp, true);\n domElement.addEventListener('touchmove', this.onPointerMove, true);\n }\n\n domElement.addEventListener('wheel', this.onWheel, {\n capture: true\n });\n\n this.eventsAdded = true;\n }\n\n private removeEvents(): void {\n if (!this.eventsAdded || !this.domElement) {\n return;\n }\n const { globalObj, domElement } = this;\n\n if (this.supportsPointerEvents) {\n if (globalObj.getDocument()) {\n globalObj.getDocument().removeEventListener('pointermove', this.onPointerMove, true);\n globalObj.getDocument().removeEventListener('pointerup', this.onPointerUp, true);\n } else {\n domElement.removeEventListener('pointermove', this.onPointerMove, true);\n domElement.removeEventListener('pointerup', this.onPointerUp, true);\n }\n domElement.removeEventListener('pointerdown', this.onPointerDown, true);\n domElement.removeEventListener('pointerleave', this.onPointerOverOut, true);\n domElement.removeEventListener('pointerover', this.onPointerOverOut, true);\n } else {\n if (globalObj.getDocument()) {\n globalObj.getDocument().removeEventListener('mousemove', this.onPointerMove, true);\n globalObj.getDocument().removeEventListener('mouseup', this.onPointerUp, true);\n } else {\n domElement.removeEventListener('mousemove', this.onPointerMove, true);\n domElement.removeEventListener('mouseup', this.onPointerUp, true);\n }\n domElement.removeEventListener('mousedown', this.onPointerDown, true);\n domElement.removeEventListener('mouseout', this.onPointerOverOut, true);\n domElement.removeEventListener('mouseover', this.onPointerOverOut, true);\n }\n\n if (this.supportsTouchEvents) {\n domElement.removeEventListener('touchstart', this.onPointerDown, true);\n domElement.removeEventListener('touchend', this.onPointerUp, true);\n domElement.removeEventListener('touchmove', this.onPointerMove, true);\n }\n\n domElement.removeEventListener('wheel', this.onWheel, true);\n\n this.domElement = null;\n this.eventsAdded = false;\n }\n\n private mapToViewportPoint(event: FederatedMouseEvent): EventPoint {\n const viewport = this.viewport;\n const { x, y } = event;\n return {\n x: x - viewport.x,\n y: y - viewport.y\n };\n }\n\n private mapToCanvasPoint(nativeEvent: PointerEvent | WheelEvent): EventPoint {\n const point = this.globalObj?.mapToCanvasPoint(nativeEvent, this.domElement);\n\n if (point) {\n return point;\n }\n\n const { clientX: x, clientY: y } = nativeEvent;\n const rect = this.domElement.getBoundingClientRect();\n return {\n x: x - rect.left,\n y: y - rect.top\n };\n }\n\n private normalizeToPointerData(event: TouchEvent | MouseEvent | PointerEvent): PointerEvent[] {\n const normalizedEvents = [];\n\n if (\n this.supportsTouchEvents &&\n (event as TouchEvent).changedTouches &&\n (event as TouchEvent).changedTouches.length\n ) {\n for (let i = 0, li = (event as TouchEvent).changedTouches.length; i < li; i++) {\n const touch = (event as TouchEvent).changedTouches[i] as VRenderTouch;\n\n if (isUndefined(touch.button)) {\n touch.button = 0;\n }\n if (isUndefined(touch.buttons)) {\n touch.buttons = 1;\n }\n if (isUndefined(touch.isPrimary)) {\n touch.isPrimary = (event as TouchEvent).touches.length === 1 && event.type === 'touchstart';\n }\n if (isUndefined(touch.width)) {\n touch.width = touch.radiusX || 1;\n }\n if (isUndefined(touch.height)) {\n touch.height = touch.radiusY || 1;\n }\n if (isUndefined(touch.tiltX)) {\n touch.tiltX = 0;\n }\n if (isUndefined(touch.tiltY)) {\n touch.tiltY = 0;\n }\n if (isUndefined(touch.pointerType)) {\n touch.pointerType = 'touch';\n }\n if (isUndefined(touch.pointerId)) {\n touch.pointerId = touch.identifier || 0;\n }\n if (isUndefined(touch.pressure)) {\n touch.pressure = touch.force || 0.5;\n }\n if (isUndefined(touch.twist)) {\n touch.twist = 0;\n }\n if (isUndefined(touch.tangentialPressure)) {\n touch.tangentialPressure = 0;\n }\n if (isUndefined(touch.layerX)) {\n touch.layerX = touch.offsetX = touch.clientX;\n }\n if (isUndefined(touch.layerY)) {\n touch.layerY = touch.offsetY = touch.clientY;\n }\n\n touch.isNormalized = true;\n touch.type = event.type;\n\n normalizedEvents.push(touch);\n }\n } else if (\n !this.globalObj.supportsMouseEvents ||\n (event instanceof MouseEvent && (!this.supportsPointerEvents || !(event instanceof PointerEvent)))\n ) {\n const tempEvent = event as VRenderPointerEvent;\n\n if (isUndefined(tempEvent.isPrimary)) {\n tempEvent.isPrimary = true;\n }\n if (isUndefined(tempEvent.width)) {\n tempEvent.width = 1;\n }\n if (isUndefined(tempEvent.height)) {\n tempEvent.height = 1;\n }\n if (isUndefined(tempEvent.tiltX)) {\n tempEvent.tiltX = 0;\n }\n if (isUndefined(tempEvent.tiltY)) {\n tempEvent.tiltY = 0;\n }\n if (isUndefined(tempEvent.pointerType)) {\n tempEvent.pointerType = 'mouse';\n }\n if (isUndefined(tempEvent.pointerId)) {\n tempEvent.pointerId = MOUSE_POINTER_ID;\n }\n if (isUndefined(tempEvent.pressure)) {\n tempEvent.pressure = 0.5;\n }\n if (isUndefined(tempEvent.twist)) {\n tempEvent.twist = 0;\n }\n if (isUndefined(tempEvent.tangentialPressure)) {\n tempEvent.tangentialPressure = 0;\n }\n\n tempEvent.isNormalized = true;\n\n normalizedEvents.push(tempEvent);\n } else {\n normalizedEvents.push(event);\n }\n\n return normalizedEvents as PointerEvent[];\n }\n\n protected normalizeWheelEvent(nativeEvent: WheelEvent): FederatedWheelEvent {\n const event = this.rootWheelEvent;\n\n this.transferMouseData(event, nativeEvent);\n\n event.deltaMode = nativeEvent.deltaMode;\n event.deltaX = nativeEvent.deltaX;\n event.deltaY = nativeEvent.deltaY;\n event.deltaZ = nativeEvent.deltaZ;\n\n // 获取相对画布坐标\n const { x: canvasX, y: canvasY } = this.mapToCanvasPoint(nativeEvent);\n event.canvas.x = canvasX;\n event.canvas.y = canvasY;\n\n event.global.x = canvasX;\n event.global.y = canvasY;\n\n event.offset.x = canvasX;\n event.offset.y = canvasY;\n\n // 获取相对绘图区域(viewport)坐标\n const { x: viewX, y: viewY } = this.mapToViewportPoint(event);\n event.viewport.x = viewX;\n event.viewport.y = viewY;\n\n event.nativeEvent = nativeEvent;\n event.type = nativeEvent.type;\n\n return event;\n }\n\n /**\n * Normalizes the {@code nativeEvent} into a federateed {@code FederatedPointerEvent}.\n * @param event\n * @param nativeEvent\n */\n private bootstrapEvent(event: FederatedPointerEvent, nativeEvent: PointerEvent): FederatedPointerEvent {\n event.originalEvent = null;\n event.nativeEvent = nativeEvent;\n\n event.pointerId = nativeEvent.pointerId;\n event.width = nativeEvent.width;\n event.height = nativeEvent.height;\n event.isPrimary = nativeEvent.isPrimary;\n event.pointerType = nativeEvent.pointerType;\n event.pressure = nativeEvent.pressure;\n event.tangentialPressure = nativeEvent.tangentialPressure;\n event.tiltX = nativeEvent.tiltX;\n event.tiltY = nativeEvent.tiltY;\n event.twist = nativeEvent.twist;\n this.transferMouseData(event, nativeEvent);\n\n const { x: canvasX, y: canvasY } = this.mapToCanvasPoint(nativeEvent);\n event.canvas.x = canvasX;\n event.canvas.y = canvasY;\n\n event.global.x = canvasX;\n event.global.y = canvasY;\n\n event.offset.x = canvasX;\n event.offset.y = canvasY;\n\n // 获取相对绘图区域(viewport)坐标\n const { x: viewX, y: viewY } = this.mapToViewportPoint(event);\n event.viewport.x = viewX;\n event.viewport.y = viewY;\n\n event.isTrusted = nativeEvent.isTrusted;\n if (event.type === 'pointerleave') {\n event.type = 'pointerout';\n }\n if (event.type.startsWith('mouse')) {\n event.type = event.type.replace('mouse', 'pointer');\n }\n if (event.type.startsWith('touch')) {\n event.type = TOUCH_TO_POINTER[event.type] || event.type;\n }\n\n return event;\n }\n\n /**\n * Transfers base & mouse event data from the {@code nativeEvent} to the federated event.\n * @param event\n * @param nativeEvent\n */\n private transferMouseData(event: FederatedMouseEvent, nativeEvent: MouseEvent): void {\n event.isTrusted = nativeEvent.isTrusted;\n event.srcElement = nativeEvent.srcElement as IEventTarget;\n event.timeStamp = clock.now();\n event.type = nativeEvent.type;\n\n event.altKey = nativeEvent.altKey;\n event.button = nativeEvent.button;\n event.buttons = nativeEvent.buttons;\n event.client.x = nativeEvent.clientX;\n event.client.y = nativeEvent.clientY;\n event.ctrlKey = nativeEvent.ctrlKey;\n event.shiftKey = nativeEvent.shiftKey;\n event.metaKey = nativeEvent.metaKey;\n event.movement.x = nativeEvent.movementX;\n event.movement.y = nativeEvent.movementY;\n event.page.x = nativeEvent.pageX;\n event.page.y = nativeEvent.pageY;\n event.relatedTarget = null;\n }\n\n private isEventOutsideOfTargetElement(nativeEvent: NativeEvent) {\n let target = nativeEvent.target;\n\n if (nativeEvent.composedPath && nativeEvent.composedPath().length > 0) {\n target = nativeEvent.composedPath()[0];\n }\n\n const nativeElement = this.domElement.getNativeHandler\n ? this.domElement.getNativeHandler().nativeCanvas\n : this.domElement;\n\n return target !== nativeElement;\n }\n}\n\ninterface VRenderPointerEvent extends PointerEvent {\n isPrimary: boolean;\n width: number;\n height: number;\n tiltX: number;\n tiltY: number;\n pointerType: string;\n pointerId: number;\n pressure: number;\n twist: number;\n tangentialPressure: number;\n isNormalized: boolean;\n type: string;\n}\n\ninterface VRenderTouch extends Touch {\n button: number;\n buttons: number;\n isPrimary: boolean;\n width: number;\n height: number;\n tiltX: number;\n tiltY: number;\n pointerType: string;\n pointerId: number;\n pressure: number;\n twist: number;\n tangentialPressure: number;\n layerX: number;\n layerY: number;\n offsetX: number;\n offsetY: number;\n isNormalized: boolean;\n type: string;\n}\n"]}
1
+ {"version":3,"sources":["../src/event/event-system.ts"],"names":[],"mappings":"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","file":"event-system.js","sourcesContent":["import { isUndefined, has, isString } from '@visactor/vutils';\nimport type { IGlobal } from '../interface';\nimport { EventManager } from './event-manager';\nimport { FederatedPointerEvent, FederatedWheelEvent } from './federated-event';\nimport type { FederatedMouseEvent } from './federated-event/mouse-event';\nimport type { EventPoint, IElementLike, IEventTarget, NativeEvent, RenderConfig } from '../interface/event';\nimport { clock } from './util';\n\nconst MOUSE_POINTER_ID = 1;\nconst TOUCH_TO_POINTER: Record<string, string> = {\n touchstart: 'pointerdown',\n touchend: 'pointerup',\n touchendoutside: 'pointerupoutside',\n touchmove: 'pointermove',\n touchcancel: 'pointercancel'\n};\n\n/**\n * 代码参考自 https://github.com/pixijs/pixijs\n * The MIT License\n\n Copyright (c) 2013-2023 Mathew Groves, Chad Engler\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n */\n\n/**\n * The system for handling UI events.\n */\nexport class EventSystem {\n private readonly globalObj: IGlobal;\n readonly manager: EventManager;\n\n /** Does the device support touch events https://www.w3.org/TR/touch-events/ */\n // readonly supportsTouchEvents = 'ontouchstart' in this.globalObj;\n readonly supportsTouchEvents: boolean;\n\n /** Does the device support pointer events https://www.w3.org/Submission/pointer-events/ */\n // readonly supportsPointerEvents = !!this.globalObj.PointerEvent;\n readonly supportsPointerEvents: boolean;\n\n readonly supportsMouseEvents: boolean;\n\n readonly applyStyles: boolean;\n\n readonly viewport: RenderConfig['viewport'];\n\n /**\n * Should default browser actions automatically be prevented.\n * Does not apply to pointer events for backwards compatibility\n * preventDefault on pointer events stops mouse events from firing\n * Thus, for every pointer event, there will always be either a mouse of touch event alongside it.\n * @default false\n */\n autoPreventDefault: boolean;\n\n /**\n * Dictionary of how different cursor modes are handled. Strings are handled as CSS cursor\n * values, objects are handled as dictionaries of CSS values for domElement,\n * and functions are called instead of changing the CSS.\n * Default CSS cursor values are provided for 'default' and 'pointer' modes.\n * @member {Object<string, string | ((mode: string) => void) | CSSStyleDeclaration>}\n */\n cursorStyles: Record<string, string | ((mode: string) => void) | CSSStyleDeclaration>;\n\n /**\n * The DOM element to which the root event listeners are bound. This is automatically set to\n */\n domElement: IElementLike | null;\n\n /** The resolution used to convert between the DOM client space into world space. */\n resolution = 1;\n\n private currentCursor: string;\n private rootPointerEvent: FederatedPointerEvent;\n private rootWheelEvent: FederatedWheelEvent;\n private eventsAdded: boolean;\n\n constructor(params: RenderConfig) {\n const { targetElement, resolution, rootNode, global, viewport, autoPreventDefault = false, clickInterval } = params;\n this.manager = new EventManager(rootNode, {\n clickInterval\n });\n\n this.globalObj = global;\n this.supportsPointerEvents = global.supportsPointerEvents;\n this.supportsTouchEvents = global.supportsTouchEvents;\n this.supportsMouseEvents = global.supportsMouseEvents;\n this.applyStyles = global.applyStyles;\n\n this.autoPreventDefault = autoPreventDefault;\n this.eventsAdded = false;\n this.viewport = viewport;\n\n this.rootPointerEvent = new FederatedPointerEvent();\n this.rootWheelEvent = new FederatedWheelEvent();\n\n this.cursorStyles = {\n default: 'inherit',\n pointer: 'pointer'\n };\n\n this.resolution = resolution;\n this.setTargetElement(targetElement);\n }\n\n release(): void {\n this.setTargetElement(null);\n }\n\n setCursor(mode: string = 'default'): void {\n const { applyStyles, domElement } = this;\n\n if (this.currentCursor === mode) {\n return;\n }\n this.currentCursor = mode;\n const style = this.cursorStyles[mode];\n if (style) {\n if (typeof style === 'string' && applyStyles) {\n domElement.style.cursor = style;\n } else if (typeof style === 'function') {\n style(mode);\n } else if (typeof style === 'object' && applyStyles) {\n Object.assign(domElement.style, style);\n }\n } else if (applyStyles && isString(mode) && !has(this.cursorStyles, mode)) {\n domElement.style.cursor = mode;\n }\n }\n\n private onPointerDown = (nativeEvent: NativeEvent): void => {\n if (this.supportsTouchEvents && (nativeEvent as PointerEvent).pointerType === 'touch') {\n return;\n }\n\n const events = this.normalizeToPointerData(nativeEvent);\n\n if (this.autoPreventDefault && (events[0] as any).isNormalized) {\n const cancelable = nativeEvent.cancelable || !('cancelable' in nativeEvent);\n\n if (cancelable) {\n nativeEvent.preventDefault();\n }\n }\n\n for (let i = 0, j = events.length; i < j; i++) {\n const nativeEvent = events[i];\n const federatedEvent = this.bootstrapEvent(this.rootPointerEvent, nativeEvent);\n\n this.manager.mapEvent(federatedEvent);\n }\n\n this.setCursor(this.manager.cursor);\n };\n\n private onPointerMove = (nativeEvent: NativeEvent): void => {\n if (this.supportsTouchEvents && (nativeEvent as PointerEvent).pointerType === 'touch') {\n return;\n }\n\n if (this.isEventOutsideOfTargetElement(nativeEvent)) {\n return;\n }\n\n const normalizedEvents = this.normalizeToPointerData(nativeEvent);\n for (let i = 0, j = normalizedEvents.length; i < j; i++) {\n const event = this.bootstrapEvent(this.rootPointerEvent, normalizedEvents[i]);\n\n this.manager.mapEvent(event);\n }\n\n this.setCursor(this.manager.cursor);\n };\n\n private onPointerUp = (nativeEvent: NativeEvent): void => {\n if (this.supportsTouchEvents && (nativeEvent as PointerEvent).pointerType === 'touch') {\n return;\n }\n\n const outside = this.isEventOutsideOfTargetElement(nativeEvent) ? 'outside' : '';\n const normalizedEvents = this.normalizeToPointerData(nativeEvent);\n\n for (let i = 0, j = normalizedEvents.length; i < j; i++) {\n const event = this.bootstrapEvent(this.rootPointerEvent, normalizedEvents[i]);\n\n event.type += outside;\n\n this.manager.mapEvent(event);\n }\n\n this.setCursor(this.manager.cursor);\n };\n\n private onPointerOverOut = (nativeEvent: NativeEvent): void => {\n if (this.supportsTouchEvents && (nativeEvent as PointerEvent).pointerType === 'touch') {\n return;\n }\n\n const normalizedEvents = this.normalizeToPointerData(nativeEvent);\n\n for (let i = 0, j = normalizedEvents.length; i < j; i++) {\n const event = this.bootstrapEvent(this.rootPointerEvent, normalizedEvents[i]);\n\n this.manager.mapEvent(event);\n }\n\n this.setCursor(this.manager.cursor);\n };\n\n protected onWheel = (nativeEvent: WheelEvent): void => {\n const wheelEvent = this.normalizeWheelEvent(nativeEvent);\n\n this.manager.mapEvent(wheelEvent);\n };\n\n setTargetElement(element: IElementLike | null): void {\n this.removeEvents();\n this.domElement = element;\n this.addEvents();\n }\n\n private addEvents(): void {\n if (this.eventsAdded || !this.domElement) {\n return;\n }\n const { globalObj, domElement } = this;\n\n if (this.supportsPointerEvents) {\n if (globalObj.getDocument()) {\n globalObj.getDocument().addEventListener('pointermove', this.onPointerMove, true);\n globalObj.getDocument().addEventListener('pointerup', this.onPointerUp, true);\n } else {\n domElement.addEventListener('pointermove', this.onPointerMove, true);\n domElement.addEventListener('pointerup', this.onPointerUp, true);\n }\n domElement.addEventListener('pointerdown', this.onPointerDown, true);\n domElement.addEventListener('pointerleave', this.onPointerOverOut, true);\n domElement.addEventListener('pointerover', this.onPointerOverOut, true);\n } else {\n if (globalObj.getDocument()) {\n globalObj.getDocument().addEventListener('mousemove', this.onPointerMove, true);\n globalObj.getDocument().addEventListener('mouseup', this.onPointerUp, true);\n } else {\n domElement.addEventListener('mousemove', this.onPointerMove, true);\n domElement.addEventListener('mouseup', this.onPointerUp, true);\n }\n domElement.addEventListener('mousedown', this.onPointerDown, true);\n domElement.addEventListener('mouseout', this.onPointerOverOut, true);\n domElement.addEventListener('mouseover', this.onPointerOverOut, true);\n }\n\n if (this.supportsTouchEvents) {\n domElement.addEventListener('touchstart', this.onPointerDown, true);\n domElement.addEventListener('touchend', this.onPointerUp, true);\n domElement.addEventListener('touchmove', this.onPointerMove, true);\n }\n\n domElement.addEventListener('wheel', this.onWheel, {\n capture: true\n });\n\n this.eventsAdded = true;\n }\n\n private removeEvents(): void {\n if (!this.eventsAdded || !this.domElement) {\n return;\n }\n const { globalObj, domElement } = this;\n\n if (this.supportsPointerEvents) {\n if (globalObj.getDocument()) {\n globalObj.getDocument().removeEventListener('pointermove', this.onPointerMove, true);\n globalObj.getDocument().removeEventListener('pointerup', this.onPointerUp, true);\n } else {\n domElement.removeEventListener('pointermove', this.onPointerMove, true);\n domElement.removeEventListener('pointerup', this.onPointerUp, true);\n }\n domElement.removeEventListener('pointerdown', this.onPointerDown, true);\n domElement.removeEventListener('pointerleave', this.onPointerOverOut, true);\n domElement.removeEventListener('pointerover', this.onPointerOverOut, true);\n } else {\n if (globalObj.getDocument()) {\n globalObj.getDocument().removeEventListener('mousemove', this.onPointerMove, true);\n globalObj.getDocument().removeEventListener('mouseup', this.onPointerUp, true);\n } else {\n domElement.removeEventListener('mousemove', this.onPointerMove, true);\n domElement.removeEventListener('mouseup', this.onPointerUp, true);\n }\n domElement.removeEventListener('mousedown', this.onPointerDown, true);\n domElement.removeEventListener('mouseout', this.onPointerOverOut, true);\n domElement.removeEventListener('mouseover', this.onPointerOverOut, true);\n }\n\n if (this.supportsTouchEvents) {\n domElement.removeEventListener('touchstart', this.onPointerDown, true);\n domElement.removeEventListener('touchend', this.onPointerUp, true);\n domElement.removeEventListener('touchmove', this.onPointerMove, true);\n }\n\n domElement.removeEventListener('wheel', this.onWheel, true);\n\n this.domElement = null;\n this.eventsAdded = false;\n }\n\n private mapToViewportPoint(event: FederatedMouseEvent): EventPoint {\n const viewport = this.viewport;\n const { x, y } = event;\n return {\n x: x - viewport.x,\n y: y - viewport.y\n };\n }\n\n private mapToCanvasPoint(nativeEvent: PointerEvent | WheelEvent): EventPoint {\n const point = this.globalObj?.mapToCanvasPoint(nativeEvent, this.domElement);\n\n if (point) {\n return point;\n }\n\n const { clientX: x, clientY: y } = nativeEvent;\n const rect = this.domElement.getBoundingClientRect();\n return {\n x: x - rect.left,\n y: y - rect.top\n };\n }\n\n private normalizeToPointerData(event: TouchEvent | MouseEvent | PointerEvent): PointerEvent[] {\n const normalizedEvents = [];\n\n if (\n this.supportsTouchEvents &&\n (event as TouchEvent).changedTouches &&\n (event as TouchEvent).changedTouches.length\n ) {\n for (let i = 0, li = (event as TouchEvent).changedTouches.length; i < li; i++) {\n const touch = (event as TouchEvent).changedTouches[i] as VRenderTouch;\n\n if (isUndefined(touch.button)) {\n touch.button = 0;\n }\n if (isUndefined(touch.buttons)) {\n touch.buttons = 1;\n }\n if (isUndefined(touch.isPrimary)) {\n touch.isPrimary = (event as TouchEvent).touches.length === 1 && event.type === 'touchstart';\n }\n if (isUndefined(touch.width)) {\n touch.width = touch.radiusX || 1;\n }\n if (isUndefined(touch.height)) {\n touch.height = touch.radiusY || 1;\n }\n if (isUndefined(touch.tiltX)) {\n touch.tiltX = 0;\n }\n if (isUndefined(touch.tiltY)) {\n touch.tiltY = 0;\n }\n if (isUndefined(touch.pointerType)) {\n touch.pointerType = 'touch';\n }\n if (isUndefined(touch.pointerId)) {\n touch.pointerId = touch.identifier || 0;\n }\n if (isUndefined(touch.pressure)) {\n touch.pressure = touch.force || 0.5;\n }\n if (isUndefined(touch.twist)) {\n touch.twist = 0;\n }\n if (isUndefined(touch.tangentialPressure)) {\n touch.tangentialPressure = 0;\n }\n if (isUndefined(touch.layerX)) {\n touch.layerX = touch.offsetX = touch.clientX;\n }\n if (isUndefined(touch.layerY)) {\n touch.layerY = touch.offsetY = touch.clientY;\n }\n\n touch.isNormalized = true;\n touch.type = event.type;\n\n normalizedEvents.push(touch);\n }\n } else if (\n !this.globalObj.supportsMouseEvents ||\n (event instanceof MouseEvent && (!this.supportsPointerEvents || !(event instanceof PointerEvent)))\n ) {\n const tempEvent = event as VRenderPointerEvent;\n\n if (isUndefined(tempEvent.isPrimary)) {\n tempEvent.isPrimary = true;\n }\n if (isUndefined(tempEvent.width)) {\n tempEvent.width = 1;\n }\n if (isUndefined(tempEvent.height)) {\n tempEvent.height = 1;\n }\n if (isUndefined(tempEvent.tiltX)) {\n tempEvent.tiltX = 0;\n }\n if (isUndefined(tempEvent.tiltY)) {\n tempEvent.tiltY = 0;\n }\n if (isUndefined(tempEvent.pointerType)) {\n tempEvent.pointerType = 'mouse';\n }\n if (isUndefined(tempEvent.pointerId)) {\n tempEvent.pointerId = MOUSE_POINTER_ID;\n }\n if (isUndefined(tempEvent.pressure)) {\n tempEvent.pressure = 0.5;\n }\n if (isUndefined(tempEvent.twist)) {\n tempEvent.twist = 0;\n }\n if (isUndefined(tempEvent.tangentialPressure)) {\n tempEvent.tangentialPressure = 0;\n }\n\n tempEvent.isNormalized = true;\n\n normalizedEvents.push(tempEvent);\n } else {\n normalizedEvents.push(event);\n }\n\n return normalizedEvents as PointerEvent[];\n }\n\n protected normalizeWheelEvent(nativeEvent: WheelEvent): FederatedWheelEvent {\n const event = this.rootWheelEvent;\n\n this.transferMouseData(event, nativeEvent);\n\n event.deltaMode = nativeEvent.deltaMode;\n event.deltaX = nativeEvent.deltaX;\n event.deltaY = nativeEvent.deltaY;\n event.deltaZ = nativeEvent.deltaZ;\n\n // 获取相对画布坐标\n const { x: canvasX, y: canvasY } = this.mapToCanvasPoint(nativeEvent);\n event.canvas.x = canvasX;\n event.canvas.y = canvasY;\n\n event.global.x = canvasX;\n event.global.y = canvasY;\n\n event.offset.x = canvasX;\n event.offset.y = canvasY;\n\n // 获取相对绘图区域(viewport)坐标\n const { x: viewX, y: viewY } = this.mapToViewportPoint(event);\n event.viewport.x = viewX;\n event.viewport.y = viewY;\n\n event.nativeEvent = nativeEvent;\n event.type = nativeEvent.type;\n\n return event;\n }\n\n /**\n * Normalizes the {@code nativeEvent} into a federateed {@code FederatedPointerEvent}.\n * @param event\n * @param nativeEvent\n */\n private bootstrapEvent(event: FederatedPointerEvent, nativeEvent: PointerEvent): FederatedPointerEvent {\n event.originalEvent = null;\n event.nativeEvent = nativeEvent;\n\n event.pointerId = nativeEvent.pointerId;\n event.width = nativeEvent.width;\n event.height = nativeEvent.height;\n event.isPrimary = nativeEvent.isPrimary;\n event.pointerType = nativeEvent.pointerType;\n event.pressure = nativeEvent.pressure;\n event.tangentialPressure = nativeEvent.tangentialPressure;\n event.tiltX = nativeEvent.tiltX;\n event.tiltY = nativeEvent.tiltY;\n event.twist = nativeEvent.twist;\n this.transferMouseData(event, nativeEvent);\n\n const { x: canvasX, y: canvasY } = this.mapToCanvasPoint(nativeEvent);\n event.canvas.x = canvasX;\n event.canvas.y = canvasY;\n\n event.global.x = canvasX;\n event.global.y = canvasY;\n\n event.offset.x = canvasX;\n event.offset.y = canvasY;\n\n // 获取相对绘图区域(viewport)坐标\n const { x: viewX, y: viewY } = this.mapToViewportPoint(event);\n event.viewport.x = viewX;\n event.viewport.y = viewY;\n\n event.isTrusted = nativeEvent.isTrusted;\n if (event.type === 'pointerleave') {\n event.type = 'pointerout';\n }\n if (event.type.startsWith('mouse')) {\n event.type = event.type.replace('mouse', 'pointer');\n }\n if (event.type.startsWith('touch')) {\n event.type = TOUCH_TO_POINTER[event.type] || event.type;\n }\n\n return event;\n }\n\n /**\n * Transfers base & mouse event data from the {@code nativeEvent} to the federated event.\n * @param event\n * @param nativeEvent\n */\n private transferMouseData(event: FederatedMouseEvent, nativeEvent: MouseEvent): void {\n event.isTrusted = nativeEvent.isTrusted;\n event.srcElement = nativeEvent.srcElement as IEventTarget;\n event.timeStamp = clock.now();\n event.type = nativeEvent.type;\n\n event.altKey = nativeEvent.altKey;\n event.button = nativeEvent.button;\n event.buttons = nativeEvent.buttons;\n event.client.x = nativeEvent.clientX;\n event.client.y = nativeEvent.clientY;\n event.ctrlKey = nativeEvent.ctrlKey;\n event.shiftKey = nativeEvent.shiftKey;\n event.metaKey = nativeEvent.metaKey;\n event.movement.x = nativeEvent.movementX;\n event.movement.y = nativeEvent.movementY;\n event.page.x = nativeEvent.pageX;\n event.page.y = nativeEvent.pageY;\n event.relatedTarget = null;\n }\n\n private isEventOutsideOfTargetElement(nativeEvent: NativeEvent) {\n let target = nativeEvent.target;\n\n if (nativeEvent.composedPath && nativeEvent.composedPath().length > 0) {\n target = nativeEvent.composedPath()[0];\n }\n\n const nativeElement = this.domElement.getNativeHandler\n ? this.domElement.getNativeHandler().nativeCanvas\n : this.domElement;\n\n return target !== nativeElement;\n }\n}\n\ninterface VRenderPointerEvent extends PointerEvent {\n isPrimary: boolean;\n width: number;\n height: number;\n tiltX: number;\n tiltY: number;\n pointerType: string;\n pointerId: number;\n pressure: number;\n twist: number;\n tangentialPressure: number;\n isNormalized: boolean;\n type: string;\n}\n\ninterface VRenderTouch extends Touch {\n button: number;\n buttons: number;\n isPrimary: boolean;\n width: number;\n height: number;\n tiltX: number;\n tiltY: number;\n pointerType: string;\n pointerId: number;\n pressure: number;\n twist: number;\n tangentialPressure: number;\n layerX: number;\n layerY: number;\n offsetX: number;\n offsetY: number;\n isNormalized: boolean;\n type: string;\n}\n"]}
package/dist/index.js CHANGED
@@ -5598,7 +5598,6 @@
5598
5598
  class EventManager {
5599
5599
  constructor(root, config) {
5600
5600
  this.dispatch = new vutils.EventEmitter();
5601
- this.cursorTarget = null;
5602
5601
  this.mappingState = {
5603
5602
  trackingData: {}
5604
5603
  };
@@ -5690,7 +5689,6 @@
5690
5689
  }
5691
5690
  if (isMouse) {
5692
5691
  this[propagationMethod](e, 'mousemove');
5693
- this.cursorTarget = e.target;
5694
5692
  this.cursor = ((_b = (_a = e.target) === null || _a === void 0 ? void 0 : _a.attribute) === null || _b === void 0 ? void 0 : _b.cursor) || this.rootTarget.getCursor();
5695
5693
  }
5696
5694
  trackingData.overTargets = e.composedPath();
@@ -5710,7 +5708,6 @@
5710
5708
  this.dispatchEvent(e, 'mouseover');
5711
5709
  }
5712
5710
  if (e.pointerType === 'mouse') {
5713
- this.cursorTarget = e.target;
5714
5711
  this.cursor = ((_b = (_a = e.target) === null || _a === void 0 ? void 0 : _a.attribute) === null || _b === void 0 ? void 0 : _b.cursor) || this.rootTarget.getCursor();
5715
5712
  }
5716
5713
  const enterEvent = this.clonePointerEvent(e, 'pointerenter');
@@ -5755,7 +5752,6 @@
5755
5752
  this.freeEvent(outEvent);
5756
5753
  this.freeEvent(leaveEvent);
5757
5754
  }
5758
- this.cursorTarget = null;
5759
5755
  this.cursor = '';
5760
5756
  };
5761
5757
  this.onPointerUp = (from, target) => {
@@ -6157,7 +6153,7 @@
6157
6153
  else if (pickResult && pickResult.group) {
6158
6154
  target = pickResult.group;
6159
6155
  }
6160
- else if (this.rootTarget.AABBBounds.contains(x, y)) {
6156
+ else if (x >= 0 && x <= vutils.get(this.rootTarget, 'width') && y >= 0 && y <= vutils.get(this.rootTarget, 'height')) {
6161
6157
  target = this.rootTarget;
6162
6158
  }
6163
6159
  else {
@@ -6216,7 +6212,7 @@
6216
6212
  const federatedEvent = this.bootstrapEvent(this.rootPointerEvent, nativeEvent);
6217
6213
  this.manager.mapEvent(federatedEvent);
6218
6214
  }
6219
- this.setCursor(this.manager.cursor, this.manager.cursorTarget);
6215
+ this.setCursor(this.manager.cursor);
6220
6216
  };
6221
6217
  this.onPointerMove = (nativeEvent) => {
6222
6218
  if (this.supportsTouchEvents && nativeEvent.pointerType === 'touch') {
@@ -6230,7 +6226,7 @@
6230
6226
  const event = this.bootstrapEvent(this.rootPointerEvent, normalizedEvents[i]);
6231
6227
  this.manager.mapEvent(event);
6232
6228
  }
6233
- this.setCursor(this.manager.cursor, this.manager.cursorTarget);
6229
+ this.setCursor(this.manager.cursor);
6234
6230
  };
6235
6231
  this.onPointerUp = (nativeEvent) => {
6236
6232
  if (this.supportsTouchEvents && nativeEvent.pointerType === 'touch') {
@@ -6243,7 +6239,7 @@
6243
6239
  event.type += outside;
6244
6240
  this.manager.mapEvent(event);
6245
6241
  }
6246
- this.setCursor(this.manager.cursor, this.manager.cursorTarget);
6242
+ this.setCursor(this.manager.cursor);
6247
6243
  };
6248
6244
  this.onPointerOverOut = (nativeEvent) => {
6249
6245
  if (this.supportsTouchEvents && nativeEvent.pointerType === 'touch') {
@@ -6254,7 +6250,7 @@
6254
6250
  const event = this.bootstrapEvent(this.rootPointerEvent, normalizedEvents[i]);
6255
6251
  this.manager.mapEvent(event);
6256
6252
  }
6257
- this.setCursor(this.manager.cursor, this.manager.cursorTarget);
6253
+ this.setCursor(this.manager.cursor);
6258
6254
  };
6259
6255
  this.onWheel = (nativeEvent) => {
6260
6256
  const wheelEvent = this.normalizeWheelEvent(nativeEvent);
@@ -6284,13 +6280,7 @@
6284
6280
  release() {
6285
6281
  this.setTargetElement(null);
6286
6282
  }
6287
- setCursor(mode, target) {
6288
- if (!target && !this.manager.rootTarget.window._handler.canvas.controled) {
6289
- return;
6290
- }
6291
- if (!mode) {
6292
- mode = 'default';
6293
- }
6283
+ setCursor(mode = 'default') {
6294
6284
  const { applyStyles, domElement } = this;
6295
6285
  if (this.currentCursor === mode) {
6296
6286
  return;
@@ -25320,7 +25310,7 @@
25320
25310
  }
25321
25311
  setCursor(mode) {
25322
25312
  this._cursor = mode;
25323
- this.eventSystem.setCursor(mode, 'ignore');
25313
+ this.eventSystem.setCursor(mode);
25324
25314
  }
25325
25315
  getCursor() {
25326
25316
  return this._cursor;