@midscene/playground 1.0.1-beta-20251217082334.0 → 1.0.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.
Files changed (59) hide show
  1. package/dist/es/adapters/local-execution.mjs +5 -1
  2. package/dist/es/adapters/local-execution.mjs.map +1 -1
  3. package/dist/es/adapters/remote-execution.mjs +4 -1
  4. package/dist/es/adapters/remote-execution.mjs.map +1 -1
  5. package/dist/es/sdk/index.mjs +10 -0
  6. package/dist/es/sdk/index.mjs.map +1 -1
  7. package/dist/lib/adapters/local-execution.js +5 -1
  8. package/dist/lib/adapters/local-execution.js.map +1 -1
  9. package/dist/lib/adapters/remote-execution.js +4 -1
  10. package/dist/lib/adapters/remote-execution.js.map +1 -1
  11. package/dist/lib/sdk/index.js +10 -0
  12. package/dist/lib/sdk/index.js.map +1 -1
  13. package/dist/types/adapters/local-execution.d.ts +2 -0
  14. package/dist/types/adapters/remote-execution.d.ts +2 -0
  15. package/dist/types/sdk/index.d.ts +4 -0
  16. package/package.json +3 -3
  17. package/static/index.html +1 -1
  18. package/static/static/css/index.d32b7df9.css +2 -0
  19. package/static/static/css/index.d32b7df9.css.map +1 -0
  20. package/static/static/js/79.25af61dc.js +611 -0
  21. package/static/static/js/{79.2e552a95.js.map → 79.25af61dc.js.map} +1 -1
  22. package/static/static/js/async/195.0366f6e8.js +3 -0
  23. package/static/static/js/async/{195.6b544830.js.map → 195.0366f6e8.js.map} +1 -1
  24. package/static/static/js/async/{199.30b3461a.js → 199.f31e52e7.js} +11 -11
  25. package/static/static/js/async/{199.30b3461a.js.map → 199.f31e52e7.js.map} +1 -1
  26. package/static/static/js/async/{221.d7bad1ad.js → 221.591b048e.js} +3 -3
  27. package/static/static/js/async/{221.d7bad1ad.js.map → 221.591b048e.js.map} +1 -1
  28. package/static/static/js/async/271.15d46ff8.js +30 -0
  29. package/static/static/js/async/{271.8c3746e1.js.map → 271.15d46ff8.js.map} +1 -1
  30. package/static/static/js/async/35.2b64fb0f.js +1 -0
  31. package/static/static/js/async/{467.b56c3730.js → 467.710fa05a.js} +1 -1
  32. package/static/static/js/async/652.b5a7c7b4.js +3 -0
  33. package/static/static/js/async/{652.7a830db9.js.map → 652.b5a7c7b4.js.map} +1 -1
  34. package/static/static/js/async/856.be9fd814.js +158 -0
  35. package/static/static/js/async/{856.0d869a94.js.map → 856.be9fd814.js.map} +1 -1
  36. package/static/static/js/async/860.b56301d9.js +2 -0
  37. package/static/static/js/async/{860.1bcb36d0.js.map → 860.b56301d9.js.map} +1 -1
  38. package/static/static/js/async/990.82a78a53.js +26 -0
  39. package/static/static/js/async/{990.27e22d92.js.map → 990.82a78a53.js.map} +1 -1
  40. package/static/static/js/index.ac2feba9.js +10 -0
  41. package/static/static/js/index.ac2feba9.js.map +1 -0
  42. package/static/static/js/lib-react.7b1abe58.js +3 -0
  43. package/static/static/js/{lib-react.bc3a3965.js.map → lib-react.7b1abe58.js.map} +1 -1
  44. package/static/static/css/index.a2591d9c.css +0 -2
  45. package/static/static/css/index.a2591d9c.css.map +0 -1
  46. package/static/static/js/79.2e552a95.js +0 -611
  47. package/static/static/js/async/195.6b544830.js +0 -3
  48. package/static/static/js/async/271.8c3746e1.js +0 -30
  49. package/static/static/js/async/35.4b29edc8.js +0 -1
  50. package/static/static/js/async/652.7a830db9.js +0 -3
  51. package/static/static/js/async/856.0d869a94.js +0 -158
  52. package/static/static/js/async/860.1bcb36d0.js +0 -2
  53. package/static/static/js/async/990.27e22d92.js +0 -26
  54. package/static/static/js/index.25ba485f.js +0 -10
  55. package/static/static/js/index.25ba485f.js.map +0 -1
  56. package/static/static/js/lib-react.bc3a3965.js +0 -3
  57. /package/static/static/js/{79.2e552a95.js.LICENSE.txt → 79.25af61dc.js.LICENSE.txt} +0 -0
  58. /package/static/static/js/{index.25ba485f.js.LICENSE.txt → index.ac2feba9.js.LICENSE.txt} +0 -0
  59. /package/static/static/js/{lib-react.bc3a3965.js.LICENSE.txt → lib-react.7b1abe58.js.LICENSE.txt} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"static/js/async/860.1bcb36d0.js","sources":["../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/events/FederatedEvent.mjs","../../../../../../node_modules/.pnpm/ismobilejs@1.1.1/node_modules/ismobilejs/esm/isMobile.js","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/utils/browser/isMobile.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/accessibility/AccessibilitySystem.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/accessibility/init.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/accessibility/accessibilityTarget.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/events/EventTicker.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/events/FederatedMouseEvent.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/events/FederatedPointerEvent.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/events/FederatedWheelEvent.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/events/EventBoundary.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/events/EventSystem.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/events/init.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/events/FederatedEventTarget.mjs"],"sourcesContent":["import { Point } from '../maths/point/Point.mjs';\n\n\"use strict\";\nclass FederatedEvent {\n /**\n * @param manager - The event boundary which manages this event. Propagation can only occur\n * within the boundary's jurisdiction.\n */\n constructor(manager) {\n /** Flags whether this event bubbles. This will take effect only if it is set before propagation. */\n this.bubbles = true;\n /** @deprecated since 7.0.0 */\n this.cancelBubble = true;\n /**\n * Flags whether this event can be canceled using {@link FederatedEvent.preventDefault}. This is always\n * false (for now).\n */\n this.cancelable = false;\n /**\n * Flag added for compatibility with DOM {@code Event}. It is not used in the Federated Events\n * API.\n * @see https://dom.spec.whatwg.org/#dom-event-composed\n */\n this.composed = false;\n /** Flags whether the default response of the user agent was prevent through this event. */\n this.defaultPrevented = false;\n /**\n * The propagation phase.\n * @default {@link FederatedEvent.NONE}\n */\n this.eventPhase = FederatedEvent.prototype.NONE;\n /** Flags whether propagation was stopped. */\n this.propagationStopped = false;\n /** Flags whether propagation was immediately stopped. */\n this.propagationImmediatelyStopped = false;\n /** The coordinates of the event relative to the nearest DOM layer. This is a non-standard property. */\n this.layer = new Point();\n /** The coordinates of the event relative to the DOM document. This is a non-standard property. */\n this.page = new Point();\n this.NONE = 0;\n this.CAPTURING_PHASE = 1;\n this.AT_TARGET = 2;\n this.BUBBLING_PHASE = 3;\n this.manager = manager;\n }\n /** @readonly */\n get layerX() {\n return this.layer.x;\n }\n /** @readonly */\n get layerY() {\n return this.layer.y;\n }\n /** @readonly */\n get pageX() {\n return this.page.x;\n }\n /** @readonly */\n get pageY() {\n return this.page.y;\n }\n /**\n * Fallback for the deprecated @code{InteractionEvent.data}.\n * @deprecated since 7.0.0\n */\n get data() {\n return this;\n }\n /** The propagation path for this event. Alias for {@link EventBoundary.propagationPath}. */\n composedPath() {\n if (this.manager && (!this.path || this.path[this.path.length - 1] !== this.target)) {\n this.path = this.target ? this.manager.propagationPath(this.target) : [];\n }\n return this.path;\n }\n /**\n * Unimplemented method included for implementing the DOM interface {@code Event}. It will throw an {@code Error}.\n * @deprecated\n * @param _type\n * @param _bubbles\n * @param _cancelable\n */\n initEvent(_type, _bubbles, _cancelable) {\n throw new Error(\"initEvent() is a legacy DOM API. It is not implemented in the Federated Events API.\");\n }\n /**\n * Unimplemented method included for implementing the DOM interface {@code UIEvent}. It will throw an {@code Error}.\n * @deprecated\n * @param _typeArg\n * @param _bubblesArg\n * @param _cancelableArg\n * @param _viewArg\n * @param _detailArg\n */\n initUIEvent(_typeArg, _bubblesArg, _cancelableArg, _viewArg, _detailArg) {\n throw new Error(\"initUIEvent() is a legacy DOM API. It is not implemented in the Federated Events API.\");\n }\n /** Prevent default behavior of PixiJS and the user agent. */\n preventDefault() {\n if (this.nativeEvent instanceof Event && this.nativeEvent.cancelable) {\n this.nativeEvent.preventDefault();\n }\n this.defaultPrevented = true;\n }\n /**\n * Stop this event from propagating to any addition listeners, including on the\n * {@link FederatedEventTarget.currentTarget currentTarget} and also the following\n * event targets on the propagation path.\n */\n stopImmediatePropagation() {\n this.propagationImmediatelyStopped = true;\n }\n /**\n * Stop this event from propagating to the next {@link FederatedEventTarget}. The rest of the listeners\n * on the {@link FederatedEventTarget.currentTarget currentTarget} will still be notified.\n */\n stopPropagation() {\n this.propagationStopped = true;\n }\n}\n\nexport { FederatedEvent };\n//# sourceMappingURL=FederatedEvent.mjs.map\n","var appleIphone = /iPhone/i;\nvar appleIpod = /iPod/i;\nvar appleTablet = /iPad/i;\nvar appleUniversal = /\\biOS-universal(?:.+)Mac\\b/i;\nvar androidPhone = /\\bAndroid(?:.+)Mobile\\b/i;\nvar androidTablet = /Android/i;\nvar amazonPhone = /(?:SD4930UR|\\bSilk(?:.+)Mobile\\b)/i;\nvar amazonTablet = /Silk/i;\nvar windowsPhone = /Windows Phone/i;\nvar windowsTablet = /\\bWindows(?:.+)ARM\\b/i;\nvar otherBlackBerry = /BlackBerry/i;\nvar otherBlackBerry10 = /BB10/i;\nvar otherOpera = /Opera Mini/i;\nvar otherChrome = /\\b(CriOS|Chrome)(?:.+)Mobile/i;\nvar otherFirefox = /Mobile(?:.+)Firefox\\b/i;\nvar isAppleTabletOnIos13 = function (navigator) {\n return (typeof navigator !== 'undefined' &&\n navigator.platform === 'MacIntel' &&\n typeof navigator.maxTouchPoints === 'number' &&\n navigator.maxTouchPoints > 1 &&\n typeof MSStream === 'undefined');\n};\nfunction createMatch(userAgent) {\n return function (regex) { return regex.test(userAgent); };\n}\nexport default function isMobile(param) {\n var nav = {\n userAgent: '',\n platform: '',\n maxTouchPoints: 0\n };\n if (!param && typeof navigator !== 'undefined') {\n nav = {\n userAgent: navigator.userAgent,\n platform: navigator.platform,\n maxTouchPoints: navigator.maxTouchPoints || 0\n };\n }\n else if (typeof param === 'string') {\n nav.userAgent = param;\n }\n else if (param && param.userAgent) {\n nav = {\n userAgent: param.userAgent,\n platform: param.platform,\n maxTouchPoints: param.maxTouchPoints || 0\n };\n }\n var userAgent = nav.userAgent;\n var tmp = userAgent.split('[FBAN');\n if (typeof tmp[1] !== 'undefined') {\n userAgent = tmp[0];\n }\n tmp = userAgent.split('Twitter');\n if (typeof tmp[1] !== 'undefined') {\n userAgent = tmp[0];\n }\n var match = createMatch(userAgent);\n var result = {\n apple: {\n phone: match(appleIphone) && !match(windowsPhone),\n ipod: match(appleIpod),\n tablet: !match(appleIphone) &&\n (match(appleTablet) || isAppleTabletOnIos13(nav)) &&\n !match(windowsPhone),\n universal: match(appleUniversal),\n device: (match(appleIphone) ||\n match(appleIpod) ||\n match(appleTablet) ||\n match(appleUniversal) ||\n isAppleTabletOnIos13(nav)) &&\n !match(windowsPhone)\n },\n amazon: {\n phone: match(amazonPhone),\n tablet: !match(amazonPhone) && match(amazonTablet),\n device: match(amazonPhone) || match(amazonTablet)\n },\n android: {\n phone: (!match(windowsPhone) && match(amazonPhone)) ||\n (!match(windowsPhone) && match(androidPhone)),\n tablet: !match(windowsPhone) &&\n !match(amazonPhone) &&\n !match(androidPhone) &&\n (match(amazonTablet) || match(androidTablet)),\n device: (!match(windowsPhone) &&\n (match(amazonPhone) ||\n match(amazonTablet) ||\n match(androidPhone) ||\n match(androidTablet))) ||\n match(/\\bokhttp\\b/i)\n },\n windows: {\n phone: match(windowsPhone),\n tablet: match(windowsTablet),\n device: match(windowsPhone) || match(windowsTablet)\n },\n other: {\n blackberry: match(otherBlackBerry),\n blackberry10: match(otherBlackBerry10),\n opera: match(otherOpera),\n firefox: match(otherFirefox),\n chrome: match(otherChrome),\n device: match(otherBlackBerry) ||\n match(otherBlackBerry10) ||\n match(otherOpera) ||\n match(otherFirefox) ||\n match(otherChrome)\n },\n any: false,\n phone: false,\n tablet: false\n };\n result.any =\n result.apple.device ||\n result.android.device ||\n result.windows.device ||\n result.other.device;\n result.phone =\n result.apple.phone || result.android.phone || result.windows.phone;\n result.tablet =\n result.apple.tablet || result.android.tablet || result.windows.tablet;\n return result;\n}\n//# sourceMappingURL=isMobile.js.map","import isMobileJs from 'ismobilejs';\n\n\"use strict\";\nconst isMobileCall = isMobileJs.default ?? isMobileJs;\nconst isMobile = isMobileCall(globalThis.navigator);\n\nexport { isMobile };\n//# sourceMappingURL=isMobile.mjs.map\n","import { FederatedEvent } from '../events/FederatedEvent.mjs';\nimport { ExtensionType } from '../extensions/Extensions.mjs';\nimport { isMobile } from '../utils/browser/isMobile.mjs';\nimport { removeItems } from '../utils/data/removeItems.mjs';\n\n\"use strict\";\nconst KEY_CODE_TAB = 9;\nconst DIV_TOUCH_SIZE = 100;\nconst DIV_TOUCH_POS_X = 0;\nconst DIV_TOUCH_POS_Y = 0;\nconst DIV_TOUCH_ZINDEX = 2;\nconst DIV_HOOK_SIZE = 1;\nconst DIV_HOOK_POS_X = -1e3;\nconst DIV_HOOK_POS_Y = -1e3;\nconst DIV_HOOK_ZINDEX = 2;\nclass AccessibilitySystem {\n // 2fps\n // eslint-disable-next-line jsdoc/require-param\n /**\n * @param {WebGLRenderer|WebGPURenderer} renderer - A reference to the current renderer\n */\n constructor(renderer, _mobileInfo = isMobile) {\n this._mobileInfo = _mobileInfo;\n /** Setting this to true will visually show the divs. */\n this.debug = false;\n /** Internal variable, see isActive getter. */\n this._isActive = false;\n /** Internal variable, see isMobileAccessibility getter. */\n this._isMobileAccessibility = false;\n /** A simple pool for storing divs. */\n this._pool = [];\n /** This is a tick used to check if an object is no longer being rendered. */\n this._renderId = 0;\n /** The array of currently active accessible items. */\n this._children = [];\n /** Count to throttle div updates on android devices. */\n this._androidUpdateCount = 0;\n /** The frequency to update the div elements. */\n this._androidUpdateFrequency = 500;\n this._hookDiv = null;\n if (_mobileInfo.tablet || _mobileInfo.phone) {\n this._createTouchHook();\n }\n const div = document.createElement(\"div\");\n div.style.width = `${DIV_TOUCH_SIZE}px`;\n div.style.height = `${DIV_TOUCH_SIZE}px`;\n div.style.position = \"absolute\";\n div.style.top = `${DIV_TOUCH_POS_X}px`;\n div.style.left = `${DIV_TOUCH_POS_Y}px`;\n div.style.zIndex = DIV_TOUCH_ZINDEX.toString();\n this._div = div;\n this._renderer = renderer;\n this._onKeyDown = this._onKeyDown.bind(this);\n this._onMouseMove = this._onMouseMove.bind(this);\n globalThis.addEventListener(\"keydown\", this._onKeyDown, false);\n }\n /**\n * Value of `true` if accessibility is currently active and accessibility layers are showing.\n * @member {boolean}\n * @readonly\n */\n get isActive() {\n return this._isActive;\n }\n /**\n * Value of `true` if accessibility is enabled for touch devices.\n * @member {boolean}\n * @readonly\n */\n get isMobileAccessibility() {\n return this._isMobileAccessibility;\n }\n get hookDiv() {\n return this._hookDiv;\n }\n /**\n * Creates the touch hooks.\n * @private\n */\n _createTouchHook() {\n const hookDiv = document.createElement(\"button\");\n hookDiv.style.width = `${DIV_HOOK_SIZE}px`;\n hookDiv.style.height = `${DIV_HOOK_SIZE}px`;\n hookDiv.style.position = \"absolute\";\n hookDiv.style.top = `${DIV_HOOK_POS_X}px`;\n hookDiv.style.left = `${DIV_HOOK_POS_Y}px`;\n hookDiv.style.zIndex = DIV_HOOK_ZINDEX.toString();\n hookDiv.style.backgroundColor = \"#FF0000\";\n hookDiv.title = \"select to enable accessibility for this content\";\n hookDiv.addEventListener(\"focus\", () => {\n this._isMobileAccessibility = true;\n this._activate();\n this._destroyTouchHook();\n });\n document.body.appendChild(hookDiv);\n this._hookDiv = hookDiv;\n }\n /**\n * Destroys the touch hooks.\n * @private\n */\n _destroyTouchHook() {\n if (!this._hookDiv) {\n return;\n }\n document.body.removeChild(this._hookDiv);\n this._hookDiv = null;\n }\n /**\n * Activating will cause the Accessibility layer to be shown.\n * This is called when a user presses the tab key.\n * @private\n */\n _activate() {\n if (this._isActive) {\n return;\n }\n this._isActive = true;\n globalThis.document.addEventListener(\"mousemove\", this._onMouseMove, true);\n globalThis.removeEventListener(\"keydown\", this._onKeyDown, false);\n this._renderer.runners.postrender.add(this);\n this._renderer.view.canvas.parentNode?.appendChild(this._div);\n }\n /**\n * Deactivating will cause the Accessibility layer to be hidden.\n * This is called when a user moves the mouse.\n * @private\n */\n _deactivate() {\n if (!this._isActive || this._isMobileAccessibility) {\n return;\n }\n this._isActive = false;\n globalThis.document.removeEventListener(\"mousemove\", this._onMouseMove, true);\n globalThis.addEventListener(\"keydown\", this._onKeyDown, false);\n this._renderer.runners.postrender.remove(this);\n this._div.parentNode?.removeChild(this._div);\n }\n /**\n * This recursive function will run through the scene graph and add any new accessible objects to the DOM layer.\n * @private\n * @param {Container} container - The Container to check.\n */\n _updateAccessibleObjects(container) {\n if (!container.visible || !container.accessibleChildren) {\n return;\n }\n if (container.accessible && container.isInteractive()) {\n if (!container._accessibleActive) {\n this._addChild(container);\n }\n container._renderId = this._renderId;\n }\n const children = container.children;\n if (children) {\n for (let i = 0; i < children.length; i++) {\n this._updateAccessibleObjects(children[i]);\n }\n }\n }\n /**\n * Runner init called, view is available at this point.\n * @ignore\n */\n init(options) {\n this.debug = options?.debug ?? this.debug;\n this._renderer.runners.postrender.remove(this);\n }\n /**\n * Runner postrender was called, ensure that all divs are mapped correctly to their Containers.\n * Only fires while active.\n * @ignore\n */\n postrender() {\n const now = performance.now();\n if (this._mobileInfo.android.device && now < this._androidUpdateCount) {\n return;\n }\n this._androidUpdateCount = now + this._androidUpdateFrequency;\n if (!this._renderer.renderingToScreen || !this._renderer.view.canvas) {\n return;\n }\n if (this._renderer.lastObjectRendered) {\n this._updateAccessibleObjects(this._renderer.lastObjectRendered);\n }\n const { x, y, width, height } = this._renderer.view.canvas.getBoundingClientRect();\n const { width: viewWidth, height: viewHeight, resolution } = this._renderer;\n const sx = width / viewWidth * resolution;\n const sy = height / viewHeight * resolution;\n let div = this._div;\n div.style.left = `${x}px`;\n div.style.top = `${y}px`;\n div.style.width = `${viewWidth}px`;\n div.style.height = `${viewHeight}px`;\n for (let i = 0; i < this._children.length; i++) {\n const child = this._children[i];\n if (child._renderId !== this._renderId) {\n child._accessibleActive = false;\n removeItems(this._children, i, 1);\n this._div.removeChild(child._accessibleDiv);\n this._pool.push(child._accessibleDiv);\n child._accessibleDiv = null;\n i--;\n } else {\n div = child._accessibleDiv;\n let hitArea = child.hitArea;\n const wt = child.worldTransform;\n if (child.hitArea) {\n div.style.left = `${(wt.tx + hitArea.x * wt.a) * sx}px`;\n div.style.top = `${(wt.ty + hitArea.y * wt.d) * sy}px`;\n div.style.width = `${hitArea.width * wt.a * sx}px`;\n div.style.height = `${hitArea.height * wt.d * sy}px`;\n } else {\n hitArea = child.getBounds().rectangle;\n this._capHitArea(hitArea);\n div.style.left = `${hitArea.x * sx}px`;\n div.style.top = `${hitArea.y * sy}px`;\n div.style.width = `${hitArea.width * sx}px`;\n div.style.height = `${hitArea.height * sy}px`;\n if (div.title !== child.accessibleTitle && child.accessibleTitle !== null) {\n div.title = child.accessibleTitle || \"\";\n }\n if (div.getAttribute(\"aria-label\") !== child.accessibleHint && child.accessibleHint !== null) {\n div.setAttribute(\"aria-label\", child.accessibleHint || \"\");\n }\n }\n if (child.accessibleTitle !== div.title || child.tabIndex !== div.tabIndex) {\n div.title = child.accessibleTitle || \"\";\n div.tabIndex = child.tabIndex;\n if (this.debug) {\n this._updateDebugHTML(div);\n }\n }\n }\n }\n this._renderId++;\n }\n /**\n * private function that will visually add the information to the\n * accessibility div\n * @param {HTMLElement} div -\n */\n _updateDebugHTML(div) {\n div.innerHTML = `type: ${div.type}</br> title : ${div.title}</br> tabIndex: ${div.tabIndex}`;\n }\n /**\n * Adjust the hit area based on the bounds of a display object\n * @param {Rectangle} hitArea - Bounds of the child\n */\n _capHitArea(hitArea) {\n if (hitArea.x < 0) {\n hitArea.width += hitArea.x;\n hitArea.x = 0;\n }\n if (hitArea.y < 0) {\n hitArea.height += hitArea.y;\n hitArea.y = 0;\n }\n const { width: viewWidth, height: viewHeight } = this._renderer;\n if (hitArea.x + hitArea.width > viewWidth) {\n hitArea.width = viewWidth - hitArea.x;\n }\n if (hitArea.y + hitArea.height > viewHeight) {\n hitArea.height = viewHeight - hitArea.y;\n }\n }\n /**\n * Adds a Container to the accessibility manager\n * @private\n * @param {Container} container - The child to make accessible.\n */\n _addChild(container) {\n let div = this._pool.pop();\n if (!div) {\n div = document.createElement(\"button\");\n div.style.width = `${DIV_TOUCH_SIZE}px`;\n div.style.height = `${DIV_TOUCH_SIZE}px`;\n div.style.backgroundColor = this.debug ? \"rgba(255,255,255,0.5)\" : \"transparent\";\n div.style.position = \"absolute\";\n div.style.zIndex = DIV_TOUCH_ZINDEX.toString();\n div.style.borderStyle = \"none\";\n if (navigator.userAgent.toLowerCase().includes(\"chrome\")) {\n div.setAttribute(\"aria-live\", \"off\");\n } else {\n div.setAttribute(\"aria-live\", \"polite\");\n }\n if (navigator.userAgent.match(/rv:.*Gecko\\//)) {\n div.setAttribute(\"aria-relevant\", \"additions\");\n } else {\n div.setAttribute(\"aria-relevant\", \"text\");\n }\n div.addEventListener(\"click\", this._onClick.bind(this));\n div.addEventListener(\"focus\", this._onFocus.bind(this));\n div.addEventListener(\"focusout\", this._onFocusOut.bind(this));\n }\n div.style.pointerEvents = container.accessiblePointerEvents;\n div.type = container.accessibleType;\n if (container.accessibleTitle && container.accessibleTitle !== null) {\n div.title = container.accessibleTitle;\n } else if (!container.accessibleHint || container.accessibleHint === null) {\n div.title = `container ${container.tabIndex}`;\n }\n if (container.accessibleHint && container.accessibleHint !== null) {\n div.setAttribute(\"aria-label\", container.accessibleHint);\n }\n if (this.debug) {\n this._updateDebugHTML(div);\n }\n container._accessibleActive = true;\n container._accessibleDiv = div;\n div.container = container;\n this._children.push(container);\n this._div.appendChild(container._accessibleDiv);\n container._accessibleDiv.tabIndex = container.tabIndex;\n }\n /**\n * Dispatch events with the EventSystem.\n * @param e\n * @param type\n * @private\n */\n _dispatchEvent(e, type) {\n const { container: target } = e.target;\n const boundary = this._renderer.events.rootBoundary;\n const event = Object.assign(new FederatedEvent(boundary), { target });\n boundary.rootTarget = this._renderer.lastObjectRendered;\n type.forEach((type2) => boundary.dispatchEvent(event, type2));\n }\n /**\n * Maps the div button press to pixi's EventSystem (click)\n * @private\n * @param {MouseEvent} e - The click event.\n */\n _onClick(e) {\n this._dispatchEvent(e, [\"click\", \"pointertap\", \"tap\"]);\n }\n /**\n * Maps the div focus events to pixi's EventSystem (mouseover)\n * @private\n * @param {FocusEvent} e - The focus event.\n */\n _onFocus(e) {\n if (!e.target.getAttribute(\"aria-live\")) {\n e.target.setAttribute(\"aria-live\", \"assertive\");\n }\n this._dispatchEvent(e, [\"mouseover\"]);\n }\n /**\n * Maps the div focus events to pixi's EventSystem (mouseout)\n * @private\n * @param {FocusEvent} e - The focusout event.\n */\n _onFocusOut(e) {\n if (!e.target.getAttribute(\"aria-live\")) {\n e.target.setAttribute(\"aria-live\", \"polite\");\n }\n this._dispatchEvent(e, [\"mouseout\"]);\n }\n /**\n * Is called when a key is pressed\n * @private\n * @param {KeyboardEvent} e - The keydown event.\n */\n _onKeyDown(e) {\n if (e.keyCode !== KEY_CODE_TAB) {\n return;\n }\n this._activate();\n }\n /**\n * Is called when the mouse moves across the renderer element\n * @private\n * @param {MouseEvent} e - The mouse event.\n */\n _onMouseMove(e) {\n if (e.movementX === 0 && e.movementY === 0) {\n return;\n }\n this._deactivate();\n }\n /** Destroys the accessibility manager */\n destroy() {\n this._destroyTouchHook();\n this._div = null;\n globalThis.document.removeEventListener(\"mousemove\", this._onMouseMove, true);\n globalThis.removeEventListener(\"keydown\", this._onKeyDown);\n this._pool = null;\n this._children = null;\n this._renderer = null;\n }\n}\n/** @ignore */\nAccessibilitySystem.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem\n ],\n name: \"accessibility\"\n};\n\nexport { AccessibilitySystem };\n//# sourceMappingURL=AccessibilitySystem.mjs.map\n","import { extensions } from '../extensions/Extensions.mjs';\nimport { Container } from '../scene/container/Container.mjs';\nimport { AccessibilitySystem } from './AccessibilitySystem.mjs';\nimport { accessibilityTarget } from './accessibilityTarget.mjs';\n\n\"use strict\";\nextensions.add(AccessibilitySystem);\nContainer.mixin(accessibilityTarget);\n//# sourceMappingURL=init.mjs.map\n","\"use strict\";\nconst accessibilityTarget = {\n /**\n * Flag for if the object is accessible. If true AccessibilityManager will overlay a\n * shadow div with attributes set\n * @member {boolean}\n * @memberof scene.Container#\n */\n accessible: false,\n /**\n * Sets the title attribute of the shadow div\n * If accessibleTitle AND accessibleHint has not been this will default to 'container [tabIndex]'\n * @member {string}\n * @memberof scene.Container#\n */\n accessibleTitle: null,\n /**\n * Sets the aria-label attribute of the shadow div\n * @member {string}\n * @memberof scene.Container#\n */\n accessibleHint: null,\n /**\n * @member {number}\n * @memberof scene.Container#\n * @todo Needs docs.\n */\n tabIndex: 0,\n /**\n * @member {boolean}\n * @memberof scene.Container#\n * @private\n */\n _accessibleActive: false,\n /**\n * @memberof scene.Container#\n * @private\n */\n _accessibleDiv: null,\n /**\n * Specify the type of div the accessible layer is. Screen readers treat the element differently\n * depending on this type. Defaults to button.\n * @member {string}\n * @memberof scene.Container#\n * @default 'button'\n */\n accessibleType: \"button\",\n /**\n * Specify the pointer-events the accessible div will use\n * Defaults to auto.\n * @type {PointerEvents}\n * @memberof scene.Container#\n * @default 'auto'\n */\n accessiblePointerEvents: \"auto\",\n /**\n * Setting to false will prevent any children inside this container to\n * be accessible. Defaults to true.\n * @member {boolean}\n * @memberof scene.Container#\n * @default true\n */\n accessibleChildren: true,\n /**\n * @member {number}\n * @memberof scene.Container#\n * @private\n */\n _renderId: -1\n};\n\nexport { accessibilityTarget };\n//# sourceMappingURL=accessibilityTarget.mjs.map\n","import { UPDATE_PRIORITY } from '../ticker/const.mjs';\nimport { Ticker } from '../ticker/Ticker.mjs';\n\n\"use strict\";\nclass EventsTickerClass {\n constructor() {\n /** The frequency that fake events will be fired. */\n this.interactionFrequency = 10;\n this._deltaTime = 0;\n this._didMove = false;\n this._tickerAdded = false;\n this._pauseUpdate = true;\n }\n /**\n * Initializes the event ticker.\n * @param events - The event system.\n */\n init(events) {\n this.removeTickerListener();\n this.events = events;\n this.interactionFrequency = 10;\n this._deltaTime = 0;\n this._didMove = false;\n this._tickerAdded = false;\n this._pauseUpdate = true;\n }\n /** Whether to pause the update checks or not. */\n get pauseUpdate() {\n return this._pauseUpdate;\n }\n set pauseUpdate(paused) {\n this._pauseUpdate = paused;\n }\n /** Adds the ticker listener. */\n addTickerListener() {\n if (this._tickerAdded || !this.domElement) {\n return;\n }\n Ticker.system.add(this._tickerUpdate, this, UPDATE_PRIORITY.INTERACTION);\n this._tickerAdded = true;\n }\n /** Removes the ticker listener. */\n removeTickerListener() {\n if (!this._tickerAdded) {\n return;\n }\n Ticker.system.remove(this._tickerUpdate, this);\n this._tickerAdded = false;\n }\n /** Sets flag to not fire extra events when the user has already moved there mouse */\n pointerMoved() {\n this._didMove = true;\n }\n /** Updates the state of interactive objects. */\n _update() {\n if (!this.domElement || this._pauseUpdate) {\n return;\n }\n if (this._didMove) {\n this._didMove = false;\n return;\n }\n const rootPointerEvent = this.events[\"_rootPointerEvent\"];\n if (this.events.supportsTouchEvents && rootPointerEvent.pointerType === \"touch\") {\n return;\n }\n globalThis.document.dispatchEvent(new PointerEvent(\"pointermove\", {\n clientX: rootPointerEvent.clientX,\n clientY: rootPointerEvent.clientY\n }));\n }\n /**\n * Updates the state of interactive objects if at least {@link interactionFrequency}\n * milliseconds have passed since the last invocation.\n *\n * Invoked by a throttled ticker update from {@link Ticker.system}.\n * @param ticker - The throttled ticker.\n */\n _tickerUpdate(ticker) {\n this._deltaTime += ticker.deltaTime;\n if (this._deltaTime < this.interactionFrequency) {\n return;\n }\n this._deltaTime = 0;\n this._update();\n }\n}\nconst EventsTicker = new EventsTickerClass();\n\nexport { EventsTicker };\n//# sourceMappingURL=EventTicker.mjs.map\n","import { Point } from '../maths/point/Point.mjs';\nimport { FederatedEvent } from './FederatedEvent.mjs';\n\n\"use strict\";\nclass FederatedMouseEvent extends FederatedEvent {\n constructor() {\n super(...arguments);\n /** The coordinates of the mouse event relative to the canvas. */\n this.client = new Point();\n /** The movement in this pointer relative to the last `mousemove` event. */\n this.movement = new Point();\n /** The offset of the pointer coordinates w.r.t. target Container in world space. This is not supported at the moment. */\n this.offset = new Point();\n /** The pointer coordinates in world space. */\n this.global = new Point();\n /**\n * The pointer coordinates in the renderer's {@link Renderer.screen screen}. This has slightly\n * different semantics than native PointerEvent screenX/screenY.\n */\n this.screen = new Point();\n }\n /** @readonly */\n get clientX() {\n return this.client.x;\n }\n /** @readonly */\n get clientY() {\n return this.client.y;\n }\n /**\n * Alias for {@link FederatedMouseEvent.clientX this.clientX}.\n * @readonly\n */\n get x() {\n return this.clientX;\n }\n /**\n * Alias for {@link FederatedMouseEvent.clientY this.clientY}.\n * @readonly\n */\n get y() {\n return this.clientY;\n }\n /** @readonly */\n get movementX() {\n return this.movement.x;\n }\n /** @readonly */\n get movementY() {\n return this.movement.y;\n }\n /** @readonly */\n get offsetX() {\n return this.offset.x;\n }\n /** @readonly */\n get offsetY() {\n return this.offset.y;\n }\n /** @readonly */\n get globalX() {\n return this.global.x;\n }\n /** @readonly */\n get globalY() {\n return this.global.y;\n }\n /**\n * The pointer coordinates in the renderer's screen. Alias for {@code screen.x}.\n * @readonly\n */\n get screenX() {\n return this.screen.x;\n }\n /**\n * The pointer coordinates in the renderer's screen. Alias for {@code screen.y}.\n * @readonly\n */\n get screenY() {\n return this.screen.y;\n }\n /**\n * This will return the local coordinates of the specified container for this InteractionData\n * @param {Container} container - The Container that you would like the local\n * coords off\n * @param {PointData} point - A Point object in which to store the value, optional (otherwise\n * will create a new point)\n * @param {PointData} globalPos - A Point object containing your custom global coords, optional\n * (otherwise will use the current global coords)\n * @returns - A point containing the coordinates of the InteractionData position relative\n * to the Container\n */\n getLocalPosition(container, point, globalPos) {\n return container.worldTransform.applyInverse(globalPos || this.global, point);\n }\n /**\n * Whether the modifier key was pressed when this event natively occurred.\n * @param key - The modifier key.\n */\n getModifierState(key) {\n return \"getModifierState\" in this.nativeEvent && this.nativeEvent.getModifierState(key);\n }\n /**\n * Not supported.\n * @param _typeArg\n * @param _canBubbleArg\n * @param _cancelableArg\n * @param _viewArg\n * @param _detailArg\n * @param _screenXArg\n * @param _screenYArg\n * @param _clientXArg\n * @param _clientYArg\n * @param _ctrlKeyArg\n * @param _altKeyArg\n * @param _shiftKeyArg\n * @param _metaKeyArg\n * @param _buttonArg\n * @param _relatedTargetArg\n * @deprecated since 7.0.0\n */\n // eslint-disable-next-line max-params\n initMouseEvent(_typeArg, _canBubbleArg, _cancelableArg, _viewArg, _detailArg, _screenXArg, _screenYArg, _clientXArg, _clientYArg, _ctrlKeyArg, _altKeyArg, _shiftKeyArg, _metaKeyArg, _buttonArg, _relatedTargetArg) {\n throw new Error(\"Method not implemented.\");\n }\n}\n\nexport { FederatedMouseEvent };\n//# sourceMappingURL=FederatedMouseEvent.mjs.map\n","import { FederatedMouseEvent } from './FederatedMouseEvent.mjs';\n\n\"use strict\";\nclass FederatedPointerEvent extends FederatedMouseEvent {\n constructor() {\n super(...arguments);\n /**\n * The width of the pointer's contact along the x-axis, measured in CSS pixels.\n * radiusX of TouchEvents will be represented by this value.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/width\n */\n this.width = 0;\n /**\n * The height of the pointer's contact along the y-axis, measured in CSS pixels.\n * radiusY of TouchEvents will be represented by this value.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/height\n */\n this.height = 0;\n /**\n * Indicates whether or not the pointer device that created the event is the primary pointer.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/isPrimary\n */\n this.isPrimary = false;\n }\n // Only included for completeness for now\n getCoalescedEvents() {\n if (this.type === \"pointermove\" || this.type === \"mousemove\" || this.type === \"touchmove\") {\n return [this];\n }\n return [];\n }\n // Only included for completeness for now\n getPredictedEvents() {\n throw new Error(\"getPredictedEvents is not supported!\");\n }\n}\n\nexport { FederatedPointerEvent };\n//# sourceMappingURL=FederatedPointerEvent.mjs.map\n","import { FederatedMouseEvent } from './FederatedMouseEvent.mjs';\n\n\"use strict\";\nclass FederatedWheelEvent extends FederatedMouseEvent {\n constructor() {\n super(...arguments);\n /** Units specified in pixels. */\n this.DOM_DELTA_PIXEL = 0;\n /** Units specified in lines. */\n this.DOM_DELTA_LINE = 1;\n /** Units specified in pages. */\n this.DOM_DELTA_PAGE = 2;\n }\n}\n/** Units specified in pixels. */\nFederatedWheelEvent.DOM_DELTA_PIXEL = 0;\n/** Units specified in lines. */\nFederatedWheelEvent.DOM_DELTA_LINE = 1;\n/** Units specified in pages. */\nFederatedWheelEvent.DOM_DELTA_PAGE = 2;\n\nexport { FederatedWheelEvent };\n//# sourceMappingURL=FederatedWheelEvent.mjs.map\n","import EventEmitter from 'eventemitter3';\nimport { Point } from '../maths/point/Point.mjs';\nimport { warn } from '../utils/logging/warn.mjs';\nimport { EventsTicker } from './EventTicker.mjs';\nimport { FederatedMouseEvent } from './FederatedMouseEvent.mjs';\nimport { FederatedPointerEvent } from './FederatedPointerEvent.mjs';\nimport { FederatedWheelEvent } from './FederatedWheelEvent.mjs';\n\n\"use strict\";\nconst PROPAGATION_LIMIT = 2048;\nconst tempHitLocation = new Point();\nconst tempLocalMapping = new Point();\nclass EventBoundary {\n /**\n * @param rootTarget - The holder of the event boundary.\n */\n constructor(rootTarget) {\n /**\n * Emits events after they were dispatched into the scene graph.\n *\n * This can be used for global events listening, regardless of the scene graph being used. It should\n * not be used by interactive libraries for normal use.\n *\n * Special events that do not bubble all the way to the root target are not emitted from here,\n * e.g. pointerenter, pointerleave, click.\n */\n this.dispatch = new EventEmitter();\n /**\n * This flag would emit `pointermove`, `touchmove`, and `mousemove` events on all Containers.\n *\n * The `moveOnAll` semantics mirror those of earlier versions of PixiJS. This was disabled in favor of\n * the Pointer Event API's approach.\n */\n this.moveOnAll = false;\n /** Enables the global move events. `globalpointermove`, `globaltouchmove`, and `globalmousemove` */\n this.enableGlobalMoveEvents = true;\n /**\n * State object for mapping methods.\n * @see EventBoundary#trackingData\n */\n this.mappingState = {\n trackingData: {}\n };\n /**\n * The event pool maps event constructors to an free pool of instances of those specific events.\n * @see EventBoundary#allocateEvent\n * @see EventBoundary#freeEvent\n */\n this.eventPool = /* @__PURE__ */ new Map();\n /** Every interactive element gathered from the scene. Only used in `pointermove` */\n this._allInteractiveElements = [];\n /** Every element that passed the hit test. Only used in `pointermove` */\n this._hitElements = [];\n /** Whether or not to collect all the interactive elements from the scene. Enabled in `pointermove` */\n this._isPointerMoveEvent = false;\n this.rootTarget = rootTarget;\n this.hitPruneFn = this.hitPruneFn.bind(this);\n this.hitTestFn = this.hitTestFn.bind(this);\n this.mapPointerDown = this.mapPointerDown.bind(this);\n this.mapPointerMove = this.mapPointerMove.bind(this);\n this.mapPointerOut = this.mapPointerOut.bind(this);\n this.mapPointerOver = this.mapPointerOver.bind(this);\n this.mapPointerUp = this.mapPointerUp.bind(this);\n this.mapPointerUpOutside = this.mapPointerUpOutside.bind(this);\n this.mapWheel = this.mapWheel.bind(this);\n this.mappingTable = {};\n this.addEventMapping(\"pointerdown\", this.mapPointerDown);\n this.addEventMapping(\"pointermove\", this.mapPointerMove);\n this.addEventMapping(\"pointerout\", this.mapPointerOut);\n this.addEventMapping(\"pointerleave\", this.mapPointerOut);\n this.addEventMapping(\"pointerover\", this.mapPointerOver);\n this.addEventMapping(\"pointerup\", this.mapPointerUp);\n this.addEventMapping(\"pointerupoutside\", this.mapPointerUpOutside);\n this.addEventMapping(\"wheel\", this.mapWheel);\n }\n /**\n * Adds an event mapping for the event `type` handled by `fn`.\n *\n * Event mappings can be used to implement additional or custom events. They take an event\n * coming from the upstream scene (or directly from the {@link EventSystem}) and dispatch new downstream events\n * generally trickling down and bubbling up to {@link EventBoundary.rootTarget this.rootTarget}.\n *\n * To modify the semantics of existing events, the built-in mapping methods of EventBoundary should be overridden\n * instead.\n * @param type - The type of upstream event to map.\n * @param fn - The mapping method. The context of this function must be bound manually, if desired.\n */\n addEventMapping(type, fn) {\n if (!this.mappingTable[type]) {\n this.mappingTable[type] = [];\n }\n this.mappingTable[type].push({\n fn,\n priority: 0\n });\n this.mappingTable[type].sort((a, b) => a.priority - b.priority);\n }\n /**\n * Dispatches the given event\n * @param e - The event to dispatch.\n * @param type - The type of event to dispatch. Defaults to `e.type`.\n */\n dispatchEvent(e, type) {\n e.propagationStopped = false;\n e.propagationImmediatelyStopped = false;\n this.propagate(e, type);\n this.dispatch.emit(type || e.type, e);\n }\n /**\n * Maps the given upstream event through the event boundary and propagates it downstream.\n * @param e - The event to map.\n */\n mapEvent(e) {\n if (!this.rootTarget) {\n return;\n }\n const mappers = this.mappingTable[e.type];\n if (mappers) {\n for (let i = 0, j = mappers.length; i < j; i++) {\n mappers[i].fn(e);\n }\n } else {\n warn(`[EventBoundary]: Event mapping not defined for ${e.type}`);\n }\n }\n /**\n * Finds the Container that is the target of a event at the given coordinates.\n *\n * The passed (x,y) coordinates are in the world space above this event boundary.\n * @param x - The x coordinate of the event.\n * @param y - The y coordinate of the event.\n */\n hitTest(x, y) {\n EventsTicker.pauseUpdate = true;\n const useMove = this._isPointerMoveEvent && this.enableGlobalMoveEvents;\n const fn = useMove ? \"hitTestMoveRecursive\" : \"hitTestRecursive\";\n const invertedPath = this[fn](\n this.rootTarget,\n this.rootTarget.eventMode,\n tempHitLocation.set(x, y),\n this.hitTestFn,\n this.hitPruneFn\n );\n return invertedPath && invertedPath[0];\n }\n /**\n * Propagate the passed event from from {@link EventBoundary.rootTarget this.rootTarget} to its\n * target {@code e.target}.\n * @param e - The event to propagate.\n * @param type - The type of event to propagate. Defaults to `e.type`.\n */\n propagate(e, type) {\n if (!e.target) {\n return;\n }\n const composedPath = e.composedPath();\n e.eventPhase = e.CAPTURING_PHASE;\n for (let i = 0, j = composedPath.length - 1; i < j; i++) {\n e.currentTarget = composedPath[i];\n this.notifyTarget(e, type);\n if (e.propagationStopped || e.propagationImmediatelyStopped)\n return;\n }\n e.eventPhase = e.AT_TARGET;\n e.currentTarget = e.target;\n this.notifyTarget(e, type);\n if (e.propagationStopped || e.propagationImmediatelyStopped)\n return;\n e.eventPhase = e.BUBBLING_PHASE;\n for (let i = composedPath.length - 2; i >= 0; i--) {\n e.currentTarget = composedPath[i];\n this.notifyTarget(e, type);\n if (e.propagationStopped || e.propagationImmediatelyStopped)\n return;\n }\n }\n /**\n * Emits the event {@code e} to all interactive containers. The event is propagated in the bubbling phase always.\n *\n * This is used in the `globalpointermove` event.\n * @param e - The emitted event.\n * @param type - The listeners to notify.\n * @param targets - The targets to notify.\n */\n all(e, type, targets = this._allInteractiveElements) {\n if (targets.length === 0)\n return;\n e.eventPhase = e.BUBBLING_PHASE;\n const events = Array.isArray(type) ? type : [type];\n for (let i = targets.length - 1; i >= 0; i--) {\n events.forEach((event) => {\n e.currentTarget = targets[i];\n this.notifyTarget(e, event);\n });\n }\n }\n /**\n * Finds the propagation path from {@link EventBoundary.rootTarget rootTarget} to the passed\n * {@code target}. The last element in the path is {@code target}.\n * @param target - The target to find the propagation path to.\n */\n propagationPath(target) {\n const propagationPath = [target];\n for (let i = 0; i < PROPAGATION_LIMIT && (target !== this.rootTarget && target.parent); i++) {\n if (!target.parent) {\n throw new Error(\"Cannot find propagation path to disconnected target\");\n }\n propagationPath.push(target.parent);\n target = target.parent;\n }\n propagationPath.reverse();\n return propagationPath;\n }\n hitTestMoveRecursive(currentTarget, eventMode, location, testFn, pruneFn, ignore = false) {\n let shouldReturn = false;\n if (this._interactivePrune(currentTarget))\n return null;\n if (currentTarget.eventMode === \"dynamic\" || eventMode === \"dynamic\") {\n EventsTicker.pauseUpdate = false;\n }\n if (currentTarget.interactiveChildren && currentTarget.children) {\n const children = currentTarget.children;\n for (let i = children.length - 1; i >= 0; i--) {\n const child = children[i];\n const nestedHit = this.hitTestMoveRecursive(\n child,\n this._isInteractive(eventMode) ? eventMode : child.eventMode,\n location,\n testFn,\n pruneFn,\n ignore || pruneFn(currentTarget, location)\n );\n if (nestedHit) {\n if (nestedHit.length > 0 && !nestedHit[nestedHit.length - 1].parent) {\n continue;\n }\n const isInteractive = currentTarget.isInteractive();\n if (nestedHit.length > 0 || isInteractive) {\n if (isInteractive)\n this._allInteractiveElements.push(currentTarget);\n nestedHit.push(currentTarget);\n }\n if (this._hitElements.length === 0)\n this._hitElements = nestedHit;\n shouldReturn = true;\n }\n }\n }\n const isInteractiveMode = this._isInteractive(eventMode);\n const isInteractiveTarget = currentTarget.isInteractive();\n if (isInteractiveTarget && isInteractiveTarget)\n this._allInteractiveElements.push(currentTarget);\n if (ignore || this._hitElements.length > 0)\n return null;\n if (shouldReturn)\n return this._hitElements;\n if (isInteractiveMode && (!pruneFn(currentTarget, location) && testFn(currentTarget, location))) {\n return isInteractiveTarget ? [currentTarget] : [];\n }\n return null;\n }\n /**\n * Recursive implementation for {@link EventBoundary.hitTest hitTest}.\n * @param currentTarget - The Container that is to be hit tested.\n * @param eventMode - The event mode for the `currentTarget` or one of its parents.\n * @param location - The location that is being tested for overlap.\n * @param testFn - Callback that determines whether the target passes hit testing. This callback\n * can assume that `pruneFn` failed to prune the container.\n * @param pruneFn - Callback that determiness whether the target and all of its children\n * cannot pass the hit test. It is used as a preliminary optimization to prune entire subtrees\n * of the scene graph.\n * @returns An array holding the hit testing target and all its ancestors in order. The first element\n * is the target itself and the last is {@link EventBoundary.rootTarget rootTarget}. This is the opposite\n * order w.r.t. the propagation path. If no hit testing target is found, null is returned.\n */\n hitTestRecursive(currentTarget, eventMode, location, testFn, pruneFn) {\n if (this._interactivePrune(currentTarget) || pruneFn(currentTarget, location)) {\n return null;\n }\n if (currentTarget.eventMode === \"dynamic\" || eventMode === \"dynamic\") {\n EventsTicker.pauseUpdate = false;\n }\n if (currentTarget.interactiveChildren && currentTarget.children) {\n const children = currentTarget.children;\n const relativeLocation = location;\n for (let i = children.length - 1; i >= 0; i--) {\n const child = children[i];\n const nestedHit = this.hitTestRecursive(\n child,\n this._isInteractive(eventMode) ? eventMode : child.eventMode,\n relativeLocation,\n testFn,\n pruneFn\n );\n if (nestedHit) {\n if (nestedHit.length > 0 && !nestedHit[nestedHit.length - 1].parent) {\n continue;\n }\n const isInteractive = currentTarget.isInteractive();\n if (nestedHit.length > 0 || isInteractive)\n nestedHit.push(currentTarget);\n return nestedHit;\n }\n }\n }\n const isInteractiveMode = this._isInteractive(eventMode);\n const isInteractiveTarget = currentTarget.isInteractive();\n if (isInteractiveMode && testFn(currentTarget, location)) {\n return isInteractiveTarget ? [currentTarget] : [];\n }\n return null;\n }\n _isInteractive(int) {\n return int === \"static\" || int === \"dynamic\";\n }\n _interactivePrune(container) {\n if (!container || !container.visible || !container.renderable) {\n return true;\n }\n if (container.eventMode === \"none\") {\n return true;\n }\n if (container.eventMode === \"passive\" && !container.interactiveChildren) {\n return true;\n }\n return false;\n }\n /**\n * Checks whether the container or any of its children cannot pass the hit test at all.\n *\n * {@link EventBoundary}'s implementation uses the {@link Container.hitArea hitArea}\n * and {@link Container._mask} for pruning.\n * @param container - The container to prune.\n * @param location - The location to test for overlap.\n */\n hitPruneFn(container, location) {\n if (container.hitArea) {\n container.worldTransform.applyInverse(location, tempLocalMapping);\n if (!container.hitArea.contains(tempLocalMapping.x, tempLocalMapping.y)) {\n return true;\n }\n }\n if (container.effects && container.effects.length) {\n for (let i = 0; i < container.effects.length; i++) {\n const effect = container.effects[i];\n if (effect.containsPoint) {\n const effectContainsPoint = effect.containsPoint(location, this.hitTestFn);\n if (!effectContainsPoint) {\n return true;\n }\n }\n }\n }\n return false;\n }\n /**\n * Checks whether the container passes hit testing for the given location.\n * @param container - The container to test.\n * @param location - The location to test for overlap.\n * @returns - Whether `container` passes hit testing for `location`.\n */\n hitTestFn(container, location) {\n if (container.hitArea) {\n return true;\n }\n if (container?.containsPoint) {\n container.worldTransform.applyInverse(location, tempLocalMapping);\n return container.containsPoint(tempLocalMapping);\n }\n return false;\n }\n /**\n * Notify all the listeners to the event's `currentTarget`.\n *\n * If the `currentTarget` contains the property `on<type>`, then it is called here,\n * simulating the behavior from version 6.x and prior.\n * @param e - The event passed to the target.\n * @param type - The type of event to notify. Defaults to `e.type`.\n */\n notifyTarget(e, type) {\n type = type ?? e.type;\n const handlerKey = `on${type}`;\n e.currentTarget[handlerKey]?.(e);\n const key = e.eventPhase === e.CAPTURING_PHASE || e.eventPhase === e.AT_TARGET ? `${type}capture` : type;\n this._notifyListeners(e, key);\n if (e.eventPhase === e.AT_TARGET) {\n this._notifyListeners(e, type);\n }\n }\n /**\n * Maps the upstream `pointerdown` events to a downstream `pointerdown` event.\n *\n * `touchstart`, `rightdown`, `mousedown` events are also dispatched for specific pointer types.\n * @param from - The upstream `pointerdown` event.\n */\n mapPointerDown(from) {\n if (!(from instanceof FederatedPointerEvent)) {\n warn(\"EventBoundary cannot map a non-pointer event as a pointer event\");\n return;\n }\n const e = this.createPointerEvent(from);\n this.dispatchEvent(e, \"pointerdown\");\n if (e.pointerType === \"touch\") {\n this.dispatchEvent(e, \"touchstart\");\n } else if (e.pointerType === \"mouse\" || e.pointerType === \"pen\") {\n const isRightButton = e.button === 2;\n this.dispatchEvent(e, isRightButton ? \"rightdown\" : \"mousedown\");\n }\n const trackingData = this.trackingData(from.pointerId);\n trackingData.pressTargetsByButton[from.button] = e.composedPath();\n this.freeEvent(e);\n }\n /**\n * Maps the upstream `pointermove` to downstream `pointerout`, `pointerover`, and `pointermove` events, in that order.\n *\n * The tracking data for the specific pointer has an updated `overTarget`. `mouseout`, `mouseover`,\n * `mousemove`, and `touchmove` events are fired as well for specific pointer types.\n * @param from - The upstream `pointermove` event.\n */\n mapPointerMove(from) {\n if (!(from instanceof FederatedPointerEvent)) {\n warn(\"EventBoundary cannot map a non-pointer event as a pointer event\");\n return;\n }\n this._allInteractiveElements.length = 0;\n this._hitElements.length = 0;\n this._isPointerMoveEvent = true;\n const e = this.createPointerEvent(from);\n this._isPointerMoveEvent = false;\n const isMouse = e.pointerType === \"mouse\" || e.pointerType === \"pen\";\n const trackingData = this.trackingData(from.pointerId);\n const outTarget = this.findMountedTarget(trackingData.overTargets);\n if (trackingData.overTargets?.length > 0 && outTarget !== e.target) {\n const outType = from.type === \"mousemove\" ? \"mouseout\" : \"pointerout\";\n const outEvent = this.createPointerEvent(from, outType, outTarget);\n this.dispatchEvent(outEvent, \"pointerout\");\n if (isMouse)\n this.dispatchEvent(outEvent, \"mouseout\");\n if (!e.composedPath().includes(outTarget)) {\n const leaveEvent = this.createPointerEvent(from, \"pointerleave\", outTarget);\n leaveEvent.eventPhase = leaveEvent.AT_TARGET;\n while (leaveEvent.target && !e.composedPath().includes(leaveEvent.target)) {\n leaveEvent.currentTarget = leaveEvent.target;\n this.notifyTarget(leaveEvent);\n if (isMouse)\n this.notifyTarget(leaveEvent, \"mouseleave\");\n leaveEvent.target = leaveEvent.target.parent;\n }\n this.freeEvent(leaveEvent);\n }\n this.freeEvent(outEvent);\n }\n if (outTarget !== e.target) {\n const overType = from.type === \"mousemove\" ? \"mouseover\" : \"pointerover\";\n const overEvent = this.clonePointerEvent(e, overType);\n this.dispatchEvent(overEvent, \"pointerover\");\n if (isMouse)\n this.dispatchEvent(overEvent, \"mouseover\");\n let overTargetAncestor = outTarget?.parent;\n while (overTargetAncestor && overTargetAncestor !== this.rootTarget.parent) {\n if (overTargetAncestor === e.target)\n break;\n overTargetAncestor = overTargetAncestor.parent;\n }\n const didPointerEnter = !overTargetAncestor || overTargetAncestor === this.rootTarget.parent;\n if (didPointerEnter) {\n const enterEvent = this.clonePointerEvent(e, \"pointerenter\");\n enterEvent.eventPhase = enterEvent.AT_TARGET;\n while (enterEvent.target && enterEvent.target !== outTarget && enterEvent.target !== this.rootTarget.parent) {\n enterEvent.currentTarget = enterEvent.target;\n this.notifyTarget(enterEvent);\n if (isMouse)\n this.notifyTarget(enterEvent, \"mouseenter\");\n enterEvent.target = enterEvent.target.parent;\n }\n this.freeEvent(enterEvent);\n }\n this.freeEvent(overEvent);\n }\n const allMethods = [];\n const allowGlobalPointerEvents = this.enableGlobalMoveEvents ?? true;\n this.moveOnAll ? allMethods.push(\"pointermove\") : this.dispatchEvent(e, \"pointermove\");\n allowGlobalPointerEvents && allMethods.push(\"globalpointermove\");\n if (e.pointerType === \"touch\") {\n this.moveOnAll ? allMethods.splice(1, 0, \"touchmove\") : this.dispatchEvent(e, \"touchmove\");\n allowGlobalPointerEvents && allMethods.push(\"globaltouchmove\");\n }\n if (isMouse) {\n this.moveOnAll ? allMethods.splice(1, 0, \"mousemove\") : this.dispatchEvent(e, \"mousemove\");\n allowGlobalPointerEvents && allMethods.push(\"globalmousemove\");\n this.cursor = e.target?.cursor;\n }\n if (allMethods.length > 0) {\n this.all(e, allMethods);\n }\n this._allInteractiveElements.length = 0;\n this._hitElements.length = 0;\n trackingData.overTargets = e.composedPath();\n this.freeEvent(e);\n }\n /**\n * Maps the upstream `pointerover` to downstream `pointerover` and `pointerenter` events, in that order.\n *\n * The tracking data for the specific pointer gets a new `overTarget`.\n * @param from - The upstream `pointerover` event.\n */\n mapPointerOver(from) {\n if (!(from instanceof FederatedPointerEvent)) {\n warn(\"EventBoundary cannot map a non-pointer event as a pointer event\");\n return;\n }\n const trackingData = this.trackingData(from.pointerId);\n const e = this.createPointerEvent(from);\n const isMouse = e.pointerType === \"mouse\" || e.pointerType === \"pen\";\n this.dispatchEvent(e, \"pointerover\");\n if (isMouse)\n this.dispatchEvent(e, \"mouseover\");\n if (e.pointerType === \"mouse\")\n this.cursor = e.target?.cursor;\n const enterEvent = this.clonePointerEvent(e, \"pointerenter\");\n enterEvent.eventPhase = enterEvent.AT_TARGET;\n while (enterEvent.target && enterEvent.target !== this.rootTarget.parent) {\n enterEvent.currentTarget = enterEvent.target;\n this.notifyTarget(enterEvent);\n if (isMouse)\n this.notifyTarget(enterEvent, \"mouseenter\");\n enterEvent.target = enterEvent.target.parent;\n }\n trackingData.overTargets = e.composedPath();\n this.freeEvent(e);\n this.freeEvent(enterEvent);\n }\n /**\n * Maps the upstream `pointerout` to downstream `pointerout`, `pointerleave` events, in that order.\n *\n * The tracking data for the specific pointer is cleared of a `overTarget`.\n * @param from - The upstream `pointerout` event.\n */\n mapPointerOut(from) {\n if (!(from instanceof FederatedPointerEvent)) {\n warn(\"EventBoundary cannot map a non-pointer event as a pointer event\");\n return;\n }\n const trackingData = this.trackingData(from.pointerId);\n if (trackingData.overTargets) {\n const isMouse = from.pointerType === \"mouse\" || from.pointerType === \"pen\";\n const outTarget = this.findMountedTarget(trackingData.overTargets);\n const outEvent = this.createPointerEvent(from, \"pointerout\", outTarget);\n this.dispatchEvent(outEvent);\n if (isMouse)\n this.dispatchEvent(outEvent, \"mouseout\");\n const leaveEvent = this.createPointerEvent(from, \"pointerleave\", outTarget);\n leaveEvent.eventPhase = leaveEvent.AT_TARGET;\n while (leaveEvent.target && leaveEvent.target !== this.rootTarget.parent) {\n leaveEvent.currentTarget = leaveEvent.target;\n this.notifyTarget(leaveEvent);\n if (isMouse)\n this.notifyTarget(leaveEvent, \"mouseleave\");\n leaveEvent.target = leaveEvent.target.parent;\n }\n trackingData.overTargets = null;\n this.freeEvent(outEvent);\n this.freeEvent(leaveEvent);\n }\n this.cursor = null;\n }\n /**\n * Maps the upstream `pointerup` event to downstream `pointerup`, `pointerupoutside`,\n * and `click`/`rightclick`/`pointertap` events, in that order.\n *\n * The `pointerupoutside` event bubbles from the original `pointerdown` target to the most specific\n * ancestor of the `pointerdown` and `pointerup` targets, which is also the `click` event's target. `touchend`,\n * `rightup`, `mouseup`, `touchendoutside`, `rightupoutside`, `mouseupoutside`, and `tap` are fired as well for\n * specific pointer types.\n * @param from - The upstream `pointerup` event.\n */\n mapPointerUp(from) {\n if (!(from instanceof FederatedPointerEvent)) {\n warn(\"EventBoundary cannot map a non-pointer event as a pointer event\");\n return;\n }\n const now = performance.now();\n const e = this.createPointerEvent(from);\n this.dispatchEvent(e, \"pointerup\");\n if (e.pointerType === \"touch\") {\n this.dispatchEvent(e, \"touchend\");\n } else if (e.pointerType === \"mouse\" || e.pointerType === \"pen\") {\n const isRightButton = e.button === 2;\n this.dispatchEvent(e, isRightButton ? \"rightup\" : \"mouseup\");\n }\n const trackingData = this.trackingData(from.pointerId);\n const pressTarget = this.findMountedTarget(trackingData.pressTargetsByButton[from.button]);\n let clickTarget = pressTarget;\n if (pressTarget && !e.composedPath().includes(pressTarget)) {\n let currentTarget = pressTarget;\n while (currentTarget && !e.composedPath().includes(currentTarget)) {\n e.currentTarget = currentTarget;\n this.notifyTarget(e, \"pointerupoutside\");\n if (e.pointerType === \"touch\") {\n this.notifyTarget(e, \"touchendoutside\");\n } else if (e.pointerType === \"mouse\" || e.pointerType === \"pen\") {\n const isRightButton = e.button === 2;\n this.notifyTarget(e, isRightButton ? \"rightupoutside\" : \"mouseupoutside\");\n }\n currentTarget = currentTarget.parent;\n }\n delete trackingData.pressTargetsByButton[from.button];\n clickTarget = currentTarget;\n }\n if (clickTarget) {\n const clickEvent = this.clonePointerEvent(e, \"click\");\n clickEvent.target = clickTarget;\n clickEvent.path = null;\n if (!trackingData.clicksByButton[from.button]) {\n trackingData.clicksByButton[from.button] = {\n clickCount: 0,\n target: clickEvent.target,\n timeStamp: now\n };\n }\n const clickHistory = trackingData.clicksByButton[from.button];\n if (clickHistory.target === clickEvent.target && now - clickHistory.timeStamp < 200) {\n ++clickHistory.clickCount;\n } else {\n clickHistory.clickCount = 1;\n }\n clickHistory.target = clickEvent.target;\n clickHistory.timeStamp = now;\n clickEvent.detail = clickHistory.clickCount;\n if (clickEvent.pointerType === \"mouse\") {\n const isRightButton = clickEvent.button === 2;\n this.dispatchEvent(clickEvent, isRightButton ? \"rightclick\" : \"click\");\n } else if (clickEvent.pointerType === \"touch\") {\n this.dispatchEvent(clickEvent, \"tap\");\n }\n this.dispatchEvent(clickEvent, \"pointertap\");\n this.freeEvent(clickEvent);\n }\n this.freeEvent(e);\n }\n /**\n * Maps the upstream `pointerupoutside` event to a downstream `pointerupoutside` event, bubbling from the original\n * `pointerdown` target to `rootTarget`.\n *\n * (The most specific ancestor of the `pointerdown` event and the `pointerup` event must the\n * `{@link EventBoundary}'s root because the `pointerup` event occurred outside of the boundary.)\n *\n * `touchendoutside`, `mouseupoutside`, and `rightupoutside` events are fired as well for specific pointer\n * types. The tracking data for the specific pointer is cleared of a `pressTarget`.\n * @param from - The upstream `pointerupoutside` event.\n */\n mapPointerUpOutside(from) {\n if (!(from instanceof FederatedPointerEvent)) {\n warn(\"EventBoundary cannot map a non-pointer event as a pointer event\");\n return;\n }\n const trackingData = this.trackingData(from.pointerId);\n const pressTarget = this.findMountedTarget(trackingData.pressTargetsByButton[from.button]);\n const e = this.createPointerEvent(from);\n if (pressTarget) {\n let currentTarget = pressTarget;\n while (currentTarget) {\n e.currentTarget = currentTarget;\n this.notifyTarget(e, \"pointerupoutside\");\n if (e.pointerType === \"touch\") {\n this.notifyTarget(e, \"touchendoutside\");\n } else if (e.pointerType === \"mouse\" || e.pointerType === \"pen\") {\n this.notifyTarget(e, e.button === 2 ? \"rightupoutside\" : \"mouseupoutside\");\n }\n currentTarget = currentTarget.parent;\n }\n delete trackingData.pressTargetsByButton[from.button];\n }\n this.freeEvent(e);\n }\n /**\n * Maps the upstream `wheel` event to a downstream `wheel` event.\n * @param from - The upstream `wheel` event.\n */\n mapWheel(from) {\n if (!(from instanceof FederatedWheelEvent)) {\n warn(\"EventBoundary cannot map a non-wheel event as a wheel event\");\n return;\n }\n const wheelEvent = this.createWheelEvent(from);\n this.dispatchEvent(wheelEvent);\n this.freeEvent(wheelEvent);\n }\n /**\n * Finds the most specific event-target in the given propagation path that is still mounted in the scene graph.\n *\n * This is used to find the correct `pointerup` and `pointerout` target in the case that the original `pointerdown`\n * or `pointerover` target was unmounted from the scene graph.\n * @param propagationPath - The propagation path was valid in the past.\n * @returns - The most specific event-target still mounted at the same location in the scene graph.\n */\n findMountedTarget(propagationPath) {\n if (!propagationPath) {\n return null;\n }\n let currentTarget = propagationPath[0];\n for (let i = 1; i < propagationPath.length; i++) {\n if (propagationPath[i].parent === currentTarget) {\n currentTarget = propagationPath[i];\n } else {\n break;\n }\n }\n return currentTarget;\n }\n /**\n * Creates an event whose {@code originalEvent} is {@code from}, with an optional `type` and `target` override.\n *\n * The event is allocated using {@link EventBoundary#allocateEvent this.allocateEvent}.\n * @param from - The {@code originalEvent} for the returned event.\n * @param [type=from.type] - The type of the returned event.\n * @param target - The target of the returned event.\n */\n createPointerEvent(from, type, target) {\n const event = this.allocateEvent(FederatedPointerEvent);\n this.copyPointerData(from, event);\n this.copyMouseData(from, event);\n this.copyData(from, event);\n event.nativeEvent = from.nativeEvent;\n event.originalEvent = from;\n event.target = target ?? this.hitTest(event.global.x, event.global.y) ?? this._hitElements[0];\n if (typeof type === \"string\") {\n event.type = type;\n }\n return event;\n }\n /**\n * Creates a wheel event whose {@code originalEvent} is {@code from}.\n *\n * The event is allocated using {@link EventBoundary#allocateEvent this.allocateEvent}.\n * @param from - The upstream wheel event.\n */\n createWheelEvent(from) {\n const event = this.allocateEvent(FederatedWheelEvent);\n this.copyWheelData(from, event);\n this.copyMouseData(from, event);\n this.copyData(from, event);\n event.nativeEvent = from.nativeEvent;\n event.originalEvent = from;\n event.target = this.hitTest(event.global.x, event.global.y);\n return event;\n }\n /**\n * Clones the event {@code from}, with an optional {@code type} override.\n *\n * The event is allocated using {@link EventBoundary#allocateEvent this.allocateEvent}.\n * @param from - The event to clone.\n * @param [type=from.type] - The type of the returned event.\n */\n clonePointerEvent(from, type) {\n const event = this.allocateEvent(FederatedPointerEvent);\n event.nativeEvent = from.nativeEvent;\n event.originalEvent = from.originalEvent;\n this.copyPointerData(from, event);\n this.copyMouseData(from, event);\n this.copyData(from, event);\n event.target = from.target;\n event.path = from.composedPath().slice();\n event.type = type ?? event.type;\n return event;\n }\n /**\n * Copies wheel {@link FederatedWheelEvent} data from {@code from} into {@code to}.\n *\n * The following properties are copied:\n * + deltaMode\n * + deltaX\n * + deltaY\n * + deltaZ\n * @param from - The event to copy data from.\n * @param to - The event to copy data into.\n */\n copyWheelData(from, to) {\n to.deltaMode = from.deltaMode;\n to.deltaX = from.deltaX;\n to.deltaY = from.deltaY;\n to.deltaZ = from.deltaZ;\n }\n /**\n * Copies pointer {@link FederatedPointerEvent} data from {@code from} into {@code to}.\n *\n * The following properties are copied:\n * + pointerId\n * + width\n * + height\n * + isPrimary\n * + pointerType\n * + pressure\n * + tangentialPressure\n * + tiltX\n * + tiltY\n * @param from - The event to copy data from.\n * @param to - The event to copy data into.\n */\n copyPointerData(from, to) {\n if (!(from instanceof FederatedPointerEvent && to instanceof FederatedPointerEvent))\n return;\n to.pointerId = from.pointerId;\n to.width = from.width;\n to.height = from.height;\n to.isPrimary = from.isPrimary;\n to.pointerType = from.pointerType;\n to.pressure = from.pressure;\n to.tangentialPressure = from.tangentialPressure;\n to.tiltX = from.tiltX;\n to.tiltY = from.tiltY;\n to.twist = from.twist;\n }\n /**\n * Copies mouse {@link FederatedMouseEvent} data from {@code from} to {@code to}.\n *\n * The following properties are copied:\n * + altKey\n * + button\n * + buttons\n * + clientX\n * + clientY\n * + metaKey\n * + movementX\n * + movementY\n * + pageX\n * + pageY\n * + x\n * + y\n * + screen\n * + shiftKey\n * + global\n * @param from - The event to copy data from.\n * @param to - The event to copy data into.\n */\n copyMouseData(from, to) {\n if (!(from instanceof FederatedMouseEvent && to instanceof FederatedMouseEvent))\n return;\n to.altKey = from.altKey;\n to.button = from.button;\n to.buttons = from.buttons;\n to.client.copyFrom(from.client);\n to.ctrlKey = from.ctrlKey;\n to.metaKey = from.metaKey;\n to.movement.copyFrom(from.movement);\n to.screen.copyFrom(from.screen);\n to.shiftKey = from.shiftKey;\n to.global.copyFrom(from.global);\n }\n /**\n * Copies base {@link FederatedEvent} data from {@code from} into {@code to}.\n *\n * The following properties are copied:\n * + isTrusted\n * + srcElement\n * + timeStamp\n * + type\n * @param from - The event to copy data from.\n * @param to - The event to copy data into.\n */\n copyData(from, to) {\n to.isTrusted = from.isTrusted;\n to.srcElement = from.srcElement;\n to.timeStamp = performance.now();\n to.type = from.type;\n to.detail = from.detail;\n to.view = from.view;\n to.which = from.which;\n to.layer.copyFrom(from.layer);\n to.page.copyFrom(from.page);\n }\n /**\n * @param id - The pointer ID.\n * @returns The tracking data stored for the given pointer. If no data exists, a blank\n * state will be created.\n */\n trackingData(id) {\n if (!this.mappingState.trackingData[id]) {\n this.mappingState.trackingData[id] = {\n pressTargetsByButton: {},\n clicksByButton: {},\n overTarget: null\n };\n }\n return this.mappingState.trackingData[id];\n }\n /**\n * Allocate a specific type of event from {@link EventBoundary#eventPool this.eventPool}.\n *\n * This allocation is constructor-agnostic, as long as it only takes one argument - this event\n * boundary.\n * @param constructor - The event's constructor.\n */\n allocateEvent(constructor) {\n if (!this.eventPool.has(constructor)) {\n this.eventPool.set(constructor, []);\n }\n const event = this.eventPool.get(constructor).pop() || new constructor(this);\n event.eventPhase = event.NONE;\n event.currentTarget = null;\n event.path = null;\n event.target = null;\n return event;\n }\n /**\n * Frees the event and puts it back into the event pool.\n *\n * It is illegal to reuse the event until it is allocated again, using `this.allocateEvent`.\n *\n * It is also advised that events not allocated from {@link EventBoundary#allocateEvent this.allocateEvent}\n * not be freed. This is because of the possibility that the same event is freed twice, which can cause\n * it to be allocated twice & result in overwriting.\n * @param event - The event to be freed.\n * @throws Error if the event is managed by another event boundary.\n */\n freeEvent(event) {\n if (event.manager !== this)\n throw new Error(\"It is illegal to free an event not managed by this EventBoundary!\");\n const constructor = event.constructor;\n if (!this.eventPool.has(constructor)) {\n this.eventPool.set(constructor, []);\n }\n this.eventPool.get(constructor).push(event);\n }\n /**\n * Similar to {@link EventEmitter.emit}, except it stops if the `propagationImmediatelyStopped` flag\n * is set on the event.\n * @param e - The event to call each listener with.\n * @param type - The event key.\n */\n _notifyListeners(e, type) {\n const listeners = e.currentTarget._events[type];\n if (!listeners)\n return;\n if (!e.currentTarget.isInteractive())\n return;\n if (\"fn\" in listeners) {\n if (listeners.once)\n e.currentTarget.removeListener(type, listeners.fn, void 0, true);\n listeners.fn.call(listeners.context, e);\n } else {\n for (let i = 0, j = listeners.length; i < j && !e.propagationImmediatelyStopped; i++) {\n if (listeners[i].once)\n e.currentTarget.removeListener(type, listeners[i].fn, void 0, true);\n listeners[i].fn.call(listeners[i].context, e);\n }\n }\n }\n}\n\nexport { EventBoundary };\n//# sourceMappingURL=EventBoundary.mjs.map\n","import { ExtensionType } from '../extensions/Extensions.mjs';\nimport { EventBoundary } from './EventBoundary.mjs';\nimport { EventsTicker } from './EventTicker.mjs';\nimport { FederatedPointerEvent } from './FederatedPointerEvent.mjs';\nimport { FederatedWheelEvent } from './FederatedWheelEvent.mjs';\n\n\"use strict\";\nconst MOUSE_POINTER_ID = 1;\nconst TOUCH_TO_POINTER = {\n touchstart: \"pointerdown\",\n touchend: \"pointerup\",\n touchendoutside: \"pointerupoutside\",\n touchmove: \"pointermove\",\n touchcancel: \"pointercancel\"\n};\nconst _EventSystem = class _EventSystem {\n /**\n * @param {Renderer} renderer\n */\n constructor(renderer) {\n /** Does the device support touch events https://www.w3.org/TR/touch-events/ */\n this.supportsTouchEvents = \"ontouchstart\" in globalThis;\n /** Does the device support pointer events https://www.w3.org/Submission/pointer-events/ */\n this.supportsPointerEvents = !!globalThis.PointerEvent;\n /**\n * The DOM element to which the root event listeners are bound. This is automatically set to\n * the renderer's {@link Renderer#view view}.\n */\n this.domElement = null;\n /** The resolution used to convert between the DOM client space into world space. */\n this.resolution = 1;\n this.renderer = renderer;\n this.rootBoundary = new EventBoundary(null);\n EventsTicker.init(this);\n this.autoPreventDefault = true;\n this._eventsAdded = false;\n this._rootPointerEvent = new FederatedPointerEvent(null);\n this._rootWheelEvent = new FederatedWheelEvent(null);\n this.cursorStyles = {\n default: \"inherit\",\n pointer: \"pointer\"\n };\n this.features = new Proxy({ ..._EventSystem.defaultEventFeatures }, {\n set: (target, key, value) => {\n if (key === \"globalMove\") {\n this.rootBoundary.enableGlobalMoveEvents = value;\n }\n target[key] = value;\n return true;\n }\n });\n this._onPointerDown = this._onPointerDown.bind(this);\n this._onPointerMove = this._onPointerMove.bind(this);\n this._onPointerUp = this._onPointerUp.bind(this);\n this._onPointerOverOut = this._onPointerOverOut.bind(this);\n this.onWheel = this.onWheel.bind(this);\n }\n /**\n * The default interaction mode for all display objects.\n * @see Container.eventMode\n * @type {EventMode}\n * @readonly\n * @since 7.2.0\n */\n static get defaultEventMode() {\n return this._defaultEventMode;\n }\n /**\n * Runner init called, view is available at this point.\n * @ignore\n */\n init(options) {\n const { canvas, resolution } = this.renderer;\n this.setTargetElement(canvas);\n this.resolution = resolution;\n _EventSystem._defaultEventMode = options.eventMode ?? \"passive\";\n Object.assign(this.features, options.eventFeatures ?? {});\n this.rootBoundary.enableGlobalMoveEvents = this.features.globalMove;\n }\n /**\n * Handle changing resolution.\n * @ignore\n */\n resolutionChange(resolution) {\n this.resolution = resolution;\n }\n /** Destroys all event listeners and detaches the renderer. */\n destroy() {\n this.setTargetElement(null);\n this.renderer = null;\n this._currentCursor = null;\n }\n /**\n * Sets the current cursor mode, handling any callbacks or CSS style changes.\n * @param mode - cursor mode, a key from the cursorStyles dictionary\n */\n setCursor(mode) {\n mode = mode || \"default\";\n let applyStyles = true;\n if (globalThis.OffscreenCanvas && this.domElement instanceof OffscreenCanvas) {\n applyStyles = false;\n }\n if (this._currentCursor === mode) {\n return;\n }\n this._currentCursor = mode;\n const style = this.cursorStyles[mode];\n if (style) {\n switch (typeof style) {\n case \"string\":\n if (applyStyles) {\n this.domElement.style.cursor = style;\n }\n break;\n case \"function\":\n style(mode);\n break;\n case \"object\":\n if (applyStyles) {\n Object.assign(this.domElement.style, style);\n }\n break;\n }\n } else if (applyStyles && typeof mode === \"string\" && !Object.prototype.hasOwnProperty.call(this.cursorStyles, mode)) {\n this.domElement.style.cursor = mode;\n }\n }\n /**\n * The global pointer event.\n * Useful for getting the pointer position without listening to events.\n * @since 7.2.0\n */\n get pointer() {\n return this._rootPointerEvent;\n }\n /**\n * Event handler for pointer down events on {@link EventSystem#domElement this.domElement}.\n * @param nativeEvent - The native mouse/pointer/touch event.\n */\n _onPointerDown(nativeEvent) {\n if (!this.features.click)\n return;\n this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;\n const events = this._normalizeToPointerData(nativeEvent);\n if (this.autoPreventDefault && events[0].isNormalized) {\n const cancelable = nativeEvent.cancelable || !(\"cancelable\" in nativeEvent);\n if (cancelable) {\n nativeEvent.preventDefault();\n }\n }\n for (let i = 0, j = events.length; i < j; i++) {\n const nativeEvent2 = events[i];\n const federatedEvent = this._bootstrapEvent(this._rootPointerEvent, nativeEvent2);\n this.rootBoundary.mapEvent(federatedEvent);\n }\n this.setCursor(this.rootBoundary.cursor);\n }\n /**\n * Event handler for pointer move events on on {@link EventSystem#domElement this.domElement}.\n * @param nativeEvent - The native mouse/pointer/touch events.\n */\n _onPointerMove(nativeEvent) {\n if (!this.features.move)\n return;\n this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;\n EventsTicker.pointerMoved();\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 this.rootBoundary.mapEvent(event);\n }\n this.setCursor(this.rootBoundary.cursor);\n }\n /**\n * Event handler for pointer up events on {@link EventSystem#domElement this.domElement}.\n * @param nativeEvent - The native mouse/pointer/touch event.\n */\n _onPointerUp(nativeEvent) {\n if (!this.features.click)\n return;\n this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;\n let target = nativeEvent.target;\n if (nativeEvent.composedPath && nativeEvent.composedPath().length > 0) {\n target = nativeEvent.composedPath()[0];\n }\n const outside = target !== this.domElement ? \"outside\" : \"\";\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 event.type += outside;\n this.rootBoundary.mapEvent(event);\n }\n this.setCursor(this.rootBoundary.cursor);\n }\n /**\n * Event handler for pointer over & out events on {@link EventSystem#domElement this.domElement}.\n * @param nativeEvent - The native mouse/pointer/touch event.\n */\n _onPointerOverOut(nativeEvent) {\n if (!this.features.click)\n return;\n this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;\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 this.rootBoundary.mapEvent(event);\n }\n this.setCursor(this.rootBoundary.cursor);\n }\n /**\n * Passive handler for `wheel` events on {@link EventSystem.domElement this.domElement}.\n * @param nativeEvent - The native wheel event.\n */\n onWheel(nativeEvent) {\n if (!this.features.wheel)\n return;\n const wheelEvent = this.normalizeWheelEvent(nativeEvent);\n this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;\n this.rootBoundary.mapEvent(wheelEvent);\n }\n /**\n * Sets the {@link EventSystem#domElement domElement} and binds event listeners.\n *\n * To deregister the current DOM element without setting a new one, pass {@code null}.\n * @param element - The new DOM element.\n */\n setTargetElement(element) {\n this._removeEvents();\n this.domElement = element;\n EventsTicker.domElement = element;\n this._addEvents();\n }\n /** Register event listeners on {@link Renderer#domElement this.domElement}. */\n _addEvents() {\n if (this._eventsAdded || !this.domElement) {\n return;\n }\n EventsTicker.addTickerListener();\n const style = this.domElement.style;\n if (style) {\n if (globalThis.navigator.msPointerEnabled) {\n style.msContentZooming = \"none\";\n style.msTouchAction = \"none\";\n } else if (this.supportsPointerEvents) {\n style.touchAction = \"none\";\n }\n }\n if (this.supportsPointerEvents) {\n globalThis.document.addEventListener(\"pointermove\", this._onPointerMove, true);\n this.domElement.addEventListener(\"pointerdown\", this._onPointerDown, true);\n this.domElement.addEventListener(\"pointerleave\", this._onPointerOverOut, true);\n this.domElement.addEventListener(\"pointerover\", this._onPointerOverOut, true);\n globalThis.addEventListener(\"pointerup\", this._onPointerUp, true);\n } else {\n globalThis.document.addEventListener(\"mousemove\", this._onPointerMove, true);\n this.domElement.addEventListener(\"mousedown\", this._onPointerDown, true);\n this.domElement.addEventListener(\"mouseout\", this._onPointerOverOut, true);\n this.domElement.addEventListener(\"mouseover\", this._onPointerOverOut, true);\n globalThis.addEventListener(\"mouseup\", this._onPointerUp, true);\n if (this.supportsTouchEvents) {\n this.domElement.addEventListener(\"touchstart\", this._onPointerDown, true);\n this.domElement.addEventListener(\"touchend\", this._onPointerUp, true);\n this.domElement.addEventListener(\"touchmove\", this._onPointerMove, true);\n }\n }\n this.domElement.addEventListener(\"wheel\", this.onWheel, {\n passive: true,\n capture: true\n });\n this._eventsAdded = true;\n }\n /** Unregister event listeners on {@link EventSystem#domElement this.domElement}. */\n _removeEvents() {\n if (!this._eventsAdded || !this.domElement) {\n return;\n }\n EventsTicker.removeTickerListener();\n const style = this.domElement.style;\n if (style) {\n if (globalThis.navigator.msPointerEnabled) {\n style.msContentZooming = \"\";\n style.msTouchAction = \"\";\n } else if (this.supportsPointerEvents) {\n style.touchAction = \"\";\n }\n }\n if (this.supportsPointerEvents) {\n globalThis.document.removeEventListener(\"pointermove\", this._onPointerMove, true);\n this.domElement.removeEventListener(\"pointerdown\", this._onPointerDown, true);\n this.domElement.removeEventListener(\"pointerleave\", this._onPointerOverOut, true);\n this.domElement.removeEventListener(\"pointerover\", this._onPointerOverOut, true);\n globalThis.removeEventListener(\"pointerup\", this._onPointerUp, true);\n } else {\n globalThis.document.removeEventListener(\"mousemove\", this._onPointerMove, true);\n this.domElement.removeEventListener(\"mousedown\", this._onPointerDown, true);\n this.domElement.removeEventListener(\"mouseout\", this._onPointerOverOut, true);\n this.domElement.removeEventListener(\"mouseover\", this._onPointerOverOut, true);\n globalThis.removeEventListener(\"mouseup\", this._onPointerUp, true);\n if (this.supportsTouchEvents) {\n this.domElement.removeEventListener(\"touchstart\", this._onPointerDown, true);\n this.domElement.removeEventListener(\"touchend\", this._onPointerUp, true);\n this.domElement.removeEventListener(\"touchmove\", this._onPointerMove, true);\n }\n }\n this.domElement.removeEventListener(\"wheel\", this.onWheel, true);\n this.domElement = null;\n this._eventsAdded = false;\n }\n /**\n * Maps x and y coords from a DOM object and maps them correctly to the PixiJS view. The\n * resulting value is stored in the point. This takes into account the fact that the DOM\n * element could be scaled and positioned anywhere on the screen.\n * @param {PointData} point - the point that the result will be stored in\n * @param {number} x - the x coord of the position to map\n * @param {number} y - the y coord of the position to map\n */\n mapPositionToPoint(point, x, y) {\n const rect = this.domElement.isConnected ? this.domElement.getBoundingClientRect() : {\n x: 0,\n y: 0,\n width: this.domElement.width,\n height: this.domElement.height,\n left: 0,\n top: 0\n };\n const resolutionMultiplier = 1 / this.resolution;\n point.x = (x - rect.left) * (this.domElement.width / rect.width) * resolutionMultiplier;\n point.y = (y - rect.top) * (this.domElement.height / rect.height) * resolutionMultiplier;\n }\n /**\n * Ensures that the original event object contains all data that a regular pointer event would have\n * @param event - The original event data from a touch or mouse event\n * @returns An array containing a single normalized pointer event, in the case of a pointer\n * or mouse event, or a multiple normalized pointer events if there are multiple changed touches\n */\n _normalizeToPointerData(event) {\n const normalizedEvents = [];\n if (this.supportsTouchEvents && event instanceof TouchEvent) {\n for (let i = 0, li = event.changedTouches.length; i < li; i++) {\n const touch = event.changedTouches[i];\n if (typeof touch.button === \"undefined\")\n touch.button = 0;\n if (typeof touch.buttons === \"undefined\")\n touch.buttons = 1;\n if (typeof touch.isPrimary === \"undefined\") {\n touch.isPrimary = event.touches.length === 1 && event.type === \"touchstart\";\n }\n if (typeof touch.width === \"undefined\")\n touch.width = touch.radiusX || 1;\n if (typeof touch.height === \"undefined\")\n touch.height = touch.radiusY || 1;\n if (typeof touch.tiltX === \"undefined\")\n touch.tiltX = 0;\n if (typeof touch.tiltY === \"undefined\")\n touch.tiltY = 0;\n if (typeof touch.pointerType === \"undefined\")\n touch.pointerType = \"touch\";\n if (typeof touch.pointerId === \"undefined\")\n touch.pointerId = touch.identifier || 0;\n if (typeof touch.pressure === \"undefined\")\n touch.pressure = touch.force || 0.5;\n if (typeof touch.twist === \"undefined\")\n touch.twist = 0;\n if (typeof touch.tangentialPressure === \"undefined\")\n touch.tangentialPressure = 0;\n if (typeof touch.layerX === \"undefined\")\n touch.layerX = touch.offsetX = touch.clientX;\n if (typeof touch.layerY === \"undefined\")\n touch.layerY = touch.offsetY = touch.clientY;\n touch.isNormalized = true;\n touch.type = event.type;\n normalizedEvents.push(touch);\n }\n } else if (!globalThis.MouseEvent || event instanceof MouseEvent && (!this.supportsPointerEvents || !(event instanceof globalThis.PointerEvent))) {\n const tempEvent = event;\n if (typeof tempEvent.isPrimary === \"undefined\")\n tempEvent.isPrimary = true;\n if (typeof tempEvent.width === \"undefined\")\n tempEvent.width = 1;\n if (typeof tempEvent.height === \"undefined\")\n tempEvent.height = 1;\n if (typeof tempEvent.tiltX === \"undefined\")\n tempEvent.tiltX = 0;\n if (typeof tempEvent.tiltY === \"undefined\")\n tempEvent.tiltY = 0;\n if (typeof tempEvent.pointerType === \"undefined\")\n tempEvent.pointerType = \"mouse\";\n if (typeof tempEvent.pointerId === \"undefined\")\n tempEvent.pointerId = MOUSE_POINTER_ID;\n if (typeof tempEvent.pressure === \"undefined\")\n tempEvent.pressure = 0.5;\n if (typeof tempEvent.twist === \"undefined\")\n tempEvent.twist = 0;\n if (typeof tempEvent.tangentialPressure === \"undefined\")\n tempEvent.tangentialPressure = 0;\n tempEvent.isNormalized = true;\n normalizedEvents.push(tempEvent);\n } else {\n normalizedEvents.push(event);\n }\n return normalizedEvents;\n }\n /**\n * Normalizes the native {@link https://w3c.github.io/uievents/#interface-wheelevent WheelEvent}.\n *\n * The returned {@link FederatedWheelEvent} is a shared instance. It will not persist across\n * multiple native wheel events.\n * @param nativeEvent - The native wheel event that occurred on the canvas.\n * @returns A federated wheel event.\n */\n normalizeWheelEvent(nativeEvent) {\n const event = this._rootWheelEvent;\n this._transferMouseData(event, nativeEvent);\n event.deltaX = nativeEvent.deltaX;\n event.deltaY = nativeEvent.deltaY;\n event.deltaZ = nativeEvent.deltaZ;\n event.deltaMode = nativeEvent.deltaMode;\n this.mapPositionToPoint(event.screen, nativeEvent.clientX, nativeEvent.clientY);\n event.global.copyFrom(event.screen);\n event.offset.copyFrom(event.screen);\n event.nativeEvent = nativeEvent;\n event.type = nativeEvent.type;\n return event;\n }\n /**\n * Normalizes the `nativeEvent` into a federateed {@link FederatedPointerEvent}.\n * @param event\n * @param nativeEvent\n */\n _bootstrapEvent(event, nativeEvent) {\n event.originalEvent = null;\n event.nativeEvent = nativeEvent;\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 this.mapPositionToPoint(event.screen, nativeEvent.clientX, nativeEvent.clientY);\n event.global.copyFrom(event.screen);\n event.offset.copyFrom(event.screen);\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 return event;\n }\n /**\n * Transfers base & mouse event data from the {@code nativeEvent} to the federated event.\n * @param event\n * @param nativeEvent\n */\n _transferMouseData(event, nativeEvent) {\n event.isTrusted = nativeEvent.isTrusted;\n event.srcElement = nativeEvent.srcElement;\n event.timeStamp = performance.now();\n event.type = nativeEvent.type;\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.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 event.shiftKey = nativeEvent.shiftKey;\n }\n};\n/** @ignore */\n_EventSystem.extension = {\n name: \"events\",\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.CanvasSystem,\n ExtensionType.WebGPUSystem\n ],\n priority: -1\n};\n/**\n * The event features that are enabled by the EventSystem\n * (included in the **pixi.js** and **pixi.js-legacy** bundle), otherwise it will be ignored.\n * @since 7.2.0\n */\n_EventSystem.defaultEventFeatures = {\n /** Enables pointer events associated with pointer movement. */\n move: true,\n /** Enables global pointer move events. */\n globalMove: true,\n /** Enables pointer events associated with clicking. */\n click: true,\n /** Enables wheel events. */\n wheel: true\n};\nlet EventSystem = _EventSystem;\n\nexport { EventSystem };\n//# sourceMappingURL=EventSystem.mjs.map\n","import { extensions } from '../extensions/Extensions.mjs';\nimport { Container } from '../scene/container/Container.mjs';\nimport { EventSystem } from './EventSystem.mjs';\nimport { FederatedContainer } from './FederatedEventTarget.mjs';\n\n\"use strict\";\nextensions.add(EventSystem);\nContainer.mixin(FederatedContainer);\n//# sourceMappingURL=init.mjs.map\n","import { EventSystem } from './EventSystem.mjs';\nimport { FederatedEvent } from './FederatedEvent.mjs';\n\n\"use strict\";\nconst FederatedContainer = {\n /**\n * Property-based event handler for the `click` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onclick = (event) => {\n * //some function here that happens on click\n * }\n */\n onclick: null,\n /**\n * Property-based event handler for the `mousedown` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onmousedown = (event) => {\n * //some function here that happens on mousedown\n * }\n */\n onmousedown: null,\n /**\n * Property-based event handler for the `mouseenter` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onmouseenter = (event) => {\n * //some function here that happens on mouseenter\n * }\n */\n onmouseenter: null,\n /**\n * Property-based event handler for the `mouseleave` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onmouseleave = (event) => {\n * //some function here that happens on mouseleave\n * }\n */\n onmouseleave: null,\n /**\n * Property-based event handler for the `mousemove` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onmousemove = (event) => {\n * //some function here that happens on mousemove\n * }\n */\n onmousemove: null,\n /**\n * Property-based event handler for the `globalmousemove` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onglobalmousemove = (event) => {\n * //some function here that happens on globalmousemove\n * }\n */\n onglobalmousemove: null,\n /**\n * Property-based event handler for the `mouseout` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onmouseout = (event) => {\n * //some function here that happens on mouseout\n * }\n */\n onmouseout: null,\n /**\n * Property-based event handler for the `mouseover` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onmouseover = (event) => {\n * //some function here that happens on mouseover\n * }\n */\n onmouseover: null,\n /**\n * Property-based event handler for the `mouseup` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onmouseup = (event) => {\n * //some function here that happens on mouseup\n * }\n */\n onmouseup: null,\n /**\n * Property-based event handler for the `mouseupoutside` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onmouseupoutside = (event) => {\n * //some function here that happens on mouseupoutside\n * }\n */\n onmouseupoutside: null,\n /**\n * Property-based event handler for the `pointercancel` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onpointercancel = (event) => {\n * //some function here that happens on pointercancel\n * }\n */\n onpointercancel: null,\n /**\n * Property-based event handler for the `pointerdown` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onpointerdown = (event) => {\n * //some function here that happens on pointerdown\n * }\n */\n onpointerdown: null,\n /**\n * Property-based event handler for the `pointerenter` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onpointerenter = (event) => {\n * //some function here that happens on pointerenter\n * }\n */\n onpointerenter: null,\n /**\n * Property-based event handler for the `pointerleave` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onpointerleave = (event) => {\n * //some function here that happens on pointerleave\n * }\n */\n onpointerleave: null,\n /**\n * Property-based event handler for the `pointermove` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onpointermove = (event) => {\n * //some function here that happens on pointermove\n * }\n */\n onpointermove: null,\n /**\n * Property-based event handler for the `globalpointermove` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onglobalpointermove = (event) => {\n * //some function here that happens on globalpointermove\n * }\n */\n onglobalpointermove: null,\n /**\n * Property-based event handler for the `pointerout` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onpointerout = (event) => {\n * //some function here that happens on pointerout\n * }\n */\n onpointerout: null,\n /**\n * Property-based event handler for the `pointerover` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onpointerover = (event) => {\n * //some function here that happens on pointerover\n * }\n */\n onpointerover: null,\n /**\n * Property-based event handler for the `pointertap` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onpointertap = (event) => {\n * //some function here that happens on pointertap\n * }\n */\n onpointertap: null,\n /**\n * Property-based event handler for the `pointerup` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onpointerup = (event) => {\n * //some function here that happens on pointerup\n * }\n */\n onpointerup: null,\n /**\n * Property-based event handler for the `pointerupoutside` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onpointerupoutside = (event) => {\n * //some function here that happens on pointerupoutside\n * }\n */\n onpointerupoutside: null,\n /**\n * Property-based event handler for the `rightclick` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onrightclick = (event) => {\n * //some function here that happens on rightclick\n * }\n */\n onrightclick: null,\n /**\n * Property-based event handler for the `rightdown` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onrightdown = (event) => {\n * //some function here that happens on rightdown\n * }\n */\n onrightdown: null,\n /**\n * Property-based event handler for the `rightup` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onrightup = (event) => {\n * //some function here that happens on rightup\n * }\n */\n onrightup: null,\n /**\n * Property-based event handler for the `rightupoutside` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onrightupoutside = (event) => {\n * //some function here that happens on rightupoutside\n * }\n */\n onrightupoutside: null,\n /**\n * Property-based event handler for the `tap` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.ontap = (event) => {\n * //some function here that happens on tap\n * }\n */\n ontap: null,\n /**\n * Property-based event handler for the `touchcancel` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.ontouchcancel = (event) => {\n * //some function here that happens on touchcancel\n * }\n */\n ontouchcancel: null,\n /**\n * Property-based event handler for the `touchend` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.ontouchend = (event) => {\n * //some function here that happens on touchend\n * }\n */\n ontouchend: null,\n /**\n * Property-based event handler for the `touchendoutside` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.ontouchendoutside = (event) => {\n * //some function here that happens on touchendoutside\n * }\n */\n ontouchendoutside: null,\n /**\n * Property-based event handler for the `touchmove` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.ontouchmove = (event) => {\n * //some function here that happens on touchmove\n * }\n */\n ontouchmove: null,\n /**\n * Property-based event handler for the `globaltouchmove` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onglobaltouchmove = (event) => {\n * //some function here that happens on globaltouchmove\n * }\n */\n onglobaltouchmove: null,\n /**\n * Property-based event handler for the `touchstart` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.ontouchstart = (event) => {\n * //some function here that happens on touchstart\n * }\n */\n ontouchstart: null,\n /**\n * Property-based event handler for the `wheel` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onwheel = (event) => {\n * //some function here that happens on wheel\n * }\n */\n onwheel: null,\n /**\n * Enable interaction events for the Container. Touch, pointer and mouse\n * @memberof scene.Container#\n */\n get interactive() {\n return this.eventMode === \"dynamic\" || this.eventMode === \"static\";\n },\n set interactive(value) {\n this.eventMode = value ? \"static\" : \"passive\";\n },\n /**\n * @ignore\n */\n _internalEventMode: void 0,\n /**\n * Enable interaction events for the Container. Touch, pointer and mouse.\n * There are 5 types of interaction settings:\n * - `'none'`: Ignores all interaction events, even on its children.\n * - `'passive'`: **(default)** Does not emit events and ignores all hit testing on itself and non-interactive children.\n * Interactive children will still emit events.\n * - `'auto'`: Does not emit events but is hit tested if parent is interactive. Same as `interactive = false` in v7\n * - `'static'`: Emit events and is hit tested. Same as `interaction = true` in v7\n * - `'dynamic'`: Emits events and is hit tested but will also receive mock interaction events fired from a ticker to\n * allow for interaction when the mouse isn't moving\n * @example\n * import { Sprite } from 'pixi.js';\n *\n * const sprite = new Sprite(texture);\n * sprite.eventMode = 'static';\n * sprite.on('tap', (event) => {\n * // Handle event\n * });\n * @memberof scene.Container#\n * @since 7.2.0\n */\n get eventMode() {\n return this._internalEventMode ?? EventSystem.defaultEventMode;\n },\n set eventMode(value) {\n this._internalEventMode = value;\n },\n /**\n * Determines if the container is interactive or not\n * @returns {boolean} Whether the container is interactive or not\n * @memberof scene.Container#\n * @since 7.2.0\n * @example\n * import { Sprite } from 'pixi.js';\n *\n * const sprite = new Sprite(texture);\n * sprite.eventMode = 'static';\n * sprite.isInteractive(); // true\n *\n * sprite.eventMode = 'dynamic';\n * sprite.isInteractive(); // true\n *\n * sprite.eventMode = 'none';\n * sprite.isInteractive(); // false\n *\n * sprite.eventMode = 'passive';\n * sprite.isInteractive(); // false\n *\n * sprite.eventMode = 'auto';\n * sprite.isInteractive(); // false\n */\n isInteractive() {\n return this.eventMode === \"static\" || this.eventMode === \"dynamic\";\n },\n /**\n * Determines if the children to the container can be clicked/touched\n * Setting this to false allows PixiJS to bypass a recursive `hitTest` function\n * @memberof scene.Container#\n */\n interactiveChildren: true,\n /**\n * Interaction shape. Children will be hit first, then this shape will be checked.\n * Setting this will cause this shape to be checked in hit tests rather than the container's bounds.\n * @example\n * import { Rectangle, Sprite } from 'pixi.js';\n *\n * const sprite = new Sprite(texture);\n * sprite.interactive = true;\n * sprite.hitArea = new Rectangle(0, 0, 100, 100);\n * @member {IHitArea}\n * @memberof scene.Container#\n */\n hitArea: null,\n /**\n * Unlike `on` or `addListener` which are methods from EventEmitter, `addEventListener`\n * seeks to be compatible with the DOM's `addEventListener` with support for options.\n * @memberof scene.Container\n * @param type - The type of event to listen to.\n * @param listener - The listener callback or object.\n * @param options - Listener options, used for capture phase.\n * @example\n * // Tell the user whether they did a single, double, triple, or nth click.\n * button.addEventListener('click', {\n * handleEvent(e): {\n * let prefix;\n *\n * switch (e.detail) {\n * case 1: prefix = 'single'; break;\n * case 2: prefix = 'double'; break;\n * case 3: prefix = 'triple'; break;\n * default: prefix = e.detail + 'th'; break;\n * }\n *\n * console.log('That was a ' + prefix + 'click');\n * }\n * });\n *\n * // But skip the first click!\n * button.parent.addEventListener('click', function blockClickOnce(e) {\n * e.stopImmediatePropagation();\n * button.parent.removeEventListener('click', blockClickOnce, true);\n * }, {\n * capture: true,\n * });\n */\n addEventListener(type, listener, options) {\n const capture = typeof options === \"boolean\" && options || typeof options === \"object\" && options.capture;\n const signal = typeof options === \"object\" ? options.signal : void 0;\n const once = typeof options === \"object\" ? options.once === true : false;\n const context = typeof listener === \"function\" ? void 0 : listener;\n type = capture ? `${type}capture` : type;\n const listenerFn = typeof listener === \"function\" ? listener : listener.handleEvent;\n const emitter = this;\n if (signal) {\n signal.addEventListener(\"abort\", () => {\n emitter.off(type, listenerFn, context);\n });\n }\n if (once) {\n emitter.once(type, listenerFn, context);\n } else {\n emitter.on(type, listenerFn, context);\n }\n },\n /**\n * Unlike `off` or `removeListener` which are methods from EventEmitter, `removeEventListener`\n * seeks to be compatible with the DOM's `removeEventListener` with support for options.\n * @memberof scene.Container\n * @param type - The type of event the listener is bound to.\n * @param listener - The listener callback or object.\n * @param options - The original listener options. This is required to deregister a capture phase listener.\n */\n removeEventListener(type, listener, options) {\n const capture = typeof options === \"boolean\" && options || typeof options === \"object\" && options.capture;\n const context = typeof listener === \"function\" ? void 0 : listener;\n type = capture ? `${type}capture` : type;\n listener = typeof listener === \"function\" ? listener : listener.handleEvent;\n this.off(type, listener, context);\n },\n /**\n * Dispatch the event on this {@link Container} using the event's {@link EventBoundary}.\n *\n * The target of the event is set to `this` and the `defaultPrevented` flag is cleared before dispatch.\n * @memberof scene.Container\n * @param e - The event to dispatch.\n * @returns Whether the {@link FederatedEvent.preventDefault preventDefault}() method was not invoked.\n * @example\n * // Reuse a click event!\n * button.dispatchEvent(clickEvent);\n */\n dispatchEvent(e) {\n if (!(e instanceof FederatedEvent)) {\n throw new Error(\"Container cannot propagate events outside of the Federated Events API\");\n }\n e.defaultPrevented = false;\n e.path = null;\n e.target = this;\n e.manager.dispatchEvent(e);\n return !e.defaultPrevented;\n }\n};\n\nexport { FederatedContainer };\n//# sourceMappingURL=FederatedEventTarget.mjs.map\n"],"names":["Error","Event","a","MSStream","navigator","r","globalThis","A","document","performance","d","e","t","Object","PointerEvent","arguments","Map","i","Array","o","Proxy","OffscreenCanvas","n","TouchEvent","MouseEvent","value"],"mappings":"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"}
1
+ {"version":3,"file":"static/js/async/860.b56301d9.js","sources":["../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/events/FederatedEvent.mjs","../../../../../../node_modules/.pnpm/ismobilejs@1.1.1/node_modules/ismobilejs/esm/isMobile.js","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/utils/browser/isMobile.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/accessibility/AccessibilitySystem.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/accessibility/init.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/accessibility/accessibilityTarget.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/events/EventTicker.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/events/FederatedMouseEvent.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/events/FederatedPointerEvent.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/events/FederatedWheelEvent.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/events/EventBoundary.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/events/EventSystem.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/events/init.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/events/FederatedEventTarget.mjs"],"sourcesContent":["import { Point } from '../maths/point/Point.mjs';\n\n\"use strict\";\nclass FederatedEvent {\n /**\n * @param manager - The event boundary which manages this event. Propagation can only occur\n * within the boundary's jurisdiction.\n */\n constructor(manager) {\n /** Flags whether this event bubbles. This will take effect only if it is set before propagation. */\n this.bubbles = true;\n /** @deprecated since 7.0.0 */\n this.cancelBubble = true;\n /**\n * Flags whether this event can be canceled using {@link FederatedEvent.preventDefault}. This is always\n * false (for now).\n */\n this.cancelable = false;\n /**\n * Flag added for compatibility with DOM {@code Event}. It is not used in the Federated Events\n * API.\n * @see https://dom.spec.whatwg.org/#dom-event-composed\n */\n this.composed = false;\n /** Flags whether the default response of the user agent was prevent through this event. */\n this.defaultPrevented = false;\n /**\n * The propagation phase.\n * @default {@link FederatedEvent.NONE}\n */\n this.eventPhase = FederatedEvent.prototype.NONE;\n /** Flags whether propagation was stopped. */\n this.propagationStopped = false;\n /** Flags whether propagation was immediately stopped. */\n this.propagationImmediatelyStopped = false;\n /** The coordinates of the event relative to the nearest DOM layer. This is a non-standard property. */\n this.layer = new Point();\n /** The coordinates of the event relative to the DOM document. This is a non-standard property. */\n this.page = new Point();\n this.NONE = 0;\n this.CAPTURING_PHASE = 1;\n this.AT_TARGET = 2;\n this.BUBBLING_PHASE = 3;\n this.manager = manager;\n }\n /** @readonly */\n get layerX() {\n return this.layer.x;\n }\n /** @readonly */\n get layerY() {\n return this.layer.y;\n }\n /** @readonly */\n get pageX() {\n return this.page.x;\n }\n /** @readonly */\n get pageY() {\n return this.page.y;\n }\n /**\n * Fallback for the deprecated @code{InteractionEvent.data}.\n * @deprecated since 7.0.0\n */\n get data() {\n return this;\n }\n /** The propagation path for this event. Alias for {@link EventBoundary.propagationPath}. */\n composedPath() {\n if (this.manager && (!this.path || this.path[this.path.length - 1] !== this.target)) {\n this.path = this.target ? this.manager.propagationPath(this.target) : [];\n }\n return this.path;\n }\n /**\n * Unimplemented method included for implementing the DOM interface {@code Event}. It will throw an {@code Error}.\n * @deprecated\n * @param _type\n * @param _bubbles\n * @param _cancelable\n */\n initEvent(_type, _bubbles, _cancelable) {\n throw new Error(\"initEvent() is a legacy DOM API. It is not implemented in the Federated Events API.\");\n }\n /**\n * Unimplemented method included for implementing the DOM interface {@code UIEvent}. It will throw an {@code Error}.\n * @deprecated\n * @param _typeArg\n * @param _bubblesArg\n * @param _cancelableArg\n * @param _viewArg\n * @param _detailArg\n */\n initUIEvent(_typeArg, _bubblesArg, _cancelableArg, _viewArg, _detailArg) {\n throw new Error(\"initUIEvent() is a legacy DOM API. It is not implemented in the Federated Events API.\");\n }\n /** Prevent default behavior of PixiJS and the user agent. */\n preventDefault() {\n if (this.nativeEvent instanceof Event && this.nativeEvent.cancelable) {\n this.nativeEvent.preventDefault();\n }\n this.defaultPrevented = true;\n }\n /**\n * Stop this event from propagating to any addition listeners, including on the\n * {@link FederatedEventTarget.currentTarget currentTarget} and also the following\n * event targets on the propagation path.\n */\n stopImmediatePropagation() {\n this.propagationImmediatelyStopped = true;\n }\n /**\n * Stop this event from propagating to the next {@link FederatedEventTarget}. The rest of the listeners\n * on the {@link FederatedEventTarget.currentTarget currentTarget} will still be notified.\n */\n stopPropagation() {\n this.propagationStopped = true;\n }\n}\n\nexport { FederatedEvent };\n//# sourceMappingURL=FederatedEvent.mjs.map\n","var appleIphone = /iPhone/i;\nvar appleIpod = /iPod/i;\nvar appleTablet = /iPad/i;\nvar appleUniversal = /\\biOS-universal(?:.+)Mac\\b/i;\nvar androidPhone = /\\bAndroid(?:.+)Mobile\\b/i;\nvar androidTablet = /Android/i;\nvar amazonPhone = /(?:SD4930UR|\\bSilk(?:.+)Mobile\\b)/i;\nvar amazonTablet = /Silk/i;\nvar windowsPhone = /Windows Phone/i;\nvar windowsTablet = /\\bWindows(?:.+)ARM\\b/i;\nvar otherBlackBerry = /BlackBerry/i;\nvar otherBlackBerry10 = /BB10/i;\nvar otherOpera = /Opera Mini/i;\nvar otherChrome = /\\b(CriOS|Chrome)(?:.+)Mobile/i;\nvar otherFirefox = /Mobile(?:.+)Firefox\\b/i;\nvar isAppleTabletOnIos13 = function (navigator) {\n return (typeof navigator !== 'undefined' &&\n navigator.platform === 'MacIntel' &&\n typeof navigator.maxTouchPoints === 'number' &&\n navigator.maxTouchPoints > 1 &&\n typeof MSStream === 'undefined');\n};\nfunction createMatch(userAgent) {\n return function (regex) { return regex.test(userAgent); };\n}\nexport default function isMobile(param) {\n var nav = {\n userAgent: '',\n platform: '',\n maxTouchPoints: 0\n };\n if (!param && typeof navigator !== 'undefined') {\n nav = {\n userAgent: navigator.userAgent,\n platform: navigator.platform,\n maxTouchPoints: navigator.maxTouchPoints || 0\n };\n }\n else if (typeof param === 'string') {\n nav.userAgent = param;\n }\n else if (param && param.userAgent) {\n nav = {\n userAgent: param.userAgent,\n platform: param.platform,\n maxTouchPoints: param.maxTouchPoints || 0\n };\n }\n var userAgent = nav.userAgent;\n var tmp = userAgent.split('[FBAN');\n if (typeof tmp[1] !== 'undefined') {\n userAgent = tmp[0];\n }\n tmp = userAgent.split('Twitter');\n if (typeof tmp[1] !== 'undefined') {\n userAgent = tmp[0];\n }\n var match = createMatch(userAgent);\n var result = {\n apple: {\n phone: match(appleIphone) && !match(windowsPhone),\n ipod: match(appleIpod),\n tablet: !match(appleIphone) &&\n (match(appleTablet) || isAppleTabletOnIos13(nav)) &&\n !match(windowsPhone),\n universal: match(appleUniversal),\n device: (match(appleIphone) ||\n match(appleIpod) ||\n match(appleTablet) ||\n match(appleUniversal) ||\n isAppleTabletOnIos13(nav)) &&\n !match(windowsPhone)\n },\n amazon: {\n phone: match(amazonPhone),\n tablet: !match(amazonPhone) && match(amazonTablet),\n device: match(amazonPhone) || match(amazonTablet)\n },\n android: {\n phone: (!match(windowsPhone) && match(amazonPhone)) ||\n (!match(windowsPhone) && match(androidPhone)),\n tablet: !match(windowsPhone) &&\n !match(amazonPhone) &&\n !match(androidPhone) &&\n (match(amazonTablet) || match(androidTablet)),\n device: (!match(windowsPhone) &&\n (match(amazonPhone) ||\n match(amazonTablet) ||\n match(androidPhone) ||\n match(androidTablet))) ||\n match(/\\bokhttp\\b/i)\n },\n windows: {\n phone: match(windowsPhone),\n tablet: match(windowsTablet),\n device: match(windowsPhone) || match(windowsTablet)\n },\n other: {\n blackberry: match(otherBlackBerry),\n blackberry10: match(otherBlackBerry10),\n opera: match(otherOpera),\n firefox: match(otherFirefox),\n chrome: match(otherChrome),\n device: match(otherBlackBerry) ||\n match(otherBlackBerry10) ||\n match(otherOpera) ||\n match(otherFirefox) ||\n match(otherChrome)\n },\n any: false,\n phone: false,\n tablet: false\n };\n result.any =\n result.apple.device ||\n result.android.device ||\n result.windows.device ||\n result.other.device;\n result.phone =\n result.apple.phone || result.android.phone || result.windows.phone;\n result.tablet =\n result.apple.tablet || result.android.tablet || result.windows.tablet;\n return result;\n}\n//# sourceMappingURL=isMobile.js.map","import isMobileJs from 'ismobilejs';\n\n\"use strict\";\nconst isMobileCall = isMobileJs.default ?? isMobileJs;\nconst isMobile = isMobileCall(globalThis.navigator);\n\nexport { isMobile };\n//# sourceMappingURL=isMobile.mjs.map\n","import { FederatedEvent } from '../events/FederatedEvent.mjs';\nimport { ExtensionType } from '../extensions/Extensions.mjs';\nimport { isMobile } from '../utils/browser/isMobile.mjs';\nimport { removeItems } from '../utils/data/removeItems.mjs';\n\n\"use strict\";\nconst KEY_CODE_TAB = 9;\nconst DIV_TOUCH_SIZE = 100;\nconst DIV_TOUCH_POS_X = 0;\nconst DIV_TOUCH_POS_Y = 0;\nconst DIV_TOUCH_ZINDEX = 2;\nconst DIV_HOOK_SIZE = 1;\nconst DIV_HOOK_POS_X = -1e3;\nconst DIV_HOOK_POS_Y = -1e3;\nconst DIV_HOOK_ZINDEX = 2;\nclass AccessibilitySystem {\n // 2fps\n // eslint-disable-next-line jsdoc/require-param\n /**\n * @param {WebGLRenderer|WebGPURenderer} renderer - A reference to the current renderer\n */\n constructor(renderer, _mobileInfo = isMobile) {\n this._mobileInfo = _mobileInfo;\n /** Setting this to true will visually show the divs. */\n this.debug = false;\n /** Internal variable, see isActive getter. */\n this._isActive = false;\n /** Internal variable, see isMobileAccessibility getter. */\n this._isMobileAccessibility = false;\n /** A simple pool for storing divs. */\n this._pool = [];\n /** This is a tick used to check if an object is no longer being rendered. */\n this._renderId = 0;\n /** The array of currently active accessible items. */\n this._children = [];\n /** Count to throttle div updates on android devices. */\n this._androidUpdateCount = 0;\n /** The frequency to update the div elements. */\n this._androidUpdateFrequency = 500;\n this._hookDiv = null;\n if (_mobileInfo.tablet || _mobileInfo.phone) {\n this._createTouchHook();\n }\n const div = document.createElement(\"div\");\n div.style.width = `${DIV_TOUCH_SIZE}px`;\n div.style.height = `${DIV_TOUCH_SIZE}px`;\n div.style.position = \"absolute\";\n div.style.top = `${DIV_TOUCH_POS_X}px`;\n div.style.left = `${DIV_TOUCH_POS_Y}px`;\n div.style.zIndex = DIV_TOUCH_ZINDEX.toString();\n this._div = div;\n this._renderer = renderer;\n this._onKeyDown = this._onKeyDown.bind(this);\n this._onMouseMove = this._onMouseMove.bind(this);\n globalThis.addEventListener(\"keydown\", this._onKeyDown, false);\n }\n /**\n * Value of `true` if accessibility is currently active and accessibility layers are showing.\n * @member {boolean}\n * @readonly\n */\n get isActive() {\n return this._isActive;\n }\n /**\n * Value of `true` if accessibility is enabled for touch devices.\n * @member {boolean}\n * @readonly\n */\n get isMobileAccessibility() {\n return this._isMobileAccessibility;\n }\n get hookDiv() {\n return this._hookDiv;\n }\n /**\n * Creates the touch hooks.\n * @private\n */\n _createTouchHook() {\n const hookDiv = document.createElement(\"button\");\n hookDiv.style.width = `${DIV_HOOK_SIZE}px`;\n hookDiv.style.height = `${DIV_HOOK_SIZE}px`;\n hookDiv.style.position = \"absolute\";\n hookDiv.style.top = `${DIV_HOOK_POS_X}px`;\n hookDiv.style.left = `${DIV_HOOK_POS_Y}px`;\n hookDiv.style.zIndex = DIV_HOOK_ZINDEX.toString();\n hookDiv.style.backgroundColor = \"#FF0000\";\n hookDiv.title = \"select to enable accessibility for this content\";\n hookDiv.addEventListener(\"focus\", () => {\n this._isMobileAccessibility = true;\n this._activate();\n this._destroyTouchHook();\n });\n document.body.appendChild(hookDiv);\n this._hookDiv = hookDiv;\n }\n /**\n * Destroys the touch hooks.\n * @private\n */\n _destroyTouchHook() {\n if (!this._hookDiv) {\n return;\n }\n document.body.removeChild(this._hookDiv);\n this._hookDiv = null;\n }\n /**\n * Activating will cause the Accessibility layer to be shown.\n * This is called when a user presses the tab key.\n * @private\n */\n _activate() {\n if (this._isActive) {\n return;\n }\n this._isActive = true;\n globalThis.document.addEventListener(\"mousemove\", this._onMouseMove, true);\n globalThis.removeEventListener(\"keydown\", this._onKeyDown, false);\n this._renderer.runners.postrender.add(this);\n this._renderer.view.canvas.parentNode?.appendChild(this._div);\n }\n /**\n * Deactivating will cause the Accessibility layer to be hidden.\n * This is called when a user moves the mouse.\n * @private\n */\n _deactivate() {\n if (!this._isActive || this._isMobileAccessibility) {\n return;\n }\n this._isActive = false;\n globalThis.document.removeEventListener(\"mousemove\", this._onMouseMove, true);\n globalThis.addEventListener(\"keydown\", this._onKeyDown, false);\n this._renderer.runners.postrender.remove(this);\n this._div.parentNode?.removeChild(this._div);\n }\n /**\n * This recursive function will run through the scene graph and add any new accessible objects to the DOM layer.\n * @private\n * @param {Container} container - The Container to check.\n */\n _updateAccessibleObjects(container) {\n if (!container.visible || !container.accessibleChildren) {\n return;\n }\n if (container.accessible && container.isInteractive()) {\n if (!container._accessibleActive) {\n this._addChild(container);\n }\n container._renderId = this._renderId;\n }\n const children = container.children;\n if (children) {\n for (let i = 0; i < children.length; i++) {\n this._updateAccessibleObjects(children[i]);\n }\n }\n }\n /**\n * Runner init called, view is available at this point.\n * @ignore\n */\n init(options) {\n this.debug = options?.debug ?? this.debug;\n this._renderer.runners.postrender.remove(this);\n }\n /**\n * Runner postrender was called, ensure that all divs are mapped correctly to their Containers.\n * Only fires while active.\n * @ignore\n */\n postrender() {\n const now = performance.now();\n if (this._mobileInfo.android.device && now < this._androidUpdateCount) {\n return;\n }\n this._androidUpdateCount = now + this._androidUpdateFrequency;\n if (!this._renderer.renderingToScreen || !this._renderer.view.canvas) {\n return;\n }\n if (this._renderer.lastObjectRendered) {\n this._updateAccessibleObjects(this._renderer.lastObjectRendered);\n }\n const { x, y, width, height } = this._renderer.view.canvas.getBoundingClientRect();\n const { width: viewWidth, height: viewHeight, resolution } = this._renderer;\n const sx = width / viewWidth * resolution;\n const sy = height / viewHeight * resolution;\n let div = this._div;\n div.style.left = `${x}px`;\n div.style.top = `${y}px`;\n div.style.width = `${viewWidth}px`;\n div.style.height = `${viewHeight}px`;\n for (let i = 0; i < this._children.length; i++) {\n const child = this._children[i];\n if (child._renderId !== this._renderId) {\n child._accessibleActive = false;\n removeItems(this._children, i, 1);\n this._div.removeChild(child._accessibleDiv);\n this._pool.push(child._accessibleDiv);\n child._accessibleDiv = null;\n i--;\n } else {\n div = child._accessibleDiv;\n let hitArea = child.hitArea;\n const wt = child.worldTransform;\n if (child.hitArea) {\n div.style.left = `${(wt.tx + hitArea.x * wt.a) * sx}px`;\n div.style.top = `${(wt.ty + hitArea.y * wt.d) * sy}px`;\n div.style.width = `${hitArea.width * wt.a * sx}px`;\n div.style.height = `${hitArea.height * wt.d * sy}px`;\n } else {\n hitArea = child.getBounds().rectangle;\n this._capHitArea(hitArea);\n div.style.left = `${hitArea.x * sx}px`;\n div.style.top = `${hitArea.y * sy}px`;\n div.style.width = `${hitArea.width * sx}px`;\n div.style.height = `${hitArea.height * sy}px`;\n if (div.title !== child.accessibleTitle && child.accessibleTitle !== null) {\n div.title = child.accessibleTitle || \"\";\n }\n if (div.getAttribute(\"aria-label\") !== child.accessibleHint && child.accessibleHint !== null) {\n div.setAttribute(\"aria-label\", child.accessibleHint || \"\");\n }\n }\n if (child.accessibleTitle !== div.title || child.tabIndex !== div.tabIndex) {\n div.title = child.accessibleTitle || \"\";\n div.tabIndex = child.tabIndex;\n if (this.debug) {\n this._updateDebugHTML(div);\n }\n }\n }\n }\n this._renderId++;\n }\n /**\n * private function that will visually add the information to the\n * accessibility div\n * @param {HTMLElement} div -\n */\n _updateDebugHTML(div) {\n div.innerHTML = `type: ${div.type}</br> title : ${div.title}</br> tabIndex: ${div.tabIndex}`;\n }\n /**\n * Adjust the hit area based on the bounds of a display object\n * @param {Rectangle} hitArea - Bounds of the child\n */\n _capHitArea(hitArea) {\n if (hitArea.x < 0) {\n hitArea.width += hitArea.x;\n hitArea.x = 0;\n }\n if (hitArea.y < 0) {\n hitArea.height += hitArea.y;\n hitArea.y = 0;\n }\n const { width: viewWidth, height: viewHeight } = this._renderer;\n if (hitArea.x + hitArea.width > viewWidth) {\n hitArea.width = viewWidth - hitArea.x;\n }\n if (hitArea.y + hitArea.height > viewHeight) {\n hitArea.height = viewHeight - hitArea.y;\n }\n }\n /**\n * Adds a Container to the accessibility manager\n * @private\n * @param {Container} container - The child to make accessible.\n */\n _addChild(container) {\n let div = this._pool.pop();\n if (!div) {\n div = document.createElement(\"button\");\n div.style.width = `${DIV_TOUCH_SIZE}px`;\n div.style.height = `${DIV_TOUCH_SIZE}px`;\n div.style.backgroundColor = this.debug ? \"rgba(255,255,255,0.5)\" : \"transparent\";\n div.style.position = \"absolute\";\n div.style.zIndex = DIV_TOUCH_ZINDEX.toString();\n div.style.borderStyle = \"none\";\n if (navigator.userAgent.toLowerCase().includes(\"chrome\")) {\n div.setAttribute(\"aria-live\", \"off\");\n } else {\n div.setAttribute(\"aria-live\", \"polite\");\n }\n if (navigator.userAgent.match(/rv:.*Gecko\\//)) {\n div.setAttribute(\"aria-relevant\", \"additions\");\n } else {\n div.setAttribute(\"aria-relevant\", \"text\");\n }\n div.addEventListener(\"click\", this._onClick.bind(this));\n div.addEventListener(\"focus\", this._onFocus.bind(this));\n div.addEventListener(\"focusout\", this._onFocusOut.bind(this));\n }\n div.style.pointerEvents = container.accessiblePointerEvents;\n div.type = container.accessibleType;\n if (container.accessibleTitle && container.accessibleTitle !== null) {\n div.title = container.accessibleTitle;\n } else if (!container.accessibleHint || container.accessibleHint === null) {\n div.title = `container ${container.tabIndex}`;\n }\n if (container.accessibleHint && container.accessibleHint !== null) {\n div.setAttribute(\"aria-label\", container.accessibleHint);\n }\n if (this.debug) {\n this._updateDebugHTML(div);\n }\n container._accessibleActive = true;\n container._accessibleDiv = div;\n div.container = container;\n this._children.push(container);\n this._div.appendChild(container._accessibleDiv);\n container._accessibleDiv.tabIndex = container.tabIndex;\n }\n /**\n * Dispatch events with the EventSystem.\n * @param e\n * @param type\n * @private\n */\n _dispatchEvent(e, type) {\n const { container: target } = e.target;\n const boundary = this._renderer.events.rootBoundary;\n const event = Object.assign(new FederatedEvent(boundary), { target });\n boundary.rootTarget = this._renderer.lastObjectRendered;\n type.forEach((type2) => boundary.dispatchEvent(event, type2));\n }\n /**\n * Maps the div button press to pixi's EventSystem (click)\n * @private\n * @param {MouseEvent} e - The click event.\n */\n _onClick(e) {\n this._dispatchEvent(e, [\"click\", \"pointertap\", \"tap\"]);\n }\n /**\n * Maps the div focus events to pixi's EventSystem (mouseover)\n * @private\n * @param {FocusEvent} e - The focus event.\n */\n _onFocus(e) {\n if (!e.target.getAttribute(\"aria-live\")) {\n e.target.setAttribute(\"aria-live\", \"assertive\");\n }\n this._dispatchEvent(e, [\"mouseover\"]);\n }\n /**\n * Maps the div focus events to pixi's EventSystem (mouseout)\n * @private\n * @param {FocusEvent} e - The focusout event.\n */\n _onFocusOut(e) {\n if (!e.target.getAttribute(\"aria-live\")) {\n e.target.setAttribute(\"aria-live\", \"polite\");\n }\n this._dispatchEvent(e, [\"mouseout\"]);\n }\n /**\n * Is called when a key is pressed\n * @private\n * @param {KeyboardEvent} e - The keydown event.\n */\n _onKeyDown(e) {\n if (e.keyCode !== KEY_CODE_TAB) {\n return;\n }\n this._activate();\n }\n /**\n * Is called when the mouse moves across the renderer element\n * @private\n * @param {MouseEvent} e - The mouse event.\n */\n _onMouseMove(e) {\n if (e.movementX === 0 && e.movementY === 0) {\n return;\n }\n this._deactivate();\n }\n /** Destroys the accessibility manager */\n destroy() {\n this._destroyTouchHook();\n this._div = null;\n globalThis.document.removeEventListener(\"mousemove\", this._onMouseMove, true);\n globalThis.removeEventListener(\"keydown\", this._onKeyDown);\n this._pool = null;\n this._children = null;\n this._renderer = null;\n }\n}\n/** @ignore */\nAccessibilitySystem.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem\n ],\n name: \"accessibility\"\n};\n\nexport { AccessibilitySystem };\n//# sourceMappingURL=AccessibilitySystem.mjs.map\n","import { extensions } from '../extensions/Extensions.mjs';\nimport { Container } from '../scene/container/Container.mjs';\nimport { AccessibilitySystem } from './AccessibilitySystem.mjs';\nimport { accessibilityTarget } from './accessibilityTarget.mjs';\n\n\"use strict\";\nextensions.add(AccessibilitySystem);\nContainer.mixin(accessibilityTarget);\n//# sourceMappingURL=init.mjs.map\n","\"use strict\";\nconst accessibilityTarget = {\n /**\n * Flag for if the object is accessible. If true AccessibilityManager will overlay a\n * shadow div with attributes set\n * @member {boolean}\n * @memberof scene.Container#\n */\n accessible: false,\n /**\n * Sets the title attribute of the shadow div\n * If accessibleTitle AND accessibleHint has not been this will default to 'container [tabIndex]'\n * @member {string}\n * @memberof scene.Container#\n */\n accessibleTitle: null,\n /**\n * Sets the aria-label attribute of the shadow div\n * @member {string}\n * @memberof scene.Container#\n */\n accessibleHint: null,\n /**\n * @member {number}\n * @memberof scene.Container#\n * @todo Needs docs.\n */\n tabIndex: 0,\n /**\n * @member {boolean}\n * @memberof scene.Container#\n * @private\n */\n _accessibleActive: false,\n /**\n * @memberof scene.Container#\n * @private\n */\n _accessibleDiv: null,\n /**\n * Specify the type of div the accessible layer is. Screen readers treat the element differently\n * depending on this type. Defaults to button.\n * @member {string}\n * @memberof scene.Container#\n * @default 'button'\n */\n accessibleType: \"button\",\n /**\n * Specify the pointer-events the accessible div will use\n * Defaults to auto.\n * @type {PointerEvents}\n * @memberof scene.Container#\n * @default 'auto'\n */\n accessiblePointerEvents: \"auto\",\n /**\n * Setting to false will prevent any children inside this container to\n * be accessible. Defaults to true.\n * @member {boolean}\n * @memberof scene.Container#\n * @default true\n */\n accessibleChildren: true,\n /**\n * @member {number}\n * @memberof scene.Container#\n * @private\n */\n _renderId: -1\n};\n\nexport { accessibilityTarget };\n//# sourceMappingURL=accessibilityTarget.mjs.map\n","import { UPDATE_PRIORITY } from '../ticker/const.mjs';\nimport { Ticker } from '../ticker/Ticker.mjs';\n\n\"use strict\";\nclass EventsTickerClass {\n constructor() {\n /** The frequency that fake events will be fired. */\n this.interactionFrequency = 10;\n this._deltaTime = 0;\n this._didMove = false;\n this._tickerAdded = false;\n this._pauseUpdate = true;\n }\n /**\n * Initializes the event ticker.\n * @param events - The event system.\n */\n init(events) {\n this.removeTickerListener();\n this.events = events;\n this.interactionFrequency = 10;\n this._deltaTime = 0;\n this._didMove = false;\n this._tickerAdded = false;\n this._pauseUpdate = true;\n }\n /** Whether to pause the update checks or not. */\n get pauseUpdate() {\n return this._pauseUpdate;\n }\n set pauseUpdate(paused) {\n this._pauseUpdate = paused;\n }\n /** Adds the ticker listener. */\n addTickerListener() {\n if (this._tickerAdded || !this.domElement) {\n return;\n }\n Ticker.system.add(this._tickerUpdate, this, UPDATE_PRIORITY.INTERACTION);\n this._tickerAdded = true;\n }\n /** Removes the ticker listener. */\n removeTickerListener() {\n if (!this._tickerAdded) {\n return;\n }\n Ticker.system.remove(this._tickerUpdate, this);\n this._tickerAdded = false;\n }\n /** Sets flag to not fire extra events when the user has already moved there mouse */\n pointerMoved() {\n this._didMove = true;\n }\n /** Updates the state of interactive objects. */\n _update() {\n if (!this.domElement || this._pauseUpdate) {\n return;\n }\n if (this._didMove) {\n this._didMove = false;\n return;\n }\n const rootPointerEvent = this.events[\"_rootPointerEvent\"];\n if (this.events.supportsTouchEvents && rootPointerEvent.pointerType === \"touch\") {\n return;\n }\n globalThis.document.dispatchEvent(new PointerEvent(\"pointermove\", {\n clientX: rootPointerEvent.clientX,\n clientY: rootPointerEvent.clientY\n }));\n }\n /**\n * Updates the state of interactive objects if at least {@link interactionFrequency}\n * milliseconds have passed since the last invocation.\n *\n * Invoked by a throttled ticker update from {@link Ticker.system}.\n * @param ticker - The throttled ticker.\n */\n _tickerUpdate(ticker) {\n this._deltaTime += ticker.deltaTime;\n if (this._deltaTime < this.interactionFrequency) {\n return;\n }\n this._deltaTime = 0;\n this._update();\n }\n}\nconst EventsTicker = new EventsTickerClass();\n\nexport { EventsTicker };\n//# sourceMappingURL=EventTicker.mjs.map\n","import { Point } from '../maths/point/Point.mjs';\nimport { FederatedEvent } from './FederatedEvent.mjs';\n\n\"use strict\";\nclass FederatedMouseEvent extends FederatedEvent {\n constructor() {\n super(...arguments);\n /** The coordinates of the mouse event relative to the canvas. */\n this.client = new Point();\n /** The movement in this pointer relative to the last `mousemove` event. */\n this.movement = new Point();\n /** The offset of the pointer coordinates w.r.t. target Container in world space. This is not supported at the moment. */\n this.offset = new Point();\n /** The pointer coordinates in world space. */\n this.global = new Point();\n /**\n * The pointer coordinates in the renderer's {@link Renderer.screen screen}. This has slightly\n * different semantics than native PointerEvent screenX/screenY.\n */\n this.screen = new Point();\n }\n /** @readonly */\n get clientX() {\n return this.client.x;\n }\n /** @readonly */\n get clientY() {\n return this.client.y;\n }\n /**\n * Alias for {@link FederatedMouseEvent.clientX this.clientX}.\n * @readonly\n */\n get x() {\n return this.clientX;\n }\n /**\n * Alias for {@link FederatedMouseEvent.clientY this.clientY}.\n * @readonly\n */\n get y() {\n return this.clientY;\n }\n /** @readonly */\n get movementX() {\n return this.movement.x;\n }\n /** @readonly */\n get movementY() {\n return this.movement.y;\n }\n /** @readonly */\n get offsetX() {\n return this.offset.x;\n }\n /** @readonly */\n get offsetY() {\n return this.offset.y;\n }\n /** @readonly */\n get globalX() {\n return this.global.x;\n }\n /** @readonly */\n get globalY() {\n return this.global.y;\n }\n /**\n * The pointer coordinates in the renderer's screen. Alias for {@code screen.x}.\n * @readonly\n */\n get screenX() {\n return this.screen.x;\n }\n /**\n * The pointer coordinates in the renderer's screen. Alias for {@code screen.y}.\n * @readonly\n */\n get screenY() {\n return this.screen.y;\n }\n /**\n * This will return the local coordinates of the specified container for this InteractionData\n * @param {Container} container - The Container that you would like the local\n * coords off\n * @param {PointData} point - A Point object in which to store the value, optional (otherwise\n * will create a new point)\n * @param {PointData} globalPos - A Point object containing your custom global coords, optional\n * (otherwise will use the current global coords)\n * @returns - A point containing the coordinates of the InteractionData position relative\n * to the Container\n */\n getLocalPosition(container, point, globalPos) {\n return container.worldTransform.applyInverse(globalPos || this.global, point);\n }\n /**\n * Whether the modifier key was pressed when this event natively occurred.\n * @param key - The modifier key.\n */\n getModifierState(key) {\n return \"getModifierState\" in this.nativeEvent && this.nativeEvent.getModifierState(key);\n }\n /**\n * Not supported.\n * @param _typeArg\n * @param _canBubbleArg\n * @param _cancelableArg\n * @param _viewArg\n * @param _detailArg\n * @param _screenXArg\n * @param _screenYArg\n * @param _clientXArg\n * @param _clientYArg\n * @param _ctrlKeyArg\n * @param _altKeyArg\n * @param _shiftKeyArg\n * @param _metaKeyArg\n * @param _buttonArg\n * @param _relatedTargetArg\n * @deprecated since 7.0.0\n */\n // eslint-disable-next-line max-params\n initMouseEvent(_typeArg, _canBubbleArg, _cancelableArg, _viewArg, _detailArg, _screenXArg, _screenYArg, _clientXArg, _clientYArg, _ctrlKeyArg, _altKeyArg, _shiftKeyArg, _metaKeyArg, _buttonArg, _relatedTargetArg) {\n throw new Error(\"Method not implemented.\");\n }\n}\n\nexport { FederatedMouseEvent };\n//# sourceMappingURL=FederatedMouseEvent.mjs.map\n","import { FederatedMouseEvent } from './FederatedMouseEvent.mjs';\n\n\"use strict\";\nclass FederatedPointerEvent extends FederatedMouseEvent {\n constructor() {\n super(...arguments);\n /**\n * The width of the pointer's contact along the x-axis, measured in CSS pixels.\n * radiusX of TouchEvents will be represented by this value.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/width\n */\n this.width = 0;\n /**\n * The height of the pointer's contact along the y-axis, measured in CSS pixels.\n * radiusY of TouchEvents will be represented by this value.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/height\n */\n this.height = 0;\n /**\n * Indicates whether or not the pointer device that created the event is the primary pointer.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/isPrimary\n */\n this.isPrimary = false;\n }\n // Only included for completeness for now\n getCoalescedEvents() {\n if (this.type === \"pointermove\" || this.type === \"mousemove\" || this.type === \"touchmove\") {\n return [this];\n }\n return [];\n }\n // Only included for completeness for now\n getPredictedEvents() {\n throw new Error(\"getPredictedEvents is not supported!\");\n }\n}\n\nexport { FederatedPointerEvent };\n//# sourceMappingURL=FederatedPointerEvent.mjs.map\n","import { FederatedMouseEvent } from './FederatedMouseEvent.mjs';\n\n\"use strict\";\nclass FederatedWheelEvent extends FederatedMouseEvent {\n constructor() {\n super(...arguments);\n /** Units specified in pixels. */\n this.DOM_DELTA_PIXEL = 0;\n /** Units specified in lines. */\n this.DOM_DELTA_LINE = 1;\n /** Units specified in pages. */\n this.DOM_DELTA_PAGE = 2;\n }\n}\n/** Units specified in pixels. */\nFederatedWheelEvent.DOM_DELTA_PIXEL = 0;\n/** Units specified in lines. */\nFederatedWheelEvent.DOM_DELTA_LINE = 1;\n/** Units specified in pages. */\nFederatedWheelEvent.DOM_DELTA_PAGE = 2;\n\nexport { FederatedWheelEvent };\n//# sourceMappingURL=FederatedWheelEvent.mjs.map\n","import EventEmitter from 'eventemitter3';\nimport { Point } from '../maths/point/Point.mjs';\nimport { warn } from '../utils/logging/warn.mjs';\nimport { EventsTicker } from './EventTicker.mjs';\nimport { FederatedMouseEvent } from './FederatedMouseEvent.mjs';\nimport { FederatedPointerEvent } from './FederatedPointerEvent.mjs';\nimport { FederatedWheelEvent } from './FederatedWheelEvent.mjs';\n\n\"use strict\";\nconst PROPAGATION_LIMIT = 2048;\nconst tempHitLocation = new Point();\nconst tempLocalMapping = new Point();\nclass EventBoundary {\n /**\n * @param rootTarget - The holder of the event boundary.\n */\n constructor(rootTarget) {\n /**\n * Emits events after they were dispatched into the scene graph.\n *\n * This can be used for global events listening, regardless of the scene graph being used. It should\n * not be used by interactive libraries for normal use.\n *\n * Special events that do not bubble all the way to the root target are not emitted from here,\n * e.g. pointerenter, pointerleave, click.\n */\n this.dispatch = new EventEmitter();\n /**\n * This flag would emit `pointermove`, `touchmove`, and `mousemove` events on all Containers.\n *\n * The `moveOnAll` semantics mirror those of earlier versions of PixiJS. This was disabled in favor of\n * the Pointer Event API's approach.\n */\n this.moveOnAll = false;\n /** Enables the global move events. `globalpointermove`, `globaltouchmove`, and `globalmousemove` */\n this.enableGlobalMoveEvents = true;\n /**\n * State object for mapping methods.\n * @see EventBoundary#trackingData\n */\n this.mappingState = {\n trackingData: {}\n };\n /**\n * The event pool maps event constructors to an free pool of instances of those specific events.\n * @see EventBoundary#allocateEvent\n * @see EventBoundary#freeEvent\n */\n this.eventPool = /* @__PURE__ */ new Map();\n /** Every interactive element gathered from the scene. Only used in `pointermove` */\n this._allInteractiveElements = [];\n /** Every element that passed the hit test. Only used in `pointermove` */\n this._hitElements = [];\n /** Whether or not to collect all the interactive elements from the scene. Enabled in `pointermove` */\n this._isPointerMoveEvent = false;\n this.rootTarget = rootTarget;\n this.hitPruneFn = this.hitPruneFn.bind(this);\n this.hitTestFn = this.hitTestFn.bind(this);\n this.mapPointerDown = this.mapPointerDown.bind(this);\n this.mapPointerMove = this.mapPointerMove.bind(this);\n this.mapPointerOut = this.mapPointerOut.bind(this);\n this.mapPointerOver = this.mapPointerOver.bind(this);\n this.mapPointerUp = this.mapPointerUp.bind(this);\n this.mapPointerUpOutside = this.mapPointerUpOutside.bind(this);\n this.mapWheel = this.mapWheel.bind(this);\n this.mappingTable = {};\n this.addEventMapping(\"pointerdown\", this.mapPointerDown);\n this.addEventMapping(\"pointermove\", this.mapPointerMove);\n this.addEventMapping(\"pointerout\", this.mapPointerOut);\n this.addEventMapping(\"pointerleave\", this.mapPointerOut);\n this.addEventMapping(\"pointerover\", this.mapPointerOver);\n this.addEventMapping(\"pointerup\", this.mapPointerUp);\n this.addEventMapping(\"pointerupoutside\", this.mapPointerUpOutside);\n this.addEventMapping(\"wheel\", this.mapWheel);\n }\n /**\n * Adds an event mapping for the event `type` handled by `fn`.\n *\n * Event mappings can be used to implement additional or custom events. They take an event\n * coming from the upstream scene (or directly from the {@link EventSystem}) and dispatch new downstream events\n * generally trickling down and bubbling up to {@link EventBoundary.rootTarget this.rootTarget}.\n *\n * To modify the semantics of existing events, the built-in mapping methods of EventBoundary should be overridden\n * instead.\n * @param type - The type of upstream event to map.\n * @param fn - The mapping method. The context of this function must be bound manually, if desired.\n */\n addEventMapping(type, fn) {\n if (!this.mappingTable[type]) {\n this.mappingTable[type] = [];\n }\n this.mappingTable[type].push({\n fn,\n priority: 0\n });\n this.mappingTable[type].sort((a, b) => a.priority - b.priority);\n }\n /**\n * Dispatches the given event\n * @param e - The event to dispatch.\n * @param type - The type of event to dispatch. Defaults to `e.type`.\n */\n dispatchEvent(e, type) {\n e.propagationStopped = false;\n e.propagationImmediatelyStopped = false;\n this.propagate(e, type);\n this.dispatch.emit(type || e.type, e);\n }\n /**\n * Maps the given upstream event through the event boundary and propagates it downstream.\n * @param e - The event to map.\n */\n mapEvent(e) {\n if (!this.rootTarget) {\n return;\n }\n const mappers = this.mappingTable[e.type];\n if (mappers) {\n for (let i = 0, j = mappers.length; i < j; i++) {\n mappers[i].fn(e);\n }\n } else {\n warn(`[EventBoundary]: Event mapping not defined for ${e.type}`);\n }\n }\n /**\n * Finds the Container that is the target of a event at the given coordinates.\n *\n * The passed (x,y) coordinates are in the world space above this event boundary.\n * @param x - The x coordinate of the event.\n * @param y - The y coordinate of the event.\n */\n hitTest(x, y) {\n EventsTicker.pauseUpdate = true;\n const useMove = this._isPointerMoveEvent && this.enableGlobalMoveEvents;\n const fn = useMove ? \"hitTestMoveRecursive\" : \"hitTestRecursive\";\n const invertedPath = this[fn](\n this.rootTarget,\n this.rootTarget.eventMode,\n tempHitLocation.set(x, y),\n this.hitTestFn,\n this.hitPruneFn\n );\n return invertedPath && invertedPath[0];\n }\n /**\n * Propagate the passed event from from {@link EventBoundary.rootTarget this.rootTarget} to its\n * target {@code e.target}.\n * @param e - The event to propagate.\n * @param type - The type of event to propagate. Defaults to `e.type`.\n */\n propagate(e, type) {\n if (!e.target) {\n return;\n }\n const composedPath = e.composedPath();\n e.eventPhase = e.CAPTURING_PHASE;\n for (let i = 0, j = composedPath.length - 1; i < j; i++) {\n e.currentTarget = composedPath[i];\n this.notifyTarget(e, type);\n if (e.propagationStopped || e.propagationImmediatelyStopped)\n return;\n }\n e.eventPhase = e.AT_TARGET;\n e.currentTarget = e.target;\n this.notifyTarget(e, type);\n if (e.propagationStopped || e.propagationImmediatelyStopped)\n return;\n e.eventPhase = e.BUBBLING_PHASE;\n for (let i = composedPath.length - 2; i >= 0; i--) {\n e.currentTarget = composedPath[i];\n this.notifyTarget(e, type);\n if (e.propagationStopped || e.propagationImmediatelyStopped)\n return;\n }\n }\n /**\n * Emits the event {@code e} to all interactive containers. The event is propagated in the bubbling phase always.\n *\n * This is used in the `globalpointermove` event.\n * @param e - The emitted event.\n * @param type - The listeners to notify.\n * @param targets - The targets to notify.\n */\n all(e, type, targets = this._allInteractiveElements) {\n if (targets.length === 0)\n return;\n e.eventPhase = e.BUBBLING_PHASE;\n const events = Array.isArray(type) ? type : [type];\n for (let i = targets.length - 1; i >= 0; i--) {\n events.forEach((event) => {\n e.currentTarget = targets[i];\n this.notifyTarget(e, event);\n });\n }\n }\n /**\n * Finds the propagation path from {@link EventBoundary.rootTarget rootTarget} to the passed\n * {@code target}. The last element in the path is {@code target}.\n * @param target - The target to find the propagation path to.\n */\n propagationPath(target) {\n const propagationPath = [target];\n for (let i = 0; i < PROPAGATION_LIMIT && (target !== this.rootTarget && target.parent); i++) {\n if (!target.parent) {\n throw new Error(\"Cannot find propagation path to disconnected target\");\n }\n propagationPath.push(target.parent);\n target = target.parent;\n }\n propagationPath.reverse();\n return propagationPath;\n }\n hitTestMoveRecursive(currentTarget, eventMode, location, testFn, pruneFn, ignore = false) {\n let shouldReturn = false;\n if (this._interactivePrune(currentTarget))\n return null;\n if (currentTarget.eventMode === \"dynamic\" || eventMode === \"dynamic\") {\n EventsTicker.pauseUpdate = false;\n }\n if (currentTarget.interactiveChildren && currentTarget.children) {\n const children = currentTarget.children;\n for (let i = children.length - 1; i >= 0; i--) {\n const child = children[i];\n const nestedHit = this.hitTestMoveRecursive(\n child,\n this._isInteractive(eventMode) ? eventMode : child.eventMode,\n location,\n testFn,\n pruneFn,\n ignore || pruneFn(currentTarget, location)\n );\n if (nestedHit) {\n if (nestedHit.length > 0 && !nestedHit[nestedHit.length - 1].parent) {\n continue;\n }\n const isInteractive = currentTarget.isInteractive();\n if (nestedHit.length > 0 || isInteractive) {\n if (isInteractive)\n this._allInteractiveElements.push(currentTarget);\n nestedHit.push(currentTarget);\n }\n if (this._hitElements.length === 0)\n this._hitElements = nestedHit;\n shouldReturn = true;\n }\n }\n }\n const isInteractiveMode = this._isInteractive(eventMode);\n const isInteractiveTarget = currentTarget.isInteractive();\n if (isInteractiveTarget && isInteractiveTarget)\n this._allInteractiveElements.push(currentTarget);\n if (ignore || this._hitElements.length > 0)\n return null;\n if (shouldReturn)\n return this._hitElements;\n if (isInteractiveMode && (!pruneFn(currentTarget, location) && testFn(currentTarget, location))) {\n return isInteractiveTarget ? [currentTarget] : [];\n }\n return null;\n }\n /**\n * Recursive implementation for {@link EventBoundary.hitTest hitTest}.\n * @param currentTarget - The Container that is to be hit tested.\n * @param eventMode - The event mode for the `currentTarget` or one of its parents.\n * @param location - The location that is being tested for overlap.\n * @param testFn - Callback that determines whether the target passes hit testing. This callback\n * can assume that `pruneFn` failed to prune the container.\n * @param pruneFn - Callback that determiness whether the target and all of its children\n * cannot pass the hit test. It is used as a preliminary optimization to prune entire subtrees\n * of the scene graph.\n * @returns An array holding the hit testing target and all its ancestors in order. The first element\n * is the target itself and the last is {@link EventBoundary.rootTarget rootTarget}. This is the opposite\n * order w.r.t. the propagation path. If no hit testing target is found, null is returned.\n */\n hitTestRecursive(currentTarget, eventMode, location, testFn, pruneFn) {\n if (this._interactivePrune(currentTarget) || pruneFn(currentTarget, location)) {\n return null;\n }\n if (currentTarget.eventMode === \"dynamic\" || eventMode === \"dynamic\") {\n EventsTicker.pauseUpdate = false;\n }\n if (currentTarget.interactiveChildren && currentTarget.children) {\n const children = currentTarget.children;\n const relativeLocation = location;\n for (let i = children.length - 1; i >= 0; i--) {\n const child = children[i];\n const nestedHit = this.hitTestRecursive(\n child,\n this._isInteractive(eventMode) ? eventMode : child.eventMode,\n relativeLocation,\n testFn,\n pruneFn\n );\n if (nestedHit) {\n if (nestedHit.length > 0 && !nestedHit[nestedHit.length - 1].parent) {\n continue;\n }\n const isInteractive = currentTarget.isInteractive();\n if (nestedHit.length > 0 || isInteractive)\n nestedHit.push(currentTarget);\n return nestedHit;\n }\n }\n }\n const isInteractiveMode = this._isInteractive(eventMode);\n const isInteractiveTarget = currentTarget.isInteractive();\n if (isInteractiveMode && testFn(currentTarget, location)) {\n return isInteractiveTarget ? [currentTarget] : [];\n }\n return null;\n }\n _isInteractive(int) {\n return int === \"static\" || int === \"dynamic\";\n }\n _interactivePrune(container) {\n if (!container || !container.visible || !container.renderable) {\n return true;\n }\n if (container.eventMode === \"none\") {\n return true;\n }\n if (container.eventMode === \"passive\" && !container.interactiveChildren) {\n return true;\n }\n return false;\n }\n /**\n * Checks whether the container or any of its children cannot pass the hit test at all.\n *\n * {@link EventBoundary}'s implementation uses the {@link Container.hitArea hitArea}\n * and {@link Container._mask} for pruning.\n * @param container - The container to prune.\n * @param location - The location to test for overlap.\n */\n hitPruneFn(container, location) {\n if (container.hitArea) {\n container.worldTransform.applyInverse(location, tempLocalMapping);\n if (!container.hitArea.contains(tempLocalMapping.x, tempLocalMapping.y)) {\n return true;\n }\n }\n if (container.effects && container.effects.length) {\n for (let i = 0; i < container.effects.length; i++) {\n const effect = container.effects[i];\n if (effect.containsPoint) {\n const effectContainsPoint = effect.containsPoint(location, this.hitTestFn);\n if (!effectContainsPoint) {\n return true;\n }\n }\n }\n }\n return false;\n }\n /**\n * Checks whether the container passes hit testing for the given location.\n * @param container - The container to test.\n * @param location - The location to test for overlap.\n * @returns - Whether `container` passes hit testing for `location`.\n */\n hitTestFn(container, location) {\n if (container.hitArea) {\n return true;\n }\n if (container?.containsPoint) {\n container.worldTransform.applyInverse(location, tempLocalMapping);\n return container.containsPoint(tempLocalMapping);\n }\n return false;\n }\n /**\n * Notify all the listeners to the event's `currentTarget`.\n *\n * If the `currentTarget` contains the property `on<type>`, then it is called here,\n * simulating the behavior from version 6.x and prior.\n * @param e - The event passed to the target.\n * @param type - The type of event to notify. Defaults to `e.type`.\n */\n notifyTarget(e, type) {\n type = type ?? e.type;\n const handlerKey = `on${type}`;\n e.currentTarget[handlerKey]?.(e);\n const key = e.eventPhase === e.CAPTURING_PHASE || e.eventPhase === e.AT_TARGET ? `${type}capture` : type;\n this._notifyListeners(e, key);\n if (e.eventPhase === e.AT_TARGET) {\n this._notifyListeners(e, type);\n }\n }\n /**\n * Maps the upstream `pointerdown` events to a downstream `pointerdown` event.\n *\n * `touchstart`, `rightdown`, `mousedown` events are also dispatched for specific pointer types.\n * @param from - The upstream `pointerdown` event.\n */\n mapPointerDown(from) {\n if (!(from instanceof FederatedPointerEvent)) {\n warn(\"EventBoundary cannot map a non-pointer event as a pointer event\");\n return;\n }\n const e = this.createPointerEvent(from);\n this.dispatchEvent(e, \"pointerdown\");\n if (e.pointerType === \"touch\") {\n this.dispatchEvent(e, \"touchstart\");\n } else if (e.pointerType === \"mouse\" || e.pointerType === \"pen\") {\n const isRightButton = e.button === 2;\n this.dispatchEvent(e, isRightButton ? \"rightdown\" : \"mousedown\");\n }\n const trackingData = this.trackingData(from.pointerId);\n trackingData.pressTargetsByButton[from.button] = e.composedPath();\n this.freeEvent(e);\n }\n /**\n * Maps the upstream `pointermove` to downstream `pointerout`, `pointerover`, and `pointermove` events, in that order.\n *\n * The tracking data for the specific pointer has an updated `overTarget`. `mouseout`, `mouseover`,\n * `mousemove`, and `touchmove` events are fired as well for specific pointer types.\n * @param from - The upstream `pointermove` event.\n */\n mapPointerMove(from) {\n if (!(from instanceof FederatedPointerEvent)) {\n warn(\"EventBoundary cannot map a non-pointer event as a pointer event\");\n return;\n }\n this._allInteractiveElements.length = 0;\n this._hitElements.length = 0;\n this._isPointerMoveEvent = true;\n const e = this.createPointerEvent(from);\n this._isPointerMoveEvent = false;\n const isMouse = e.pointerType === \"mouse\" || e.pointerType === \"pen\";\n const trackingData = this.trackingData(from.pointerId);\n const outTarget = this.findMountedTarget(trackingData.overTargets);\n if (trackingData.overTargets?.length > 0 && outTarget !== e.target) {\n const outType = from.type === \"mousemove\" ? \"mouseout\" : \"pointerout\";\n const outEvent = this.createPointerEvent(from, outType, outTarget);\n this.dispatchEvent(outEvent, \"pointerout\");\n if (isMouse)\n this.dispatchEvent(outEvent, \"mouseout\");\n if (!e.composedPath().includes(outTarget)) {\n const leaveEvent = this.createPointerEvent(from, \"pointerleave\", outTarget);\n leaveEvent.eventPhase = leaveEvent.AT_TARGET;\n while (leaveEvent.target && !e.composedPath().includes(leaveEvent.target)) {\n leaveEvent.currentTarget = leaveEvent.target;\n this.notifyTarget(leaveEvent);\n if (isMouse)\n this.notifyTarget(leaveEvent, \"mouseleave\");\n leaveEvent.target = leaveEvent.target.parent;\n }\n this.freeEvent(leaveEvent);\n }\n this.freeEvent(outEvent);\n }\n if (outTarget !== e.target) {\n const overType = from.type === \"mousemove\" ? \"mouseover\" : \"pointerover\";\n const overEvent = this.clonePointerEvent(e, overType);\n this.dispatchEvent(overEvent, \"pointerover\");\n if (isMouse)\n this.dispatchEvent(overEvent, \"mouseover\");\n let overTargetAncestor = outTarget?.parent;\n while (overTargetAncestor && overTargetAncestor !== this.rootTarget.parent) {\n if (overTargetAncestor === e.target)\n break;\n overTargetAncestor = overTargetAncestor.parent;\n }\n const didPointerEnter = !overTargetAncestor || overTargetAncestor === this.rootTarget.parent;\n if (didPointerEnter) {\n const enterEvent = this.clonePointerEvent(e, \"pointerenter\");\n enterEvent.eventPhase = enterEvent.AT_TARGET;\n while (enterEvent.target && enterEvent.target !== outTarget && enterEvent.target !== this.rootTarget.parent) {\n enterEvent.currentTarget = enterEvent.target;\n this.notifyTarget(enterEvent);\n if (isMouse)\n this.notifyTarget(enterEvent, \"mouseenter\");\n enterEvent.target = enterEvent.target.parent;\n }\n this.freeEvent(enterEvent);\n }\n this.freeEvent(overEvent);\n }\n const allMethods = [];\n const allowGlobalPointerEvents = this.enableGlobalMoveEvents ?? true;\n this.moveOnAll ? allMethods.push(\"pointermove\") : this.dispatchEvent(e, \"pointermove\");\n allowGlobalPointerEvents && allMethods.push(\"globalpointermove\");\n if (e.pointerType === \"touch\") {\n this.moveOnAll ? allMethods.splice(1, 0, \"touchmove\") : this.dispatchEvent(e, \"touchmove\");\n allowGlobalPointerEvents && allMethods.push(\"globaltouchmove\");\n }\n if (isMouse) {\n this.moveOnAll ? allMethods.splice(1, 0, \"mousemove\") : this.dispatchEvent(e, \"mousemove\");\n allowGlobalPointerEvents && allMethods.push(\"globalmousemove\");\n this.cursor = e.target?.cursor;\n }\n if (allMethods.length > 0) {\n this.all(e, allMethods);\n }\n this._allInteractiveElements.length = 0;\n this._hitElements.length = 0;\n trackingData.overTargets = e.composedPath();\n this.freeEvent(e);\n }\n /**\n * Maps the upstream `pointerover` to downstream `pointerover` and `pointerenter` events, in that order.\n *\n * The tracking data for the specific pointer gets a new `overTarget`.\n * @param from - The upstream `pointerover` event.\n */\n mapPointerOver(from) {\n if (!(from instanceof FederatedPointerEvent)) {\n warn(\"EventBoundary cannot map a non-pointer event as a pointer event\");\n return;\n }\n const trackingData = this.trackingData(from.pointerId);\n const e = this.createPointerEvent(from);\n const isMouse = e.pointerType === \"mouse\" || e.pointerType === \"pen\";\n this.dispatchEvent(e, \"pointerover\");\n if (isMouse)\n this.dispatchEvent(e, \"mouseover\");\n if (e.pointerType === \"mouse\")\n this.cursor = e.target?.cursor;\n const enterEvent = this.clonePointerEvent(e, \"pointerenter\");\n enterEvent.eventPhase = enterEvent.AT_TARGET;\n while (enterEvent.target && enterEvent.target !== this.rootTarget.parent) {\n enterEvent.currentTarget = enterEvent.target;\n this.notifyTarget(enterEvent);\n if (isMouse)\n this.notifyTarget(enterEvent, \"mouseenter\");\n enterEvent.target = enterEvent.target.parent;\n }\n trackingData.overTargets = e.composedPath();\n this.freeEvent(e);\n this.freeEvent(enterEvent);\n }\n /**\n * Maps the upstream `pointerout` to downstream `pointerout`, `pointerleave` events, in that order.\n *\n * The tracking data for the specific pointer is cleared of a `overTarget`.\n * @param from - The upstream `pointerout` event.\n */\n mapPointerOut(from) {\n if (!(from instanceof FederatedPointerEvent)) {\n warn(\"EventBoundary cannot map a non-pointer event as a pointer event\");\n return;\n }\n const trackingData = this.trackingData(from.pointerId);\n if (trackingData.overTargets) {\n const isMouse = from.pointerType === \"mouse\" || from.pointerType === \"pen\";\n const outTarget = this.findMountedTarget(trackingData.overTargets);\n const outEvent = this.createPointerEvent(from, \"pointerout\", outTarget);\n this.dispatchEvent(outEvent);\n if (isMouse)\n this.dispatchEvent(outEvent, \"mouseout\");\n const leaveEvent = this.createPointerEvent(from, \"pointerleave\", outTarget);\n leaveEvent.eventPhase = leaveEvent.AT_TARGET;\n while (leaveEvent.target && leaveEvent.target !== this.rootTarget.parent) {\n leaveEvent.currentTarget = leaveEvent.target;\n this.notifyTarget(leaveEvent);\n if (isMouse)\n this.notifyTarget(leaveEvent, \"mouseleave\");\n leaveEvent.target = leaveEvent.target.parent;\n }\n trackingData.overTargets = null;\n this.freeEvent(outEvent);\n this.freeEvent(leaveEvent);\n }\n this.cursor = null;\n }\n /**\n * Maps the upstream `pointerup` event to downstream `pointerup`, `pointerupoutside`,\n * and `click`/`rightclick`/`pointertap` events, in that order.\n *\n * The `pointerupoutside` event bubbles from the original `pointerdown` target to the most specific\n * ancestor of the `pointerdown` and `pointerup` targets, which is also the `click` event's target. `touchend`,\n * `rightup`, `mouseup`, `touchendoutside`, `rightupoutside`, `mouseupoutside`, and `tap` are fired as well for\n * specific pointer types.\n * @param from - The upstream `pointerup` event.\n */\n mapPointerUp(from) {\n if (!(from instanceof FederatedPointerEvent)) {\n warn(\"EventBoundary cannot map a non-pointer event as a pointer event\");\n return;\n }\n const now = performance.now();\n const e = this.createPointerEvent(from);\n this.dispatchEvent(e, \"pointerup\");\n if (e.pointerType === \"touch\") {\n this.dispatchEvent(e, \"touchend\");\n } else if (e.pointerType === \"mouse\" || e.pointerType === \"pen\") {\n const isRightButton = e.button === 2;\n this.dispatchEvent(e, isRightButton ? \"rightup\" : \"mouseup\");\n }\n const trackingData = this.trackingData(from.pointerId);\n const pressTarget = this.findMountedTarget(trackingData.pressTargetsByButton[from.button]);\n let clickTarget = pressTarget;\n if (pressTarget && !e.composedPath().includes(pressTarget)) {\n let currentTarget = pressTarget;\n while (currentTarget && !e.composedPath().includes(currentTarget)) {\n e.currentTarget = currentTarget;\n this.notifyTarget(e, \"pointerupoutside\");\n if (e.pointerType === \"touch\") {\n this.notifyTarget(e, \"touchendoutside\");\n } else if (e.pointerType === \"mouse\" || e.pointerType === \"pen\") {\n const isRightButton = e.button === 2;\n this.notifyTarget(e, isRightButton ? \"rightupoutside\" : \"mouseupoutside\");\n }\n currentTarget = currentTarget.parent;\n }\n delete trackingData.pressTargetsByButton[from.button];\n clickTarget = currentTarget;\n }\n if (clickTarget) {\n const clickEvent = this.clonePointerEvent(e, \"click\");\n clickEvent.target = clickTarget;\n clickEvent.path = null;\n if (!trackingData.clicksByButton[from.button]) {\n trackingData.clicksByButton[from.button] = {\n clickCount: 0,\n target: clickEvent.target,\n timeStamp: now\n };\n }\n const clickHistory = trackingData.clicksByButton[from.button];\n if (clickHistory.target === clickEvent.target && now - clickHistory.timeStamp < 200) {\n ++clickHistory.clickCount;\n } else {\n clickHistory.clickCount = 1;\n }\n clickHistory.target = clickEvent.target;\n clickHistory.timeStamp = now;\n clickEvent.detail = clickHistory.clickCount;\n if (clickEvent.pointerType === \"mouse\") {\n const isRightButton = clickEvent.button === 2;\n this.dispatchEvent(clickEvent, isRightButton ? \"rightclick\" : \"click\");\n } else if (clickEvent.pointerType === \"touch\") {\n this.dispatchEvent(clickEvent, \"tap\");\n }\n this.dispatchEvent(clickEvent, \"pointertap\");\n this.freeEvent(clickEvent);\n }\n this.freeEvent(e);\n }\n /**\n * Maps the upstream `pointerupoutside` event to a downstream `pointerupoutside` event, bubbling from the original\n * `pointerdown` target to `rootTarget`.\n *\n * (The most specific ancestor of the `pointerdown` event and the `pointerup` event must the\n * `{@link EventBoundary}'s root because the `pointerup` event occurred outside of the boundary.)\n *\n * `touchendoutside`, `mouseupoutside`, and `rightupoutside` events are fired as well for specific pointer\n * types. The tracking data for the specific pointer is cleared of a `pressTarget`.\n * @param from - The upstream `pointerupoutside` event.\n */\n mapPointerUpOutside(from) {\n if (!(from instanceof FederatedPointerEvent)) {\n warn(\"EventBoundary cannot map a non-pointer event as a pointer event\");\n return;\n }\n const trackingData = this.trackingData(from.pointerId);\n const pressTarget = this.findMountedTarget(trackingData.pressTargetsByButton[from.button]);\n const e = this.createPointerEvent(from);\n if (pressTarget) {\n let currentTarget = pressTarget;\n while (currentTarget) {\n e.currentTarget = currentTarget;\n this.notifyTarget(e, \"pointerupoutside\");\n if (e.pointerType === \"touch\") {\n this.notifyTarget(e, \"touchendoutside\");\n } else if (e.pointerType === \"mouse\" || e.pointerType === \"pen\") {\n this.notifyTarget(e, e.button === 2 ? \"rightupoutside\" : \"mouseupoutside\");\n }\n currentTarget = currentTarget.parent;\n }\n delete trackingData.pressTargetsByButton[from.button];\n }\n this.freeEvent(e);\n }\n /**\n * Maps the upstream `wheel` event to a downstream `wheel` event.\n * @param from - The upstream `wheel` event.\n */\n mapWheel(from) {\n if (!(from instanceof FederatedWheelEvent)) {\n warn(\"EventBoundary cannot map a non-wheel event as a wheel event\");\n return;\n }\n const wheelEvent = this.createWheelEvent(from);\n this.dispatchEvent(wheelEvent);\n this.freeEvent(wheelEvent);\n }\n /**\n * Finds the most specific event-target in the given propagation path that is still mounted in the scene graph.\n *\n * This is used to find the correct `pointerup` and `pointerout` target in the case that the original `pointerdown`\n * or `pointerover` target was unmounted from the scene graph.\n * @param propagationPath - The propagation path was valid in the past.\n * @returns - The most specific event-target still mounted at the same location in the scene graph.\n */\n findMountedTarget(propagationPath) {\n if (!propagationPath) {\n return null;\n }\n let currentTarget = propagationPath[0];\n for (let i = 1; i < propagationPath.length; i++) {\n if (propagationPath[i].parent === currentTarget) {\n currentTarget = propagationPath[i];\n } else {\n break;\n }\n }\n return currentTarget;\n }\n /**\n * Creates an event whose {@code originalEvent} is {@code from}, with an optional `type` and `target` override.\n *\n * The event is allocated using {@link EventBoundary#allocateEvent this.allocateEvent}.\n * @param from - The {@code originalEvent} for the returned event.\n * @param [type=from.type] - The type of the returned event.\n * @param target - The target of the returned event.\n */\n createPointerEvent(from, type, target) {\n const event = this.allocateEvent(FederatedPointerEvent);\n this.copyPointerData(from, event);\n this.copyMouseData(from, event);\n this.copyData(from, event);\n event.nativeEvent = from.nativeEvent;\n event.originalEvent = from;\n event.target = target ?? this.hitTest(event.global.x, event.global.y) ?? this._hitElements[0];\n if (typeof type === \"string\") {\n event.type = type;\n }\n return event;\n }\n /**\n * Creates a wheel event whose {@code originalEvent} is {@code from}.\n *\n * The event is allocated using {@link EventBoundary#allocateEvent this.allocateEvent}.\n * @param from - The upstream wheel event.\n */\n createWheelEvent(from) {\n const event = this.allocateEvent(FederatedWheelEvent);\n this.copyWheelData(from, event);\n this.copyMouseData(from, event);\n this.copyData(from, event);\n event.nativeEvent = from.nativeEvent;\n event.originalEvent = from;\n event.target = this.hitTest(event.global.x, event.global.y);\n return event;\n }\n /**\n * Clones the event {@code from}, with an optional {@code type} override.\n *\n * The event is allocated using {@link EventBoundary#allocateEvent this.allocateEvent}.\n * @param from - The event to clone.\n * @param [type=from.type] - The type of the returned event.\n */\n clonePointerEvent(from, type) {\n const event = this.allocateEvent(FederatedPointerEvent);\n event.nativeEvent = from.nativeEvent;\n event.originalEvent = from.originalEvent;\n this.copyPointerData(from, event);\n this.copyMouseData(from, event);\n this.copyData(from, event);\n event.target = from.target;\n event.path = from.composedPath().slice();\n event.type = type ?? event.type;\n return event;\n }\n /**\n * Copies wheel {@link FederatedWheelEvent} data from {@code from} into {@code to}.\n *\n * The following properties are copied:\n * + deltaMode\n * + deltaX\n * + deltaY\n * + deltaZ\n * @param from - The event to copy data from.\n * @param to - The event to copy data into.\n */\n copyWheelData(from, to) {\n to.deltaMode = from.deltaMode;\n to.deltaX = from.deltaX;\n to.deltaY = from.deltaY;\n to.deltaZ = from.deltaZ;\n }\n /**\n * Copies pointer {@link FederatedPointerEvent} data from {@code from} into {@code to}.\n *\n * The following properties are copied:\n * + pointerId\n * + width\n * + height\n * + isPrimary\n * + pointerType\n * + pressure\n * + tangentialPressure\n * + tiltX\n * + tiltY\n * @param from - The event to copy data from.\n * @param to - The event to copy data into.\n */\n copyPointerData(from, to) {\n if (!(from instanceof FederatedPointerEvent && to instanceof FederatedPointerEvent))\n return;\n to.pointerId = from.pointerId;\n to.width = from.width;\n to.height = from.height;\n to.isPrimary = from.isPrimary;\n to.pointerType = from.pointerType;\n to.pressure = from.pressure;\n to.tangentialPressure = from.tangentialPressure;\n to.tiltX = from.tiltX;\n to.tiltY = from.tiltY;\n to.twist = from.twist;\n }\n /**\n * Copies mouse {@link FederatedMouseEvent} data from {@code from} to {@code to}.\n *\n * The following properties are copied:\n * + altKey\n * + button\n * + buttons\n * + clientX\n * + clientY\n * + metaKey\n * + movementX\n * + movementY\n * + pageX\n * + pageY\n * + x\n * + y\n * + screen\n * + shiftKey\n * + global\n * @param from - The event to copy data from.\n * @param to - The event to copy data into.\n */\n copyMouseData(from, to) {\n if (!(from instanceof FederatedMouseEvent && to instanceof FederatedMouseEvent))\n return;\n to.altKey = from.altKey;\n to.button = from.button;\n to.buttons = from.buttons;\n to.client.copyFrom(from.client);\n to.ctrlKey = from.ctrlKey;\n to.metaKey = from.metaKey;\n to.movement.copyFrom(from.movement);\n to.screen.copyFrom(from.screen);\n to.shiftKey = from.shiftKey;\n to.global.copyFrom(from.global);\n }\n /**\n * Copies base {@link FederatedEvent} data from {@code from} into {@code to}.\n *\n * The following properties are copied:\n * + isTrusted\n * + srcElement\n * + timeStamp\n * + type\n * @param from - The event to copy data from.\n * @param to - The event to copy data into.\n */\n copyData(from, to) {\n to.isTrusted = from.isTrusted;\n to.srcElement = from.srcElement;\n to.timeStamp = performance.now();\n to.type = from.type;\n to.detail = from.detail;\n to.view = from.view;\n to.which = from.which;\n to.layer.copyFrom(from.layer);\n to.page.copyFrom(from.page);\n }\n /**\n * @param id - The pointer ID.\n * @returns The tracking data stored for the given pointer. If no data exists, a blank\n * state will be created.\n */\n trackingData(id) {\n if (!this.mappingState.trackingData[id]) {\n this.mappingState.trackingData[id] = {\n pressTargetsByButton: {},\n clicksByButton: {},\n overTarget: null\n };\n }\n return this.mappingState.trackingData[id];\n }\n /**\n * Allocate a specific type of event from {@link EventBoundary#eventPool this.eventPool}.\n *\n * This allocation is constructor-agnostic, as long as it only takes one argument - this event\n * boundary.\n * @param constructor - The event's constructor.\n */\n allocateEvent(constructor) {\n if (!this.eventPool.has(constructor)) {\n this.eventPool.set(constructor, []);\n }\n const event = this.eventPool.get(constructor).pop() || new constructor(this);\n event.eventPhase = event.NONE;\n event.currentTarget = null;\n event.path = null;\n event.target = null;\n return event;\n }\n /**\n * Frees the event and puts it back into the event pool.\n *\n * It is illegal to reuse the event until it is allocated again, using `this.allocateEvent`.\n *\n * It is also advised that events not allocated from {@link EventBoundary#allocateEvent this.allocateEvent}\n * not be freed. This is because of the possibility that the same event is freed twice, which can cause\n * it to be allocated twice & result in overwriting.\n * @param event - The event to be freed.\n * @throws Error if the event is managed by another event boundary.\n */\n freeEvent(event) {\n if (event.manager !== this)\n throw new Error(\"It is illegal to free an event not managed by this EventBoundary!\");\n const constructor = event.constructor;\n if (!this.eventPool.has(constructor)) {\n this.eventPool.set(constructor, []);\n }\n this.eventPool.get(constructor).push(event);\n }\n /**\n * Similar to {@link EventEmitter.emit}, except it stops if the `propagationImmediatelyStopped` flag\n * is set on the event.\n * @param e - The event to call each listener with.\n * @param type - The event key.\n */\n _notifyListeners(e, type) {\n const listeners = e.currentTarget._events[type];\n if (!listeners)\n return;\n if (!e.currentTarget.isInteractive())\n return;\n if (\"fn\" in listeners) {\n if (listeners.once)\n e.currentTarget.removeListener(type, listeners.fn, void 0, true);\n listeners.fn.call(listeners.context, e);\n } else {\n for (let i = 0, j = listeners.length; i < j && !e.propagationImmediatelyStopped; i++) {\n if (listeners[i].once)\n e.currentTarget.removeListener(type, listeners[i].fn, void 0, true);\n listeners[i].fn.call(listeners[i].context, e);\n }\n }\n }\n}\n\nexport { EventBoundary };\n//# sourceMappingURL=EventBoundary.mjs.map\n","import { ExtensionType } from '../extensions/Extensions.mjs';\nimport { EventBoundary } from './EventBoundary.mjs';\nimport { EventsTicker } from './EventTicker.mjs';\nimport { FederatedPointerEvent } from './FederatedPointerEvent.mjs';\nimport { FederatedWheelEvent } from './FederatedWheelEvent.mjs';\n\n\"use strict\";\nconst MOUSE_POINTER_ID = 1;\nconst TOUCH_TO_POINTER = {\n touchstart: \"pointerdown\",\n touchend: \"pointerup\",\n touchendoutside: \"pointerupoutside\",\n touchmove: \"pointermove\",\n touchcancel: \"pointercancel\"\n};\nconst _EventSystem = class _EventSystem {\n /**\n * @param {Renderer} renderer\n */\n constructor(renderer) {\n /** Does the device support touch events https://www.w3.org/TR/touch-events/ */\n this.supportsTouchEvents = \"ontouchstart\" in globalThis;\n /** Does the device support pointer events https://www.w3.org/Submission/pointer-events/ */\n this.supportsPointerEvents = !!globalThis.PointerEvent;\n /**\n * The DOM element to which the root event listeners are bound. This is automatically set to\n * the renderer's {@link Renderer#view view}.\n */\n this.domElement = null;\n /** The resolution used to convert between the DOM client space into world space. */\n this.resolution = 1;\n this.renderer = renderer;\n this.rootBoundary = new EventBoundary(null);\n EventsTicker.init(this);\n this.autoPreventDefault = true;\n this._eventsAdded = false;\n this._rootPointerEvent = new FederatedPointerEvent(null);\n this._rootWheelEvent = new FederatedWheelEvent(null);\n this.cursorStyles = {\n default: \"inherit\",\n pointer: \"pointer\"\n };\n this.features = new Proxy({ ..._EventSystem.defaultEventFeatures }, {\n set: (target, key, value) => {\n if (key === \"globalMove\") {\n this.rootBoundary.enableGlobalMoveEvents = value;\n }\n target[key] = value;\n return true;\n }\n });\n this._onPointerDown = this._onPointerDown.bind(this);\n this._onPointerMove = this._onPointerMove.bind(this);\n this._onPointerUp = this._onPointerUp.bind(this);\n this._onPointerOverOut = this._onPointerOverOut.bind(this);\n this.onWheel = this.onWheel.bind(this);\n }\n /**\n * The default interaction mode for all display objects.\n * @see Container.eventMode\n * @type {EventMode}\n * @readonly\n * @since 7.2.0\n */\n static get defaultEventMode() {\n return this._defaultEventMode;\n }\n /**\n * Runner init called, view is available at this point.\n * @ignore\n */\n init(options) {\n const { canvas, resolution } = this.renderer;\n this.setTargetElement(canvas);\n this.resolution = resolution;\n _EventSystem._defaultEventMode = options.eventMode ?? \"passive\";\n Object.assign(this.features, options.eventFeatures ?? {});\n this.rootBoundary.enableGlobalMoveEvents = this.features.globalMove;\n }\n /**\n * Handle changing resolution.\n * @ignore\n */\n resolutionChange(resolution) {\n this.resolution = resolution;\n }\n /** Destroys all event listeners and detaches the renderer. */\n destroy() {\n this.setTargetElement(null);\n this.renderer = null;\n this._currentCursor = null;\n }\n /**\n * Sets the current cursor mode, handling any callbacks or CSS style changes.\n * @param mode - cursor mode, a key from the cursorStyles dictionary\n */\n setCursor(mode) {\n mode = mode || \"default\";\n let applyStyles = true;\n if (globalThis.OffscreenCanvas && this.domElement instanceof OffscreenCanvas) {\n applyStyles = false;\n }\n if (this._currentCursor === mode) {\n return;\n }\n this._currentCursor = mode;\n const style = this.cursorStyles[mode];\n if (style) {\n switch (typeof style) {\n case \"string\":\n if (applyStyles) {\n this.domElement.style.cursor = style;\n }\n break;\n case \"function\":\n style(mode);\n break;\n case \"object\":\n if (applyStyles) {\n Object.assign(this.domElement.style, style);\n }\n break;\n }\n } else if (applyStyles && typeof mode === \"string\" && !Object.prototype.hasOwnProperty.call(this.cursorStyles, mode)) {\n this.domElement.style.cursor = mode;\n }\n }\n /**\n * The global pointer event.\n * Useful for getting the pointer position without listening to events.\n * @since 7.2.0\n */\n get pointer() {\n return this._rootPointerEvent;\n }\n /**\n * Event handler for pointer down events on {@link EventSystem#domElement this.domElement}.\n * @param nativeEvent - The native mouse/pointer/touch event.\n */\n _onPointerDown(nativeEvent) {\n if (!this.features.click)\n return;\n this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;\n const events = this._normalizeToPointerData(nativeEvent);\n if (this.autoPreventDefault && events[0].isNormalized) {\n const cancelable = nativeEvent.cancelable || !(\"cancelable\" in nativeEvent);\n if (cancelable) {\n nativeEvent.preventDefault();\n }\n }\n for (let i = 0, j = events.length; i < j; i++) {\n const nativeEvent2 = events[i];\n const federatedEvent = this._bootstrapEvent(this._rootPointerEvent, nativeEvent2);\n this.rootBoundary.mapEvent(federatedEvent);\n }\n this.setCursor(this.rootBoundary.cursor);\n }\n /**\n * Event handler for pointer move events on on {@link EventSystem#domElement this.domElement}.\n * @param nativeEvent - The native mouse/pointer/touch events.\n */\n _onPointerMove(nativeEvent) {\n if (!this.features.move)\n return;\n this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;\n EventsTicker.pointerMoved();\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 this.rootBoundary.mapEvent(event);\n }\n this.setCursor(this.rootBoundary.cursor);\n }\n /**\n * Event handler for pointer up events on {@link EventSystem#domElement this.domElement}.\n * @param nativeEvent - The native mouse/pointer/touch event.\n */\n _onPointerUp(nativeEvent) {\n if (!this.features.click)\n return;\n this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;\n let target = nativeEvent.target;\n if (nativeEvent.composedPath && nativeEvent.composedPath().length > 0) {\n target = nativeEvent.composedPath()[0];\n }\n const outside = target !== this.domElement ? \"outside\" : \"\";\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 event.type += outside;\n this.rootBoundary.mapEvent(event);\n }\n this.setCursor(this.rootBoundary.cursor);\n }\n /**\n * Event handler for pointer over & out events on {@link EventSystem#domElement this.domElement}.\n * @param nativeEvent - The native mouse/pointer/touch event.\n */\n _onPointerOverOut(nativeEvent) {\n if (!this.features.click)\n return;\n this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;\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 this.rootBoundary.mapEvent(event);\n }\n this.setCursor(this.rootBoundary.cursor);\n }\n /**\n * Passive handler for `wheel` events on {@link EventSystem.domElement this.domElement}.\n * @param nativeEvent - The native wheel event.\n */\n onWheel(nativeEvent) {\n if (!this.features.wheel)\n return;\n const wheelEvent = this.normalizeWheelEvent(nativeEvent);\n this.rootBoundary.rootTarget = this.renderer.lastObjectRendered;\n this.rootBoundary.mapEvent(wheelEvent);\n }\n /**\n * Sets the {@link EventSystem#domElement domElement} and binds event listeners.\n *\n * To deregister the current DOM element without setting a new one, pass {@code null}.\n * @param element - The new DOM element.\n */\n setTargetElement(element) {\n this._removeEvents();\n this.domElement = element;\n EventsTicker.domElement = element;\n this._addEvents();\n }\n /** Register event listeners on {@link Renderer#domElement this.domElement}. */\n _addEvents() {\n if (this._eventsAdded || !this.domElement) {\n return;\n }\n EventsTicker.addTickerListener();\n const style = this.domElement.style;\n if (style) {\n if (globalThis.navigator.msPointerEnabled) {\n style.msContentZooming = \"none\";\n style.msTouchAction = \"none\";\n } else if (this.supportsPointerEvents) {\n style.touchAction = \"none\";\n }\n }\n if (this.supportsPointerEvents) {\n globalThis.document.addEventListener(\"pointermove\", this._onPointerMove, true);\n this.domElement.addEventListener(\"pointerdown\", this._onPointerDown, true);\n this.domElement.addEventListener(\"pointerleave\", this._onPointerOverOut, true);\n this.domElement.addEventListener(\"pointerover\", this._onPointerOverOut, true);\n globalThis.addEventListener(\"pointerup\", this._onPointerUp, true);\n } else {\n globalThis.document.addEventListener(\"mousemove\", this._onPointerMove, true);\n this.domElement.addEventListener(\"mousedown\", this._onPointerDown, true);\n this.domElement.addEventListener(\"mouseout\", this._onPointerOverOut, true);\n this.domElement.addEventListener(\"mouseover\", this._onPointerOverOut, true);\n globalThis.addEventListener(\"mouseup\", this._onPointerUp, true);\n if (this.supportsTouchEvents) {\n this.domElement.addEventListener(\"touchstart\", this._onPointerDown, true);\n this.domElement.addEventListener(\"touchend\", this._onPointerUp, true);\n this.domElement.addEventListener(\"touchmove\", this._onPointerMove, true);\n }\n }\n this.domElement.addEventListener(\"wheel\", this.onWheel, {\n passive: true,\n capture: true\n });\n this._eventsAdded = true;\n }\n /** Unregister event listeners on {@link EventSystem#domElement this.domElement}. */\n _removeEvents() {\n if (!this._eventsAdded || !this.domElement) {\n return;\n }\n EventsTicker.removeTickerListener();\n const style = this.domElement.style;\n if (style) {\n if (globalThis.navigator.msPointerEnabled) {\n style.msContentZooming = \"\";\n style.msTouchAction = \"\";\n } else if (this.supportsPointerEvents) {\n style.touchAction = \"\";\n }\n }\n if (this.supportsPointerEvents) {\n globalThis.document.removeEventListener(\"pointermove\", this._onPointerMove, true);\n this.domElement.removeEventListener(\"pointerdown\", this._onPointerDown, true);\n this.domElement.removeEventListener(\"pointerleave\", this._onPointerOverOut, true);\n this.domElement.removeEventListener(\"pointerover\", this._onPointerOverOut, true);\n globalThis.removeEventListener(\"pointerup\", this._onPointerUp, true);\n } else {\n globalThis.document.removeEventListener(\"mousemove\", this._onPointerMove, true);\n this.domElement.removeEventListener(\"mousedown\", this._onPointerDown, true);\n this.domElement.removeEventListener(\"mouseout\", this._onPointerOverOut, true);\n this.domElement.removeEventListener(\"mouseover\", this._onPointerOverOut, true);\n globalThis.removeEventListener(\"mouseup\", this._onPointerUp, true);\n if (this.supportsTouchEvents) {\n this.domElement.removeEventListener(\"touchstart\", this._onPointerDown, true);\n this.domElement.removeEventListener(\"touchend\", this._onPointerUp, true);\n this.domElement.removeEventListener(\"touchmove\", this._onPointerMove, true);\n }\n }\n this.domElement.removeEventListener(\"wheel\", this.onWheel, true);\n this.domElement = null;\n this._eventsAdded = false;\n }\n /**\n * Maps x and y coords from a DOM object and maps them correctly to the PixiJS view. The\n * resulting value is stored in the point. This takes into account the fact that the DOM\n * element could be scaled and positioned anywhere on the screen.\n * @param {PointData} point - the point that the result will be stored in\n * @param {number} x - the x coord of the position to map\n * @param {number} y - the y coord of the position to map\n */\n mapPositionToPoint(point, x, y) {\n const rect = this.domElement.isConnected ? this.domElement.getBoundingClientRect() : {\n x: 0,\n y: 0,\n width: this.domElement.width,\n height: this.domElement.height,\n left: 0,\n top: 0\n };\n const resolutionMultiplier = 1 / this.resolution;\n point.x = (x - rect.left) * (this.domElement.width / rect.width) * resolutionMultiplier;\n point.y = (y - rect.top) * (this.domElement.height / rect.height) * resolutionMultiplier;\n }\n /**\n * Ensures that the original event object contains all data that a regular pointer event would have\n * @param event - The original event data from a touch or mouse event\n * @returns An array containing a single normalized pointer event, in the case of a pointer\n * or mouse event, or a multiple normalized pointer events if there are multiple changed touches\n */\n _normalizeToPointerData(event) {\n const normalizedEvents = [];\n if (this.supportsTouchEvents && event instanceof TouchEvent) {\n for (let i = 0, li = event.changedTouches.length; i < li; i++) {\n const touch = event.changedTouches[i];\n if (typeof touch.button === \"undefined\")\n touch.button = 0;\n if (typeof touch.buttons === \"undefined\")\n touch.buttons = 1;\n if (typeof touch.isPrimary === \"undefined\") {\n touch.isPrimary = event.touches.length === 1 && event.type === \"touchstart\";\n }\n if (typeof touch.width === \"undefined\")\n touch.width = touch.radiusX || 1;\n if (typeof touch.height === \"undefined\")\n touch.height = touch.radiusY || 1;\n if (typeof touch.tiltX === \"undefined\")\n touch.tiltX = 0;\n if (typeof touch.tiltY === \"undefined\")\n touch.tiltY = 0;\n if (typeof touch.pointerType === \"undefined\")\n touch.pointerType = \"touch\";\n if (typeof touch.pointerId === \"undefined\")\n touch.pointerId = touch.identifier || 0;\n if (typeof touch.pressure === \"undefined\")\n touch.pressure = touch.force || 0.5;\n if (typeof touch.twist === \"undefined\")\n touch.twist = 0;\n if (typeof touch.tangentialPressure === \"undefined\")\n touch.tangentialPressure = 0;\n if (typeof touch.layerX === \"undefined\")\n touch.layerX = touch.offsetX = touch.clientX;\n if (typeof touch.layerY === \"undefined\")\n touch.layerY = touch.offsetY = touch.clientY;\n touch.isNormalized = true;\n touch.type = event.type;\n normalizedEvents.push(touch);\n }\n } else if (!globalThis.MouseEvent || event instanceof MouseEvent && (!this.supportsPointerEvents || !(event instanceof globalThis.PointerEvent))) {\n const tempEvent = event;\n if (typeof tempEvent.isPrimary === \"undefined\")\n tempEvent.isPrimary = true;\n if (typeof tempEvent.width === \"undefined\")\n tempEvent.width = 1;\n if (typeof tempEvent.height === \"undefined\")\n tempEvent.height = 1;\n if (typeof tempEvent.tiltX === \"undefined\")\n tempEvent.tiltX = 0;\n if (typeof tempEvent.tiltY === \"undefined\")\n tempEvent.tiltY = 0;\n if (typeof tempEvent.pointerType === \"undefined\")\n tempEvent.pointerType = \"mouse\";\n if (typeof tempEvent.pointerId === \"undefined\")\n tempEvent.pointerId = MOUSE_POINTER_ID;\n if (typeof tempEvent.pressure === \"undefined\")\n tempEvent.pressure = 0.5;\n if (typeof tempEvent.twist === \"undefined\")\n tempEvent.twist = 0;\n if (typeof tempEvent.tangentialPressure === \"undefined\")\n tempEvent.tangentialPressure = 0;\n tempEvent.isNormalized = true;\n normalizedEvents.push(tempEvent);\n } else {\n normalizedEvents.push(event);\n }\n return normalizedEvents;\n }\n /**\n * Normalizes the native {@link https://w3c.github.io/uievents/#interface-wheelevent WheelEvent}.\n *\n * The returned {@link FederatedWheelEvent} is a shared instance. It will not persist across\n * multiple native wheel events.\n * @param nativeEvent - The native wheel event that occurred on the canvas.\n * @returns A federated wheel event.\n */\n normalizeWheelEvent(nativeEvent) {\n const event = this._rootWheelEvent;\n this._transferMouseData(event, nativeEvent);\n event.deltaX = nativeEvent.deltaX;\n event.deltaY = nativeEvent.deltaY;\n event.deltaZ = nativeEvent.deltaZ;\n event.deltaMode = nativeEvent.deltaMode;\n this.mapPositionToPoint(event.screen, nativeEvent.clientX, nativeEvent.clientY);\n event.global.copyFrom(event.screen);\n event.offset.copyFrom(event.screen);\n event.nativeEvent = nativeEvent;\n event.type = nativeEvent.type;\n return event;\n }\n /**\n * Normalizes the `nativeEvent` into a federateed {@link FederatedPointerEvent}.\n * @param event\n * @param nativeEvent\n */\n _bootstrapEvent(event, nativeEvent) {\n event.originalEvent = null;\n event.nativeEvent = nativeEvent;\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 this.mapPositionToPoint(event.screen, nativeEvent.clientX, nativeEvent.clientY);\n event.global.copyFrom(event.screen);\n event.offset.copyFrom(event.screen);\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 return event;\n }\n /**\n * Transfers base & mouse event data from the {@code nativeEvent} to the federated event.\n * @param event\n * @param nativeEvent\n */\n _transferMouseData(event, nativeEvent) {\n event.isTrusted = nativeEvent.isTrusted;\n event.srcElement = nativeEvent.srcElement;\n event.timeStamp = performance.now();\n event.type = nativeEvent.type;\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.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 event.shiftKey = nativeEvent.shiftKey;\n }\n};\n/** @ignore */\n_EventSystem.extension = {\n name: \"events\",\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.CanvasSystem,\n ExtensionType.WebGPUSystem\n ],\n priority: -1\n};\n/**\n * The event features that are enabled by the EventSystem\n * (included in the **pixi.js** and **pixi.js-legacy** bundle), otherwise it will be ignored.\n * @since 7.2.0\n */\n_EventSystem.defaultEventFeatures = {\n /** Enables pointer events associated with pointer movement. */\n move: true,\n /** Enables global pointer move events. */\n globalMove: true,\n /** Enables pointer events associated with clicking. */\n click: true,\n /** Enables wheel events. */\n wheel: true\n};\nlet EventSystem = _EventSystem;\n\nexport { EventSystem };\n//# sourceMappingURL=EventSystem.mjs.map\n","import { extensions } from '../extensions/Extensions.mjs';\nimport { Container } from '../scene/container/Container.mjs';\nimport { EventSystem } from './EventSystem.mjs';\nimport { FederatedContainer } from './FederatedEventTarget.mjs';\n\n\"use strict\";\nextensions.add(EventSystem);\nContainer.mixin(FederatedContainer);\n//# sourceMappingURL=init.mjs.map\n","import { EventSystem } from './EventSystem.mjs';\nimport { FederatedEvent } from './FederatedEvent.mjs';\n\n\"use strict\";\nconst FederatedContainer = {\n /**\n * Property-based event handler for the `click` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onclick = (event) => {\n * //some function here that happens on click\n * }\n */\n onclick: null,\n /**\n * Property-based event handler for the `mousedown` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onmousedown = (event) => {\n * //some function here that happens on mousedown\n * }\n */\n onmousedown: null,\n /**\n * Property-based event handler for the `mouseenter` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onmouseenter = (event) => {\n * //some function here that happens on mouseenter\n * }\n */\n onmouseenter: null,\n /**\n * Property-based event handler for the `mouseleave` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onmouseleave = (event) => {\n * //some function here that happens on mouseleave\n * }\n */\n onmouseleave: null,\n /**\n * Property-based event handler for the `mousemove` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onmousemove = (event) => {\n * //some function here that happens on mousemove\n * }\n */\n onmousemove: null,\n /**\n * Property-based event handler for the `globalmousemove` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onglobalmousemove = (event) => {\n * //some function here that happens on globalmousemove\n * }\n */\n onglobalmousemove: null,\n /**\n * Property-based event handler for the `mouseout` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onmouseout = (event) => {\n * //some function here that happens on mouseout\n * }\n */\n onmouseout: null,\n /**\n * Property-based event handler for the `mouseover` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onmouseover = (event) => {\n * //some function here that happens on mouseover\n * }\n */\n onmouseover: null,\n /**\n * Property-based event handler for the `mouseup` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onmouseup = (event) => {\n * //some function here that happens on mouseup\n * }\n */\n onmouseup: null,\n /**\n * Property-based event handler for the `mouseupoutside` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onmouseupoutside = (event) => {\n * //some function here that happens on mouseupoutside\n * }\n */\n onmouseupoutside: null,\n /**\n * Property-based event handler for the `pointercancel` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onpointercancel = (event) => {\n * //some function here that happens on pointercancel\n * }\n */\n onpointercancel: null,\n /**\n * Property-based event handler for the `pointerdown` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onpointerdown = (event) => {\n * //some function here that happens on pointerdown\n * }\n */\n onpointerdown: null,\n /**\n * Property-based event handler for the `pointerenter` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onpointerenter = (event) => {\n * //some function here that happens on pointerenter\n * }\n */\n onpointerenter: null,\n /**\n * Property-based event handler for the `pointerleave` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onpointerleave = (event) => {\n * //some function here that happens on pointerleave\n * }\n */\n onpointerleave: null,\n /**\n * Property-based event handler for the `pointermove` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onpointermove = (event) => {\n * //some function here that happens on pointermove\n * }\n */\n onpointermove: null,\n /**\n * Property-based event handler for the `globalpointermove` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onglobalpointermove = (event) => {\n * //some function here that happens on globalpointermove\n * }\n */\n onglobalpointermove: null,\n /**\n * Property-based event handler for the `pointerout` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onpointerout = (event) => {\n * //some function here that happens on pointerout\n * }\n */\n onpointerout: null,\n /**\n * Property-based event handler for the `pointerover` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onpointerover = (event) => {\n * //some function here that happens on pointerover\n * }\n */\n onpointerover: null,\n /**\n * Property-based event handler for the `pointertap` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onpointertap = (event) => {\n * //some function here that happens on pointertap\n * }\n */\n onpointertap: null,\n /**\n * Property-based event handler for the `pointerup` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onpointerup = (event) => {\n * //some function here that happens on pointerup\n * }\n */\n onpointerup: null,\n /**\n * Property-based event handler for the `pointerupoutside` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onpointerupoutside = (event) => {\n * //some function here that happens on pointerupoutside\n * }\n */\n onpointerupoutside: null,\n /**\n * Property-based event handler for the `rightclick` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onrightclick = (event) => {\n * //some function here that happens on rightclick\n * }\n */\n onrightclick: null,\n /**\n * Property-based event handler for the `rightdown` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onrightdown = (event) => {\n * //some function here that happens on rightdown\n * }\n */\n onrightdown: null,\n /**\n * Property-based event handler for the `rightup` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onrightup = (event) => {\n * //some function here that happens on rightup\n * }\n */\n onrightup: null,\n /**\n * Property-based event handler for the `rightupoutside` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onrightupoutside = (event) => {\n * //some function here that happens on rightupoutside\n * }\n */\n onrightupoutside: null,\n /**\n * Property-based event handler for the `tap` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.ontap = (event) => {\n * //some function here that happens on tap\n * }\n */\n ontap: null,\n /**\n * Property-based event handler for the `touchcancel` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.ontouchcancel = (event) => {\n * //some function here that happens on touchcancel\n * }\n */\n ontouchcancel: null,\n /**\n * Property-based event handler for the `touchend` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.ontouchend = (event) => {\n * //some function here that happens on touchend\n * }\n */\n ontouchend: null,\n /**\n * Property-based event handler for the `touchendoutside` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.ontouchendoutside = (event) => {\n * //some function here that happens on touchendoutside\n * }\n */\n ontouchendoutside: null,\n /**\n * Property-based event handler for the `touchmove` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.ontouchmove = (event) => {\n * //some function here that happens on touchmove\n * }\n */\n ontouchmove: null,\n /**\n * Property-based event handler for the `globaltouchmove` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onglobaltouchmove = (event) => {\n * //some function here that happens on globaltouchmove\n * }\n */\n onglobaltouchmove: null,\n /**\n * Property-based event handler for the `touchstart` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.ontouchstart = (event) => {\n * //some function here that happens on touchstart\n * }\n */\n ontouchstart: null,\n /**\n * Property-based event handler for the `wheel` event.\n * @memberof scene.Container#\n * @default null\n * @example\n * this.onwheel = (event) => {\n * //some function here that happens on wheel\n * }\n */\n onwheel: null,\n /**\n * Enable interaction events for the Container. Touch, pointer and mouse\n * @memberof scene.Container#\n */\n get interactive() {\n return this.eventMode === \"dynamic\" || this.eventMode === \"static\";\n },\n set interactive(value) {\n this.eventMode = value ? \"static\" : \"passive\";\n },\n /**\n * @ignore\n */\n _internalEventMode: void 0,\n /**\n * Enable interaction events for the Container. Touch, pointer and mouse.\n * There are 5 types of interaction settings:\n * - `'none'`: Ignores all interaction events, even on its children.\n * - `'passive'`: **(default)** Does not emit events and ignores all hit testing on itself and non-interactive children.\n * Interactive children will still emit events.\n * - `'auto'`: Does not emit events but is hit tested if parent is interactive. Same as `interactive = false` in v7\n * - `'static'`: Emit events and is hit tested. Same as `interaction = true` in v7\n * - `'dynamic'`: Emits events and is hit tested but will also receive mock interaction events fired from a ticker to\n * allow for interaction when the mouse isn't moving\n * @example\n * import { Sprite } from 'pixi.js';\n *\n * const sprite = new Sprite(texture);\n * sprite.eventMode = 'static';\n * sprite.on('tap', (event) => {\n * // Handle event\n * });\n * @memberof scene.Container#\n * @since 7.2.0\n */\n get eventMode() {\n return this._internalEventMode ?? EventSystem.defaultEventMode;\n },\n set eventMode(value) {\n this._internalEventMode = value;\n },\n /**\n * Determines if the container is interactive or not\n * @returns {boolean} Whether the container is interactive or not\n * @memberof scene.Container#\n * @since 7.2.0\n * @example\n * import { Sprite } from 'pixi.js';\n *\n * const sprite = new Sprite(texture);\n * sprite.eventMode = 'static';\n * sprite.isInteractive(); // true\n *\n * sprite.eventMode = 'dynamic';\n * sprite.isInteractive(); // true\n *\n * sprite.eventMode = 'none';\n * sprite.isInteractive(); // false\n *\n * sprite.eventMode = 'passive';\n * sprite.isInteractive(); // false\n *\n * sprite.eventMode = 'auto';\n * sprite.isInteractive(); // false\n */\n isInteractive() {\n return this.eventMode === \"static\" || this.eventMode === \"dynamic\";\n },\n /**\n * Determines if the children to the container can be clicked/touched\n * Setting this to false allows PixiJS to bypass a recursive `hitTest` function\n * @memberof scene.Container#\n */\n interactiveChildren: true,\n /**\n * Interaction shape. Children will be hit first, then this shape will be checked.\n * Setting this will cause this shape to be checked in hit tests rather than the container's bounds.\n * @example\n * import { Rectangle, Sprite } from 'pixi.js';\n *\n * const sprite = new Sprite(texture);\n * sprite.interactive = true;\n * sprite.hitArea = new Rectangle(0, 0, 100, 100);\n * @member {IHitArea}\n * @memberof scene.Container#\n */\n hitArea: null,\n /**\n * Unlike `on` or `addListener` which are methods from EventEmitter, `addEventListener`\n * seeks to be compatible with the DOM's `addEventListener` with support for options.\n * @memberof scene.Container\n * @param type - The type of event to listen to.\n * @param listener - The listener callback or object.\n * @param options - Listener options, used for capture phase.\n * @example\n * // Tell the user whether they did a single, double, triple, or nth click.\n * button.addEventListener('click', {\n * handleEvent(e): {\n * let prefix;\n *\n * switch (e.detail) {\n * case 1: prefix = 'single'; break;\n * case 2: prefix = 'double'; break;\n * case 3: prefix = 'triple'; break;\n * default: prefix = e.detail + 'th'; break;\n * }\n *\n * console.log('That was a ' + prefix + 'click');\n * }\n * });\n *\n * // But skip the first click!\n * button.parent.addEventListener('click', function blockClickOnce(e) {\n * e.stopImmediatePropagation();\n * button.parent.removeEventListener('click', blockClickOnce, true);\n * }, {\n * capture: true,\n * });\n */\n addEventListener(type, listener, options) {\n const capture = typeof options === \"boolean\" && options || typeof options === \"object\" && options.capture;\n const signal = typeof options === \"object\" ? options.signal : void 0;\n const once = typeof options === \"object\" ? options.once === true : false;\n const context = typeof listener === \"function\" ? void 0 : listener;\n type = capture ? `${type}capture` : type;\n const listenerFn = typeof listener === \"function\" ? listener : listener.handleEvent;\n const emitter = this;\n if (signal) {\n signal.addEventListener(\"abort\", () => {\n emitter.off(type, listenerFn, context);\n });\n }\n if (once) {\n emitter.once(type, listenerFn, context);\n } else {\n emitter.on(type, listenerFn, context);\n }\n },\n /**\n * Unlike `off` or `removeListener` which are methods from EventEmitter, `removeEventListener`\n * seeks to be compatible with the DOM's `removeEventListener` with support for options.\n * @memberof scene.Container\n * @param type - The type of event the listener is bound to.\n * @param listener - The listener callback or object.\n * @param options - The original listener options. This is required to deregister a capture phase listener.\n */\n removeEventListener(type, listener, options) {\n const capture = typeof options === \"boolean\" && options || typeof options === \"object\" && options.capture;\n const context = typeof listener === \"function\" ? void 0 : listener;\n type = capture ? `${type}capture` : type;\n listener = typeof listener === \"function\" ? listener : listener.handleEvent;\n this.off(type, listener, context);\n },\n /**\n * Dispatch the event on this {@link Container} using the event's {@link EventBoundary}.\n *\n * The target of the event is set to `this` and the `defaultPrevented` flag is cleared before dispatch.\n * @memberof scene.Container\n * @param e - The event to dispatch.\n * @returns Whether the {@link FederatedEvent.preventDefault preventDefault}() method was not invoked.\n * @example\n * // Reuse a click event!\n * button.dispatchEvent(clickEvent);\n */\n dispatchEvent(e) {\n if (!(e instanceof FederatedEvent)) {\n throw new Error(\"Container cannot propagate events outside of the Federated Events API\");\n }\n e.defaultPrevented = false;\n e.path = null;\n e.target = this;\n e.manager.dispatchEvent(e);\n return !e.defaultPrevented;\n }\n};\n\nexport { FederatedContainer };\n//# sourceMappingURL=FederatedEventTarget.mjs.map\n"],"names":["Error","Event","a","MSStream","navigator","r","globalThis","A","document","performance","d","e","t","Object","PointerEvent","arguments","Map","i","Array","o","Proxy","OffscreenCanvas","n","TouchEvent","MouseEvent","value"],"mappings":"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"}