@number10/jsx-phaser 5.0.0

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 (689) hide show
  1. package/LICENSE +667 -0
  2. package/README.md +44 -0
  3. package/dist/_virtual/_commonjsHelpers.cjs +7 -0
  4. package/dist/_virtual/_commonjsHelpers.cjs.map +1 -0
  5. package/dist/_virtual/_commonjsHelpers.js +7 -0
  6. package/dist/_virtual/_commonjsHelpers.js.map +1 -0
  7. package/dist/_virtual/index.cjs +7 -0
  8. package/dist/_virtual/index.cjs.map +1 -0
  9. package/dist/_virtual/index.js +8 -0
  10. package/dist/_virtual/index.js.map +1 -0
  11. package/dist/animation/index.d.ts +7 -0
  12. package/dist/animation/index.d.ts.map +1 -0
  13. package/dist/camera/index.d.ts +5 -0
  14. package/dist/camera/index.d.ts.map +1 -0
  15. package/dist/camera/use-camera-fx.cjs +49 -0
  16. package/dist/camera/use-camera-fx.cjs.map +1 -0
  17. package/dist/camera/use-camera-fx.d.ts +25 -0
  18. package/dist/camera/use-camera-fx.d.ts.map +1 -0
  19. package/dist/camera/use-camera-fx.js +49 -0
  20. package/dist/camera/use-camera-fx.js.map +1 -0
  21. package/dist/clip/index.cjs +8 -0
  22. package/dist/clip/index.cjs.map +1 -0
  23. package/dist/clip/index.d.ts +3 -0
  24. package/dist/clip/index.d.ts.map +1 -0
  25. package/dist/clip/index.js +9 -0
  26. package/dist/clip/index.js.map +1 -0
  27. package/dist/clip/stencil-clip-depth.cjs +24 -0
  28. package/dist/clip/stencil-clip-depth.cjs.map +1 -0
  29. package/dist/clip/stencil-clip-depth.d.ts +10 -0
  30. package/dist/clip/stencil-clip-depth.d.ts.map +1 -0
  31. package/dist/clip/stencil-clip-depth.js +24 -0
  32. package/dist/clip/stencil-clip-depth.js.map +1 -0
  33. package/dist/clip/stencil-clip-extension.cjs +113 -0
  34. package/dist/clip/stencil-clip-extension.cjs.map +1 -0
  35. package/dist/clip/stencil-clip-extension.d.ts +18 -0
  36. package/dist/clip/stencil-clip-extension.d.ts.map +1 -0
  37. package/dist/clip/stencil-clip-extension.js +96 -0
  38. package/dist/clip/stencil-clip-extension.js.map +1 -0
  39. package/dist/clip/stencil-clip-fbo-bridge.cjs +46 -0
  40. package/dist/clip/stencil-clip-fbo-bridge.cjs.map +1 -0
  41. package/dist/clip/stencil-clip-fbo-bridge.d.ts +7 -0
  42. package/dist/clip/stencil-clip-fbo-bridge.d.ts.map +1 -0
  43. package/dist/clip/stencil-clip-fbo-bridge.js +46 -0
  44. package/dist/clip/stencil-clip-fbo-bridge.js.map +1 -0
  45. package/dist/clip/stencil-clip-renderer.cjs +300 -0
  46. package/dist/clip/stencil-clip-renderer.cjs.map +1 -0
  47. package/dist/clip/stencil-clip-renderer.d.ts +7 -0
  48. package/dist/clip/stencil-clip-renderer.d.ts.map +1 -0
  49. package/dist/clip/stencil-clip-renderer.js +300 -0
  50. package/dist/clip/stencil-clip-renderer.js.map +1 -0
  51. package/dist/clip/stencil-clip-state.cjs +84 -0
  52. package/dist/clip/stencil-clip-state.cjs.map +1 -0
  53. package/dist/clip/stencil-clip-state.d.ts +28 -0
  54. package/dist/clip/stencil-clip-state.d.ts.map +1 -0
  55. package/dist/clip/stencil-clip-state.js +84 -0
  56. package/dist/clip/stencil-clip-state.js.map +1 -0
  57. package/dist/clip/stencil-clip-types.d.ts +67 -0
  58. package/dist/clip/stencil-clip-types.d.ts.map +1 -0
  59. package/dist/clip/stencil-clip.cjs +138 -0
  60. package/dist/clip/stencil-clip.cjs.map +1 -0
  61. package/dist/clip/stencil-clip.d.ts +53 -0
  62. package/dist/clip/stencil-clip.d.ts.map +1 -0
  63. package/dist/clip/stencil-clip.js +122 -0
  64. package/dist/clip/stencil-clip.js.map +1 -0
  65. package/dist/colors/use-color-mode.cjs +28 -0
  66. package/dist/colors/use-color-mode.cjs.map +1 -0
  67. package/dist/colors/use-color-mode.d.ts +22 -0
  68. package/dist/colors/use-color-mode.d.ts.map +1 -0
  69. package/dist/colors/use-color-mode.js +28 -0
  70. package/dist/colors/use-color-mode.js.map +1 -0
  71. package/dist/colors/use-colors.cjs +45 -0
  72. package/dist/colors/use-colors.cjs.map +1 -0
  73. package/dist/colors/use-colors.d.ts +36 -0
  74. package/dist/colors/use-colors.d.ts.map +1 -0
  75. package/dist/colors/use-colors.js +45 -0
  76. package/dist/colors/use-colors.js.map +1 -0
  77. package/dist/components/DebugPanel.cjs +88 -0
  78. package/dist/components/DebugPanel.cjs.map +1 -0
  79. package/dist/components/DebugPanel.d.ts +45 -0
  80. package/dist/components/DebugPanel.d.ts.map +1 -0
  81. package/dist/components/DebugPanel.js +71 -0
  82. package/dist/components/DebugPanel.js.map +1 -0
  83. package/dist/components/appliers/applyBackground.cjs +89 -0
  84. package/dist/components/appliers/applyBackground.cjs.map +1 -0
  85. package/dist/components/appliers/applyBackground.d.ts +18 -0
  86. package/dist/components/appliers/applyBackground.d.ts.map +1 -0
  87. package/dist/components/appliers/applyBackground.js +89 -0
  88. package/dist/components/appliers/applyBackground.js.map +1 -0
  89. package/dist/components/appliers/applyGestures.cjs +85 -0
  90. package/dist/components/appliers/applyGestures.cjs.map +1 -0
  91. package/dist/components/appliers/applyGestures.d.ts +12 -0
  92. package/dist/components/appliers/applyGestures.d.ts.map +1 -0
  93. package/dist/components/appliers/applyGestures.js +68 -0
  94. package/dist/components/appliers/applyGestures.js.map +1 -0
  95. package/dist/components/appliers/applyGraphics.cjs +21 -0
  96. package/dist/components/appliers/applyGraphics.cjs.map +1 -0
  97. package/dist/components/appliers/applyGraphics.d.ts +13 -0
  98. package/dist/components/appliers/applyGraphics.d.ts.map +1 -0
  99. package/dist/components/appliers/applyGraphics.js +21 -0
  100. package/dist/components/appliers/applyGraphics.js.map +1 -0
  101. package/dist/components/appliers/applyGraphicsLayout.cjs +18 -0
  102. package/dist/components/appliers/applyGraphicsLayout.cjs.map +1 -0
  103. package/dist/components/appliers/applyGraphicsLayout.d.ts +13 -0
  104. package/dist/components/appliers/applyGraphicsLayout.d.ts.map +1 -0
  105. package/dist/components/appliers/applyGraphicsLayout.js +18 -0
  106. package/dist/components/appliers/applyGraphicsLayout.js.map +1 -0
  107. package/dist/components/appliers/applyImage.cjs +92 -0
  108. package/dist/components/appliers/applyImage.cjs.map +1 -0
  109. package/dist/components/appliers/applyImage.d.ts +47 -0
  110. package/dist/components/appliers/applyImage.d.ts.map +1 -0
  111. package/dist/components/appliers/applyImage.js +92 -0
  112. package/dist/components/appliers/applyImage.js.map +1 -0
  113. package/dist/components/appliers/applyImageLayout.cjs +18 -0
  114. package/dist/components/appliers/applyImageLayout.cjs.map +1 -0
  115. package/dist/components/appliers/applyImageLayout.d.ts +18 -0
  116. package/dist/components/appliers/applyImageLayout.d.ts.map +1 -0
  117. package/dist/components/appliers/applyImageLayout.js +18 -0
  118. package/dist/components/appliers/applyImageLayout.js.map +1 -0
  119. package/dist/components/appliers/applyLayout.cjs +108 -0
  120. package/dist/components/appliers/applyLayout.cjs.map +1 -0
  121. package/dist/components/appliers/applyLayout.d.ts +19 -0
  122. package/dist/components/appliers/applyLayout.d.ts.map +1 -0
  123. package/dist/components/appliers/applyLayout.js +91 -0
  124. package/dist/components/appliers/applyLayout.js.map +1 -0
  125. package/dist/components/appliers/applyNineSlice.cjs +37 -0
  126. package/dist/components/appliers/applyNineSlice.cjs.map +1 -0
  127. package/dist/components/appliers/applyNineSlice.d.ts +14 -0
  128. package/dist/components/appliers/applyNineSlice.d.ts.map +1 -0
  129. package/dist/components/appliers/applyNineSlice.js +37 -0
  130. package/dist/components/appliers/applyNineSlice.js.map +1 -0
  131. package/dist/components/appliers/applyNineSliceLayout.cjs +18 -0
  132. package/dist/components/appliers/applyNineSliceLayout.cjs.map +1 -0
  133. package/dist/components/appliers/applyNineSliceLayout.d.ts +18 -0
  134. package/dist/components/appliers/applyNineSliceLayout.d.ts.map +1 -0
  135. package/dist/components/appliers/applyNineSliceLayout.js +18 -0
  136. package/dist/components/appliers/applyNineSliceLayout.js.map +1 -0
  137. package/dist/components/appliers/applyParticles.cjs +46 -0
  138. package/dist/components/appliers/applyParticles.cjs.map +1 -0
  139. package/dist/components/appliers/applyParticles.d.ts +7 -0
  140. package/dist/components/appliers/applyParticles.d.ts.map +1 -0
  141. package/dist/components/appliers/applyParticles.js +46 -0
  142. package/dist/components/appliers/applyParticles.js.map +1 -0
  143. package/dist/components/appliers/applyParticlesLayout.cjs +7 -0
  144. package/dist/components/appliers/applyParticlesLayout.cjs.map +1 -0
  145. package/dist/components/appliers/applyParticlesLayout.d.ts +11 -0
  146. package/dist/components/appliers/applyParticlesLayout.d.ts.map +1 -0
  147. package/dist/components/appliers/applyParticlesLayout.js +7 -0
  148. package/dist/components/appliers/applyParticlesLayout.js.map +1 -0
  149. package/dist/components/appliers/applyPhaser.cjs +40 -0
  150. package/dist/components/appliers/applyPhaser.cjs.map +1 -0
  151. package/dist/components/appliers/applyPhaser.d.ts +24 -0
  152. package/dist/components/appliers/applyPhaser.d.ts.map +1 -0
  153. package/dist/components/appliers/applyPhaser.js +40 -0
  154. package/dist/components/appliers/applyPhaser.js.map +1 -0
  155. package/dist/components/appliers/applySprite.cjs +124 -0
  156. package/dist/components/appliers/applySprite.cjs.map +1 -0
  157. package/dist/components/appliers/applySprite.d.ts +13 -0
  158. package/dist/components/appliers/applySprite.d.ts.map +1 -0
  159. package/dist/components/appliers/applySprite.js +124 -0
  160. package/dist/components/appliers/applySprite.js.map +1 -0
  161. package/dist/components/appliers/applySpriteLayout.cjs +7 -0
  162. package/dist/components/appliers/applySpriteLayout.cjs.map +1 -0
  163. package/dist/components/appliers/applySpriteLayout.d.ts +17 -0
  164. package/dist/components/appliers/applySpriteLayout.d.ts.map +1 -0
  165. package/dist/components/appliers/applySpriteLayout.js +7 -0
  166. package/dist/components/appliers/applySpriteLayout.js.map +1 -0
  167. package/dist/components/appliers/applyText.cjs +142 -0
  168. package/dist/components/appliers/applyText.cjs.map +1 -0
  169. package/dist/components/appliers/applyText.d.ts +32 -0
  170. package/dist/components/appliers/applyText.d.ts.map +1 -0
  171. package/dist/components/appliers/applyText.js +142 -0
  172. package/dist/components/appliers/applyText.js.map +1 -0
  173. package/dist/components/appliers/applyTextLayout.cjs +16 -0
  174. package/dist/components/appliers/applyTextLayout.cjs.map +1 -0
  175. package/dist/components/appliers/applyTextLayout.d.ts +18 -0
  176. package/dist/components/appliers/applyTextLayout.d.ts.map +1 -0
  177. package/dist/components/appliers/applyTextLayout.js +16 -0
  178. package/dist/components/appliers/applyTextLayout.js.map +1 -0
  179. package/dist/components/appliers/applyTooltip.cjs +247 -0
  180. package/dist/components/appliers/applyTooltip.cjs.map +1 -0
  181. package/dist/components/appliers/applyTooltip.d.ts +16 -0
  182. package/dist/components/appliers/applyTooltip.d.ts.map +1 -0
  183. package/dist/components/appliers/applyTooltip.js +247 -0
  184. package/dist/components/appliers/applyTooltip.js.map +1 -0
  185. package/dist/components/appliers/applyTransform.cjs +61 -0
  186. package/dist/components/appliers/applyTransform.cjs.map +1 -0
  187. package/dist/components/appliers/applyTransform.d.ts +24 -0
  188. package/dist/components/appliers/applyTransform.d.ts.map +1 -0
  189. package/dist/components/appliers/applyTransform.js +61 -0
  190. package/dist/components/appliers/applyTransform.js.map +1 -0
  191. package/dist/components/backgroundImage.cjs +411 -0
  192. package/dist/components/backgroundImage.cjs.map +1 -0
  193. package/dist/components/backgroundImage.d.ts +14 -0
  194. package/dist/components/backgroundImage.d.ts.map +1 -0
  195. package/dist/components/backgroundImage.js +411 -0
  196. package/dist/components/backgroundImage.js.map +1 -0
  197. package/dist/components/creators/createBackground.cjs +18 -0
  198. package/dist/components/creators/createBackground.cjs.map +1 -0
  199. package/dist/components/creators/createBackground.d.ts +20 -0
  200. package/dist/components/creators/createBackground.d.ts.map +1 -0
  201. package/dist/components/creators/createBackground.js +18 -0
  202. package/dist/components/creators/createBackground.js.map +1 -0
  203. package/dist/components/creators/createGestures.cjs +51 -0
  204. package/dist/components/creators/createGestures.cjs.map +1 -0
  205. package/dist/components/creators/createGestures.d.ts +11 -0
  206. package/dist/components/creators/createGestures.d.ts.map +1 -0
  207. package/dist/components/creators/createGestures.js +34 -0
  208. package/dist/components/creators/createGestures.js.map +1 -0
  209. package/dist/components/creators/createGraphicsLayout.cjs +24 -0
  210. package/dist/components/creators/createGraphicsLayout.cjs.map +1 -0
  211. package/dist/components/creators/createGraphicsLayout.d.ts +12 -0
  212. package/dist/components/creators/createGraphicsLayout.d.ts.map +1 -0
  213. package/dist/components/creators/createGraphicsLayout.js +24 -0
  214. package/dist/components/creators/createGraphicsLayout.js.map +1 -0
  215. package/dist/components/creators/createImageLayout.cjs +16 -0
  216. package/dist/components/creators/createImageLayout.cjs.map +1 -0
  217. package/dist/components/creators/createImageLayout.d.ts +17 -0
  218. package/dist/components/creators/createImageLayout.d.ts.map +1 -0
  219. package/dist/components/creators/createImageLayout.js +16 -0
  220. package/dist/components/creators/createImageLayout.js.map +1 -0
  221. package/dist/components/creators/createLayout.cjs +61 -0
  222. package/dist/components/creators/createLayout.cjs.map +1 -0
  223. package/dist/components/creators/createLayout.d.ts +15 -0
  224. package/dist/components/creators/createLayout.d.ts.map +1 -0
  225. package/dist/components/creators/createLayout.js +61 -0
  226. package/dist/components/creators/createLayout.js.map +1 -0
  227. package/dist/components/creators/createNineSliceLayout.cjs +16 -0
  228. package/dist/components/creators/createNineSliceLayout.cjs.map +1 -0
  229. package/dist/components/creators/createNineSliceLayout.d.ts +17 -0
  230. package/dist/components/creators/createNineSliceLayout.d.ts.map +1 -0
  231. package/dist/components/creators/createNineSliceLayout.js +16 -0
  232. package/dist/components/creators/createNineSliceLayout.js.map +1 -0
  233. package/dist/components/creators/createParticlesLayout.cjs +8 -0
  234. package/dist/components/creators/createParticlesLayout.cjs.map +1 -0
  235. package/dist/components/creators/createParticlesLayout.d.ts +14 -0
  236. package/dist/components/creators/createParticlesLayout.d.ts.map +1 -0
  237. package/dist/components/creators/createParticlesLayout.js +8 -0
  238. package/dist/components/creators/createParticlesLayout.js.map +1 -0
  239. package/dist/components/creators/createPhaser.cjs +36 -0
  240. package/dist/components/creators/createPhaser.cjs.map +1 -0
  241. package/dist/components/creators/createPhaser.d.ts +14 -0
  242. package/dist/components/creators/createPhaser.d.ts.map +1 -0
  243. package/dist/components/creators/createPhaser.js +36 -0
  244. package/dist/components/creators/createPhaser.js.map +1 -0
  245. package/dist/components/creators/createSpriteLayout.cjs +10 -0
  246. package/dist/components/creators/createSpriteLayout.cjs.map +1 -0
  247. package/dist/components/creators/createSpriteLayout.d.ts +18 -0
  248. package/dist/components/creators/createSpriteLayout.d.ts.map +1 -0
  249. package/dist/components/creators/createSpriteLayout.js +10 -0
  250. package/dist/components/creators/createSpriteLayout.js.map +1 -0
  251. package/dist/components/creators/createTextLayout.cjs +16 -0
  252. package/dist/components/creators/createTextLayout.cjs.map +1 -0
  253. package/dist/components/creators/createTextLayout.d.ts +17 -0
  254. package/dist/components/creators/createTextLayout.d.ts.map +1 -0
  255. package/dist/components/creators/createTextLayout.js +16 -0
  256. package/dist/components/creators/createTextLayout.js.map +1 -0
  257. package/dist/components/creators/createTransform.cjs +83 -0
  258. package/dist/components/creators/createTransform.cjs.map +1 -0
  259. package/dist/components/creators/createTransform.d.ts +26 -0
  260. package/dist/components/creators/createTransform.d.ts.map +1 -0
  261. package/dist/components/creators/createTransform.js +83 -0
  262. package/dist/components/creators/createTransform.js.map +1 -0
  263. package/dist/components/custom/Graphics.cjs +13 -0
  264. package/dist/components/custom/Graphics.cjs.map +1 -0
  265. package/dist/components/custom/Graphics.d.ts +50 -0
  266. package/dist/components/custom/Graphics.d.ts.map +1 -0
  267. package/dist/components/custom/Graphics.js +13 -0
  268. package/dist/components/custom/Graphics.js.map +1 -0
  269. package/dist/components/custom/NineSlice.cjs +13 -0
  270. package/dist/components/custom/NineSlice.cjs.map +1 -0
  271. package/dist/components/custom/NineSlice.d.ts +87 -0
  272. package/dist/components/custom/NineSlice.d.ts.map +1 -0
  273. package/dist/components/custom/NineSlice.js +13 -0
  274. package/dist/components/custom/NineSlice.js.map +1 -0
  275. package/dist/components/custom/Particles.cjs +8 -0
  276. package/dist/components/custom/Particles.cjs.map +1 -0
  277. package/dist/components/custom/Particles.d.ts +28 -0
  278. package/dist/components/custom/Particles.d.ts.map +1 -0
  279. package/dist/components/custom/Particles.js +8 -0
  280. package/dist/components/custom/Particles.js.map +1 -0
  281. package/dist/components/custom/RefOriginView.cjs +67 -0
  282. package/dist/components/custom/RefOriginView.cjs.map +1 -0
  283. package/dist/components/custom/RefOriginView.d.ts +49 -0
  284. package/dist/components/custom/RefOriginView.d.ts.map +1 -0
  285. package/dist/components/custom/RefOriginView.js +67 -0
  286. package/dist/components/custom/RefOriginView.js.map +1 -0
  287. package/dist/components/custom/Sprite.cjs +13 -0
  288. package/dist/components/custom/Sprite.cjs.map +1 -0
  289. package/dist/components/custom/Sprite.d.ts +79 -0
  290. package/dist/components/custom/Sprite.d.ts.map +1 -0
  291. package/dist/components/custom/Sprite.js +13 -0
  292. package/dist/components/custom/Sprite.js.map +1 -0
  293. package/dist/components/custom/TileSprite.cjs +13 -0
  294. package/dist/components/custom/TileSprite.cjs.map +1 -0
  295. package/dist/components/custom/TileSprite.d.ts +65 -0
  296. package/dist/components/custom/TileSprite.d.ts.map +1 -0
  297. package/dist/components/custom/TileSprite.js +13 -0
  298. package/dist/components/custom/TileSprite.js.map +1 -0
  299. package/dist/components/custom/index.d.ts +15 -0
  300. package/dist/components/custom/index.d.ts.map +1 -0
  301. package/dist/components/index.cjs +33 -0
  302. package/dist/components/index.cjs.map +1 -0
  303. package/dist/components/index.d.ts +11 -0
  304. package/dist/components/index.d.ts.map +1 -0
  305. package/dist/components/index.js +33 -0
  306. package/dist/components/index.js.map +1 -0
  307. package/dist/components/internal/SceneWrapper.cjs +10 -0
  308. package/dist/components/internal/SceneWrapper.cjs.map +1 -0
  309. package/dist/components/internal/SceneWrapper.d.ts +20 -0
  310. package/dist/components/internal/SceneWrapper.d.ts.map +1 -0
  311. package/dist/components/internal/SceneWrapper.js +10 -0
  312. package/dist/components/internal/SceneWrapper.js.map +1 -0
  313. package/dist/components/primitives/graphics.cjs +29 -0
  314. package/dist/components/primitives/graphics.cjs.map +1 -0
  315. package/dist/components/primitives/graphics.d.ts +146 -0
  316. package/dist/components/primitives/graphics.d.ts.map +1 -0
  317. package/dist/components/primitives/graphics.js +29 -0
  318. package/dist/components/primitives/graphics.js.map +1 -0
  319. package/dist/components/primitives/image.cjs +110 -0
  320. package/dist/components/primitives/image.cjs.map +1 -0
  321. package/dist/components/primitives/image.d.ts +170 -0
  322. package/dist/components/primitives/image.d.ts.map +1 -0
  323. package/dist/components/primitives/image.js +110 -0
  324. package/dist/components/primitives/image.js.map +1 -0
  325. package/dist/components/primitives/nineslice.cjs +42 -0
  326. package/dist/components/primitives/nineslice.cjs.map +1 -0
  327. package/dist/components/primitives/nineslice.d.ts +271 -0
  328. package/dist/components/primitives/nineslice.d.ts.map +1 -0
  329. package/dist/components/primitives/nineslice.js +42 -0
  330. package/dist/components/primitives/nineslice.js.map +1 -0
  331. package/dist/components/primitives/particles.cjs +77 -0
  332. package/dist/components/primitives/particles.cjs.map +1 -0
  333. package/dist/components/primitives/particles.d.ts +47 -0
  334. package/dist/components/primitives/particles.d.ts.map +1 -0
  335. package/dist/components/primitives/particles.js +77 -0
  336. package/dist/components/primitives/particles.js.map +1 -0
  337. package/dist/components/primitives/sprite.cjs +100 -0
  338. package/dist/components/primitives/sprite.cjs.map +1 -0
  339. package/dist/components/primitives/sprite.d.ts +147 -0
  340. package/dist/components/primitives/sprite.d.ts.map +1 -0
  341. package/dist/components/primitives/sprite.js +100 -0
  342. package/dist/components/primitives/sprite.js.map +1 -0
  343. package/dist/components/primitives/text.cjs +73 -0
  344. package/dist/components/primitives/text.cjs.map +1 -0
  345. package/dist/components/primitives/text.d.ts +155 -0
  346. package/dist/components/primitives/text.d.ts.map +1 -0
  347. package/dist/components/primitives/text.js +73 -0
  348. package/dist/components/primitives/text.js.map +1 -0
  349. package/dist/components/primitives/tilesprite.cjs +77 -0
  350. package/dist/components/primitives/tilesprite.cjs.map +1 -0
  351. package/dist/components/primitives/tilesprite.d.ts +157 -0
  352. package/dist/components/primitives/tilesprite.d.ts.map +1 -0
  353. package/dist/components/primitives/tilesprite.js +77 -0
  354. package/dist/components/primitives/tilesprite.js.map +1 -0
  355. package/dist/components/primitives/vectorDraw.cjs +73 -0
  356. package/dist/components/primitives/vectorDraw.cjs.map +1 -0
  357. package/dist/components/primitives/vectorDraw.d.ts +4 -0
  358. package/dist/components/primitives/vectorDraw.d.ts.map +1 -0
  359. package/dist/components/primitives/vectorDraw.js +73 -0
  360. package/dist/components/primitives/vectorDraw.js.map +1 -0
  361. package/dist/components/primitives/view.cjs +105 -0
  362. package/dist/components/primitives/view.cjs.map +1 -0
  363. package/dist/components/primitives/view.d.ts +23 -0
  364. package/dist/components/primitives/view.d.ts.map +1 -0
  365. package/dist/components/primitives/view.js +105 -0
  366. package/dist/components/primitives/view.js.map +1 -0
  367. package/dist/core-props.d.ts +105 -0
  368. package/dist/core-props.d.ts.map +1 -0
  369. package/dist/core-types.d.ts +71 -0
  370. package/dist/core-types.d.ts.map +1 -0
  371. package/dist/design-tokens/resolve-theme-tokens.cjs +27 -0
  372. package/dist/design-tokens/resolve-theme-tokens.cjs.map +1 -0
  373. package/dist/design-tokens/resolve-theme-tokens.d.ts +9 -0
  374. package/dist/design-tokens/resolve-theme-tokens.d.ts.map +1 -0
  375. package/dist/design-tokens/resolve-theme-tokens.js +27 -0
  376. package/dist/design-tokens/resolve-theme-tokens.js.map +1 -0
  377. package/dist/design-tokens/use-theme-tokens.cjs +26 -0
  378. package/dist/design-tokens/use-theme-tokens.cjs.map +1 -0
  379. package/dist/design-tokens/use-theme-tokens.d.ts +28 -0
  380. package/dist/design-tokens/use-theme-tokens.d.ts.map +1 -0
  381. package/dist/design-tokens/use-theme-tokens.js +26 -0
  382. package/dist/design-tokens/use-theme-tokens.js.map +1 -0
  383. package/dist/effects/index.d.ts +2 -0
  384. package/dist/effects/index.d.ts.map +1 -0
  385. package/dist/effects/phaser-effects-bridge.cjs +48 -0
  386. package/dist/effects/phaser-effects-bridge.cjs.map +1 -0
  387. package/dist/effects/phaser-effects-bridge.d.ts +2 -0
  388. package/dist/effects/phaser-effects-bridge.d.ts.map +1 -0
  389. package/dist/effects/phaser-effects-bridge.js +30 -0
  390. package/dist/effects/phaser-effects-bridge.js.map +1 -0
  391. package/dist/effects/use-effect.cjs +155 -0
  392. package/dist/effects/use-effect.cjs.map +1 -0
  393. package/dist/effects/use-effect.d.ts +30 -0
  394. package/dist/effects/use-effect.d.ts.map +1 -0
  395. package/dist/effects/use-effect.js +155 -0
  396. package/dist/effects/use-effect.js.map +1 -0
  397. package/dist/fx/convenience-hooks/index.d.ts +7 -0
  398. package/dist/fx/convenience-hooks/index.d.ts.map +1 -0
  399. package/dist/fx/convenience-hooks/use-blur.cjs +18 -0
  400. package/dist/fx/convenience-hooks/use-blur.cjs.map +1 -0
  401. package/dist/fx/convenience-hooks/use-blur.d.ts +21 -0
  402. package/dist/fx/convenience-hooks/use-blur.d.ts.map +1 -0
  403. package/dist/fx/convenience-hooks/use-blur.js +18 -0
  404. package/dist/fx/convenience-hooks/use-blur.js.map +1 -0
  405. package/dist/fx/convenience-hooks/use-glow.cjs +18 -0
  406. package/dist/fx/convenience-hooks/use-glow.cjs.map +1 -0
  407. package/dist/fx/convenience-hooks/use-glow.d.ts +21 -0
  408. package/dist/fx/convenience-hooks/use-glow.d.ts.map +1 -0
  409. package/dist/fx/convenience-hooks/use-glow.js +18 -0
  410. package/dist/fx/convenience-hooks/use-glow.js.map +1 -0
  411. package/dist/fx/convenience-hooks/use-shadow.cjs +18 -0
  412. package/dist/fx/convenience-hooks/use-shadow.cjs.map +1 -0
  413. package/dist/fx/convenience-hooks/use-shadow.d.ts +21 -0
  414. package/dist/fx/convenience-hooks/use-shadow.d.ts.map +1 -0
  415. package/dist/fx/convenience-hooks/use-shadow.js +18 -0
  416. package/dist/fx/convenience-hooks/use-shadow.js.map +1 -0
  417. package/dist/fx/fx-creators/blur.cjs +20 -0
  418. package/dist/fx/fx-creators/blur.cjs.map +1 -0
  419. package/dist/fx/fx-creators/blur.d.ts +37 -0
  420. package/dist/fx/fx-creators/blur.d.ts.map +1 -0
  421. package/dist/fx/fx-creators/blur.js +20 -0
  422. package/dist/fx/fx-creators/blur.js.map +1 -0
  423. package/dist/fx/fx-creators/color-matrix.cjs +47 -0
  424. package/dist/fx/fx-creators/color-matrix.cjs.map +1 -0
  425. package/dist/fx/fx-creators/color-matrix.d.ts +31 -0
  426. package/dist/fx/fx-creators/color-matrix.d.ts.map +1 -0
  427. package/dist/fx/fx-creators/color-matrix.js +47 -0
  428. package/dist/fx/fx-creators/color-matrix.js.map +1 -0
  429. package/dist/fx/fx-creators/glow.cjs +27 -0
  430. package/dist/fx/fx-creators/glow.cjs.map +1 -0
  431. package/dist/fx/fx-creators/glow.d.ts +36 -0
  432. package/dist/fx/fx-creators/glow.d.ts.map +1 -0
  433. package/dist/fx/fx-creators/glow.js +27 -0
  434. package/dist/fx/fx-creators/glow.js.map +1 -0
  435. package/dist/fx/fx-creators/index.d.ts +10 -0
  436. package/dist/fx/fx-creators/index.d.ts.map +1 -0
  437. package/dist/fx/fx-creators/pixelate.cjs +20 -0
  438. package/dist/fx/fx-creators/pixelate.cjs.map +1 -0
  439. package/dist/fx/fx-creators/pixelate.d.ts +24 -0
  440. package/dist/fx/fx-creators/pixelate.d.ts.map +1 -0
  441. package/dist/fx/fx-creators/pixelate.js +20 -0
  442. package/dist/fx/fx-creators/pixelate.js.map +1 -0
  443. package/dist/fx/fx-creators/shadow.cjs +28 -0
  444. package/dist/fx/fx-creators/shadow.cjs.map +1 -0
  445. package/dist/fx/fx-creators/shadow.d.ts +43 -0
  446. package/dist/fx/fx-creators/shadow.d.ts.map +1 -0
  447. package/dist/fx/fx-creators/shadow.js +28 -0
  448. package/dist/fx/fx-creators/shadow.js.map +1 -0
  449. package/dist/fx/fx-creators/vignette.cjs +20 -0
  450. package/dist/fx/fx-creators/vignette.cjs.map +1 -0
  451. package/dist/fx/fx-creators/vignette.d.ts +33 -0
  452. package/dist/fx/fx-creators/vignette.d.ts.map +1 -0
  453. package/dist/fx/fx-creators/vignette.js +20 -0
  454. package/dist/fx/fx-creators/vignette.js.map +1 -0
  455. package/dist/fx/fx-registry.cjs +43 -0
  456. package/dist/fx/fx-registry.cjs.map +1 -0
  457. package/dist/fx/fx-registry.d.ts +59 -0
  458. package/dist/fx/fx-registry.d.ts.map +1 -0
  459. package/dist/fx/fx-registry.js +43 -0
  460. package/dist/fx/fx-registry.js.map +1 -0
  461. package/dist/fx/index.d.ts +51 -0
  462. package/dist/fx/index.d.ts.map +1 -0
  463. package/dist/fx/use-fx.cjs +54 -0
  464. package/dist/fx/use-fx.cjs.map +1 -0
  465. package/dist/fx/use-fx.d.ts +53 -0
  466. package/dist/fx/use-fx.d.ts.map +1 -0
  467. package/dist/fx/use-fx.js +54 -0
  468. package/dist/fx/use-fx.js.map +1 -0
  469. package/dist/gestures/gesture-manager.cjs +773 -0
  470. package/dist/gestures/gesture-manager.cjs.map +1 -0
  471. package/dist/gestures/gesture-manager.d.ts +158 -0
  472. package/dist/gestures/gesture-manager.d.ts.map +1 -0
  473. package/dist/gestures/gesture-manager.js +773 -0
  474. package/dist/gestures/gesture-manager.js.map +1 -0
  475. package/dist/gestures/gesture-types.cjs +9 -0
  476. package/dist/gestures/gesture-types.cjs.map +1 -0
  477. package/dist/gestures/gesture-types.d.ts +232 -0
  478. package/dist/gestures/gesture-types.d.ts.map +1 -0
  479. package/dist/gestures/gesture-types.js +9 -0
  480. package/dist/gestures/gesture-types.js.map +1 -0
  481. package/dist/hooks.cjs +193 -0
  482. package/dist/hooks.cjs.map +1 -0
  483. package/dist/hooks.d.ts +151 -0
  484. package/dist/hooks.d.ts.map +1 -0
  485. package/dist/hooks.js +146 -0
  486. package/dist/hooks.js.map +1 -0
  487. package/dist/host.cjs +85 -0
  488. package/dist/host.cjs.map +1 -0
  489. package/dist/host.d.ts +78 -0
  490. package/dist/host.d.ts.map +1 -0
  491. package/dist/host.js +85 -0
  492. package/dist/host.js.map +1 -0
  493. package/dist/index.cjs +614 -0
  494. package/dist/index.cjs.map +1 -0
  495. package/dist/index.d.ts +61 -0
  496. package/dist/index.d.ts.map +1 -0
  497. package/dist/index.js +273 -0
  498. package/dist/index.js.map +1 -0
  499. package/dist/jsx-dev-runtime.cjs +20 -0
  500. package/dist/jsx-dev-runtime.cjs.map +1 -0
  501. package/dist/jsx-dev-runtime.d.ts +8 -0
  502. package/dist/jsx-dev-runtime.d.ts.map +1 -0
  503. package/dist/jsx-dev-runtime.js +8 -0
  504. package/dist/jsx-dev-runtime.js.map +1 -0
  505. package/dist/jsx-runtime.cjs +16 -0
  506. package/dist/jsx-runtime.cjs.map +1 -0
  507. package/dist/jsx-runtime.d.ts +9 -0
  508. package/dist/jsx-runtime.d.ts.map +1 -0
  509. package/dist/jsx-runtime.js +7 -0
  510. package/dist/jsx-runtime.js.map +1 -0
  511. package/dist/jsx-types.d.ts +40 -0
  512. package/dist/jsx-types.d.ts.map +1 -0
  513. package/dist/layout/appliers/background-applier.cjs +40 -0
  514. package/dist/layout/appliers/background-applier.cjs.map +1 -0
  515. package/dist/layout/appliers/background-applier.d.ts +16 -0
  516. package/dist/layout/appliers/background-applier.d.ts.map +1 -0
  517. package/dist/layout/appliers/background-applier.js +40 -0
  518. package/dist/layout/appliers/background-applier.js.map +1 -0
  519. package/dist/layout/index.d.ts +5 -0
  520. package/dist/layout/index.d.ts.map +1 -0
  521. package/dist/layout/layout-engine-test-utils.d.ts +24 -0
  522. package/dist/layout/layout-engine-test-utils.d.ts.map +1 -0
  523. package/dist/layout/phaser-layout-bridge.cjs +41 -0
  524. package/dist/layout/phaser-layout-bridge.cjs.map +1 -0
  525. package/dist/layout/phaser-layout-bridge.d.ts +9 -0
  526. package/dist/layout/phaser-layout-bridge.d.ts.map +1 -0
  527. package/dist/layout/phaser-layout-bridge.js +40 -0
  528. package/dist/layout/phaser-layout-bridge.js.map +1 -0
  529. package/dist/layout/types.d.ts +14 -0
  530. package/dist/layout/types.d.ts.map +1 -0
  531. package/dist/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.cjs +39 -0
  532. package/dist/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.cjs.map +1 -0
  533. package/dist/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js +39 -0
  534. package/dist/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js.map +1 -0
  535. package/dist/particles/emit-zone.cjs +205 -0
  536. package/dist/particles/emit-zone.cjs.map +1 -0
  537. package/dist/particles/emit-zone.d.ts +88 -0
  538. package/dist/particles/emit-zone.d.ts.map +1 -0
  539. package/dist/particles/emit-zone.js +205 -0
  540. package/dist/particles/emit-zone.js.map +1 -0
  541. package/dist/particles/index.d.ts +8 -0
  542. package/dist/particles/index.d.ts.map +1 -0
  543. package/dist/particles/particle-types.d.ts +25 -0
  544. package/dist/particles/particle-types.d.ts.map +1 -0
  545. package/dist/particles/preset-registry.cjs +57 -0
  546. package/dist/particles/preset-registry.cjs.map +1 -0
  547. package/dist/particles/preset-registry.d.ts +49 -0
  548. package/dist/particles/preset-registry.d.ts.map +1 -0
  549. package/dist/particles/preset-registry.js +57 -0
  550. package/dist/particles/preset-registry.js.map +1 -0
  551. package/dist/particles/use-particles.cjs +67 -0
  552. package/dist/particles/use-particles.cjs.map +1 -0
  553. package/dist/particles/use-particles.d.ts +19 -0
  554. package/dist/particles/use-particles.d.ts.map +1 -0
  555. package/dist/particles/use-particles.js +67 -0
  556. package/dist/particles/use-particles.js.map +1 -0
  557. package/dist/particles/utils.cjs +82 -0
  558. package/dist/particles/utils.cjs.map +1 -0
  559. package/dist/particles/utils.d.ts +10 -0
  560. package/dist/particles/utils.d.ts.map +1 -0
  561. package/dist/particles/utils.js +82 -0
  562. package/dist/particles/utils.js.map +1 -0
  563. package/dist/phaser-bridges.cjs +148 -0
  564. package/dist/phaser-bridges.cjs.map +1 -0
  565. package/dist/phaser-bridges.d.ts +78 -0
  566. package/dist/phaser-bridges.d.ts.map +1 -0
  567. package/dist/phaser-bridges.js +131 -0
  568. package/dist/phaser-bridges.js.map +1 -0
  569. package/dist/phaser-host-adapter.cjs +148 -0
  570. package/dist/phaser-host-adapter.cjs.map +1 -0
  571. package/dist/phaser-host-adapter.d.ts +30 -0
  572. package/dist/phaser-host-adapter.d.ts.map +1 -0
  573. package/dist/phaser-host-adapter.js +148 -0
  574. package/dist/phaser-host-adapter.js.map +1 -0
  575. package/dist/phaser-runtime-types.d.ts +89 -0
  576. package/dist/phaser-runtime-types.d.ts.map +1 -0
  577. package/dist/phaser-surface-adapter.cjs +488 -0
  578. package/dist/phaser-surface-adapter.cjs.map +1 -0
  579. package/dist/phaser-surface-adapter.d.ts +74 -0
  580. package/dist/phaser-surface-adapter.d.ts.map +1 -0
  581. package/dist/phaser-surface-adapter.js +471 -0
  582. package/dist/phaser-surface-adapter.js.map +1 -0
  583. package/dist/phaser-vdom-runtime.cjs +63 -0
  584. package/dist/phaser-vdom-runtime.cjs.map +1 -0
  585. package/dist/phaser-vdom-runtime.d.ts +2 -0
  586. package/dist/phaser-vdom-runtime.d.ts.map +1 -0
  587. package/dist/phaser-vdom-runtime.js +63 -0
  588. package/dist/phaser-vdom-runtime.js.map +1 -0
  589. package/dist/plugin.cjs +182 -0
  590. package/dist/plugin.cjs.map +1 -0
  591. package/dist/plugin.d.ts +161 -0
  592. package/dist/plugin.d.ts.map +1 -0
  593. package/dist/plugin.js +165 -0
  594. package/dist/plugin.js.map +1 -0
  595. package/dist/render-context.cjs +106 -0
  596. package/dist/render-context.cjs.map +1 -0
  597. package/dist/render-context.d.ts +66 -0
  598. package/dist/render-context.d.ts.map +1 -0
  599. package/dist/render-context.js +106 -0
  600. package/dist/render-context.js.map +1 -0
  601. package/dist/scene-backgrounds.cjs +285 -0
  602. package/dist/scene-backgrounds.cjs.map +1 -0
  603. package/dist/scene-backgrounds.d.ts +69 -0
  604. package/dist/scene-backgrounds.d.ts.map +1 -0
  605. package/dist/scene-backgrounds.js +268 -0
  606. package/dist/scene-backgrounds.js.map +1 -0
  607. package/dist/theme-base.d.ts +133 -0
  608. package/dist/theme-base.d.ts.map +1 -0
  609. package/dist/theme-custom.d.ts +13 -0
  610. package/dist/theme-custom.d.ts.map +1 -0
  611. package/dist/theme-defaults.cjs +29 -0
  612. package/dist/theme-defaults.cjs.map +1 -0
  613. package/dist/theme-defaults.d.ts +1 -0
  614. package/dist/theme-defaults.d.ts.map +1 -0
  615. package/dist/theme-defaults.js +28 -0
  616. package/dist/theme-defaults.js.map +1 -0
  617. package/dist/theme.cjs +34 -0
  618. package/dist/theme.cjs.map +1 -0
  619. package/dist/theme.d.ts +36 -0
  620. package/dist/theme.d.ts.map +1 -0
  621. package/dist/theme.js +32 -0
  622. package/dist/theme.js.map +1 -0
  623. package/dist/tooltip/tooltip-types.d.ts +6 -0
  624. package/dist/tooltip/tooltip-types.d.ts.map +1 -0
  625. package/dist/types.d.ts +22 -0
  626. package/dist/types.d.ts.map +1 -0
  627. package/dist/utils/KeyboardInputManager.cjs +112 -0
  628. package/dist/utils/KeyboardInputManager.cjs.map +1 -0
  629. package/dist/utils/KeyboardInputManager.d.ts +48 -0
  630. package/dist/utils/KeyboardInputManager.d.ts.map +1 -0
  631. package/dist/utils/KeyboardInputManager.js +112 -0
  632. package/dist/utils/KeyboardInputManager.js.map +1 -0
  633. package/dist/utils/dom-input-manager.cjs +253 -0
  634. package/dist/utils/dom-input-manager.cjs.map +1 -0
  635. package/dist/utils/dom-input-manager.d.ts +113 -0
  636. package/dist/utils/dom-input-manager.d.ts.map +1 -0
  637. package/dist/utils/dom-input-manager.js +253 -0
  638. package/dist/utils/dom-input-manager.js.map +1 -0
  639. package/dist/utils/fast-deep-equal.cjs +7 -0
  640. package/dist/utils/fast-deep-equal.cjs.map +1 -0
  641. package/dist/utils/fast-deep-equal.d.ts +4 -0
  642. package/dist/utils/fast-deep-equal.d.ts.map +1 -0
  643. package/dist/utils/fast-deep-equal.js +7 -0
  644. package/dist/utils/fast-deep-equal.js.map +1 -0
  645. package/dist/utils/image-subtexture-registry.cjs +98 -0
  646. package/dist/utils/image-subtexture-registry.cjs.map +1 -0
  647. package/dist/utils/image-subtexture-registry.d.ts +17 -0
  648. package/dist/utils/image-subtexture-registry.d.ts.map +1 -0
  649. package/dist/utils/image-subtexture-registry.js +98 -0
  650. package/dist/utils/image-subtexture-registry.js.map +1 -0
  651. package/dist/utils/phaser-guards.cjs +15 -0
  652. package/dist/utils/phaser-guards.cjs.map +1 -0
  653. package/dist/utils/phaser-guards.d.ts +7 -0
  654. package/dist/utils/phaser-guards.d.ts.map +1 -0
  655. package/dist/utils/phaser-guards.js +15 -0
  656. package/dist/utils/phaser-guards.js.map +1 -0
  657. package/dist/utils/svg-texture.cjs +48 -0
  658. package/dist/utils/svg-texture.cjs.map +1 -0
  659. package/dist/utils/svg-texture.d.ts +34 -0
  660. package/dist/utils/svg-texture.d.ts.map +1 -0
  661. package/dist/utils/svg-texture.js +48 -0
  662. package/dist/utils/svg-texture.js.map +1 -0
  663. package/dist/utils/texture-registry.cjs +117 -0
  664. package/dist/utils/texture-registry.cjs.map +1 -0
  665. package/dist/utils/texture-registry.d.ts +53 -0
  666. package/dist/utils/texture-registry.d.ts.map +1 -0
  667. package/dist/utils/texture-registry.js +117 -0
  668. package/dist/utils/texture-registry.js.map +1 -0
  669. package/dist/vdom-host-types.d.ts +12 -0
  670. package/dist/vdom-host-types.d.ts.map +1 -0
  671. package/dist/vdom-registry.d.ts +27 -0
  672. package/dist/vdom-registry.d.ts.map +1 -0
  673. package/dist/vdom-utils.d.ts +16 -0
  674. package/dist/vdom-utils.d.ts.map +1 -0
  675. package/dist/vdom.cjs +36 -0
  676. package/dist/vdom.cjs.map +1 -0
  677. package/dist/vdom.d.ts +23 -0
  678. package/dist/vdom.d.ts.map +1 -0
  679. package/dist/vdom.js +36 -0
  680. package/dist/vdom.js.map +1 -0
  681. package/dist/vector/PhaserVectorDrawContext.cjs +97 -0
  682. package/dist/vector/PhaserVectorDrawContext.cjs.map +1 -0
  683. package/dist/vector/PhaserVectorDrawContext.d.ts +27 -0
  684. package/dist/vector/PhaserVectorDrawContext.d.ts.map +1 -0
  685. package/dist/vector/PhaserVectorDrawContext.js +97 -0
  686. package/dist/vector/PhaserVectorDrawContext.js.map +1 -0
  687. package/dist/vector/index.d.ts +2 -0
  688. package/dist/vector/index.d.ts.map +1 -0
  689. package/package.json +96 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gesture-manager.cjs","sources":["../../src/gestures/gesture-manager.ts"],"sourcesContent":["/**\n * Global gesture manager for high-level touch and mouse interactions\n * Uses global Phaser input events to track gestures even when pointer moves outside bounds\n *\n * @migration(audit:phase-2b-surface-portal-mount) Phase 2B decision — GestureManager\n * bleibt Phaser-spezifisch. Die Priorisierungslogik für getrennte Root-Surfaces\n * läuft über RootSurface.zIndex via __surfaceZIndex.\n */\nimport * as Phaser from 'phaser'\nimport type {\n GestureCallbacks,\n GestureConfig,\n GestureContainerState,\n GestureEventData,\n HoverEventData,\n WheelEventData,\n} from './gesture-types'\nimport { DEFAULT_GESTURE_CONFIG } from './gesture-types'\n\n/**\n * Manager for gesture detection across all containers in a scene\n * Singleton per scene, stored in scene.data\n */\nexport class GestureManager {\n private scene: Phaser.Scene\n private containers = new Map<Phaser.GameObjects.Container, GestureContainerState>()\n\n // Track pointer positions for delta calculation\n private lastPointerPositions = new Map<number, { x: number; y: number }>()\n\n // Track active pointer down for touch detection\n private activePointerDown: {\n pointerId: number\n container: Phaser.GameObjects.Container\n touchContainer?: Phaser.GameObjects.Container\n longPressContainer?: Phaser.GameObjects.Container\n doubleTapContainer?: Phaser.GameObjects.Container\n startX: number\n startY: number\n } | null = null\n\n // Track which containers were hit during pointer down (for move event filtering)\n private activeContainersForMove = new Map<number, Set<Phaser.GameObjects.Container>>()\n\n // Track hover state for each container (desktop/mouse only)\n private hoveredContainers = new Map<Phaser.GameObjects.Container, boolean>()\n\n // Track pending setTimeout timers for cleanup\n private pendingTimeouts = new Set<number>()\n\n private isInitialized = false\n private isDestroyed = false\n\n constructor(scene: Phaser.Scene) {\n this.scene = scene\n }\n\n /**\n * Initialize global event listeners (called once per scene)\n */\n private initialize(): void {\n if (this.isInitialized) return\n this.isInitialized = true\n\n // Global pointer down - detect which container was hit\n this.scene.input.on('pointerdown', this.handlePointerDown, this)\n\n // Global pointer up - check for touch/tap completion\n this.scene.input.on('pointerup', this.handlePointerUp, this)\n\n // Global pointer move - track deltas and notify all relevant containers\n this.scene.input.on('pointermove', this.handlePointerMove, this)\n\n // Handle pointer up outside canvas (window-level events)\n // This ensures we catch pointer release even when it happens outside the game canvas\n this.handleGlobalPointerUp = this.handleGlobalPointerUp.bind(this)\n window.addEventListener('mouseup', this.handleGlobalPointerUp)\n window.addEventListener('touchend', this.handleGlobalPointerUp)\n\n // Handle mouse wheel events (desktop only)\n // Use window instead of canvas to ensure we catch all wheel events\n this.handleWheel = this.handleWheel.bind(this)\n window.addEventListener('wheel', this.handleWheel, { passive: false })\n\n // Cleanup on scene shutdown\n this.scene.events.once('shutdown', this.destroy, this)\n }\n\n /**\n * Register a container for gesture tracking\n * @param container - Container to track\n * @param callbacks - Gesture event callbacks\n * @param hitArea - Interactive hit area\n * @param config - Gesture configuration\n */\n registerContainer(\n container: Phaser.GameObjects.Container,\n callbacks: GestureCallbacks,\n hitArea: Phaser.Geom.Rectangle,\n config: GestureConfig = {}\n ): void {\n this.initialize()\n\n const state: GestureContainerState = {\n container,\n callbacks,\n config: { ...DEFAULT_GESTURE_CONFIG, ...config },\n hitArea,\n }\n\n this.containers.set(container, state)\n\n // Cleanup when container is destroyed\n container.once('destroy', () => {\n this.unregisterContainer(container)\n })\n }\n\n /**\n * Unregister a container\n * @param container - Container to remove\n */\n unregisterContainer(container: Phaser.GameObjects.Container): void {\n const state = this.containers.get(container)\n if (!state) return\n\n // Clear any pending timers\n if (state.longPressTimer) {\n clearTimeout(state.longPressTimer)\n }\n\n this.containers.delete(container)\n\n // If this was the active pointer down target, clear it\n if (this.activePointerDown?.container === container) {\n this.activePointerDown = null\n }\n\n // Clear hover state\n this.hoveredContainers.delete(container)\n\n // Remove from active move tracking\n for (const hitContainers of this.activeContainersForMove.values()) {\n hitContainers.delete(container)\n }\n }\n\n /**\n * Check if a container is registered\n * @param container - Container to check\n * @returns True if container is registered\n */\n hasContainer(container: Phaser.GameObjects.Container): boolean {\n return this.containers.has(container)\n }\n\n /**\n * Create a gesture event data object with propagation control\n * @param pointer - Phaser pointer\n * @param localX - Local X coordinate\n * @param localY - Local Y coordinate\n * @param width - Hit area width\n * @param height - Hit area height\n * @param options - Optional additional data (dx, dy, isInside, state)\n * @returns Event data with stopPropagation support\n */\n private createEventData(\n pointer: Phaser.Input.Pointer,\n localX: number,\n localY: number,\n width: number,\n height: number,\n options: {\n dx?: number\n dy?: number\n isInside?: boolean\n state?: 'start' | 'move' | 'end'\n } = {}\n ): GestureEventData {\n let propagationStopped = false\n\n return {\n pointer,\n localX,\n localY,\n width,\n height,\n ...options,\n stopPropagation() {\n propagationStopped = true\n },\n isPropagationStopped() {\n return propagationStopped\n },\n }\n }\n\n /**\n * Get effective depth considering entire parent hierarchy\n * @param container - Container to calculate depth for\n * @returns Accumulated depth from container and all parents\n */\n private getEffectiveDepth(container: Phaser.GameObjects.Container): number {\n let depth = container.depth\n let parent = container.parentContainer\n\n // Walk up parent chain and accumulate depths\n while (parent) {\n depth += parent.depth\n parent = parent.parentContainer\n }\n\n return depth\n }\n\n /**\n * Get surface zIndex from container hierarchy.\n * Walks up to find the topmost container with __surfaceZIndex.\n * The topmost marker wins so portal roots can lift all descendants above scene roots.\n *\n * @param container - Container to check\n * @returns Surface zIndex or 0 if none found\n */\n private getSurfaceZIndex(container: Phaser.GameObjects.Container): number {\n let current: Phaser.GameObjects.Container | null = container\n let zIndex = 0\n\n while (current) {\n const surfaceZIndex = (current as unknown as { __surfaceZIndex?: number }).__surfaceZIndex\n if (surfaceZIndex !== undefined) {\n zIndex = surfaceZIndex\n }\n current = current.parentContainer\n }\n\n return zIndex\n }\n\n private isAncestorOf(\n ancestor: Phaser.GameObjects.Container,\n descendant: Phaser.GameObjects.Container\n ): boolean {\n let current = descendant.parentContainer\n while (current) {\n if (current === ancestor) {\n return true\n }\n current = current.parentContainer\n }\n return false\n }\n\n private compareContainers(\n a: { state: GestureContainerState; originalIndex: number },\n b: { state: GestureContainerState; originalIndex: number }\n ): number {\n const containerA = a.state.container\n const containerB = b.state.container\n\n const rootZIndexA = this.getSurfaceZIndex(containerA)\n const rootZIndexB = this.getSurfaceZIndex(containerB)\n if (rootZIndexA !== rootZIndexB) {\n return rootZIndexB - rootZIndexA\n }\n\n const depthA = this.getEffectiveDepth(containerA)\n const depthB = this.getEffectiveDepth(containerB)\n if (depthA !== depthB) {\n return depthB - depthA\n }\n\n if (this.isAncestorOf(containerA, containerB)) {\n return 1\n }\n if (this.isAncestorOf(containerB, containerA)) {\n return -1\n }\n\n if (containerA.parentContainer === containerB.parentContainer && containerA.parentContainer) {\n const indexA = containerA.parentContainer.getIndex(containerA)\n const indexB = containerA.parentContainer.getIndex(containerB)\n const diff = indexB - indexA\n if (diff !== 0) return diff\n }\n\n return b.originalIndex - a.originalIndex\n }\n\n /**\n * Bubble an event through overlapping containers\n * Iterates all containers at pointer position and calls handler until stopPropagation\n * Sorts containers by their actual display list order (z-index) to respect visual stacking\n * @param pointer - The pointer that triggered the event\n * @param eventType - Type of event for filtering callbacks\n * @param handler - Function to call for each container, returns true if propagation stopped\n * @param filterSet - Optional set of containers to limit bubbling to (for move events)\n * @param skipContainerCheck - Skip the isPointerInContainer check (for final move events)\n */\n private bubbleEvent(\n pointer: Phaser.Input.Pointer,\n eventType: keyof GestureCallbacks,\n handler: (state: GestureContainerState, localPos: { x: number; y: number }) => boolean | void,\n filterSet?: Set<Phaser.GameObjects.Container>,\n skipContainerCheck = false\n ): void {\n // Get all containers at pointer position with their original indices\n const containersArray = Array.from(this.containers.values()).map((state, originalIndex) => ({\n state,\n originalIndex,\n }))\n\n // Sort by visual stacking across surfaces, depth, and hierarchy.\n containersArray.sort((a, b) => this.compareContainers(a, b))\n\n for (const { state } of containersArray) {\n // Only process containers that have the callback for this event type\n if (!state.callbacks[eventType]) continue\n\n // If filterSet provided, only process containers in the set\n if (filterSet && !filterSet.has(state.container)) continue\n\n // Check if pointer is within this container (unless skipContainerCheck is true)\n if (!skipContainerCheck && !this.isPointerInContainer(pointer, state)) continue\n\n // Calculate local position\n const localPos = this.getLocalPosition(pointer, state.container)\n\n // Call handler and check if propagation was stopped\n const stopped = handler(state, localPos)\n if (stopped) break\n }\n }\n\n /**\n * Update hit area for a container\n * @param container - Container to update\n * @param hitArea - New hit area\n */\n updateHitArea(container: Phaser.GameObjects.Container, hitArea: Phaser.Geom.Rectangle): void {\n const state = this.containers.get(container)\n if (state) {\n state.hitArea = hitArea\n }\n }\n\n /**\n * Update callbacks for a container\n * @param container - Container to update\n * @param callbacks - New callbacks\n */\n updateCallbacks(container: Phaser.GameObjects.Container, callbacks: GestureCallbacks): void {\n const state = this.containers.get(container)\n if (state) {\n state.callbacks = callbacks\n }\n }\n\n /**\n * Handle global pointer down event\n * Registers all containers that were hit for move event tracking\n * Only the topmost gets touch/long-press callbacks\n */\n private handlePointerDown(pointer: Phaser.Input.Pointer): void {\n // Create set to track all hit containers for this pointer\n const hitContainers = new Set<Phaser.GameObjects.Container>()\n\n // Find which containers were hit\n const containersArray = Array.from(this.containers.values()).map((state, originalIndex) => ({\n state,\n originalIndex,\n }))\n containersArray.sort((a, b) => this.compareContainers(a, b))\n\n let isFirstHit = true\n let topmostTouchContainer: Phaser.GameObjects.Container | undefined\n let topmostLongPressContainer: Phaser.GameObjects.Container | undefined\n let topmostDoubleTapContainer: Phaser.GameObjects.Container | undefined\n const pointerDownTime = Date.now()\n\n for (const { state } of containersArray) {\n const isHit = this.isPointerInContainer(pointer, state)\n if (isHit) {\n // Add to hit set (for move event filtering)\n hitContainers.add(state.container)\n\n // Track topmost containers per gesture type\n if (!topmostTouchContainer && state.callbacks.onTouch) {\n topmostTouchContainer = state.container\n state.pointerDownTime = pointerDownTime\n state.longPressTriggered = false\n }\n if (!topmostLongPressContainer && state.callbacks.onLongPress) {\n topmostLongPressContainer = state.container\n state.pointerDownTime = pointerDownTime\n state.longPressTriggered = false\n }\n if (!topmostDoubleTapContainer && state.callbacks.onDoubleTap) {\n topmostDoubleTapContainer = state.container\n state.pointerDownTime = pointerDownTime\n state.longPressTriggered = false\n }\n\n // Only the first (topmost) hit gets touch/long-press handling\n if (isFirstHit) {\n isFirstHit = false\n\n // Store active pointer down for touch detection\n this.activePointerDown = {\n pointerId: pointer.id,\n container: state.container,\n startX: pointer.worldX,\n startY: pointer.worldY,\n }\n\n if (topmostTouchContainer) {\n this.activePointerDown.touchContainer = topmostTouchContainer\n }\n if (topmostLongPressContainer) {\n this.activePointerDown.longPressContainer = topmostLongPressContainer\n }\n if (topmostDoubleTapContainer) {\n this.activePointerDown.doubleTapContainer = topmostDoubleTapContainer\n }\n\n // Store down position for tracking\n state.pointerDownPosition = { x: pointer.worldX, y: pointer.worldY }\n }\n }\n }\n\n // Update active pointer with final topmost gesture targets (in case first hit had none)\n if (this.activePointerDown) {\n if (topmostTouchContainer) {\n this.activePointerDown.touchContainer = topmostTouchContainer\n }\n if (topmostLongPressContainer) {\n this.activePointerDown.longPressContainer = topmostLongPressContainer\n }\n if (topmostDoubleTapContainer) {\n this.activePointerDown.doubleTapContainer = topmostDoubleTapContainer\n }\n }\n\n // Start long press timer on the topmost container that actually has onLongPress\n if (topmostLongPressContainer) {\n const longPressState = this.containers.get(topmostLongPressContainer)\n if (longPressState?.callbacks.onLongPress) {\n const localPos = this.getLocalPosition(pointer, longPressState.container)\n\n longPressState.longPressTimer = setTimeout(() => {\n if (this.activePointerDown?.longPressContainer === longPressState.container) {\n const isInside = this.isPointerInContainer(pointer, longPressState)\n const data = this.createEventData(\n pointer,\n localPos.x,\n localPos.y,\n longPressState.hitArea.width,\n longPressState.hitArea.height,\n { isInside }\n )\n longPressState.callbacks.onLongPress?.(data)\n\n // Mark that long press was triggered to prevent onTouch/onDoubleTap\n longPressState.longPressTriggered = true\n }\n }, longPressState.config.longPressDuration)\n }\n }\n\n // Store hit containers for move event filtering\n if (hitContainers.size > 0) {\n this.activeContainersForMove.set(pointer.id, hitContainers)\n\n // Send initial onTouchMove with 'start' state to all hit containers\n this.bubbleEvent(\n pointer,\n 'onTouchMove',\n (targetState, targetLocalPos) => {\n const isInside = this.isPointerInContainer(pointer, targetState)\n const data = this.createEventData(\n pointer,\n targetLocalPos.x,\n targetLocalPos.y,\n targetState.hitArea.width,\n targetState.hitArea.height,\n { dx: 0, dy: 0, isInside, state: 'start' }\n )\n targetState.callbacks.onTouchMove?.(data)\n\n // Mark that first move has been sent\n targetState.isFirstMove = false\n\n return data.isPropagationStopped()\n },\n hitContainers\n )\n }\n }\n\n /**\n * Handle global pointer up event\n */\n private handlePointerUp(pointer: Phaser.Input.Pointer): void {\n if (!this.activePointerDown || this.activePointerDown.pointerId !== pointer.id) {\n return\n }\n\n const activeState = this.containers.get(this.activePointerDown.container)\n if (!activeState) {\n this.activePointerDown = null\n return\n }\n\n const touchState =\n (this.activePointerDown.touchContainer &&\n this.containers.get(this.activePointerDown.touchContainer)) ||\n activeState\n const longPressState =\n this.activePointerDown.longPressContainer &&\n this.containers.get(this.activePointerDown.longPressContainer)\n const doubleTapState =\n this.activePointerDown.doubleTapContainer &&\n this.containers.get(this.activePointerDown.doubleTapContainer)\n\n // Clear long press timer on the actual long-press target\n if (longPressState?.longPressTimer) {\n clearTimeout(longPressState.longPressTimer)\n longPressState.longPressTimer = undefined\n }\n\n const now = Date.now()\n const touchDuration = touchState.pointerDownTime ? now - touchState.pointerDownTime : 0\n const isTouchTooLong = touchDuration > touchState.config.maxTouchDuration\n const longPressWasTriggered =\n !!touchState.longPressTriggered || !!longPressState?.longPressTriggered\n\n // Send final move event to containers that were hit during pointer down\n const last = this.lastPointerPositions.get(pointer.id)\n const dx = last ? pointer.worldX - last.x : 0\n const dy = last ? pointer.worldY - last.y : 0\n const hitContainers = this.activeContainersForMove.get(pointer.id)\n\n this.bubbleEvent(\n pointer,\n 'onTouchMove',\n (targetState, targetLocalPos) => {\n const isInside = this.isPointerInContainer(pointer, targetState)\n const finalMoveData = this.createEventData(\n pointer,\n targetLocalPos.x,\n targetLocalPos.y,\n targetState.hitArea.width,\n targetState.hitArea.height,\n { dx, dy, isInside, state: 'end' }\n )\n targetState.callbacks.onTouchMove?.(finalMoveData)\n\n // Reset first move flag for this container\n targetState.isFirstMove = undefined\n\n return finalMoveData.isPropagationStopped()\n },\n hitContainers,\n true // Skip container check for final move event\n )\n\n // Check if pointer is still within the container (basic tap/click detection)\n const isInsideTouchTarget = this.isPointerInContainer(pointer, touchState)\n\n if (isInsideTouchTarget) {\n // Fire onTouch only if:\n // - Long press wasn't triggered\n // - Touch duration is within acceptable range (not held too long)\n const shouldFireTouch = !longPressWasTriggered && !isTouchTooLong\n\n // Bubble onTouch event to parent containers\n if (touchState.callbacks.onTouch && shouldFireTouch) {\n this.bubbleEvent(pointer, 'onTouch', (targetState, targetLocalPos) => {\n const isInside = this.isPointerInContainer(pointer, targetState)\n const data = this.createEventData(\n pointer,\n targetLocalPos.x,\n targetLocalPos.y,\n targetState.hitArea.width,\n targetState.hitArea.height,\n { isInside }\n )\n targetState.callbacks.onTouch?.(data)\n return data.isPropagationStopped()\n })\n }\n\n // Check for double tap (also skip if touch was too long)\n if (doubleTapState && shouldFireTouch && this.isPointerInContainer(pointer, doubleTapState)) {\n const timeSinceLastTap = doubleTapState.lastTapTime\n ? now - doubleTapState.lastTapTime\n : Infinity\n\n if (timeSinceLastTap <= doubleTapState.config.doubleTapDelay) {\n this.bubbleEvent(pointer, 'onDoubleTap', (targetState, targetLocalPos) => {\n const isInside = this.isPointerInContainer(pointer, targetState)\n const data = this.createEventData(\n pointer,\n targetLocalPos.x,\n targetLocalPos.y,\n targetState.hitArea.width,\n targetState.hitArea.height,\n { isInside }\n )\n targetState.callbacks.onDoubleTap?.(data)\n return data.isPropagationStopped()\n })\n doubleTapState.lastTapTime = undefined // Reset to prevent triple-tap\n } else {\n doubleTapState.lastTapTime = now\n }\n }\n }\n\n // Fire onTouchOutside for ALL containers where pointer is outside\n for (const [container, containerState] of this.containers) {\n if (!containerState.callbacks.onTouchOutside) continue\n\n const isInsideContainer = this.isPointerInContainer(pointer, containerState)\n if (isInsideContainer) continue // Skip if pointer is inside\n\n // Fire onTouchOutside - no touch duration check needed for outside clicks\n const localPos = this.getLocalPosition(pointer, container)\n const data = this.createEventData(\n pointer,\n localPos.x,\n localPos.y,\n containerState.hitArea.width,\n containerState.hitArea.height,\n { isInside: false }\n )\n containerState.callbacks.onTouchOutside(data)\n }\n\n // Reset state\n touchState.longPressTriggered = false\n touchState.pointerDownTime = undefined\n if (longPressState && longPressState !== touchState) {\n longPressState.longPressTriggered = false\n longPressState.pointerDownTime = undefined\n }\n if (doubleTapState && doubleTapState !== touchState && doubleTapState !== longPressState) {\n doubleTapState.longPressTriggered = false\n doubleTapState.pointerDownTime = undefined\n }\n\n this.activePointerDown = null\n activeState.pointerDownPosition = undefined\n\n // Clear active containers for move tracking\n this.activeContainersForMove.delete(pointer.id)\n }\n\n /**\n * Handle pointer up outside canvas (global window events)\n * Ensures touch move 'end' state is sent even when pointer released outside\n * Also handles onTouchOutside for ALL containers\n */\n private handleGlobalPointerUp(_event: MouseEvent | TouchEvent): void {\n // Use setTimeout to let Phaser's handlePointerUp run first (if inside canvas)\n const timerId = window.setTimeout(() => {\n // Remove timer from tracking\n this.pendingTimeouts.delete(timerId)\n\n // Guard: Check if manager is destroyed or scene is invalid\n if (this.isDestroyed || !this.scene || !this.scene.input) {\n return\n }\n\n // CRITICAL: activePointer is a getter that can throw if scene is being destroyed\n // Wrap in try-catch to handle race condition during scene destruction\n let pointer: Phaser.Input.Pointer | null = null\n try {\n pointer = this.scene.input.activePointer\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n // Scene is being destroyed, silently ignore\n return\n }\n\n if (!pointer) {\n return\n }\n\n // Fire onTouchOutside for ALL containers that have the callback\n // and where the pointer is NOT inside\n for (const state of this.containers.values()) {\n if (!state.callbacks.onTouchOutside) continue\n\n const isInside = this.isPointerInContainer(pointer, state)\n if (isInside) continue // Skip if pointer is inside\n\n // Check if touch duration is valid\n const touchDuration = state.pointerDownTime ? Date.now() - state.pointerDownTime : 0\n const isTouchTooLong = touchDuration > state.config.maxTouchDuration\n const shouldFire = !state.longPressTriggered && !isTouchTooLong\n\n if (shouldFire) {\n const localPos = this.getLocalPosition(pointer, state.container)\n const data = this.createEventData(\n pointer,\n localPos.x,\n localPos.y,\n state.hitArea.width,\n state.hitArea.height,\n { isInside: false }\n )\n state.callbacks.onTouchOutside?.(data)\n }\n }\n\n // If no activePointerDown, we're done\n if (!this.activePointerDown) return\n\n const state = this.containers.get(this.activePointerDown.container)\n if (!state) {\n this.activePointerDown = null\n return\n }\n\n // Clear long press timer if still pending\n if (state.longPressTimer) {\n clearTimeout(state.longPressTimer)\n state.longPressTimer = undefined\n }\n\n // Send final move event with 'end' state to all active containers\n const last = this.lastPointerPositions.get(pointer.id)\n const dx = last ? pointer.worldX - last.x : 0\n const dy = last ? pointer.worldY - last.y : 0\n const hitContainers = this.activeContainersForMove.get(pointer.id)\n\n this.bubbleEvent(\n pointer,\n 'onTouchMove',\n (targetState, targetLocalPos) => {\n const finalMoveData = this.createEventData(\n pointer,\n targetLocalPos.x,\n targetLocalPos.y,\n targetState.hitArea.width,\n targetState.hitArea.height,\n { dx, dy, isInside: false, state: 'end' }\n )\n targetState.callbacks.onTouchMove?.(finalMoveData)\n\n // Reset first move flag for this container\n targetState.isFirstMove = undefined\n\n return finalMoveData.isPropagationStopped()\n },\n hitContainers,\n true // Skip container check for final move event\n )\n\n // Reset state\n state.longPressTriggered = false\n state.pointerDownTime = undefined\n this.activePointerDown = null\n state.pointerDownPosition = undefined\n\n // Clear active containers for this pointer\n this.activeContainersForMove.delete(pointer.id)\n }, 0)\n\n // Track this timer for cleanup\n this.pendingTimeouts.add(timerId)\n }\n\n /**\n * Handle global pointer move event\n * Detects hover state changes and notifies containers with onHoverStart/onHoverEnd\n * Only notifies containers that were hit during pointer down for onTouchMove\n * Bubbles through them until stopPropagation() is called\n */\n private handlePointerMove(pointer: Phaser.Input.Pointer): void {\n // Calculate delta\n const last = this.lastPointerPositions.get(pointer.id)\n const dx = last ? pointer.worldX - last.x : 0\n const dy = last ? pointer.worldY - last.y : 0\n this.lastPointerPositions.set(pointer.id, { x: pointer.worldX, y: pointer.worldY })\n\n // Hover detection for all containers (desktop/mouse only)\n this.detectHoverChanges(pointer)\n\n // Only process touch move if there's an active pointer down\n if (!this.activePointerDown || pointer.id !== this.activePointerDown.pointerId) {\n return\n }\n\n // Get containers that were hit during pointer down\n const hitContainers = this.activeContainersForMove.get(pointer.id)\n if (!hitContainers) return\n\n // Bubble onTouchMove only to containers that were hit at pointer down.\n const containersArray = Array.from(this.containers.values()).map((state, originalIndex) => ({\n state,\n originalIndex,\n }))\n containersArray.sort((a, b) => this.compareContainers(a, b))\n\n for (const { state } of containersArray) {\n // Only process if:\n // 1. Container has onTouchMove callback\n // 2. Container was hit during pointer down\n if (!state.callbacks.onTouchMove) continue\n if (!hitContainers.has(state.container)) continue\n\n const localPos = this.getLocalPosition(pointer, state.container)\n const isInside = this.isPointerInContainer(pointer, state)\n\n // Determine state: 'start' for first move, 'move' for subsequent\n const moveState = state.isFirstMove === undefined ? 'start' : 'move'\n if (state.isFirstMove === undefined) {\n state.isFirstMove = false\n }\n\n const data = this.createEventData(\n pointer,\n localPos.x,\n localPos.y,\n state.hitArea.width,\n state.hitArea.height,\n { dx, dy, isInside, state: moveState }\n )\n\n state.callbacks.onTouchMove(data)\n\n // Stop bubbling if propagation was stopped\n if (data.isPropagationStopped()) break\n }\n }\n\n /**\n * Check if pointer is within a container's hit area\n * Also checks parent visibility chain to handle collapsed accordions,\n * and ancestor overflow clip regions to prevent clipped-out children\n * from consuming pointer events outside their visible area.\n */\n private isPointerInContainer(\n pointer: Phaser.Input.Pointer,\n state: GestureContainerState\n ): boolean {\n const container = state.container\n if (!container.visible || container.alpha === 0) return false\n\n // Check parent container visibility chain\n // This prevents interaction with children in collapsed accordions\n let parent = container.parentContainer\n while (parent) {\n if (!parent.visible || parent.alpha === 0) return false\n parent = parent.parentContainer\n }\n\n // Check overflow clip ancestors: if any ancestor has overflow='hidden',\n // the pointer must be within that ancestor's bounds to register a hit.\n // This prevents scrolled-out children from consuming pointer events.\n let clipAncestor = container.parentContainer\n while (clipAncestor) {\n const ext = clipAncestor as Phaser.GameObjects.Container & {\n __layoutProps?: { overflow?: string }\n __getLayoutSize?: () => { width: number; height: number }\n }\n if (ext.__layoutProps?.overflow === 'hidden' && ext.__getLayoutSize) {\n const clipSize = ext.__getLayoutSize()\n const clipLocal = this.getLocalPosition(pointer, clipAncestor)\n if (\n clipLocal.x < 0 ||\n clipLocal.y < 0 ||\n clipLocal.x > clipSize.width ||\n clipLocal.y > clipSize.height\n ) {\n return false\n }\n }\n clipAncestor = clipAncestor.parentContainer\n }\n\n const localPos = this.getLocalPosition(pointer, container)\n return state.hitArea.contains(localPos.x, localPos.y)\n }\n\n /**\n * Convert global pointer position to container local coordinates\n */\n private getLocalPosition(\n pointer: Phaser.Input.Pointer,\n container: Phaser.GameObjects.Container\n ): { x: number; y: number } {\n // Transform world coordinates to container's local space (screen coords break under camera zoom)\n const matrix = container.getWorldTransformMatrix()\n const inverseMatrix = matrix.invert()\n\n const localPos = inverseMatrix.transformPoint(pointer.worldX, pointer.worldY)\n return { x: localPos.x, y: localPos.y }\n }\n\n /**\n * Detect hover state changes for all containers (desktop/mouse only)\n * Called on every pointer move to update hover state\n */\n private detectHoverChanges(pointer: Phaser.Input.Pointer): void {\n for (const [container, state] of this.containers) {\n // Skip if container has no hover callbacks\n if (!state.callbacks.onHoverStart && !state.callbacks.onHoverEnd) {\n continue\n }\n\n // Check if container is active and visible\n if (!container.active) continue\n\n const isInside = this.isPointerInContainer(pointer, state)\n const wasInside = this.hoveredContainers.get(container) ?? false\n\n // Hover start\n if (isInside && !wasInside) {\n this.hoveredContainers.set(container, true)\n if (state.callbacks.onHoverStart) {\n const eventData = this.createHoverEventData(pointer, container, state.hitArea)\n state.callbacks.onHoverStart(eventData)\n }\n }\n\n // Hover end\n if (!isInside && wasInside) {\n this.hoveredContainers.set(container, false)\n if (state.callbacks.onHoverEnd) {\n const eventData = this.createHoverEventData(pointer, container, state.hitArea)\n state.callbacks.onHoverEnd(eventData)\n }\n }\n }\n }\n\n /**\n * Create hover event data\n */\n private createHoverEventData(\n pointer: Phaser.Input.Pointer,\n container: Phaser.GameObjects.Container,\n hitArea: Phaser.Geom.Rectangle\n ): HoverEventData {\n const localPos = this.getLocalPosition(pointer, container)\n\n let propagationStopped = false\n\n return {\n pointer,\n localX: localPos.x,\n localY: localPos.y,\n width: hitArea.width,\n height: hitArea.height,\n stopPropagation: () => {\n propagationStopped = true\n },\n isPropagationStopped: () => propagationStopped,\n }\n }\n\n /**\n * Handle mouse wheel event\n * Bubbles to all containers under the pointer\n */\n private handleWheel(event: WheelEvent): void {\n // Guard: Check if manager is destroyed or scene is invalid\n if (this.isDestroyed || !this.scene || !this.scene.input) {\n return\n }\n\n // Get active pointer and update its position from the wheel event\n // Wrap in try-catch as activePointer getter can throw during scene destruction\n let pointer: Phaser.Input.Pointer | null = null\n try {\n pointer = this.scene.input.activePointer\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n // Scene is being destroyed, silently ignore\n return\n }\n\n if (!pointer) return\n\n // Update pointer position from wheel event (it might not be at correct position)\n const canvas = this.scene.game.canvas\n const rect = canvas.getBoundingClientRect()\n const scaleX = canvas.width / rect.width\n const scaleY = canvas.height / rect.height\n pointer.x = (event.clientX - rect.left) * scaleX\n pointer.y = (event.clientY - rect.top) * scaleY\n pointer.updateWorldPoint(pointer.camera ?? this.scene.cameras.main)\n\n // Find all containers under the pointer\n const containersUnderPointer: Array<{\n state: GestureContainerState\n originalIndex: number\n }> = []\n\n Array.from(this.containers.values()).forEach((state, originalIndex) => {\n if (!state.callbacks.onWheel) return\n\n const isInside = this.isPointerInContainer(pointer, state)\n if (isInside) {\n containersUnderPointer.push({ state, originalIndex })\n }\n })\n\n // Sort by z-order (same logic as other events)\n containersUnderPointer.sort((a, b) => this.compareContainers(a, b))\n\n // Bubble wheel event through containers\n for (const { state } of containersUnderPointer) {\n const localPos = this.getLocalPosition(pointer, state.container)\n\n let propagationStopped = false\n\n const wheelData: WheelEventData = {\n pointer,\n localX: localPos.x,\n localY: localPos.y,\n deltaX: event.deltaX,\n deltaY: event.deltaY,\n deltaZ: event.deltaZ,\n deltaMode: event.deltaMode,\n width: state.hitArea.width,\n height: state.hitArea.height,\n originalEvent: event,\n stopPropagation: () => {\n propagationStopped = true\n },\n isPropagationStopped: () => propagationStopped,\n preventDefault: () => {\n event.preventDefault()\n },\n }\n\n state.callbacks.onWheel?.(wheelData)\n\n // Stop bubbling if propagation was stopped\n if (propagationStopped) break\n }\n }\n\n /**\n * Cleanup all resources\n */\n private destroy(): void {\n console.log('[GestureManager] destroy() called', {\n pendingTimeouts: this.pendingTimeouts.size,\n containers: this.containers.size,\n })\n\n // Mark as destroyed to prevent any pending callbacks from executing\n this.isDestroyed = true\n\n // Clear all pending setTimeout timers\n for (const timerId of this.pendingTimeouts) {\n clearTimeout(timerId)\n }\n this.pendingTimeouts.clear()\n\n // Clear all container timers\n for (const state of this.containers.values()) {\n if (state.longPressTimer) {\n clearTimeout(state.longPressTimer)\n }\n }\n\n this.containers.clear()\n this.lastPointerPositions.clear()\n this.activePointerDown = null\n this.hoveredContainers.clear()\n\n // Remove event listeners\n if (this.isInitialized) {\n this.scene.input.off('pointerdown', this.handlePointerDown, this)\n this.scene.input.off('pointerup', this.handlePointerUp, this)\n this.scene.input.off('pointermove', this.handlePointerMove, this)\n\n // Remove global window event listeners\n window.removeEventListener('mouseup', this.handleGlobalPointerUp)\n window.removeEventListener('touchend', this.handleGlobalPointerUp)\n\n // Remove wheel event listener\n window.removeEventListener('wheel', this.handleWheel)\n }\n\n this.isInitialized = false\n }\n}\n\n/**\n * Get or create GestureManager for a scene\n * Stored in scene.data to ensure singleton per scene\n */\nexport function getGestureManager(scene: Phaser.Scene): GestureManager {\n // Safety check: ensure scene.data exists\n if (!scene || !scene.data) {\n throw new Error('getGestureManager: Invalid scene or scene.data is undefined')\n }\n\n const key = '__gestureManager__'\n let manager = scene.data.get(key) as GestureManager | undefined\n\n if (!manager) {\n manager = new GestureManager(scene)\n scene.data.set(key, manager)\n }\n\n return manager\n}\n"],"names":["DEFAULT_GESTURE_CONFIG","state"],"mappings":"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"}
@@ -0,0 +1,158 @@
1
+ import { GestureCallbacks, GestureConfig } from './gesture-types';
2
+ /**
3
+ * Global gesture manager for high-level touch and mouse interactions
4
+ * Uses global Phaser input events to track gestures even when pointer moves outside bounds
5
+ *
6
+ * @migration(audit:phase-2b-surface-portal-mount) Phase 2B decision — GestureManager
7
+ * bleibt Phaser-spezifisch. Die Priorisierungslogik für getrennte Root-Surfaces
8
+ * läuft über RootSurface.zIndex via __surfaceZIndex.
9
+ */
10
+ import * as Phaser from 'phaser';
11
+ /**
12
+ * Manager for gesture detection across all containers in a scene
13
+ * Singleton per scene, stored in scene.data
14
+ */
15
+ export declare class GestureManager {
16
+ private scene;
17
+ private containers;
18
+ private lastPointerPositions;
19
+ private activePointerDown;
20
+ private activeContainersForMove;
21
+ private hoveredContainers;
22
+ private pendingTimeouts;
23
+ private isInitialized;
24
+ private isDestroyed;
25
+ constructor(scene: Phaser.Scene);
26
+ /**
27
+ * Initialize global event listeners (called once per scene)
28
+ */
29
+ private initialize;
30
+ /**
31
+ * Register a container for gesture tracking
32
+ * @param container - Container to track
33
+ * @param callbacks - Gesture event callbacks
34
+ * @param hitArea - Interactive hit area
35
+ * @param config - Gesture configuration
36
+ */
37
+ registerContainer(container: Phaser.GameObjects.Container, callbacks: GestureCallbacks, hitArea: Phaser.Geom.Rectangle, config?: GestureConfig): void;
38
+ /**
39
+ * Unregister a container
40
+ * @param container - Container to remove
41
+ */
42
+ unregisterContainer(container: Phaser.GameObjects.Container): void;
43
+ /**
44
+ * Check if a container is registered
45
+ * @param container - Container to check
46
+ * @returns True if container is registered
47
+ */
48
+ hasContainer(container: Phaser.GameObjects.Container): boolean;
49
+ /**
50
+ * Create a gesture event data object with propagation control
51
+ * @param pointer - Phaser pointer
52
+ * @param localX - Local X coordinate
53
+ * @param localY - Local Y coordinate
54
+ * @param width - Hit area width
55
+ * @param height - Hit area height
56
+ * @param options - Optional additional data (dx, dy, isInside, state)
57
+ * @returns Event data with stopPropagation support
58
+ */
59
+ private createEventData;
60
+ /**
61
+ * Get effective depth considering entire parent hierarchy
62
+ * @param container - Container to calculate depth for
63
+ * @returns Accumulated depth from container and all parents
64
+ */
65
+ private getEffectiveDepth;
66
+ /**
67
+ * Get surface zIndex from container hierarchy.
68
+ * Walks up to find the topmost container with __surfaceZIndex.
69
+ * The topmost marker wins so portal roots can lift all descendants above scene roots.
70
+ *
71
+ * @param container - Container to check
72
+ * @returns Surface zIndex or 0 if none found
73
+ */
74
+ private getSurfaceZIndex;
75
+ private isAncestorOf;
76
+ private compareContainers;
77
+ /**
78
+ * Bubble an event through overlapping containers
79
+ * Iterates all containers at pointer position and calls handler until stopPropagation
80
+ * Sorts containers by their actual display list order (z-index) to respect visual stacking
81
+ * @param pointer - The pointer that triggered the event
82
+ * @param eventType - Type of event for filtering callbacks
83
+ * @param handler - Function to call for each container, returns true if propagation stopped
84
+ * @param filterSet - Optional set of containers to limit bubbling to (for move events)
85
+ * @param skipContainerCheck - Skip the isPointerInContainer check (for final move events)
86
+ */
87
+ private bubbleEvent;
88
+ /**
89
+ * Update hit area for a container
90
+ * @param container - Container to update
91
+ * @param hitArea - New hit area
92
+ */
93
+ updateHitArea(container: Phaser.GameObjects.Container, hitArea: Phaser.Geom.Rectangle): void;
94
+ /**
95
+ * Update callbacks for a container
96
+ * @param container - Container to update
97
+ * @param callbacks - New callbacks
98
+ */
99
+ updateCallbacks(container: Phaser.GameObjects.Container, callbacks: GestureCallbacks): void;
100
+ /**
101
+ * Handle global pointer down event
102
+ * Registers all containers that were hit for move event tracking
103
+ * Only the topmost gets touch/long-press callbacks
104
+ */
105
+ private handlePointerDown;
106
+ /**
107
+ * Handle global pointer up event
108
+ */
109
+ private handlePointerUp;
110
+ /**
111
+ * Handle pointer up outside canvas (global window events)
112
+ * Ensures touch move 'end' state is sent even when pointer released outside
113
+ * Also handles onTouchOutside for ALL containers
114
+ */
115
+ private handleGlobalPointerUp;
116
+ /**
117
+ * Handle global pointer move event
118
+ * Detects hover state changes and notifies containers with onHoverStart/onHoverEnd
119
+ * Only notifies containers that were hit during pointer down for onTouchMove
120
+ * Bubbles through them until stopPropagation() is called
121
+ */
122
+ private handlePointerMove;
123
+ /**
124
+ * Check if pointer is within a container's hit area
125
+ * Also checks parent visibility chain to handle collapsed accordions,
126
+ * and ancestor overflow clip regions to prevent clipped-out children
127
+ * from consuming pointer events outside their visible area.
128
+ */
129
+ private isPointerInContainer;
130
+ /**
131
+ * Convert global pointer position to container local coordinates
132
+ */
133
+ private getLocalPosition;
134
+ /**
135
+ * Detect hover state changes for all containers (desktop/mouse only)
136
+ * Called on every pointer move to update hover state
137
+ */
138
+ private detectHoverChanges;
139
+ /**
140
+ * Create hover event data
141
+ */
142
+ private createHoverEventData;
143
+ /**
144
+ * Handle mouse wheel event
145
+ * Bubbles to all containers under the pointer
146
+ */
147
+ private handleWheel;
148
+ /**
149
+ * Cleanup all resources
150
+ */
151
+ private destroy;
152
+ }
153
+ /**
154
+ * Get or create GestureManager for a scene
155
+ * Stored in scene.data to ensure singleton per scene
156
+ */
157
+ export declare function getGestureManager(scene: Phaser.Scene): GestureManager;
158
+ //# sourceMappingURL=gesture-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gesture-manager.d.ts","sourceRoot":"","sources":["../../src/gestures/gesture-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAA;AAChC,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EAKd,MAAM,iBAAiB,CAAA;AAGxB;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,UAAU,CAAiE;IAGnF,OAAO,CAAC,oBAAoB,CAA8C;IAG1E,OAAO,CAAC,iBAAiB,CAQV;IAGf,OAAO,CAAC,uBAAuB,CAAuD;IAGtF,OAAO,CAAC,iBAAiB,CAAmD;IAG5E,OAAO,CAAC,eAAe,CAAoB;IAE3C,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,WAAW,CAAQ;gBAEf,KAAK,EAAE,MAAM,CAAC,KAAK;IAI/B;;OAEG;IACH,OAAO,CAAC,UAAU;IA4BlB;;;;;;OAMG;IACH,iBAAiB,CACf,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,SAAS,EACvC,SAAS,EAAE,gBAAgB,EAC3B,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,EAC9B,MAAM,GAAE,aAAkB,GACzB,IAAI;IAkBP;;;OAGG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI;IAyBlE;;;;OAIG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,SAAS,GAAG,OAAO;IAI9D;;;;;;;;;OASG;IACH,OAAO,CAAC,eAAe;IA+BvB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAazB;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,iBAAiB;IAoCzB;;;;;;;;;OASG;IACH,OAAO,CAAC,WAAW;IAmCnB;;;;OAIG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI;IAO5F;;;;OAIG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,gBAAgB,GAAG,IAAI;IAO3F;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAyIzB;;OAEG;IACH,OAAO,CAAC,eAAe;IA4JvB;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IA+G7B;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IA0DzB;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IA2C5B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAYxB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAiC1B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAsB5B;;;OAGG;IACH,OAAO,CAAC,WAAW;IA+EnB;;OAEG;IACH,OAAO,CAAC,OAAO;CA2ChB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,cAAc,CAerE"}