262 lines
15 KiB
JavaScript
262 lines
15 KiB
JavaScript
shadow$provide.module$node_modules$pixi_DOT_js$lib$events$EventSystem = function(global, require, module, exports) {
|
|
global = require("module$node_modules$pixi_DOT_js$lib$extensions$Extensions");
|
|
var EventBoundary = require("module$node_modules$pixi_DOT_js$lib$events$EventBoundary"), EventTicker = require("module$node_modules$pixi_DOT_js$lib$events$EventTicker"), FederatedPointerEvent = require("module$node_modules$pixi_DOT_js$lib$events$FederatedPointerEvent"), FederatedWheelEvent = require("module$node_modules$pixi_DOT_js$lib$events$FederatedWheelEvent");
|
|
"use strict";
|
|
const TOUCH_TO_POINTER = {touchstart:"pointerdown", touchend:"pointerup", touchendoutside:"pointerupoutside", touchmove:"pointermove", touchcancel:"pointercancel"}, node_modules$pixi_DOT_js$lib$events$EventSystem$classdecl$var5 = class {
|
|
constructor(renderer) {
|
|
this.supportsTouchEvents = "ontouchstart" in globalThis;
|
|
this.supportsPointerEvents = !!globalThis.PointerEvent;
|
|
this.domElement = null;
|
|
this.resolution = 1;
|
|
this.renderer = renderer;
|
|
this.rootBoundary = new EventBoundary.EventBoundary(null);
|
|
EventTicker.EventsTicker.init(this);
|
|
this.autoPreventDefault = !0;
|
|
this._eventsAdded = !1;
|
|
this._rootPointerEvent = new FederatedPointerEvent.FederatedPointerEvent(null);
|
|
this._rootWheelEvent = new FederatedWheelEvent.FederatedWheelEvent(null);
|
|
this.cursorStyles = {default:"inherit", pointer:"pointer"};
|
|
this.features = new Proxy({...node_modules$pixi_DOT_js$lib$events$EventSystem$classdecl$var5.defaultEventFeatures}, {set:(target, key, value) => {
|
|
"globalMove" === key && (this.rootBoundary.enableGlobalMoveEvents = value);
|
|
target[key] = value;
|
|
return !0;
|
|
}});
|
|
this._onPointerDown = this._onPointerDown.bind(this);
|
|
this._onPointerMove = this._onPointerMove.bind(this);
|
|
this._onPointerUp = this._onPointerUp.bind(this);
|
|
this._onPointerOverOut = this._onPointerOverOut.bind(this);
|
|
this.onWheel = this.onWheel.bind(this);
|
|
}
|
|
static get defaultEventMode() {
|
|
return this._defaultEventMode;
|
|
}
|
|
init(options) {
|
|
const {canvas, resolution} = this.renderer;
|
|
this.setTargetElement(canvas);
|
|
this.resolution = resolution;
|
|
node_modules$pixi_DOT_js$lib$events$EventSystem$classdecl$var5._defaultEventMode = options.eventMode ?? "passive";
|
|
Object.assign(this.features, options.eventFeatures ?? {});
|
|
this.rootBoundary.enableGlobalMoveEvents = this.features.globalMove;
|
|
}
|
|
resolutionChange(resolution) {
|
|
this.resolution = resolution;
|
|
}
|
|
destroy() {
|
|
EventTicker.EventsTicker.destroy();
|
|
this.setTargetElement(null);
|
|
this._currentCursor = this.renderer = null;
|
|
}
|
|
setCursor(mode) {
|
|
mode || (mode = "default");
|
|
let applyStyles = !0;
|
|
globalThis.OffscreenCanvas && this.domElement instanceof OffscreenCanvas && (applyStyles = !1);
|
|
if (this._currentCursor !== mode) {
|
|
this._currentCursor = mode;
|
|
var style = this.cursorStyles[mode];
|
|
if (style) {
|
|
switch(typeof style) {
|
|
case "string":
|
|
applyStyles && (this.domElement.style.cursor = style);
|
|
break;
|
|
case "function":
|
|
style(mode);
|
|
break;
|
|
case "object":
|
|
applyStyles && Object.assign(this.domElement.style, style);
|
|
}
|
|
} else {
|
|
applyStyles && "string" === typeof mode && !Object.prototype.hasOwnProperty.call(this.cursorStyles, mode) && (this.domElement.style.cursor = mode);
|
|
}
|
|
}
|
|
}
|
|
get pointer() {
|
|
return this._rootPointerEvent;
|
|
}
|
|
_onPointerDown(nativeEvent) {
|
|
if (this.features.click) {
|
|
this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;
|
|
var events = this._normalizeToPointerData(nativeEvent);
|
|
this.autoPreventDefault && events[0].isNormalized && (!nativeEvent.cancelable && "cancelable" in nativeEvent || nativeEvent.preventDefault());
|
|
for (let i = 0, j = events.length; i < j; i++) {
|
|
nativeEvent = this._bootstrapEvent(this._rootPointerEvent, events[i]), this.rootBoundary.mapEvent(nativeEvent);
|
|
}
|
|
this.setCursor(this.rootBoundary.cursor);
|
|
}
|
|
}
|
|
_onPointerMove(nativeEvent) {
|
|
if (this.features.move) {
|
|
this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;
|
|
EventTicker.EventsTicker.pointerMoved();
|
|
nativeEvent = this._normalizeToPointerData(nativeEvent);
|
|
for (let i = 0, j = nativeEvent.length; i < j; i++) {
|
|
const event = this._bootstrapEvent(this._rootPointerEvent, nativeEvent[i]);
|
|
this.rootBoundary.mapEvent(event);
|
|
}
|
|
this.setCursor(this.rootBoundary.cursor);
|
|
}
|
|
}
|
|
_onPointerUp(nativeEvent) {
|
|
if (this.features.click) {
|
|
this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;
|
|
var target = nativeEvent.target;
|
|
nativeEvent.composedPath && 0 < nativeEvent.composedPath().length && (target = nativeEvent.composedPath()[0]);
|
|
target = target !== this.domElement ? "outside" : "";
|
|
nativeEvent = this._normalizeToPointerData(nativeEvent);
|
|
for (let i = 0, j = nativeEvent.length; i < j; i++) {
|
|
const event = this._bootstrapEvent(this._rootPointerEvent, nativeEvent[i]);
|
|
event.type += target;
|
|
this.rootBoundary.mapEvent(event);
|
|
}
|
|
this.setCursor(this.rootBoundary.cursor);
|
|
}
|
|
}
|
|
_onPointerOverOut(nativeEvent) {
|
|
if (this.features.click) {
|
|
this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;
|
|
nativeEvent = this._normalizeToPointerData(nativeEvent);
|
|
for (let i = 0, j = nativeEvent.length; i < j; i++) {
|
|
const event = this._bootstrapEvent(this._rootPointerEvent, nativeEvent[i]);
|
|
this.rootBoundary.mapEvent(event);
|
|
}
|
|
this.setCursor(this.rootBoundary.cursor);
|
|
}
|
|
}
|
|
onWheel(nativeEvent) {
|
|
this.features.wheel && (nativeEvent = this.normalizeWheelEvent(nativeEvent), this.rootBoundary.rootTarget = this.renderer.lastObjectRendered, this.rootBoundary.mapEvent(nativeEvent));
|
|
}
|
|
setTargetElement(element) {
|
|
this._removeEvents();
|
|
this.domElement = element;
|
|
EventTicker.EventsTicker.domElement = element;
|
|
this._addEvents();
|
|
}
|
|
_addEvents() {
|
|
if (!this._eventsAdded && this.domElement) {
|
|
EventTicker.EventsTicker.addTickerListener();
|
|
var style = this.domElement.style;
|
|
style && (globalThis.navigator.msPointerEnabled ? (style.msContentZooming = "none", style.msTouchAction = "none") : this.supportsPointerEvents && (style.touchAction = "none"));
|
|
this.supportsPointerEvents ? (globalThis.document.addEventListener("pointermove", this._onPointerMove, !0), this.domElement.addEventListener("pointerdown", this._onPointerDown, !0), this.domElement.addEventListener("pointerleave", this._onPointerOverOut, !0), this.domElement.addEventListener("pointerover", this._onPointerOverOut, !0), globalThis.addEventListener("pointerup", this._onPointerUp, !0)) : (globalThis.document.addEventListener("mousemove", this._onPointerMove, !0), this.domElement.addEventListener("mousedown",
|
|
this._onPointerDown, !0), this.domElement.addEventListener("mouseout", this._onPointerOverOut, !0), this.domElement.addEventListener("mouseover", this._onPointerOverOut, !0), globalThis.addEventListener("mouseup", this._onPointerUp, !0), this.supportsTouchEvents && (this.domElement.addEventListener("touchstart", this._onPointerDown, !0), this.domElement.addEventListener("touchend", this._onPointerUp, !0), this.domElement.addEventListener("touchmove", this._onPointerMove, !0)));
|
|
this.domElement.addEventListener("wheel", this.onWheel, {passive:!0, capture:!0});
|
|
this._eventsAdded = !0;
|
|
}
|
|
}
|
|
_removeEvents() {
|
|
if (this._eventsAdded && this.domElement) {
|
|
EventTicker.EventsTicker.removeTickerListener();
|
|
var style = this.domElement.style;
|
|
style && (globalThis.navigator.msPointerEnabled ? (style.msContentZooming = "", style.msTouchAction = "") : this.supportsPointerEvents && (style.touchAction = ""));
|
|
this.supportsPointerEvents ? (globalThis.document.removeEventListener("pointermove", this._onPointerMove, !0), this.domElement.removeEventListener("pointerdown", this._onPointerDown, !0), this.domElement.removeEventListener("pointerleave", this._onPointerOverOut, !0), this.domElement.removeEventListener("pointerover", this._onPointerOverOut, !0), globalThis.removeEventListener("pointerup", this._onPointerUp, !0)) : (globalThis.document.removeEventListener("mousemove", this._onPointerMove,
|
|
!0), this.domElement.removeEventListener("mousedown", this._onPointerDown, !0), this.domElement.removeEventListener("mouseout", this._onPointerOverOut, !0), this.domElement.removeEventListener("mouseover", this._onPointerOverOut, !0), globalThis.removeEventListener("mouseup", this._onPointerUp, !0), this.supportsTouchEvents && (this.domElement.removeEventListener("touchstart", this._onPointerDown, !0), this.domElement.removeEventListener("touchend", this._onPointerUp, !0), this.domElement.removeEventListener("touchmove",
|
|
this._onPointerMove, !0)));
|
|
this.domElement.removeEventListener("wheel", this.onWheel, !0);
|
|
this.domElement = null;
|
|
this._eventsAdded = !1;
|
|
}
|
|
}
|
|
mapPositionToPoint(point, x, y) {
|
|
const rect = this.domElement.isConnected ? this.domElement.getBoundingClientRect() : {x:0, y:0, width:this.domElement.width, height:this.domElement.height, left:0, top:0}, resolutionMultiplier = 1 / this.resolution;
|
|
point.x = this.domElement.width / rect.width * (x - rect.left) * resolutionMultiplier;
|
|
point.y = this.domElement.height / rect.height * (y - rect.top) * resolutionMultiplier;
|
|
}
|
|
_normalizeToPointerData(event) {
|
|
const normalizedEvents = [];
|
|
if (this.supportsTouchEvents && event instanceof TouchEvent) {
|
|
for (let i = 0, li = event.changedTouches.length; i < li; i++) {
|
|
const touch = event.changedTouches[i];
|
|
"undefined" === typeof touch.button && (touch.button = 0);
|
|
"undefined" === typeof touch.buttons && (touch.buttons = 1);
|
|
"undefined" === typeof touch.isPrimary && (touch.isPrimary = 1 === event.touches.length && "touchstart" === event.type);
|
|
"undefined" === typeof touch.width && (touch.width = touch.radiusX || 1);
|
|
"undefined" === typeof touch.height && (touch.height = touch.radiusY || 1);
|
|
"undefined" === typeof touch.tiltX && (touch.tiltX = 0);
|
|
"undefined" === typeof touch.tiltY && (touch.tiltY = 0);
|
|
"undefined" === typeof touch.pointerType && (touch.pointerType = "touch");
|
|
"undefined" === typeof touch.pointerId && (touch.pointerId = touch.identifier || 0);
|
|
"undefined" === typeof touch.pressure && (touch.pressure = touch.force || 0.5);
|
|
"undefined" === typeof touch.twist && (touch.twist = 0);
|
|
"undefined" === typeof touch.tangentialPressure && (touch.tangentialPressure = 0);
|
|
"undefined" === typeof touch.layerX && (touch.layerX = touch.offsetX = touch.clientX);
|
|
"undefined" === typeof touch.layerY && (touch.layerY = touch.offsetY = touch.clientY);
|
|
touch.isNormalized = !0;
|
|
touch.type = event.type;
|
|
touch.altKey ?? (touch.altKey = event.altKey);
|
|
touch.ctrlKey ?? (touch.ctrlKey = event.ctrlKey);
|
|
touch.metaKey ?? (touch.metaKey = event.metaKey);
|
|
touch.shiftKey ?? (touch.shiftKey = event.shiftKey);
|
|
normalizedEvents.push(touch);
|
|
}
|
|
} else {
|
|
if (!globalThis.MouseEvent || event instanceof MouseEvent && !(this.supportsPointerEvents && event instanceof globalThis.PointerEvent)) {
|
|
"undefined" === typeof event.isPrimary && (event.isPrimary = !0), "undefined" === typeof event.width && (event.width = 1), "undefined" === typeof event.height && (event.height = 1), "undefined" === typeof event.tiltX && (event.tiltX = 0), "undefined" === typeof event.tiltY && (event.tiltY = 0), "undefined" === typeof event.pointerType && (event.pointerType = "mouse"), "undefined" === typeof event.pointerId && (event.pointerId = 1), "undefined" === typeof event.pressure && (event.pressure =
|
|
0.5), "undefined" === typeof event.twist && (event.twist = 0), "undefined" === typeof event.tangentialPressure && (event.tangentialPressure = 0), event.isNormalized = !0;
|
|
}
|
|
normalizedEvents.push(event);
|
|
}
|
|
return normalizedEvents;
|
|
}
|
|
normalizeWheelEvent(nativeEvent) {
|
|
const event = this._rootWheelEvent;
|
|
this._transferMouseData(event, nativeEvent);
|
|
event.deltaX = nativeEvent.deltaX;
|
|
event.deltaY = nativeEvent.deltaY;
|
|
event.deltaZ = nativeEvent.deltaZ;
|
|
event.deltaMode = nativeEvent.deltaMode;
|
|
this.mapPositionToPoint(event.screen, nativeEvent.clientX, nativeEvent.clientY);
|
|
event.global.copyFrom(event.screen);
|
|
event.offset.copyFrom(event.screen);
|
|
event.nativeEvent = nativeEvent;
|
|
event.type = nativeEvent.type;
|
|
return event;
|
|
}
|
|
_bootstrapEvent(event, nativeEvent) {
|
|
event.originalEvent = null;
|
|
event.nativeEvent = nativeEvent;
|
|
event.pointerId = nativeEvent.pointerId;
|
|
event.width = nativeEvent.width;
|
|
event.height = nativeEvent.height;
|
|
event.isPrimary = nativeEvent.isPrimary;
|
|
event.pointerType = nativeEvent.pointerType;
|
|
event.pressure = nativeEvent.pressure;
|
|
event.tangentialPressure = nativeEvent.tangentialPressure;
|
|
event.tiltX = nativeEvent.tiltX;
|
|
event.tiltY = nativeEvent.tiltY;
|
|
event.twist = nativeEvent.twist;
|
|
this._transferMouseData(event, nativeEvent);
|
|
this.mapPositionToPoint(event.screen, nativeEvent.clientX, nativeEvent.clientY);
|
|
event.global.copyFrom(event.screen);
|
|
event.offset.copyFrom(event.screen);
|
|
event.isTrusted = nativeEvent.isTrusted;
|
|
"pointerleave" === event.type && (event.type = "pointerout");
|
|
event.type.startsWith("mouse") && (event.type = event.type.replace("mouse", "pointer"));
|
|
event.type.startsWith("touch") && (event.type = TOUCH_TO_POINTER[event.type] || event.type);
|
|
return event;
|
|
}
|
|
_transferMouseData(event, nativeEvent) {
|
|
event.isTrusted = nativeEvent.isTrusted;
|
|
event.srcElement = nativeEvent.srcElement;
|
|
event.timeStamp = performance.now();
|
|
event.type = nativeEvent.type;
|
|
event.altKey = nativeEvent.altKey;
|
|
event.button = nativeEvent.button;
|
|
event.buttons = nativeEvent.buttons;
|
|
event.client.x = nativeEvent.clientX;
|
|
event.client.y = nativeEvent.clientY;
|
|
event.ctrlKey = nativeEvent.ctrlKey;
|
|
event.metaKey = nativeEvent.metaKey;
|
|
event.movement.x = nativeEvent.movementX;
|
|
event.movement.y = nativeEvent.movementY;
|
|
event.page.x = nativeEvent.pageX;
|
|
event.page.y = nativeEvent.pageY;
|
|
event.relatedTarget = null;
|
|
event.shiftKey = nativeEvent.shiftKey;
|
|
}
|
|
};
|
|
require = node_modules$pixi_DOT_js$lib$events$EventSystem$classdecl$var5;
|
|
require.extension = {name:"events", type:[global.ExtensionType.WebGLSystem, global.ExtensionType.CanvasSystem, global.ExtensionType.WebGPUSystem], priority:-1};
|
|
require.defaultEventFeatures = {move:!0, globalMove:!0, click:!0, wheel:!0};
|
|
exports.EventSystem = require;
|
|
};
|
|
|
|
//# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$events$EventSystem.js.map
|