@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,63 @@
1
+ import { createVDOMRuntime } from "@number10/jsx-core/vdom";
2
+ import { SceneWrapper } from "./components/internal/SceneWrapper.js";
3
+ import { isSceneTarget, getParentContentSize, attachSurfaceContext, deriveHostContext, createDummyNode, extractScene, updateGestureHitAreaAfterLayout } from "./phaser-bridges.js";
4
+ import { PhaserHostAdapter } from "./phaser-host-adapter.js";
5
+ import { PhaserSurfaceAdapter } from "./phaser-surface-adapter.js";
6
+ import { getRenderContext } from "./render-context.js";
7
+ import { getThemedProps, themeRegistry } from "./theme.js";
8
+ import { setThemeRemountHandler } from "@number10/jsx-core";
9
+ function wrapRootVNode(type, props) {
10
+ const { width, height, disableAutoSize = false, key: _key, ...componentProps } = props;
11
+ if (disableAutoSize) {
12
+ return {
13
+ type,
14
+ props: { ...componentProps, width, height },
15
+ children: []
16
+ };
17
+ }
18
+ const componentVNode = {
19
+ type,
20
+ props: { ...componentProps, width, height },
21
+ children: []
22
+ };
23
+ return {
24
+ type: SceneWrapper,
25
+ props: { width, height, children: componentVNode },
26
+ children: [],
27
+ __theme: themeRegistry.getGlobalTheme()
28
+ };
29
+ }
30
+ const phaserHostAdapter = new PhaserHostAdapter();
31
+ const phaserSurfaceAdapter = new PhaserSurfaceAdapter();
32
+ const phaserVDOMRuntime = createVDOMRuntime(
33
+ {
34
+ hostAdapter: phaserHostAdapter,
35
+ surfaceAdapter: phaserSurfaceAdapter
36
+ },
37
+ {
38
+ createDummyNode,
39
+ getHostContext: deriveHostContext,
40
+ resolveProps: (type, theme, props) => getThemedProps(type, theme, props),
41
+ attachSurfaceContext,
42
+ getParentContentSize,
43
+ afterLayout: (container, parent) => {
44
+ const renderContext = getRenderContext(parent);
45
+ renderContext.deferLayout(() => updateGestureHitAreaAfterLayout(container));
46
+ },
47
+ wrapRootVNode,
48
+ extractSurfaceTarget: (parent) => extractScene(parent) ?? parent,
49
+ isSurfaceTarget: isSceneTarget
50
+ }
51
+ );
52
+ phaserSurfaceAdapter.setVDOM({
53
+ mount: phaserVDOMRuntime.mount,
54
+ patchVNode: phaserVDOMRuntime.patchVNode,
55
+ unmount: phaserVDOMRuntime.unmount
56
+ });
57
+ setThemeRemountHandler(() => {
58
+ phaserVDOMRuntime.remountAll();
59
+ });
60
+ export {
61
+ phaserVDOMRuntime
62
+ };
63
+ //# sourceMappingURL=phaser-vdom-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phaser-vdom-runtime.js","sources":["../src/phaser-vdom-runtime.ts"],"sourcesContent":["import type {\n LayoutContainer,\n MountProps,\n Props,\n SurfaceTarget,\n VDOMOperations,\n VNode,\n VNodeLike,\n} from '@number10/jsx-core'\nimport { createVDOMRuntime } from '@number10/jsx-core/vdom'\nimport { SceneWrapper } from './components/internal/SceneWrapper'\nimport type { NodeType } from './core-types'\nimport {\n attachSurfaceContext,\n createDummyNode,\n deriveHostContext,\n extractScene,\n getParentContentSize,\n isSceneTarget,\n updateGestureHitAreaAfterLayout,\n} from './phaser-bridges'\nimport { PhaserHostAdapter } from './phaser-host-adapter'\nimport { PhaserSurfaceAdapter } from './phaser-surface-adapter'\nimport { getRenderContext } from './render-context'\nimport { getThemedProps, setThemeRemountHandler, themeRegistry } from './theme'\nimport type { PhaserPartialTheme } from './theme-base'\nimport type { ParentType } from './types'\n\nfunction wrapRootVNode(\n type: NodeType | ((props: unknown) => VNodeLike),\n props: MountProps & Record<string, unknown>\n): VNode {\n const { width, height, disableAutoSize = false, key: _key, ...componentProps } = props\n\n if (disableAutoSize) {\n return {\n type,\n props: { ...componentProps, width, height },\n children: [],\n }\n }\n\n const componentVNode: VNode = {\n type,\n props: { ...componentProps, width, height },\n children: [],\n }\n\n return {\n type: SceneWrapper,\n props: { width, height, children: componentVNode },\n children: [],\n __theme: themeRegistry.getGlobalTheme() as Record<string, unknown>,\n }\n}\n\nconst phaserHostAdapter = new PhaserHostAdapter()\nconst phaserSurfaceAdapter = new PhaserSurfaceAdapter()\n\nexport const phaserVDOMRuntime = createVDOMRuntime(\n {\n hostAdapter: phaserHostAdapter,\n surfaceAdapter: phaserSurfaceAdapter,\n },\n {\n createDummyNode,\n getHostContext: deriveHostContext,\n resolveProps: (type: string, theme: PhaserPartialTheme | undefined, props: Props) =>\n getThemedProps(type as never, theme as never, props as never),\n attachSurfaceContext,\n getParentContentSize,\n afterLayout: (container: LayoutContainer, parent: unknown) => {\n const renderContext = getRenderContext(parent as ParentType)\n renderContext.deferLayout(() => updateGestureHitAreaAfterLayout(container))\n },\n wrapRootVNode,\n extractSurfaceTarget: (parent: unknown) => (extractScene(parent) ?? parent) as SurfaceTarget,\n isSurfaceTarget: isSceneTarget,\n }\n)\n\n// Register Phaser's VDOM operations on the adapter for portable components\nphaserSurfaceAdapter.setVDOM({\n mount: phaserVDOMRuntime.mount as VDOMOperations['mount'],\n patchVNode: phaserVDOMRuntime.patchVNode as VDOMOperations['patchVNode'],\n unmount: phaserVDOMRuntime.unmount as VDOMOperations['unmount'],\n})\n\nsetThemeRemountHandler(() => {\n phaserVDOMRuntime.remountAll()\n})\n"],"names":[],"mappings":";;;;;;;;AA4BA,SAAS,cACP,MACA,OACO;AACP,QAAM,EAAE,OAAO,QAAQ,kBAAkB,OAAO,KAAK,MAAM,GAAG,eAAA,IAAmB;AAEjF,MAAI,iBAAiB;AACnB,WAAO;AAAA,MACL;AAAA,MACA,OAAO,EAAE,GAAG,gBAAgB,OAAO,OAAA;AAAA,MACnC,UAAU,CAAA;AAAA,IAAC;AAAA,EAEf;AAEA,QAAM,iBAAwB;AAAA,IAC5B;AAAA,IACA,OAAO,EAAE,GAAG,gBAAgB,OAAO,OAAA;AAAA,IACnC,UAAU,CAAA;AAAA,EAAC;AAGb,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO,EAAE,OAAO,QAAQ,UAAU,eAAA;AAAA,IAClC,UAAU,CAAA;AAAA,IACV,SAAS,cAAc,eAAA;AAAA,EAAe;AAE1C;AAEA,MAAM,oBAAoB,IAAI,kBAAA;AAC9B,MAAM,uBAAuB,IAAI,qBAAA;AAE1B,MAAM,oBAAoB;AAAA,EAC/B;AAAA,IACE,aAAa;AAAA,IACb,gBAAgB;AAAA,EAAA;AAAA,EAElB;AAAA,IACE;AAAA,IACA,gBAAgB;AAAA,IAChB,cAAc,CAAC,MAAc,OAAuC,UAClE,eAAe,MAAe,OAAgB,KAAc;AAAA,IAC9D;AAAA,IACA;AAAA,IACA,aAAa,CAAC,WAA4B,WAAoB;AAC5D,YAAM,gBAAgB,iBAAiB,MAAoB;AAC3D,oBAAc,YAAY,MAAM,gCAAgC,SAAS,CAAC;AAAA,IAC5E;AAAA,IACA;AAAA,IACA,sBAAsB,CAAC,WAAqB,aAAa,MAAM,KAAK;AAAA,IACpE,iBAAiB;AAAA,EAAA;AAErB;AAGA,qBAAqB,QAAQ;AAAA,EAC3B,OAAO,kBAAkB;AAAA,EACzB,YAAY,kBAAkB;AAAA,EAC9B,SAAS,kBAAkB;AAC7B,CAAC;AAED,uBAAuB,MAAM;AAC3B,oBAAkB,WAAA;AACpB,CAAC;"}
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const Phaser = require("phaser");
4
+ const vdom = require("./vdom.cjs");
5
+ function _interopNamespaceDefault(e) {
6
+ const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
7
+ if (e) {
8
+ for (const k in e) {
9
+ if (k !== "default") {
10
+ const d = Object.getOwnPropertyDescriptor(e, k);
11
+ Object.defineProperty(n, k, d.get ? d : {
12
+ enumerable: true,
13
+ get: () => e[k]
14
+ });
15
+ }
16
+ }
17
+ }
18
+ n.default = e;
19
+ return Object.freeze(n);
20
+ }
21
+ const Phaser__namespace = /* @__PURE__ */ _interopNamespaceDefault(Phaser);
22
+ function createPhaserJSXPlugin(config) {
23
+ return {
24
+ key: "PhaserJSX",
25
+ plugin: PhaserJSXPlugin,
26
+ start: true,
27
+ data: config
28
+ };
29
+ }
30
+ class PhaserJSXPlugin extends Phaser__namespace.Plugins.BasePlugin {
31
+ config;
32
+ mountHandle;
33
+ container;
34
+ targetScene;
35
+ /**
36
+ * Constructor - receives plugin manager and optional mapping
37
+ */
38
+ constructor(pluginManager) {
39
+ super(pluginManager);
40
+ }
41
+ /**
42
+ * Init lifecycle - called first with config data
43
+ */
44
+ init(data) {
45
+ if (data) {
46
+ this.config = { ...data };
47
+ }
48
+ }
49
+ /**
50
+ * Start lifecycle - called when plugin should start
51
+ */
52
+ start() {
53
+ this.game.events.on("ready", this.onGameReady, this);
54
+ }
55
+ /**
56
+ * Game ready handler - scene system is now initialized
57
+ */
58
+ onGameReady() {
59
+ const scenes = this.game.scene.scenes;
60
+ if (scenes.length > 0) {
61
+ const targetScene = scenes[0];
62
+ if (!targetScene) return;
63
+ this.targetScene = targetScene;
64
+ targetScene.events.once("create", this.onSceneCreate, this);
65
+ if (targetScene.scene.isActive()) {
66
+ this.onSceneCreate();
67
+ }
68
+ } else {
69
+ console.warn("[PhaserJSX Plugin] No scenes found to mount JSX");
70
+ }
71
+ }
72
+ /**
73
+ * Scene create handler - auto-mount JSX
74
+ */
75
+ onSceneCreate() {
76
+ const shouldAutoMount = this.config?.autoMount !== false;
77
+ if (shouldAutoMount && this.config?.component) {
78
+ this.mount();
79
+ if (this.config?.autoResize !== false) {
80
+ this.setupResizeHandler();
81
+ }
82
+ } else {
83
+ console.warn("[PhaserJSX Plugin] Auto-mount disabled or no component configured");
84
+ }
85
+ }
86
+ /**
87
+ * Setup resize event handler
88
+ */
89
+ setupResizeHandler() {
90
+ if (!this.targetScene) return;
91
+ this.targetScene.scale.on("resize", this.onResize, this);
92
+ }
93
+ /**
94
+ * Handle scene resize - update component props
95
+ */
96
+ onResize(gameSize) {
97
+ if (!this.mountHandle || !this.config?.component || !this.container) return;
98
+ const props = this.config.props || {};
99
+ const width = props.width ?? gameSize.width;
100
+ const height = props.height ?? gameSize.height;
101
+ this.mountHandle = vdom.mountJSX(this.container, this.config.component, {
102
+ ...props,
103
+ width,
104
+ height
105
+ });
106
+ }
107
+ /**
108
+ * Configure plugin
109
+ * Can be called from scene to set up component dynamically
110
+ */
111
+ configure(component, props) {
112
+ const newConfig = {
113
+ component
114
+ };
115
+ if (props !== void 0) {
116
+ newConfig.props = props;
117
+ }
118
+ this.config = {
119
+ ...this.config,
120
+ ...newConfig
121
+ };
122
+ }
123
+ /**
124
+ * Mount JSX component
125
+ */
126
+ mount() {
127
+ if (!this.targetScene) {
128
+ console.warn("[PhaserJSX Plugin] No scene available for mounting");
129
+ return;
130
+ }
131
+ if (!this.config?.component) {
132
+ console.warn("[PhaserJSX Plugin] No component configured for mounting");
133
+ return;
134
+ }
135
+ if (!this.container) {
136
+ const containerConfig = this.config.container || {};
137
+ this.container = this.targetScene.add.container(
138
+ containerConfig.x ?? 0,
139
+ containerConfig.y ?? 0
140
+ );
141
+ this.container.setDepth(containerConfig.depth ?? 100);
142
+ }
143
+ const props = this.config.props || {};
144
+ const width = props.width ?? this.targetScene.scale.width;
145
+ const height = props.height ?? this.targetScene.scale.height;
146
+ this.mountHandle = vdom.mountJSX(this.container, this.config.component, {
147
+ ...props,
148
+ width,
149
+ height
150
+ });
151
+ }
152
+ /**
153
+ * Unmount JSX component
154
+ */
155
+ unmount() {
156
+ if (this.mountHandle) {
157
+ this.mountHandle.unmount();
158
+ this.mountHandle = void 0;
159
+ }
160
+ }
161
+ /**
162
+ * Destroy lifecycle - cleanup
163
+ */
164
+ destroy() {
165
+ this.unmount();
166
+ if (this.container) {
167
+ this.container.destroy();
168
+ this.container = void 0;
169
+ }
170
+ this.game.events.off("ready", this.onGameReady, this);
171
+ if (this.targetScene) {
172
+ this.targetScene.events.off("create", this.onSceneCreate, this);
173
+ this.targetScene.scale.off("resize", this.onResize, this);
174
+ }
175
+ this.targetScene = void 0;
176
+ this.config = void 0;
177
+ super.destroy();
178
+ }
179
+ }
180
+ exports.PhaserJSXPlugin = PhaserJSXPlugin;
181
+ exports.createPhaserJSXPlugin = createPhaserJSXPlugin;
182
+ //# sourceMappingURL=plugin.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.cjs","sources":["../src/plugin.ts"],"sourcesContent":["/**\n * PhaserJSX Plugin for automatic JSX mounting\n * Enables declarative initialization via Phaser game config\n */\nimport * as Phaser from 'phaser'\nimport type { VNodeLike } from './types'\nimport { mountJSX, type MountHandle, type MountProps } from './vdom'\n\n/**\n * Plugin configuration\n */\nexport interface PhaserJSXPluginConfig<P = Record<string, unknown>> {\n /** Component to mount */\n component?: ((props: P & MountProps) => VNodeLike) | string\n /** Props for component (width and height are auto-injected from game size) */\n props?: P\n /** Container configuration */\n container?: {\n x?: number\n y?: number\n depth?: number\n }\n /** Auto-mount on scene create (default: true) */\n autoMount?: boolean\n /** Auto-resize on scale events (default: true) */\n autoResize?: boolean\n}\n\n/**\n * Extracts custom props from component function (excluding MountProps)\n */\ntype InferCustomProps<C> = C extends (props: infer P) => VNodeLike\n ? Omit<P, keyof MountProps>\n : never\n\n/**\n * Type-safe plugin entry for PhaserJSX Plugin\n * Use this in game config for proper TypeScript support\n *\n * @example\n * ```typescript\n * const config: Phaser.Types.Core.GameConfig = {\n * plugins: {\n * global: [\n * createPhaserJSXPlugin({\n * component: App,\n * props: { title: 'My App' },\n * autoResize: true\n * })\n * ]\n * }\n * }\n * ```\n */\nexport interface PhaserJSXPluginEntry<P = Record<string, unknown>> {\n key: string\n plugin: typeof PhaserJSXPlugin\n start: boolean\n data: PhaserJSXPluginConfig<P>\n}\n\n/**\n * Creates a type-safe PhaserJSX plugin entry for game config\n * Provides full IDE autocomplete and type checking for plugin configuration\n * Automatically infers component props for full type safety\n *\n * @param config - Plugin configuration with component and props\n * @returns Type-safe plugin entry for Phaser game config\n *\n * @example\n * ```typescript\n * // Full type safety - TypeScript infers AppProps from component\n * createPhaserJSXPlugin({\n * component: App,\n * props: { title: 'My App' }, // Only valid AppProps allowed!\n * autoResize: true\n * })\n * ```\n */\nexport function createPhaserJSXPlugin<C extends (props: unknown) => VNodeLike>(config: {\n component: C\n props?: InferCustomProps<C>\n autoMount?: boolean\n autoResize?: boolean\n container?: { x?: number; y?: number; depth?: number }\n}): PhaserJSXPluginEntry<InferCustomProps<C>>\n\n/**\n * Creates a PhaserJSX plugin entry (string component variant)\n */\nexport function createPhaserJSXPlugin<P = Record<string, unknown>>(\n config: PhaserJSXPluginConfig<P>\n): PhaserJSXPluginEntry<P>\n\n/**\n * Implementation\n */\nexport function createPhaserJSXPlugin<P = Record<string, unknown>>(\n config: PhaserJSXPluginConfig<P>\n): PhaserJSXPluginEntry<P> {\n return {\n key: 'PhaserJSX',\n plugin: PhaserJSXPlugin,\n start: true,\n data: config,\n }\n}\n\n/**\n * PhaserJSX Plugin\n * Provides automatic JSX mounting through Phaser plugin system\n *\n * @example\n * ```typescript\n * // In game config\n * plugins: {\n * global: [{\n * key: 'PhaserJSX',\n * plugin: PhaserJSXPlugin,\n * start: true,\n * data: {\n * component: App,\n * props: { width: '100%', height: '100%' }\n * }\n * }]\n * }\n * ```\n */\nexport class PhaserJSXPlugin extends Phaser.Plugins.BasePlugin {\n private config: PhaserJSXPluginConfig | undefined\n private mountHandle: MountHandle | undefined\n private container: Phaser.GameObjects.Container | undefined\n private targetScene: Phaser.Scene | undefined\n\n /**\n * Constructor - receives plugin manager and optional mapping\n */\n constructor(pluginManager: Phaser.Plugins.PluginManager) {\n super(pluginManager)\n }\n\n /**\n * Init lifecycle - called first with config data\n */\n override init(data?: PhaserJSXPluginConfig): void {\n if (data) {\n this.config = { ...data }\n }\n }\n\n /**\n * Start lifecycle - called when plugin should start\n */\n override start(): void {\n // Listen for scene being added to the scene manager\n this.game.events.on('ready', this.onGameReady, this)\n }\n\n /**\n * Game ready handler - scene system is now initialized\n */\n private onGameReady(): void {\n // Get first scene\n const scenes = this.game.scene.scenes\n\n if (scenes.length > 0) {\n const targetScene = scenes[0]\n if (!targetScene) return\n\n this.targetScene = targetScene\n\n // Listen to scene events\n targetScene.events.once('create', this.onSceneCreate, this)\n\n // If scene is already created, mount immediately\n if (targetScene.scene.isActive()) {\n this.onSceneCreate()\n }\n } else {\n console.warn('[PhaserJSX Plugin] No scenes found to mount JSX')\n }\n }\n\n /**\n * Scene create handler - auto-mount JSX\n */\n private onSceneCreate(): void {\n // Auto-mount if enabled and component is configured\n const shouldAutoMount = this.config?.autoMount !== false\n if (shouldAutoMount && this.config?.component) {\n this.mount()\n // Setup resize handler if auto-resize is enabled (default: true)\n if (this.config?.autoResize !== false) {\n this.setupResizeHandler()\n }\n } else {\n console.warn('[PhaserJSX Plugin] Auto-mount disabled or no component configured')\n }\n }\n\n /**\n * Setup resize event handler\n */\n private setupResizeHandler(): void {\n if (!this.targetScene) return\n\n // Listen to scale resize events\n this.targetScene.scale.on('resize', this.onResize, this)\n }\n\n /**\n * Handle scene resize - update component props\n */\n private onResize(gameSize: Phaser.Structs.Size): void {\n if (!this.mountHandle || !this.config?.component || !this.container) return\n\n // Get current props\n const props = this.config.props || {}\n const width = (props as { width?: unknown }).width ?? gameSize.width\n const height = (props as { height?: unknown }).height ?? gameSize.height\n\n // Call mountJSX again with same container and component\n // This will trigger a patch since mount already exists for this container\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.mountHandle = mountJSX(this.container, this.config.component as any, {\n ...props,\n width,\n height,\n })\n }\n\n /**\n * Configure plugin\n * Can be called from scene to set up component dynamically\n */\n configure(\n component: ((props: unknown) => VNodeLike) | string,\n props?: MountProps & Record<string, unknown>\n ): void {\n const newConfig: PhaserJSXPluginConfig = {\n component,\n }\n if (props !== undefined) {\n newConfig.props = props\n }\n this.config = {\n ...this.config,\n ...newConfig,\n }\n }\n\n /**\n * Mount JSX component\n */\n mount(): void {\n if (!this.targetScene) {\n console.warn('[PhaserJSX Plugin] No scene available for mounting')\n return\n }\n\n if (!this.config?.component) {\n console.warn('[PhaserJSX Plugin] No component configured for mounting')\n return\n }\n\n // Create container if not exists\n if (!this.container) {\n const containerConfig = this.config.container || {}\n this.container = this.targetScene.add.container(\n containerConfig.x ?? 0,\n containerConfig.y ?? 0\n )\n this.container.setDepth(containerConfig.depth ?? 100)\n }\n\n // Get dimensions from config or use scene dimensions\n const props = this.config.props || {}\n const width = (props as { width?: unknown }).width ?? this.targetScene.scale.width\n const height = (props as { height?: unknown }).height ?? this.targetScene.scale.height\n\n // Mount JSX\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.mountHandle = mountJSX(this.container, this.config.component as any, {\n ...props,\n width,\n height,\n })\n }\n\n /**\n * Unmount JSX component\n */\n unmount(): void {\n if (this.mountHandle) {\n this.mountHandle.unmount()\n this.mountHandle = undefined\n }\n }\n\n /**\n * Destroy lifecycle - cleanup\n */\n override destroy(): void {\n // Unmount JSX\n this.unmount()\n\n // Remove container\n if (this.container) {\n this.container.destroy()\n this.container = undefined\n }\n\n // Remove listeners\n this.game.events.off('ready', this.onGameReady, this)\n if (this.targetScene) {\n this.targetScene.events.off('create', this.onSceneCreate, this)\n this.targetScene.scale.off('resize', this.onResize, this)\n }\n\n // Clear references\n this.targetScene = undefined\n this.config = undefined\n\n super.destroy()\n }\n}\n"],"names":["Phaser","mountJSX"],"mappings":"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"}
@@ -0,0 +1,161 @@
1
+ import { VNodeLike } from './types';
2
+ import { MountProps } from './vdom';
3
+ /**
4
+ * PhaserJSX Plugin for automatic JSX mounting
5
+ * Enables declarative initialization via Phaser game config
6
+ */
7
+ import * as Phaser from 'phaser';
8
+ /**
9
+ * Plugin configuration
10
+ */
11
+ export interface PhaserJSXPluginConfig<P = Record<string, unknown>> {
12
+ /** Component to mount */
13
+ component?: ((props: P & MountProps) => VNodeLike) | string;
14
+ /** Props for component (width and height are auto-injected from game size) */
15
+ props?: P;
16
+ /** Container configuration */
17
+ container?: {
18
+ x?: number;
19
+ y?: number;
20
+ depth?: number;
21
+ };
22
+ /** Auto-mount on scene create (default: true) */
23
+ autoMount?: boolean;
24
+ /** Auto-resize on scale events (default: true) */
25
+ autoResize?: boolean;
26
+ }
27
+ /**
28
+ * Extracts custom props from component function (excluding MountProps)
29
+ */
30
+ type InferCustomProps<C> = C extends (props: infer P) => VNodeLike ? Omit<P, keyof MountProps> : never;
31
+ /**
32
+ * Type-safe plugin entry for PhaserJSX Plugin
33
+ * Use this in game config for proper TypeScript support
34
+ *
35
+ * @example
36
+ * ```typescript
37
+ * const config: Phaser.Types.Core.GameConfig = {
38
+ * plugins: {
39
+ * global: [
40
+ * createPhaserJSXPlugin({
41
+ * component: App,
42
+ * props: { title: 'My App' },
43
+ * autoResize: true
44
+ * })
45
+ * ]
46
+ * }
47
+ * }
48
+ * ```
49
+ */
50
+ export interface PhaserJSXPluginEntry<P = Record<string, unknown>> {
51
+ key: string;
52
+ plugin: typeof PhaserJSXPlugin;
53
+ start: boolean;
54
+ data: PhaserJSXPluginConfig<P>;
55
+ }
56
+ /**
57
+ * Creates a type-safe PhaserJSX plugin entry for game config
58
+ * Provides full IDE autocomplete and type checking for plugin configuration
59
+ * Automatically infers component props for full type safety
60
+ *
61
+ * @param config - Plugin configuration with component and props
62
+ * @returns Type-safe plugin entry for Phaser game config
63
+ *
64
+ * @example
65
+ * ```typescript
66
+ * // Full type safety - TypeScript infers AppProps from component
67
+ * createPhaserJSXPlugin({
68
+ * component: App,
69
+ * props: { title: 'My App' }, // Only valid AppProps allowed!
70
+ * autoResize: true
71
+ * })
72
+ * ```
73
+ */
74
+ export declare function createPhaserJSXPlugin<C extends (props: unknown) => VNodeLike>(config: {
75
+ component: C;
76
+ props?: InferCustomProps<C>;
77
+ autoMount?: boolean;
78
+ autoResize?: boolean;
79
+ container?: {
80
+ x?: number;
81
+ y?: number;
82
+ depth?: number;
83
+ };
84
+ }): PhaserJSXPluginEntry<InferCustomProps<C>>;
85
+ /**
86
+ * Creates a PhaserJSX plugin entry (string component variant)
87
+ */
88
+ export declare function createPhaserJSXPlugin<P = Record<string, unknown>>(config: PhaserJSXPluginConfig<P>): PhaserJSXPluginEntry<P>;
89
+ /**
90
+ * PhaserJSX Plugin
91
+ * Provides automatic JSX mounting through Phaser plugin system
92
+ *
93
+ * @example
94
+ * ```typescript
95
+ * // In game config
96
+ * plugins: {
97
+ * global: [{
98
+ * key: 'PhaserJSX',
99
+ * plugin: PhaserJSXPlugin,
100
+ * start: true,
101
+ * data: {
102
+ * component: App,
103
+ * props: { width: '100%', height: '100%' }
104
+ * }
105
+ * }]
106
+ * }
107
+ * ```
108
+ */
109
+ export declare class PhaserJSXPlugin extends Phaser.Plugins.BasePlugin {
110
+ private config;
111
+ private mountHandle;
112
+ private container;
113
+ private targetScene;
114
+ /**
115
+ * Constructor - receives plugin manager and optional mapping
116
+ */
117
+ constructor(pluginManager: Phaser.Plugins.PluginManager);
118
+ /**
119
+ * Init lifecycle - called first with config data
120
+ */
121
+ init(data?: PhaserJSXPluginConfig): void;
122
+ /**
123
+ * Start lifecycle - called when plugin should start
124
+ */
125
+ start(): void;
126
+ /**
127
+ * Game ready handler - scene system is now initialized
128
+ */
129
+ private onGameReady;
130
+ /**
131
+ * Scene create handler - auto-mount JSX
132
+ */
133
+ private onSceneCreate;
134
+ /**
135
+ * Setup resize event handler
136
+ */
137
+ private setupResizeHandler;
138
+ /**
139
+ * Handle scene resize - update component props
140
+ */
141
+ private onResize;
142
+ /**
143
+ * Configure plugin
144
+ * Can be called from scene to set up component dynamically
145
+ */
146
+ configure(component: ((props: unknown) => VNodeLike) | string, props?: MountProps & Record<string, unknown>): void;
147
+ /**
148
+ * Mount JSX component
149
+ */
150
+ mount(): void;
151
+ /**
152
+ * Unmount JSX component
153
+ */
154
+ unmount(): void;
155
+ /**
156
+ * Destroy lifecycle - cleanup
157
+ */
158
+ destroy(): void;
159
+ }
160
+ export {};
161
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
package/dist/plugin.js ADDED
@@ -0,0 +1,165 @@
1
+ import * as Phaser from "phaser";
2
+ import { mountJSX } from "./vdom.js";
3
+ function createPhaserJSXPlugin(config) {
4
+ return {
5
+ key: "PhaserJSX",
6
+ plugin: PhaserJSXPlugin,
7
+ start: true,
8
+ data: config
9
+ };
10
+ }
11
+ class PhaserJSXPlugin extends Phaser.Plugins.BasePlugin {
12
+ config;
13
+ mountHandle;
14
+ container;
15
+ targetScene;
16
+ /**
17
+ * Constructor - receives plugin manager and optional mapping
18
+ */
19
+ constructor(pluginManager) {
20
+ super(pluginManager);
21
+ }
22
+ /**
23
+ * Init lifecycle - called first with config data
24
+ */
25
+ init(data) {
26
+ if (data) {
27
+ this.config = { ...data };
28
+ }
29
+ }
30
+ /**
31
+ * Start lifecycle - called when plugin should start
32
+ */
33
+ start() {
34
+ this.game.events.on("ready", this.onGameReady, this);
35
+ }
36
+ /**
37
+ * Game ready handler - scene system is now initialized
38
+ */
39
+ onGameReady() {
40
+ const scenes = this.game.scene.scenes;
41
+ if (scenes.length > 0) {
42
+ const targetScene = scenes[0];
43
+ if (!targetScene) return;
44
+ this.targetScene = targetScene;
45
+ targetScene.events.once("create", this.onSceneCreate, this);
46
+ if (targetScene.scene.isActive()) {
47
+ this.onSceneCreate();
48
+ }
49
+ } else {
50
+ console.warn("[PhaserJSX Plugin] No scenes found to mount JSX");
51
+ }
52
+ }
53
+ /**
54
+ * Scene create handler - auto-mount JSX
55
+ */
56
+ onSceneCreate() {
57
+ const shouldAutoMount = this.config?.autoMount !== false;
58
+ if (shouldAutoMount && this.config?.component) {
59
+ this.mount();
60
+ if (this.config?.autoResize !== false) {
61
+ this.setupResizeHandler();
62
+ }
63
+ } else {
64
+ console.warn("[PhaserJSX Plugin] Auto-mount disabled or no component configured");
65
+ }
66
+ }
67
+ /**
68
+ * Setup resize event handler
69
+ */
70
+ setupResizeHandler() {
71
+ if (!this.targetScene) return;
72
+ this.targetScene.scale.on("resize", this.onResize, this);
73
+ }
74
+ /**
75
+ * Handle scene resize - update component props
76
+ */
77
+ onResize(gameSize) {
78
+ if (!this.mountHandle || !this.config?.component || !this.container) return;
79
+ const props = this.config.props || {};
80
+ const width = props.width ?? gameSize.width;
81
+ const height = props.height ?? gameSize.height;
82
+ this.mountHandle = mountJSX(this.container, this.config.component, {
83
+ ...props,
84
+ width,
85
+ height
86
+ });
87
+ }
88
+ /**
89
+ * Configure plugin
90
+ * Can be called from scene to set up component dynamically
91
+ */
92
+ configure(component, props) {
93
+ const newConfig = {
94
+ component
95
+ };
96
+ if (props !== void 0) {
97
+ newConfig.props = props;
98
+ }
99
+ this.config = {
100
+ ...this.config,
101
+ ...newConfig
102
+ };
103
+ }
104
+ /**
105
+ * Mount JSX component
106
+ */
107
+ mount() {
108
+ if (!this.targetScene) {
109
+ console.warn("[PhaserJSX Plugin] No scene available for mounting");
110
+ return;
111
+ }
112
+ if (!this.config?.component) {
113
+ console.warn("[PhaserJSX Plugin] No component configured for mounting");
114
+ return;
115
+ }
116
+ if (!this.container) {
117
+ const containerConfig = this.config.container || {};
118
+ this.container = this.targetScene.add.container(
119
+ containerConfig.x ?? 0,
120
+ containerConfig.y ?? 0
121
+ );
122
+ this.container.setDepth(containerConfig.depth ?? 100);
123
+ }
124
+ const props = this.config.props || {};
125
+ const width = props.width ?? this.targetScene.scale.width;
126
+ const height = props.height ?? this.targetScene.scale.height;
127
+ this.mountHandle = mountJSX(this.container, this.config.component, {
128
+ ...props,
129
+ width,
130
+ height
131
+ });
132
+ }
133
+ /**
134
+ * Unmount JSX component
135
+ */
136
+ unmount() {
137
+ if (this.mountHandle) {
138
+ this.mountHandle.unmount();
139
+ this.mountHandle = void 0;
140
+ }
141
+ }
142
+ /**
143
+ * Destroy lifecycle - cleanup
144
+ */
145
+ destroy() {
146
+ this.unmount();
147
+ if (this.container) {
148
+ this.container.destroy();
149
+ this.container = void 0;
150
+ }
151
+ this.game.events.off("ready", this.onGameReady, this);
152
+ if (this.targetScene) {
153
+ this.targetScene.events.off("create", this.onSceneCreate, this);
154
+ this.targetScene.scale.off("resize", this.onResize, this);
155
+ }
156
+ this.targetScene = void 0;
157
+ this.config = void 0;
158
+ super.destroy();
159
+ }
160
+ }
161
+ export {
162
+ PhaserJSXPlugin,
163
+ createPhaserJSXPlugin
164
+ };
165
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sources":["../src/plugin.ts"],"sourcesContent":["/**\n * PhaserJSX Plugin for automatic JSX mounting\n * Enables declarative initialization via Phaser game config\n */\nimport * as Phaser from 'phaser'\nimport type { VNodeLike } from './types'\nimport { mountJSX, type MountHandle, type MountProps } from './vdom'\n\n/**\n * Plugin configuration\n */\nexport interface PhaserJSXPluginConfig<P = Record<string, unknown>> {\n /** Component to mount */\n component?: ((props: P & MountProps) => VNodeLike) | string\n /** Props for component (width and height are auto-injected from game size) */\n props?: P\n /** Container configuration */\n container?: {\n x?: number\n y?: number\n depth?: number\n }\n /** Auto-mount on scene create (default: true) */\n autoMount?: boolean\n /** Auto-resize on scale events (default: true) */\n autoResize?: boolean\n}\n\n/**\n * Extracts custom props from component function (excluding MountProps)\n */\ntype InferCustomProps<C> = C extends (props: infer P) => VNodeLike\n ? Omit<P, keyof MountProps>\n : never\n\n/**\n * Type-safe plugin entry for PhaserJSX Plugin\n * Use this in game config for proper TypeScript support\n *\n * @example\n * ```typescript\n * const config: Phaser.Types.Core.GameConfig = {\n * plugins: {\n * global: [\n * createPhaserJSXPlugin({\n * component: App,\n * props: { title: 'My App' },\n * autoResize: true\n * })\n * ]\n * }\n * }\n * ```\n */\nexport interface PhaserJSXPluginEntry<P = Record<string, unknown>> {\n key: string\n plugin: typeof PhaserJSXPlugin\n start: boolean\n data: PhaserJSXPluginConfig<P>\n}\n\n/**\n * Creates a type-safe PhaserJSX plugin entry for game config\n * Provides full IDE autocomplete and type checking for plugin configuration\n * Automatically infers component props for full type safety\n *\n * @param config - Plugin configuration with component and props\n * @returns Type-safe plugin entry for Phaser game config\n *\n * @example\n * ```typescript\n * // Full type safety - TypeScript infers AppProps from component\n * createPhaserJSXPlugin({\n * component: App,\n * props: { title: 'My App' }, // Only valid AppProps allowed!\n * autoResize: true\n * })\n * ```\n */\nexport function createPhaserJSXPlugin<C extends (props: unknown) => VNodeLike>(config: {\n component: C\n props?: InferCustomProps<C>\n autoMount?: boolean\n autoResize?: boolean\n container?: { x?: number; y?: number; depth?: number }\n}): PhaserJSXPluginEntry<InferCustomProps<C>>\n\n/**\n * Creates a PhaserJSX plugin entry (string component variant)\n */\nexport function createPhaserJSXPlugin<P = Record<string, unknown>>(\n config: PhaserJSXPluginConfig<P>\n): PhaserJSXPluginEntry<P>\n\n/**\n * Implementation\n */\nexport function createPhaserJSXPlugin<P = Record<string, unknown>>(\n config: PhaserJSXPluginConfig<P>\n): PhaserJSXPluginEntry<P> {\n return {\n key: 'PhaserJSX',\n plugin: PhaserJSXPlugin,\n start: true,\n data: config,\n }\n}\n\n/**\n * PhaserJSX Plugin\n * Provides automatic JSX mounting through Phaser plugin system\n *\n * @example\n * ```typescript\n * // In game config\n * plugins: {\n * global: [{\n * key: 'PhaserJSX',\n * plugin: PhaserJSXPlugin,\n * start: true,\n * data: {\n * component: App,\n * props: { width: '100%', height: '100%' }\n * }\n * }]\n * }\n * ```\n */\nexport class PhaserJSXPlugin extends Phaser.Plugins.BasePlugin {\n private config: PhaserJSXPluginConfig | undefined\n private mountHandle: MountHandle | undefined\n private container: Phaser.GameObjects.Container | undefined\n private targetScene: Phaser.Scene | undefined\n\n /**\n * Constructor - receives plugin manager and optional mapping\n */\n constructor(pluginManager: Phaser.Plugins.PluginManager) {\n super(pluginManager)\n }\n\n /**\n * Init lifecycle - called first with config data\n */\n override init(data?: PhaserJSXPluginConfig): void {\n if (data) {\n this.config = { ...data }\n }\n }\n\n /**\n * Start lifecycle - called when plugin should start\n */\n override start(): void {\n // Listen for scene being added to the scene manager\n this.game.events.on('ready', this.onGameReady, this)\n }\n\n /**\n * Game ready handler - scene system is now initialized\n */\n private onGameReady(): void {\n // Get first scene\n const scenes = this.game.scene.scenes\n\n if (scenes.length > 0) {\n const targetScene = scenes[0]\n if (!targetScene) return\n\n this.targetScene = targetScene\n\n // Listen to scene events\n targetScene.events.once('create', this.onSceneCreate, this)\n\n // If scene is already created, mount immediately\n if (targetScene.scene.isActive()) {\n this.onSceneCreate()\n }\n } else {\n console.warn('[PhaserJSX Plugin] No scenes found to mount JSX')\n }\n }\n\n /**\n * Scene create handler - auto-mount JSX\n */\n private onSceneCreate(): void {\n // Auto-mount if enabled and component is configured\n const shouldAutoMount = this.config?.autoMount !== false\n if (shouldAutoMount && this.config?.component) {\n this.mount()\n // Setup resize handler if auto-resize is enabled (default: true)\n if (this.config?.autoResize !== false) {\n this.setupResizeHandler()\n }\n } else {\n console.warn('[PhaserJSX Plugin] Auto-mount disabled or no component configured')\n }\n }\n\n /**\n * Setup resize event handler\n */\n private setupResizeHandler(): void {\n if (!this.targetScene) return\n\n // Listen to scale resize events\n this.targetScene.scale.on('resize', this.onResize, this)\n }\n\n /**\n * Handle scene resize - update component props\n */\n private onResize(gameSize: Phaser.Structs.Size): void {\n if (!this.mountHandle || !this.config?.component || !this.container) return\n\n // Get current props\n const props = this.config.props || {}\n const width = (props as { width?: unknown }).width ?? gameSize.width\n const height = (props as { height?: unknown }).height ?? gameSize.height\n\n // Call mountJSX again with same container and component\n // This will trigger a patch since mount already exists for this container\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.mountHandle = mountJSX(this.container, this.config.component as any, {\n ...props,\n width,\n height,\n })\n }\n\n /**\n * Configure plugin\n * Can be called from scene to set up component dynamically\n */\n configure(\n component: ((props: unknown) => VNodeLike) | string,\n props?: MountProps & Record<string, unknown>\n ): void {\n const newConfig: PhaserJSXPluginConfig = {\n component,\n }\n if (props !== undefined) {\n newConfig.props = props\n }\n this.config = {\n ...this.config,\n ...newConfig,\n }\n }\n\n /**\n * Mount JSX component\n */\n mount(): void {\n if (!this.targetScene) {\n console.warn('[PhaserJSX Plugin] No scene available for mounting')\n return\n }\n\n if (!this.config?.component) {\n console.warn('[PhaserJSX Plugin] No component configured for mounting')\n return\n }\n\n // Create container if not exists\n if (!this.container) {\n const containerConfig = this.config.container || {}\n this.container = this.targetScene.add.container(\n containerConfig.x ?? 0,\n containerConfig.y ?? 0\n )\n this.container.setDepth(containerConfig.depth ?? 100)\n }\n\n // Get dimensions from config or use scene dimensions\n const props = this.config.props || {}\n const width = (props as { width?: unknown }).width ?? this.targetScene.scale.width\n const height = (props as { height?: unknown }).height ?? this.targetScene.scale.height\n\n // Mount JSX\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.mountHandle = mountJSX(this.container, this.config.component as any, {\n ...props,\n width,\n height,\n })\n }\n\n /**\n * Unmount JSX component\n */\n unmount(): void {\n if (this.mountHandle) {\n this.mountHandle.unmount()\n this.mountHandle = undefined\n }\n }\n\n /**\n * Destroy lifecycle - cleanup\n */\n override destroy(): void {\n // Unmount JSX\n this.unmount()\n\n // Remove container\n if (this.container) {\n this.container.destroy()\n this.container = undefined\n }\n\n // Remove listeners\n this.game.events.off('ready', this.onGameReady, this)\n if (this.targetScene) {\n this.targetScene.events.off('create', this.onSceneCreate, this)\n this.targetScene.scale.off('resize', this.onResize, this)\n }\n\n // Clear references\n this.targetScene = undefined\n this.config = undefined\n\n super.destroy()\n }\n}\n"],"names":[],"mappings":"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"}