@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,138 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const Phaser = require("phaser");
4
+ const stencilClipDepth = require("./stencil-clip-depth.cjs");
5
+ const stencilClipFboBridge = require("./stencil-clip-fbo-bridge.cjs");
6
+ const stencilClipRenderer = require("./stencil-clip-renderer.cjs");
7
+ const stencilClipState = require("./stencil-clip-state.cjs");
8
+ function _interopNamespaceDefault(e) {
9
+ const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
10
+ if (e) {
11
+ for (const k in e) {
12
+ if (k !== "default") {
13
+ const d = Object.getOwnPropertyDescriptor(e, k);
14
+ Object.defineProperty(n, k, d.get ? d : {
15
+ enumerable: true,
16
+ get: () => e[k]
17
+ });
18
+ }
19
+ }
20
+ }
21
+ n.default = e;
22
+ return Object.freeze(n);
23
+ }
24
+ const Phaser__namespace = /* @__PURE__ */ _interopNamespaceDefault(Phaser);
25
+ const STENCIL_HANDLE = /* @__PURE__ */ Symbol("stencilClipHandle");
26
+ function getStencilClipHandle(container) {
27
+ return container[STENCIL_HANDLE];
28
+ }
29
+ function clearStencilClip(container) {
30
+ getStencilClipHandle(container)?.destroy();
31
+ }
32
+ function applyStencilClip(container, source) {
33
+ const obj = container;
34
+ if (obj[STENCIL_HANDLE]) {
35
+ obj[STENCIL_HANDLE].update(source);
36
+ return obj[STENCIL_HANDLE];
37
+ }
38
+ if (container.scene.renderer.type !== Phaser__namespace.WEBGL) {
39
+ return { update() {
40
+ }, destroy() {
41
+ } };
42
+ }
43
+ const renderer = container.scene.renderer;
44
+ const gl = renderer.gl;
45
+ const glWrapper = renderer.glWrapper;
46
+ stencilClipDepth.ensurePrerenderReset(gl, container.scene.game, stencilClipFboBridge.resetFboPatchState);
47
+ stencilClipFboBridge.ensureFboPatch(gl);
48
+ const previousArrayBuffer = glWrapper.state?.bindings?.arrayBuffer ?? null;
49
+ const vertBuf = gl.createBuffer();
50
+ gl.bindBuffer(gl.ARRAY_BUFFER, vertBuf);
51
+ gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(16), gl.DYNAMIC_DRAW);
52
+ gl.bindBuffer(gl.ARRAY_BUFFER, null);
53
+ glWrapper.updateBindingsArrayBuffer?.(
54
+ {
55
+ bindings: {
56
+ arrayBuffer: previousArrayBuffer
57
+ }
58
+ },
59
+ true
60
+ );
61
+ const verts = new Float32Array(16);
62
+ let maskSource = stencilClipState.toMaskState(source);
63
+ let destroyed = false;
64
+ const wrapper = (webglRenderer, go, drawingContext, parentMatrix, renderStep = 0, displayList, displayListIndex) => {
65
+ const renderNext = () => {
66
+ go.renderWebGLStep(
67
+ webglRenderer,
68
+ go,
69
+ drawingContext,
70
+ parentMatrix,
71
+ renderStep + 1,
72
+ displayList,
73
+ displayListIndex
74
+ );
75
+ };
76
+ if (destroyed) {
77
+ renderNext();
78
+ return;
79
+ }
80
+ const matrix = container.getWorldTransformMatrix();
81
+ const context = drawingContext;
82
+ const cameraMatrix = context.camera?.getViewMatrix(!context.useCanvas);
83
+ const rn = webglRenderer.renderNodes;
84
+ const depth = stencilClipDepth.getDepth(gl);
85
+ const myDepth = depth.value++;
86
+ const logW = webglRenderer.width;
87
+ const logH = webglRenderer.height;
88
+ rn.finishBatch();
89
+ if (myDepth === 0) gl.enable(gl.STENCIL_TEST);
90
+ gl.colorMask(false, false, false, false);
91
+ gl.stencilMask(255);
92
+ gl.stencilFunc(gl.EQUAL, myDepth, 255);
93
+ gl.stencilOp(gl.KEEP, gl.KEEP, gl.INCR);
94
+ stencilClipRenderer.drawMaskShape(gl, container.scene, matrix, cameraMatrix, maskSource, logW, logH, vertBuf, verts);
95
+ gl.colorMask(true, true, true, true);
96
+ gl.stencilFunc(gl.EQUAL, myDepth + 1, 255);
97
+ gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP);
98
+ gl.stencilMask(0);
99
+ renderNext();
100
+ rn.finishBatch();
101
+ gl.colorMask(false, false, false, false);
102
+ gl.stencilMask(255);
103
+ gl.stencilFunc(gl.EQUAL, myDepth + 1, 255);
104
+ gl.stencilOp(gl.KEEP, gl.KEEP, gl.DECR);
105
+ stencilClipRenderer.drawMaskShape(gl, container.scene, matrix, cameraMatrix, maskSource, logW, logH, vertBuf, verts);
106
+ gl.colorMask(true, true, true, true);
107
+ depth.value--;
108
+ if (myDepth === 0) {
109
+ gl.disable(gl.STENCIL_TEST);
110
+ gl.stencilMask(255);
111
+ } else {
112
+ gl.stencilFunc(gl.EQUAL, myDepth, 255);
113
+ gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP);
114
+ gl.stencilMask(0);
115
+ }
116
+ };
117
+ const handle = {
118
+ update(s) {
119
+ maskSource = stencilClipState.mergeMaskState(maskSource, s);
120
+ },
121
+ destroy() {
122
+ if (destroyed) return;
123
+ destroyed = true;
124
+ gl.deleteBuffer(vertBuf);
125
+ const index = obj._renderSteps.indexOf(wrapper);
126
+ if (index !== -1) obj._renderSteps.splice(index, 1);
127
+ delete obj[STENCIL_HANDLE];
128
+ }
129
+ };
130
+ obj.addRenderStep(wrapper, 0);
131
+ obj[STENCIL_HANDLE] = handle;
132
+ return handle;
133
+ }
134
+ exports.isBitmapStencilClipSource = stencilClipState.isBitmapStencilClipSource;
135
+ exports.applyStencilClip = applyStencilClip;
136
+ exports.clearStencilClip = clearStencilClip;
137
+ exports.getStencilClipHandle = getStencilClipHandle;
138
+ //# sourceMappingURL=stencil-clip.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stencil-clip.cjs","sources":["../../src/clip/stencil-clip.ts"],"sourcesContent":["/**\n * WebGL stencil-buffer clip for Phaser 4 Containers.\n *\n * Supports arbitrary nesting via the INCR/DECR model: each clip level\n * increments the stencil on enter and decrements on exit, so child clips are\n * automatically intersected with their parent clips at the hardware level.\n *\n * Shape variants:\n * - Plain rectangle (cornerRadius omitted or 0)\n * - Rounded rectangle (uniform radius or per-corner object)\n *\n * A single SDF-based shader handles both variants. For plain rectangles\n * u_radii is vec4(0) and the `discard` branch never fires — no overhead\n * compared to a rectangle-only shader.\n *\n * Transforms (translate, scale, rotation) are fully supported: the quad\n * corners are transformed through `container.getWorldTransformMatrix()` at\n * render time, so no per-layout world-position tracking is needed.\n */\nimport * as Phaser from 'phaser'\nimport { ensurePrerenderReset, getDepth } from './stencil-clip-depth'\nimport { ensureFboPatch, resetFboPatchState } from './stencil-clip-fbo-bridge'\nimport { drawMaskShape, type GLPolyfilled } from './stencil-clip-renderer'\nimport { mergeMaskState, toMaskState } from './stencil-clip-state'\nimport type { StencilClipHandle, StencilClipSource } from './stencil-clip-types'\n\nexport { isBitmapStencilClipSource } from './stencil-clip-state'\nexport type {\n StencilBitmapClipSource,\n StencilBitmapTexture,\n StencilClipHandle,\n StencilClipShape,\n StencilClipSource,\n StencilClipUpdate,\n StencilCornerRadius,\n StencilRoundRectClipSource,\n} from './stencil-clip-types'\n\n// ── Internal Phaser type helpers ──────────────────────────────────────────────\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype ContainerRenderFn = (renderer: any, go: any, ...rest: any[]) => void\n\ntype RNManager = { finishBatch(): void }\ntype CameraLike = {\n getViewMatrix(forceComposite?: boolean): Phaser.GameObjects.Components.TransformMatrix\n}\n\ntype DrawingContextLike = {\n camera?: CameraLike\n useCanvas?: boolean\n}\n\ntype GLWrapperLike = {\n state?: {\n bindings?: {\n arrayBuffer?: unknown\n }\n }\n updateBindingsArrayBuffer?(state: unknown, force?: boolean): void\n}\n\n// ── Attachment symbol ─────────────────────────────────────────────────────────\n\nconst STENCIL_HANDLE = Symbol('stencilClipHandle')\n\n/** Returns the active stencil clip handle attached to a container, if any. */\nexport function getStencilClipHandle(\n container: Phaser.GameObjects.Container\n): StencilClipHandle | undefined {\n return (container as unknown as { [STENCIL_HANDLE]?: StencilClipHandle })[STENCIL_HANDLE]\n}\n\n/** Removes any active stencil clip from a container. */\nexport function clearStencilClip(container: Phaser.GameObjects.Container): void {\n getStencilClipHandle(container)?.destroy()\n}\n\n// ── Public API ────────────────────────────────────────────────────────────────\n\n/**\n * Applies a WebGL stencil-buffer clip to a Phaser 4 Container.\n *\n * The clip rectangle is expressed in the container's **local coordinate\n * space**. `offsetX`/`offsetY` mark the top-left corner (default 0/0), so\n * a container whose visual area starts at its local origin can be clipped with\n * `applyStencilClip(container, { width, height })`.\n *\n * **Nesting** is handled transparently: each clip level occupies one stencil\n * value (0 = no clip, 1 = depth 0, 2 = depth 1, …). Child clips are always\n * the intersection of their own shape and all ancestor shapes.\n *\n * **Transforms** (translate, scale, rotation) are re-evaluated from\n * `container.getWorldTransformMatrix()` on every frame, so animated or\n * scroll-driven containers clip correctly without any manual update call.\n *\n * If a stencil clip is already attached to the container, calling this\n * function again calls `handle.update(shape)` on the existing handle and\n * returns it.\n *\n * @param container - The container to clip.\n * @param source - Clip source in the container's local coordinate space.\n * @returns A handle to modify dimensions / corner radii or remove the clip.\n */\nexport function applyStencilClip(\n container: Phaser.GameObjects.Container,\n source: StencilClipSource\n): StencilClipHandle {\n const obj = container as unknown as {\n _renderSteps: Array<ContainerRenderFn | undefined>\n addRenderStep(fn: ContainerRenderFn, index?: number): Phaser.GameObjects.Container\n [STENCIL_HANDLE]?: StencilClipHandle\n }\n\n // Re-use existing handle if already attached.\n if (obj[STENCIL_HANDLE]) {\n obj[STENCIL_HANDLE].update(source)\n return obj[STENCIL_HANDLE]\n }\n\n // No-op for non-WebGL renderers.\n if (container.scene.renderer.type !== Phaser.WEBGL) {\n return { update() {}, destroy() {} }\n }\n\n const renderer = container.scene.renderer as Phaser.Renderer.WebGL.WebGLRenderer\n const gl = renderer.gl as GLPolyfilled\n const glWrapper = renderer.glWrapper as unknown as GLWrapperLike\n\n ensurePrerenderReset(gl, container.scene.game, resetFboPatchState)\n ensureFboPatch(gl)\n\n // Persistent vertex buffer: 4 vertices × 4 floats × 4 bytes = 64 bytes.\n const previousArrayBuffer = glWrapper.state?.bindings?.arrayBuffer ?? null\n const vertBuf = gl.createBuffer() as WebGLBuffer\n gl.bindBuffer(gl.ARRAY_BUFFER, vertBuf)\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(16), gl.DYNAMIC_DRAW)\n gl.bindBuffer(gl.ARRAY_BUFFER, null)\n // Creating the buffer mutates raw GL state; restore Phaser's cached binding too.\n glWrapper.updateBindingsArrayBuffer?.(\n {\n bindings: {\n arrayBuffer: previousArrayBuffer,\n },\n },\n true\n )\n\n const verts = new Float32Array(16)\n\n let maskSource = toMaskState(source)\n let destroyed = false\n\n const wrapper: ContainerRenderFn = (\n webglRenderer,\n go,\n drawingContext,\n parentMatrix,\n renderStep = 0,\n displayList,\n displayListIndex\n ) => {\n const renderNext = () => {\n go.renderWebGLStep(\n webglRenderer,\n go,\n drawingContext,\n parentMatrix,\n renderStep + 1,\n displayList,\n displayListIndex\n )\n }\n\n if (destroyed) {\n renderNext()\n return\n }\n\n const matrix = container.getWorldTransformMatrix()\n const context = drawingContext as DrawingContextLike\n const cameraMatrix = context.camera?.getViewMatrix(!context.useCanvas)\n const rn = (webglRenderer as unknown as { renderNodes: RNManager }).renderNodes\n const depth = getDepth(gl)\n const myDepth = depth.value++\n\n const logW = webglRenderer.width as number\n const logH = webglRenderer.height as number\n\n // ── Push: write clip shape into stencil buffer ────────────────────────\n rn.finishBatch()\n\n if (myDepth === 0) gl.enable(gl.STENCIL_TEST)\n\n gl.colorMask(false, false, false, false)\n gl.stencilMask(0xff)\n // Write only where the stencil already equals myDepth (parent's level).\n gl.stencilFunc(gl.EQUAL, myDepth, 0xff)\n gl.stencilOp(gl.KEEP, gl.KEEP, gl.INCR)\n\n drawMaskShape(gl, container.scene, matrix, cameraMatrix, maskSource, logW, logH, vertBuf, verts)\n\n // ── Content render: test for myDepth+1, protect stencil ──────────────\n gl.colorMask(true, true, true, true)\n gl.stencilFunc(gl.EQUAL, myDepth + 1, 0xff)\n gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP)\n gl.stencilMask(0x00)\n\n renderNext()\n\n // ── Pop: restore parent depth via DECR ────────────────────────────────\n rn.finishBatch()\n\n gl.colorMask(false, false, false, false)\n gl.stencilMask(0xff)\n gl.stencilFunc(gl.EQUAL, myDepth + 1, 0xff)\n gl.stencilOp(gl.KEEP, gl.KEEP, gl.DECR)\n\n drawMaskShape(gl, container.scene, matrix, cameraMatrix, maskSource, logW, logH, vertBuf, verts)\n\n gl.colorMask(true, true, true, true)\n depth.value--\n\n if (myDepth === 0) {\n // Outermost clip: disable stencil test and lift write protection.\n gl.disable(gl.STENCIL_TEST)\n gl.stencilMask(0xff)\n } else {\n // Nested clip: restore the parent's content-render stencil state so\n // remaining siblings of this container are still clipped correctly.\n gl.stencilFunc(gl.EQUAL, myDepth, 0xff)\n gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP)\n gl.stencilMask(0x00)\n }\n }\n\n const handle: StencilClipHandle = {\n update(s) {\n maskSource = mergeMaskState(maskSource, s)\n },\n destroy() {\n if (destroyed) return\n destroyed = true\n gl.deleteBuffer(vertBuf)\n const index = obj._renderSteps.indexOf(wrapper)\n if (index !== -1) obj._renderSteps.splice(index, 1)\n delete obj[STENCIL_HANDLE]\n },\n }\n\n obj.addRenderStep(wrapper, 0)\n obj[STENCIL_HANDLE] = handle\n\n return handle\n}\n"],"names":["Phaser","ensurePrerenderReset","resetFboPatchState","ensureFboPatch","toMaskState","getDepth","drawMaskShape","mergeMaskState"],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import { StencilClipHandle, StencilClipSource } from './stencil-clip-types';
2
+ /**
3
+ * WebGL stencil-buffer clip for Phaser 4 Containers.
4
+ *
5
+ * Supports arbitrary nesting via the INCR/DECR model: each clip level
6
+ * increments the stencil on enter and decrements on exit, so child clips are
7
+ * automatically intersected with their parent clips at the hardware level.
8
+ *
9
+ * Shape variants:
10
+ * - Plain rectangle (cornerRadius omitted or 0)
11
+ * - Rounded rectangle (uniform radius or per-corner object)
12
+ *
13
+ * A single SDF-based shader handles both variants. For plain rectangles
14
+ * u_radii is vec4(0) and the `discard` branch never fires — no overhead
15
+ * compared to a rectangle-only shader.
16
+ *
17
+ * Transforms (translate, scale, rotation) are fully supported: the quad
18
+ * corners are transformed through `container.getWorldTransformMatrix()` at
19
+ * render time, so no per-layout world-position tracking is needed.
20
+ */
21
+ import * as Phaser from 'phaser';
22
+ export { isBitmapStencilClipSource } from './stencil-clip-state';
23
+ export type { StencilBitmapClipSource, StencilBitmapTexture, StencilClipHandle, StencilClipShape, StencilClipSource, StencilClipUpdate, StencilCornerRadius, StencilRoundRectClipSource, } from './stencil-clip-types';
24
+ /** Returns the active stencil clip handle attached to a container, if any. */
25
+ export declare function getStencilClipHandle(container: Phaser.GameObjects.Container): StencilClipHandle | undefined;
26
+ /** Removes any active stencil clip from a container. */
27
+ export declare function clearStencilClip(container: Phaser.GameObjects.Container): void;
28
+ /**
29
+ * Applies a WebGL stencil-buffer clip to a Phaser 4 Container.
30
+ *
31
+ * The clip rectangle is expressed in the container's **local coordinate
32
+ * space**. `offsetX`/`offsetY` mark the top-left corner (default 0/0), so
33
+ * a container whose visual area starts at its local origin can be clipped with
34
+ * `applyStencilClip(container, { width, height })`.
35
+ *
36
+ * **Nesting** is handled transparently: each clip level occupies one stencil
37
+ * value (0 = no clip, 1 = depth 0, 2 = depth 1, …). Child clips are always
38
+ * the intersection of their own shape and all ancestor shapes.
39
+ *
40
+ * **Transforms** (translate, scale, rotation) are re-evaluated from
41
+ * `container.getWorldTransformMatrix()` on every frame, so animated or
42
+ * scroll-driven containers clip correctly without any manual update call.
43
+ *
44
+ * If a stencil clip is already attached to the container, calling this
45
+ * function again calls `handle.update(shape)` on the existing handle and
46
+ * returns it.
47
+ *
48
+ * @param container - The container to clip.
49
+ * @param source - Clip source in the container's local coordinate space.
50
+ * @returns A handle to modify dimensions / corner radii or remove the clip.
51
+ */
52
+ export declare function applyStencilClip(container: Phaser.GameObjects.Container, source: StencilClipSource): StencilClipHandle;
53
+ //# sourceMappingURL=stencil-clip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stencil-clip.d.ts","sourceRoot":"","sources":["../../src/clip/stencil-clip.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAA;AAKhC,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAEhF,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AAChE,YAAY,EACV,uBAAuB,EACvB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,0BAA0B,GAC3B,MAAM,sBAAsB,CAAA;AA8B7B,8EAA8E;AAC9E,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,SAAS,GACtC,iBAAiB,GAAG,SAAS,CAE/B;AAED,wDAAwD;AACxD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,CAE9E;AAID;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,SAAS,EACvC,MAAM,EAAE,iBAAiB,GACxB,iBAAiB,CAmJnB"}
@@ -0,0 +1,122 @@
1
+ import * as Phaser from "phaser";
2
+ import { ensurePrerenderReset, getDepth } from "./stencil-clip-depth.js";
3
+ import { ensureFboPatch, resetFboPatchState } from "./stencil-clip-fbo-bridge.js";
4
+ import { drawMaskShape } from "./stencil-clip-renderer.js";
5
+ import { toMaskState, mergeMaskState } from "./stencil-clip-state.js";
6
+ import { isBitmapStencilClipSource } from "./stencil-clip-state.js";
7
+ const STENCIL_HANDLE = /* @__PURE__ */ Symbol("stencilClipHandle");
8
+ function getStencilClipHandle(container) {
9
+ return container[STENCIL_HANDLE];
10
+ }
11
+ function clearStencilClip(container) {
12
+ getStencilClipHandle(container)?.destroy();
13
+ }
14
+ function applyStencilClip(container, source) {
15
+ const obj = container;
16
+ if (obj[STENCIL_HANDLE]) {
17
+ obj[STENCIL_HANDLE].update(source);
18
+ return obj[STENCIL_HANDLE];
19
+ }
20
+ if (container.scene.renderer.type !== Phaser.WEBGL) {
21
+ return { update() {
22
+ }, destroy() {
23
+ } };
24
+ }
25
+ const renderer = container.scene.renderer;
26
+ const gl = renderer.gl;
27
+ const glWrapper = renderer.glWrapper;
28
+ ensurePrerenderReset(gl, container.scene.game, resetFboPatchState);
29
+ ensureFboPatch(gl);
30
+ const previousArrayBuffer = glWrapper.state?.bindings?.arrayBuffer ?? null;
31
+ const vertBuf = gl.createBuffer();
32
+ gl.bindBuffer(gl.ARRAY_BUFFER, vertBuf);
33
+ gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(16), gl.DYNAMIC_DRAW);
34
+ gl.bindBuffer(gl.ARRAY_BUFFER, null);
35
+ glWrapper.updateBindingsArrayBuffer?.(
36
+ {
37
+ bindings: {
38
+ arrayBuffer: previousArrayBuffer
39
+ }
40
+ },
41
+ true
42
+ );
43
+ const verts = new Float32Array(16);
44
+ let maskSource = toMaskState(source);
45
+ let destroyed = false;
46
+ const wrapper = (webglRenderer, go, drawingContext, parentMatrix, renderStep = 0, displayList, displayListIndex) => {
47
+ const renderNext = () => {
48
+ go.renderWebGLStep(
49
+ webglRenderer,
50
+ go,
51
+ drawingContext,
52
+ parentMatrix,
53
+ renderStep + 1,
54
+ displayList,
55
+ displayListIndex
56
+ );
57
+ };
58
+ if (destroyed) {
59
+ renderNext();
60
+ return;
61
+ }
62
+ const matrix = container.getWorldTransformMatrix();
63
+ const context = drawingContext;
64
+ const cameraMatrix = context.camera?.getViewMatrix(!context.useCanvas);
65
+ const rn = webglRenderer.renderNodes;
66
+ const depth = getDepth(gl);
67
+ const myDepth = depth.value++;
68
+ const logW = webglRenderer.width;
69
+ const logH = webglRenderer.height;
70
+ rn.finishBatch();
71
+ if (myDepth === 0) gl.enable(gl.STENCIL_TEST);
72
+ gl.colorMask(false, false, false, false);
73
+ gl.stencilMask(255);
74
+ gl.stencilFunc(gl.EQUAL, myDepth, 255);
75
+ gl.stencilOp(gl.KEEP, gl.KEEP, gl.INCR);
76
+ drawMaskShape(gl, container.scene, matrix, cameraMatrix, maskSource, logW, logH, vertBuf, verts);
77
+ gl.colorMask(true, true, true, true);
78
+ gl.stencilFunc(gl.EQUAL, myDepth + 1, 255);
79
+ gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP);
80
+ gl.stencilMask(0);
81
+ renderNext();
82
+ rn.finishBatch();
83
+ gl.colorMask(false, false, false, false);
84
+ gl.stencilMask(255);
85
+ gl.stencilFunc(gl.EQUAL, myDepth + 1, 255);
86
+ gl.stencilOp(gl.KEEP, gl.KEEP, gl.DECR);
87
+ drawMaskShape(gl, container.scene, matrix, cameraMatrix, maskSource, logW, logH, vertBuf, verts);
88
+ gl.colorMask(true, true, true, true);
89
+ depth.value--;
90
+ if (myDepth === 0) {
91
+ gl.disable(gl.STENCIL_TEST);
92
+ gl.stencilMask(255);
93
+ } else {
94
+ gl.stencilFunc(gl.EQUAL, myDepth, 255);
95
+ gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP);
96
+ gl.stencilMask(0);
97
+ }
98
+ };
99
+ const handle = {
100
+ update(s) {
101
+ maskSource = mergeMaskState(maskSource, s);
102
+ },
103
+ destroy() {
104
+ if (destroyed) return;
105
+ destroyed = true;
106
+ gl.deleteBuffer(vertBuf);
107
+ const index = obj._renderSteps.indexOf(wrapper);
108
+ if (index !== -1) obj._renderSteps.splice(index, 1);
109
+ delete obj[STENCIL_HANDLE];
110
+ }
111
+ };
112
+ obj.addRenderStep(wrapper, 0);
113
+ obj[STENCIL_HANDLE] = handle;
114
+ return handle;
115
+ }
116
+ export {
117
+ applyStencilClip,
118
+ clearStencilClip,
119
+ getStencilClipHandle,
120
+ isBitmapStencilClipSource
121
+ };
122
+ //# sourceMappingURL=stencil-clip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stencil-clip.js","sources":["../../src/clip/stencil-clip.ts"],"sourcesContent":["/**\n * WebGL stencil-buffer clip for Phaser 4 Containers.\n *\n * Supports arbitrary nesting via the INCR/DECR model: each clip level\n * increments the stencil on enter and decrements on exit, so child clips are\n * automatically intersected with their parent clips at the hardware level.\n *\n * Shape variants:\n * - Plain rectangle (cornerRadius omitted or 0)\n * - Rounded rectangle (uniform radius or per-corner object)\n *\n * A single SDF-based shader handles both variants. For plain rectangles\n * u_radii is vec4(0) and the `discard` branch never fires — no overhead\n * compared to a rectangle-only shader.\n *\n * Transforms (translate, scale, rotation) are fully supported: the quad\n * corners are transformed through `container.getWorldTransformMatrix()` at\n * render time, so no per-layout world-position tracking is needed.\n */\nimport * as Phaser from 'phaser'\nimport { ensurePrerenderReset, getDepth } from './stencil-clip-depth'\nimport { ensureFboPatch, resetFboPatchState } from './stencil-clip-fbo-bridge'\nimport { drawMaskShape, type GLPolyfilled } from './stencil-clip-renderer'\nimport { mergeMaskState, toMaskState } from './stencil-clip-state'\nimport type { StencilClipHandle, StencilClipSource } from './stencil-clip-types'\n\nexport { isBitmapStencilClipSource } from './stencil-clip-state'\nexport type {\n StencilBitmapClipSource,\n StencilBitmapTexture,\n StencilClipHandle,\n StencilClipShape,\n StencilClipSource,\n StencilClipUpdate,\n StencilCornerRadius,\n StencilRoundRectClipSource,\n} from './stencil-clip-types'\n\n// ── Internal Phaser type helpers ──────────────────────────────────────────────\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype ContainerRenderFn = (renderer: any, go: any, ...rest: any[]) => void\n\ntype RNManager = { finishBatch(): void }\ntype CameraLike = {\n getViewMatrix(forceComposite?: boolean): Phaser.GameObjects.Components.TransformMatrix\n}\n\ntype DrawingContextLike = {\n camera?: CameraLike\n useCanvas?: boolean\n}\n\ntype GLWrapperLike = {\n state?: {\n bindings?: {\n arrayBuffer?: unknown\n }\n }\n updateBindingsArrayBuffer?(state: unknown, force?: boolean): void\n}\n\n// ── Attachment symbol ─────────────────────────────────────────────────────────\n\nconst STENCIL_HANDLE = Symbol('stencilClipHandle')\n\n/** Returns the active stencil clip handle attached to a container, if any. */\nexport function getStencilClipHandle(\n container: Phaser.GameObjects.Container\n): StencilClipHandle | undefined {\n return (container as unknown as { [STENCIL_HANDLE]?: StencilClipHandle })[STENCIL_HANDLE]\n}\n\n/** Removes any active stencil clip from a container. */\nexport function clearStencilClip(container: Phaser.GameObjects.Container): void {\n getStencilClipHandle(container)?.destroy()\n}\n\n// ── Public API ────────────────────────────────────────────────────────────────\n\n/**\n * Applies a WebGL stencil-buffer clip to a Phaser 4 Container.\n *\n * The clip rectangle is expressed in the container's **local coordinate\n * space**. `offsetX`/`offsetY` mark the top-left corner (default 0/0), so\n * a container whose visual area starts at its local origin can be clipped with\n * `applyStencilClip(container, { width, height })`.\n *\n * **Nesting** is handled transparently: each clip level occupies one stencil\n * value (0 = no clip, 1 = depth 0, 2 = depth 1, …). Child clips are always\n * the intersection of their own shape and all ancestor shapes.\n *\n * **Transforms** (translate, scale, rotation) are re-evaluated from\n * `container.getWorldTransformMatrix()` on every frame, so animated or\n * scroll-driven containers clip correctly without any manual update call.\n *\n * If a stencil clip is already attached to the container, calling this\n * function again calls `handle.update(shape)` on the existing handle and\n * returns it.\n *\n * @param container - The container to clip.\n * @param source - Clip source in the container's local coordinate space.\n * @returns A handle to modify dimensions / corner radii or remove the clip.\n */\nexport function applyStencilClip(\n container: Phaser.GameObjects.Container,\n source: StencilClipSource\n): StencilClipHandle {\n const obj = container as unknown as {\n _renderSteps: Array<ContainerRenderFn | undefined>\n addRenderStep(fn: ContainerRenderFn, index?: number): Phaser.GameObjects.Container\n [STENCIL_HANDLE]?: StencilClipHandle\n }\n\n // Re-use existing handle if already attached.\n if (obj[STENCIL_HANDLE]) {\n obj[STENCIL_HANDLE].update(source)\n return obj[STENCIL_HANDLE]\n }\n\n // No-op for non-WebGL renderers.\n if (container.scene.renderer.type !== Phaser.WEBGL) {\n return { update() {}, destroy() {} }\n }\n\n const renderer = container.scene.renderer as Phaser.Renderer.WebGL.WebGLRenderer\n const gl = renderer.gl as GLPolyfilled\n const glWrapper = renderer.glWrapper as unknown as GLWrapperLike\n\n ensurePrerenderReset(gl, container.scene.game, resetFboPatchState)\n ensureFboPatch(gl)\n\n // Persistent vertex buffer: 4 vertices × 4 floats × 4 bytes = 64 bytes.\n const previousArrayBuffer = glWrapper.state?.bindings?.arrayBuffer ?? null\n const vertBuf = gl.createBuffer() as WebGLBuffer\n gl.bindBuffer(gl.ARRAY_BUFFER, vertBuf)\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(16), gl.DYNAMIC_DRAW)\n gl.bindBuffer(gl.ARRAY_BUFFER, null)\n // Creating the buffer mutates raw GL state; restore Phaser's cached binding too.\n glWrapper.updateBindingsArrayBuffer?.(\n {\n bindings: {\n arrayBuffer: previousArrayBuffer,\n },\n },\n true\n )\n\n const verts = new Float32Array(16)\n\n let maskSource = toMaskState(source)\n let destroyed = false\n\n const wrapper: ContainerRenderFn = (\n webglRenderer,\n go,\n drawingContext,\n parentMatrix,\n renderStep = 0,\n displayList,\n displayListIndex\n ) => {\n const renderNext = () => {\n go.renderWebGLStep(\n webglRenderer,\n go,\n drawingContext,\n parentMatrix,\n renderStep + 1,\n displayList,\n displayListIndex\n )\n }\n\n if (destroyed) {\n renderNext()\n return\n }\n\n const matrix = container.getWorldTransformMatrix()\n const context = drawingContext as DrawingContextLike\n const cameraMatrix = context.camera?.getViewMatrix(!context.useCanvas)\n const rn = (webglRenderer as unknown as { renderNodes: RNManager }).renderNodes\n const depth = getDepth(gl)\n const myDepth = depth.value++\n\n const logW = webglRenderer.width as number\n const logH = webglRenderer.height as number\n\n // ── Push: write clip shape into stencil buffer ────────────────────────\n rn.finishBatch()\n\n if (myDepth === 0) gl.enable(gl.STENCIL_TEST)\n\n gl.colorMask(false, false, false, false)\n gl.stencilMask(0xff)\n // Write only where the stencil already equals myDepth (parent's level).\n gl.stencilFunc(gl.EQUAL, myDepth, 0xff)\n gl.stencilOp(gl.KEEP, gl.KEEP, gl.INCR)\n\n drawMaskShape(gl, container.scene, matrix, cameraMatrix, maskSource, logW, logH, vertBuf, verts)\n\n // ── Content render: test for myDepth+1, protect stencil ──────────────\n gl.colorMask(true, true, true, true)\n gl.stencilFunc(gl.EQUAL, myDepth + 1, 0xff)\n gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP)\n gl.stencilMask(0x00)\n\n renderNext()\n\n // ── Pop: restore parent depth via DECR ────────────────────────────────\n rn.finishBatch()\n\n gl.colorMask(false, false, false, false)\n gl.stencilMask(0xff)\n gl.stencilFunc(gl.EQUAL, myDepth + 1, 0xff)\n gl.stencilOp(gl.KEEP, gl.KEEP, gl.DECR)\n\n drawMaskShape(gl, container.scene, matrix, cameraMatrix, maskSource, logW, logH, vertBuf, verts)\n\n gl.colorMask(true, true, true, true)\n depth.value--\n\n if (myDepth === 0) {\n // Outermost clip: disable stencil test and lift write protection.\n gl.disable(gl.STENCIL_TEST)\n gl.stencilMask(0xff)\n } else {\n // Nested clip: restore the parent's content-render stencil state so\n // remaining siblings of this container are still clipped correctly.\n gl.stencilFunc(gl.EQUAL, myDepth, 0xff)\n gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP)\n gl.stencilMask(0x00)\n }\n }\n\n const handle: StencilClipHandle = {\n update(s) {\n maskSource = mergeMaskState(maskSource, s)\n },\n destroy() {\n if (destroyed) return\n destroyed = true\n gl.deleteBuffer(vertBuf)\n const index = obj._renderSteps.indexOf(wrapper)\n if (index !== -1) obj._renderSteps.splice(index, 1)\n delete obj[STENCIL_HANDLE]\n },\n }\n\n obj.addRenderStep(wrapper, 0)\n obj[STENCIL_HANDLE] = handle\n\n return handle\n}\n"],"names":[],"mappings":";;;;;;AAgEA,MAAM,wCAAwB,mBAAmB;AAG1C,SAAS,qBACd,WAC+B;AAC/B,SAAQ,UAAkE,cAAc;AAC1F;AAGO,SAAS,iBAAiB,WAA+C;AAC9E,uBAAqB,SAAS,GAAG,QAAA;AACnC;AA4BO,SAAS,iBACd,WACA,QACmB;AACnB,QAAM,MAAM;AAOZ,MAAI,IAAI,cAAc,GAAG;AACvB,QAAI,cAAc,EAAE,OAAO,MAAM;AACjC,WAAO,IAAI,cAAc;AAAA,EAC3B;AAGA,MAAI,UAAU,MAAM,SAAS,SAAS,OAAO,OAAO;AAClD,WAAO,EAAE,SAAS;AAAA,IAAC,GAAG,UAAU;AAAA,IAAC,EAAA;AAAA,EACnC;AAEA,QAAM,WAAW,UAAU,MAAM;AACjC,QAAM,KAAK,SAAS;AACpB,QAAM,YAAY,SAAS;AAE3B,uBAAqB,IAAI,UAAU,MAAM,MAAM,kBAAkB;AACjE,iBAAe,EAAE;AAGjB,QAAM,sBAAsB,UAAU,OAAO,UAAU,eAAe;AACtE,QAAM,UAAU,GAAG,aAAA;AACnB,KAAG,WAAW,GAAG,cAAc,OAAO;AACtC,KAAG,WAAW,GAAG,cAAc,IAAI,aAAa,EAAE,GAAG,GAAG,YAAY;AACpE,KAAG,WAAW,GAAG,cAAc,IAAI;AAEnC,YAAU;AAAA,IACR;AAAA,MACE,UAAU;AAAA,QACR,aAAa;AAAA,MAAA;AAAA,IACf;AAAA,IAEF;AAAA,EAAA;AAGF,QAAM,QAAQ,IAAI,aAAa,EAAE;AAEjC,MAAI,aAAa,YAAY,MAAM;AACnC,MAAI,YAAY;AAEhB,QAAM,UAA6B,CACjC,eACA,IACA,gBACA,cACA,aAAa,GACb,aACA,qBACG;AACH,UAAM,aAAa,MAAM;AACvB,SAAG;AAAA,QACD;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,aAAa;AAAA,QACb;AAAA,QACA;AAAA,MAAA;AAAA,IAEJ;AAEA,QAAI,WAAW;AACb,iBAAA;AACA;AAAA,IACF;AAEA,UAAM,SAAS,UAAU,wBAAA;AACzB,UAAM,UAAU;AAChB,UAAM,eAAe,QAAQ,QAAQ,cAAc,CAAC,QAAQ,SAAS;AACrE,UAAM,KAAM,cAAwD;AACpE,UAAM,QAAQ,SAAS,EAAE;AACzB,UAAM,UAAU,MAAM;AAEtB,UAAM,OAAO,cAAc;AAC3B,UAAM,OAAO,cAAc;AAG3B,OAAG,YAAA;AAEH,QAAI,YAAY,EAAG,IAAG,OAAO,GAAG,YAAY;AAE5C,OAAG,UAAU,OAAO,OAAO,OAAO,KAAK;AACvC,OAAG,YAAY,GAAI;AAEnB,OAAG,YAAY,GAAG,OAAO,SAAS,GAAI;AACtC,OAAG,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI;AAEtC,kBAAc,IAAI,UAAU,OAAO,QAAQ,cAAc,YAAY,MAAM,MAAM,SAAS,KAAK;AAG/F,OAAG,UAAU,MAAM,MAAM,MAAM,IAAI;AACnC,OAAG,YAAY,GAAG,OAAO,UAAU,GAAG,GAAI;AAC1C,OAAG,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI;AACtC,OAAG,YAAY,CAAI;AAEnB,eAAA;AAGA,OAAG,YAAA;AAEH,OAAG,UAAU,OAAO,OAAO,OAAO,KAAK;AACvC,OAAG,YAAY,GAAI;AACnB,OAAG,YAAY,GAAG,OAAO,UAAU,GAAG,GAAI;AAC1C,OAAG,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI;AAEtC,kBAAc,IAAI,UAAU,OAAO,QAAQ,cAAc,YAAY,MAAM,MAAM,SAAS,KAAK;AAE/F,OAAG,UAAU,MAAM,MAAM,MAAM,IAAI;AACnC,UAAM;AAEN,QAAI,YAAY,GAAG;AAEjB,SAAG,QAAQ,GAAG,YAAY;AAC1B,SAAG,YAAY,GAAI;AAAA,IACrB,OAAO;AAGL,SAAG,YAAY,GAAG,OAAO,SAAS,GAAI;AACtC,SAAG,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI;AACtC,SAAG,YAAY,CAAI;AAAA,IACrB;AAAA,EACF;AAEA,QAAM,SAA4B;AAAA,IAChC,OAAO,GAAG;AACR,mBAAa,eAAe,YAAY,CAAC;AAAA,IAC3C;AAAA,IACA,UAAU;AACR,UAAI,UAAW;AACf,kBAAY;AACZ,SAAG,aAAa,OAAO;AACvB,YAAM,QAAQ,IAAI,aAAa,QAAQ,OAAO;AAC9C,UAAI,UAAU,GAAI,KAAI,aAAa,OAAO,OAAO,CAAC;AAClD,aAAO,IAAI,cAAc;AAAA,IAC3B;AAAA,EAAA;AAGF,MAAI,cAAc,SAAS,CAAC;AAC5B,MAAI,cAAc,IAAI;AAEtB,SAAO;AACT;"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ require("../hooks.cjs");
4
+ const theme = require("../theme.cjs");
5
+ const jsxCore = require("@number10/jsx-core");
6
+ function useColorMode() {
7
+ const [colorMode, setColorModeState] = jsxCore.useState(theme.themeRegistry.getColorMode());
8
+ jsxCore.useEffect(() => {
9
+ const unsubscribe = theme.themeRegistry.subscribe(() => {
10
+ setColorModeState(theme.themeRegistry.getColorMode());
11
+ });
12
+ return unsubscribe;
13
+ }, []);
14
+ const setColorMode = (mode) => {
15
+ theme.themeRegistry.setColorMode(mode);
16
+ };
17
+ const toggleColorMode = () => {
18
+ const newMode = colorMode === "light" ? "dark" : "light";
19
+ setColorMode(newMode);
20
+ };
21
+ return {
22
+ colorMode,
23
+ setColorMode,
24
+ toggleColorMode
25
+ };
26
+ }
27
+ exports.useColorMode = useColorMode;
28
+ //# sourceMappingURL=use-color-mode.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-color-mode.cjs","sources":["../../src/colors/use-color-mode.ts"],"sourcesContent":["/**\n * Color mode management for dynamic theme switching\n */\nimport { useEffect, useState } from '../hooks'\nimport { themeRegistry } from '../theme'\n\n/**\n * Hook to manage color mode (light/dark) dynamically\n * @returns Object with current mode, toggle function, and setter\n * @example\n * ```typescript\n * function ThemeToggle() {\n * const { colorMode, toggleColorMode } = useColorMode()\n *\n * return (\n * <Button onClick={toggleColorMode}>\n * {colorMode === 'light' ? 'Dark' : 'Light'} Mode\n * </Button>\n * )\n * }\n * ```\n */\nexport function useColorMode(): {\n colorMode: 'light' | 'dark'\n setColorMode: (mode: 'light' | 'dark') => void\n toggleColorMode: () => void\n} {\n const [colorMode, setColorModeState] = useState<'light' | 'dark'>(themeRegistry.getColorMode())\n\n useEffect(() => {\n // Subscribe to theme registry changes\n const unsubscribe = themeRegistry.subscribe(() => {\n setColorModeState(themeRegistry.getColorMode())\n })\n\n return unsubscribe\n }, [])\n\n const setColorMode = (mode: 'light' | 'dark') => {\n themeRegistry.setColorMode(mode)\n }\n\n const toggleColorMode = () => {\n const newMode = colorMode === 'light' ? 'dark' : 'light'\n setColorMode(newMode)\n }\n\n return {\n colorMode,\n setColorMode,\n toggleColorMode,\n }\n}\n"],"names":["useState","themeRegistry","useEffect"],"mappings":";;;;;AAsBO,SAAS,eAId;AACA,QAAM,CAAC,WAAW,iBAAiB,IAAIA,QAAAA,SAA2BC,MAAAA,cAAc,cAAc;AAE9FC,UAAAA,UAAU,MAAM;AAEd,UAAM,cAAcD,oBAAc,UAAU,MAAM;AAChD,wBAAkBA,MAAAA,cAAc,cAAc;AAAA,IAChD,CAAC;AAED,WAAO;AAAA,EACT,GAAG,CAAA,CAAE;AAEL,QAAM,eAAe,CAAC,SAA2B;AAC/CA,UAAAA,cAAc,aAAa,IAAI;AAAA,EACjC;AAEA,QAAM,kBAAkB,MAAM;AAC5B,UAAM,UAAU,cAAc,UAAU,SAAS;AACjD,iBAAa,OAAO;AAAA,EACtB;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;;"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Hook to manage color mode (light/dark) dynamically
3
+ * @returns Object with current mode, toggle function, and setter
4
+ * @example
5
+ * ```typescript
6
+ * function ThemeToggle() {
7
+ * const { colorMode, toggleColorMode } = useColorMode()
8
+ *
9
+ * return (
10
+ * <Button onClick={toggleColorMode}>
11
+ * {colorMode === 'light' ? 'Dark' : 'Light'} Mode
12
+ * </Button>
13
+ * )
14
+ * }
15
+ * ```
16
+ */
17
+ export declare function useColorMode(): {
18
+ colorMode: 'light' | 'dark';
19
+ setColorMode: (mode: 'light' | 'dark') => void;
20
+ toggleColorMode: () => void;
21
+ };
22
+ //# sourceMappingURL=use-color-mode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-color-mode.d.ts","sourceRoot":"","sources":["../../src/colors/use-color-mode.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,IAAI;IAC9B,SAAS,EAAE,OAAO,GAAG,MAAM,CAAA;IAC3B,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAA;IAC9C,eAAe,EAAE,MAAM,IAAI,CAAA;CAC5B,CA0BA"}
@@ -0,0 +1,28 @@
1
+ import "../hooks.js";
2
+ import { themeRegistry } from "../theme.js";
3
+ import { useState, useEffect } from "@number10/jsx-core";
4
+ function useColorMode() {
5
+ const [colorMode, setColorModeState] = useState(themeRegistry.getColorMode());
6
+ useEffect(() => {
7
+ const unsubscribe = themeRegistry.subscribe(() => {
8
+ setColorModeState(themeRegistry.getColorMode());
9
+ });
10
+ return unsubscribe;
11
+ }, []);
12
+ const setColorMode = (mode) => {
13
+ themeRegistry.setColorMode(mode);
14
+ };
15
+ const toggleColorMode = () => {
16
+ const newMode = colorMode === "light" ? "dark" : "light";
17
+ setColorMode(newMode);
18
+ };
19
+ return {
20
+ colorMode,
21
+ setColorMode,
22
+ toggleColorMode
23
+ };
24
+ }
25
+ export {
26
+ useColorMode
27
+ };
28
+ //# sourceMappingURL=use-color-mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-color-mode.js","sources":["../../src/colors/use-color-mode.ts"],"sourcesContent":["/**\n * Color mode management for dynamic theme switching\n */\nimport { useEffect, useState } from '../hooks'\nimport { themeRegistry } from '../theme'\n\n/**\n * Hook to manage color mode (light/dark) dynamically\n * @returns Object with current mode, toggle function, and setter\n * @example\n * ```typescript\n * function ThemeToggle() {\n * const { colorMode, toggleColorMode } = useColorMode()\n *\n * return (\n * <Button onClick={toggleColorMode}>\n * {colorMode === 'light' ? 'Dark' : 'Light'} Mode\n * </Button>\n * )\n * }\n * ```\n */\nexport function useColorMode(): {\n colorMode: 'light' | 'dark'\n setColorMode: (mode: 'light' | 'dark') => void\n toggleColorMode: () => void\n} {\n const [colorMode, setColorModeState] = useState<'light' | 'dark'>(themeRegistry.getColorMode())\n\n useEffect(() => {\n // Subscribe to theme registry changes\n const unsubscribe = themeRegistry.subscribe(() => {\n setColorModeState(themeRegistry.getColorMode())\n })\n\n return unsubscribe\n }, [])\n\n const setColorMode = (mode: 'light' | 'dark') => {\n themeRegistry.setColorMode(mode)\n }\n\n const toggleColorMode = () => {\n const newMode = colorMode === 'light' ? 'dark' : 'light'\n setColorMode(newMode)\n }\n\n return {\n colorMode,\n setColorMode,\n toggleColorMode,\n }\n}\n"],"names":[],"mappings":";;;AAsBO,SAAS,eAId;AACA,QAAM,CAAC,WAAW,iBAAiB,IAAI,SAA2B,cAAc,cAAc;AAE9F,YAAU,MAAM;AAEd,UAAM,cAAc,cAAc,UAAU,MAAM;AAChD,wBAAkB,cAAc,cAAc;AAAA,IAChD,CAAC;AAED,WAAO;AAAA,EACT,GAAG,CAAA,CAAE;AAEL,QAAM,eAAe,CAAC,SAA2B;AAC/C,kBAAc,aAAa,IAAI;AAAA,EACjC;AAEA,QAAM,kBAAkB,MAAM;AAC5B,UAAM,UAAU,cAAc,UAAU,SAAS;AACjD,iBAAa,OAAO;AAAA,EACtB;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxCore = require("@number10/jsx-core");
4
+ require("../hooks.cjs");
5
+ const theme = require("../theme.cjs");
6
+ function useColors() {
7
+ const localTheme = jsxCore.useTheme();
8
+ const localThemeRef = jsxCore.useRef(localTheme);
9
+ localThemeRef.current = localTheme;
10
+ const [colors, setColors] = jsxCore.useState(
11
+ localTheme?.__colorPreset ? jsxCore.getPresetWithMode(
12
+ localTheme.__colorPreset.name,
13
+ localTheme.__colorPreset.mode ?? "light"
14
+ ).colors : theme.themeRegistry.getColorTokens()
15
+ );
16
+ jsxCore.useEffect(() => {
17
+ const unsubscribe = theme.themeRegistry.subscribe(() => {
18
+ const current = localThemeRef.current;
19
+ if (current?.__colorPreset) {
20
+ const currentMode = theme.themeRegistry.getColorMode();
21
+ const preset = jsxCore.getPresetWithMode(
22
+ current.__colorPreset.name,
23
+ currentMode
24
+ );
25
+ setColors(preset.colors);
26
+ } else {
27
+ setColors(theme.themeRegistry.getColorTokens());
28
+ }
29
+ });
30
+ return unsubscribe;
31
+ }, []);
32
+ return colors;
33
+ }
34
+ function useThemeSubscription() {
35
+ const [, forceUpdate] = jsxCore.useState(0);
36
+ jsxCore.useEffect(() => {
37
+ const unsubscribe = theme.themeRegistry.subscribe(() => {
38
+ forceUpdate((n) => n + 1);
39
+ });
40
+ return unsubscribe;
41
+ }, []);
42
+ }
43
+ exports.useColors = useColors;
44
+ exports.useThemeSubscription = useThemeSubscription;
45
+ //# sourceMappingURL=use-colors.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-colors.cjs","sources":["../../src/colors/use-colors.ts"],"sourcesContent":["/**\n * Color system hooks for component usage\n */\nimport type { ColorTokens } from '@number10/jsx-core'\nimport { getPresetWithMode } from '@number10/jsx-core'\nimport { useEffect, useRef, useState, useTheme } from '../hooks'\nimport { themeRegistry } from '../theme'\n\n/**\n * Hook to access color tokens from theme context\n * Automatically updates when color mode or preset changes\n * @returns Current ColorTokens or undefined\n * @deprecated Use `useThemeTokens()` instead for access to colors, text styles, spacing, and more\n * @example\n * ```typescript\n * // Old way (deprecated):\n * const colors = useColors()\n *\n * // New way:\n * const tokens = useThemeTokens()\n * const colors = tokens?.colors\n * ```\n */\nexport function useColors(): ColorTokens | undefined {\n const localTheme = useTheme()\n\n // Track latest localTheme via ref to avoid re-subscribing on every render\n const localThemeRef = useRef(localTheme)\n localThemeRef.current = localTheme\n\n const [colors, setColors] = useState<ColorTokens | undefined>(\n localTheme?.__colorPreset\n ? getPresetWithMode(\n localTheme.__colorPreset.name as Parameters<typeof getPresetWithMode>[0],\n localTheme.__colorPreset.mode ?? 'light'\n ).colors\n : themeRegistry.getColorTokens()\n )\n\n useEffect(() => {\n const unsubscribe = themeRegistry.subscribe(() => {\n const current = localThemeRef.current\n if (current?.__colorPreset) {\n const currentMode = themeRegistry.getColorMode()\n const preset = getPresetWithMode(\n current.__colorPreset.name as Parameters<typeof getPresetWithMode>[0],\n currentMode\n )\n setColors(preset.colors)\n } else {\n setColors(themeRegistry.getColorTokens())\n }\n })\n return unsubscribe\n }, []) // Subscribe once, read latest theme via ref\n\n return colors\n}\n\n/**\n * Hook to subscribe to theme changes without accessing colors\n * Use this in parent components that don't need colors themselves\n * but want to ensure children re-render when theme changes\n *\n * Note: Since useColors() now triggers re-renders automatically,\n * this hook is mainly useful if you don't need the colors themselves\n * but still want to react to theme changes.\n *\n * @example\n * ```typescript\n * function ParentComponent() {\n * useThemeSubscription() // Children will re-render on theme changes\n * return <ChildThatUsesColors />\n * }\n * ```\n */\nexport function useThemeSubscription(): void {\n const [, forceUpdate] = useState(0)\n\n useEffect(() => {\n const unsubscribe = themeRegistry.subscribe(() => {\n forceUpdate((n) => n + 1)\n })\n return unsubscribe\n }, [])\n}\n"],"names":["useTheme","useRef","useState","getPresetWithMode","themeRegistry","useEffect"],"mappings":";;;;;AAuBO,SAAS,YAAqC;AACnD,QAAM,aAAaA,QAAAA,SAAA;AAGnB,QAAM,gBAAgBC,QAAAA,OAAO,UAAU;AACvC,gBAAc,UAAU;AAExB,QAAM,CAAC,QAAQ,SAAS,IAAIC,QAAAA;AAAAA,IAC1B,YAAY,gBACRC,QAAAA;AAAAA,MACE,WAAW,cAAc;AAAA,MACzB,WAAW,cAAc,QAAQ;AAAA,IAAA,EACjC,SACFC,MAAAA,cAAc,eAAA;AAAA,EAAe;AAGnCC,UAAAA,UAAU,MAAM;AACd,UAAM,cAAcD,oBAAc,UAAU,MAAM;AAChD,YAAM,UAAU,cAAc;AAC9B,UAAI,SAAS,eAAe;AAC1B,cAAM,cAAcA,MAAAA,cAAc,aAAA;AAClC,cAAM,SAASD,QAAAA;AAAAA,UACb,QAAQ,cAAc;AAAA,UACtB;AAAA,QAAA;AAEF,kBAAU,OAAO,MAAM;AAAA,MACzB,OAAO;AACL,kBAAUC,MAAAA,cAAc,gBAAgB;AAAA,MAC1C;AAAA,IACF,CAAC;AACD,WAAO;AAAA,EACT,GAAG,CAAA,CAAE;AAEL,SAAO;AACT;AAmBO,SAAS,uBAA6B;AAC3C,QAAM,GAAG,WAAW,IAAIF,QAAAA,SAAS,CAAC;AAElCG,UAAAA,UAAU,MAAM;AACd,UAAM,cAAcD,oBAAc,UAAU,MAAM;AAChD,kBAAY,CAAC,MAAM,IAAI,CAAC;AAAA,IAC1B,CAAC;AACD,WAAO;AAAA,EACT,GAAG,CAAA,CAAE;AACP;;;"}
@@ -0,0 +1,36 @@
1
+ import { ColorTokens } from '@number10/jsx-core';
2
+ /**
3
+ * Hook to access color tokens from theme context
4
+ * Automatically updates when color mode or preset changes
5
+ * @returns Current ColorTokens or undefined
6
+ * @deprecated Use `useThemeTokens()` instead for access to colors, text styles, spacing, and more
7
+ * @example
8
+ * ```typescript
9
+ * // Old way (deprecated):
10
+ * const colors = useColors()
11
+ *
12
+ * // New way:
13
+ * const tokens = useThemeTokens()
14
+ * const colors = tokens?.colors
15
+ * ```
16
+ */
17
+ export declare function useColors(): ColorTokens | undefined;
18
+ /**
19
+ * Hook to subscribe to theme changes without accessing colors
20
+ * Use this in parent components that don't need colors themselves
21
+ * but want to ensure children re-render when theme changes
22
+ *
23
+ * Note: Since useColors() now triggers re-renders automatically,
24
+ * this hook is mainly useful if you don't need the colors themselves
25
+ * but still want to react to theme changes.
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * function ParentComponent() {
30
+ * useThemeSubscription() // Children will re-render on theme changes
31
+ * return <ChildThatUsesColors />
32
+ * }
33
+ * ```
34
+ */
35
+ export declare function useThemeSubscription(): void;
36
+ //# sourceMappingURL=use-colors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-colors.d.ts","sourceRoot":"","sources":["../../src/colors/use-colors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAKrD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,SAAS,IAAI,WAAW,GAAG,SAAS,CAkCnD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAS3C"}
@@ -0,0 +1,45 @@
1
+ import { useTheme, useRef, useState, getPresetWithMode, useEffect } from "@number10/jsx-core";
2
+ import "../hooks.js";
3
+ import { themeRegistry } from "../theme.js";
4
+ function useColors() {
5
+ const localTheme = useTheme();
6
+ const localThemeRef = useRef(localTheme);
7
+ localThemeRef.current = localTheme;
8
+ const [colors, setColors] = useState(
9
+ localTheme?.__colorPreset ? getPresetWithMode(
10
+ localTheme.__colorPreset.name,
11
+ localTheme.__colorPreset.mode ?? "light"
12
+ ).colors : themeRegistry.getColorTokens()
13
+ );
14
+ useEffect(() => {
15
+ const unsubscribe = themeRegistry.subscribe(() => {
16
+ const current = localThemeRef.current;
17
+ if (current?.__colorPreset) {
18
+ const currentMode = themeRegistry.getColorMode();
19
+ const preset = getPresetWithMode(
20
+ current.__colorPreset.name,
21
+ currentMode
22
+ );
23
+ setColors(preset.colors);
24
+ } else {
25
+ setColors(themeRegistry.getColorTokens());
26
+ }
27
+ });
28
+ return unsubscribe;
29
+ }, []);
30
+ return colors;
31
+ }
32
+ function useThemeSubscription() {
33
+ const [, forceUpdate] = useState(0);
34
+ useEffect(() => {
35
+ const unsubscribe = themeRegistry.subscribe(() => {
36
+ forceUpdate((n) => n + 1);
37
+ });
38
+ return unsubscribe;
39
+ }, []);
40
+ }
41
+ export {
42
+ useColors,
43
+ useThemeSubscription
44
+ };
45
+ //# sourceMappingURL=use-colors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-colors.js","sources":["../../src/colors/use-colors.ts"],"sourcesContent":["/**\n * Color system hooks for component usage\n */\nimport type { ColorTokens } from '@number10/jsx-core'\nimport { getPresetWithMode } from '@number10/jsx-core'\nimport { useEffect, useRef, useState, useTheme } from '../hooks'\nimport { themeRegistry } from '../theme'\n\n/**\n * Hook to access color tokens from theme context\n * Automatically updates when color mode or preset changes\n * @returns Current ColorTokens or undefined\n * @deprecated Use `useThemeTokens()` instead for access to colors, text styles, spacing, and more\n * @example\n * ```typescript\n * // Old way (deprecated):\n * const colors = useColors()\n *\n * // New way:\n * const tokens = useThemeTokens()\n * const colors = tokens?.colors\n * ```\n */\nexport function useColors(): ColorTokens | undefined {\n const localTheme = useTheme()\n\n // Track latest localTheme via ref to avoid re-subscribing on every render\n const localThemeRef = useRef(localTheme)\n localThemeRef.current = localTheme\n\n const [colors, setColors] = useState<ColorTokens | undefined>(\n localTheme?.__colorPreset\n ? getPresetWithMode(\n localTheme.__colorPreset.name as Parameters<typeof getPresetWithMode>[0],\n localTheme.__colorPreset.mode ?? 'light'\n ).colors\n : themeRegistry.getColorTokens()\n )\n\n useEffect(() => {\n const unsubscribe = themeRegistry.subscribe(() => {\n const current = localThemeRef.current\n if (current?.__colorPreset) {\n const currentMode = themeRegistry.getColorMode()\n const preset = getPresetWithMode(\n current.__colorPreset.name as Parameters<typeof getPresetWithMode>[0],\n currentMode\n )\n setColors(preset.colors)\n } else {\n setColors(themeRegistry.getColorTokens())\n }\n })\n return unsubscribe\n }, []) // Subscribe once, read latest theme via ref\n\n return colors\n}\n\n/**\n * Hook to subscribe to theme changes without accessing colors\n * Use this in parent components that don't need colors themselves\n * but want to ensure children re-render when theme changes\n *\n * Note: Since useColors() now triggers re-renders automatically,\n * this hook is mainly useful if you don't need the colors themselves\n * but still want to react to theme changes.\n *\n * @example\n * ```typescript\n * function ParentComponent() {\n * useThemeSubscription() // Children will re-render on theme changes\n * return <ChildThatUsesColors />\n * }\n * ```\n */\nexport function useThemeSubscription(): void {\n const [, forceUpdate] = useState(0)\n\n useEffect(() => {\n const unsubscribe = themeRegistry.subscribe(() => {\n forceUpdate((n) => n + 1)\n })\n return unsubscribe\n }, [])\n}\n"],"names":[],"mappings":";;;AAuBO,SAAS,YAAqC;AACnD,QAAM,aAAa,SAAA;AAGnB,QAAM,gBAAgB,OAAO,UAAU;AACvC,gBAAc,UAAU;AAExB,QAAM,CAAC,QAAQ,SAAS,IAAI;AAAA,IAC1B,YAAY,gBACR;AAAA,MACE,WAAW,cAAc;AAAA,MACzB,WAAW,cAAc,QAAQ;AAAA,IAAA,EACjC,SACF,cAAc,eAAA;AAAA,EAAe;AAGnC,YAAU,MAAM;AACd,UAAM,cAAc,cAAc,UAAU,MAAM;AAChD,YAAM,UAAU,cAAc;AAC9B,UAAI,SAAS,eAAe;AAC1B,cAAM,cAAc,cAAc,aAAA;AAClC,cAAM,SAAS;AAAA,UACb,QAAQ,cAAc;AAAA,UACtB;AAAA,QAAA;AAEF,kBAAU,OAAO,MAAM;AAAA,MACzB,OAAO;AACL,kBAAU,cAAc,gBAAgB;AAAA,MAC1C;AAAA,IACF,CAAC;AACD,WAAO;AAAA,EACT,GAAG,CAAA,CAAE;AAEL,SAAO;AACT;AAmBO,SAAS,uBAA6B;AAC3C,QAAM,GAAG,WAAW,IAAI,SAAS,CAAC;AAElC,YAAU,MAAM;AACd,UAAM,cAAc,cAAc,UAAU,MAAM;AAChD,kBAAY,CAAC,MAAM,IAAI,CAAC;AAAA,IAC1B,CAAC;AACD,WAAO;AAAA,EACT,GAAG,CAAA,CAAE;AACP;"}