fraxel 0.1.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (501) hide show
  1. package/dist/animation/easing.d.ts +29 -0
  2. package/dist/animation/easing.d.ts.map +1 -0
  3. package/dist/animation/easing.js +50 -0
  4. package/dist/animation/easing.js.map +1 -0
  5. package/dist/animation/index.d.ts +7 -0
  6. package/dist/animation/index.d.ts.map +1 -0
  7. package/dist/animation/index.js +7 -0
  8. package/dist/animation/index.js.map +1 -0
  9. package/dist/animation/multiple.d.ts +26 -0
  10. package/dist/animation/multiple.d.ts.map +1 -0
  11. package/dist/animation/multiple.js +27 -0
  12. package/dist/animation/multiple.js.map +1 -0
  13. package/dist/animation/properties.d.ts +30 -0
  14. package/dist/animation/properties.d.ts.map +1 -0
  15. package/dist/animation/properties.js +32 -0
  16. package/dist/animation/properties.js.map +1 -0
  17. package/dist/animation/sequences.d.ts +30 -0
  18. package/dist/animation/sequences.d.ts.map +1 -0
  19. package/dist/animation/sequences.js +50 -0
  20. package/dist/animation/sequences.js.map +1 -0
  21. package/dist/animation/sprite-sheet.d.ts +81 -0
  22. package/dist/animation/sprite-sheet.d.ts.map +1 -0
  23. package/dist/animation/sprite-sheet.js +103 -0
  24. package/dist/animation/sprite-sheet.js.map +1 -0
  25. package/dist/animation/tween.d.ts +78 -0
  26. package/dist/animation/tween.d.ts.map +1 -0
  27. package/dist/animation/tween.js +103 -0
  28. package/dist/animation/tween.js.map +1 -0
  29. package/dist/assets/index.d.ts +6 -0
  30. package/dist/assets/index.d.ts.map +1 -0
  31. package/dist/assets/index.js +5 -0
  32. package/dist/assets/index.js.map +1 -0
  33. package/dist/assets/load-sound.d.ts +17 -0
  34. package/dist/assets/load-sound.d.ts.map +1 -0
  35. package/dist/assets/load-sound.js +35 -0
  36. package/dist/assets/load-sound.js.map +1 -0
  37. package/dist/assets/load-texture.d.ts +12 -0
  38. package/dist/assets/load-texture.d.ts.map +1 -0
  39. package/dist/assets/load-texture.js +40 -0
  40. package/dist/assets/load-texture.js.map +1 -0
  41. package/dist/assets/loader.d.ts +59 -0
  42. package/dist/assets/loader.d.ts.map +1 -0
  43. package/dist/assets/loader.js +65 -0
  44. package/dist/assets/loader.js.map +1 -0
  45. package/dist/assets/texture.d.ts +36 -0
  46. package/dist/assets/texture.d.ts.map +1 -0
  47. package/dist/assets/texture.js +49 -0
  48. package/dist/assets/texture.js.map +1 -0
  49. package/dist/audio/audio-context.d.ts +14 -0
  50. package/dist/audio/audio-context.d.ts.map +1 -0
  51. package/dist/audio/audio-context.js +20 -0
  52. package/dist/audio/audio-context.js.map +1 -0
  53. package/dist/audio/index.d.ts +2 -0
  54. package/dist/audio/index.d.ts.map +1 -0
  55. package/dist/audio/index.js +2 -0
  56. package/dist/audio/index.js.map +1 -0
  57. package/dist/collision/broadphase/spatial-hash.d.ts +32 -0
  58. package/dist/collision/broadphase/spatial-hash.d.ts.map +1 -0
  59. package/dist/collision/broadphase/spatial-hash.js +87 -0
  60. package/dist/collision/broadphase/spatial-hash.js.map +1 -0
  61. package/dist/collision/collision-system.d.ts +52 -0
  62. package/dist/collision/collision-system.d.ts.map +1 -0
  63. package/dist/collision/collision-system.js +278 -0
  64. package/dist/collision/collision-system.js.map +1 -0
  65. package/dist/collision/events/collision-emitter.d.ts +38 -0
  66. package/dist/collision/events/collision-emitter.d.ts.map +1 -0
  67. package/dist/collision/events/collision-emitter.js +47 -0
  68. package/dist/collision/events/collision-emitter.js.map +1 -0
  69. package/dist/collision/index.d.ts +13 -0
  70. package/dist/collision/index.d.ts.map +1 -0
  71. package/dist/collision/index.js +11 -0
  72. package/dist/collision/index.js.map +1 -0
  73. package/dist/collision/narrowphase/detector.d.ts +26 -0
  74. package/dist/collision/narrowphase/detector.d.ts.map +1 -0
  75. package/dist/collision/narrowphase/detector.js +70 -0
  76. package/dist/collision/narrowphase/detector.js.map +1 -0
  77. package/dist/collision/narrowphase/shapes.d.ts +91 -0
  78. package/dist/collision/narrowphase/shapes.d.ts.map +1 -0
  79. package/dist/collision/narrowphase/shapes.js +52 -0
  80. package/dist/collision/narrowphase/shapes.js.map +1 -0
  81. package/dist/collision/physics/physics-body.d.ts +38 -0
  82. package/dist/collision/physics/physics-body.d.ts.map +1 -0
  83. package/dist/collision/physics/physics-body.js +53 -0
  84. package/dist/collision/physics/physics-body.js.map +1 -0
  85. package/dist/collision/physics/physics-system.d.ts +23 -0
  86. package/dist/collision/physics/physics-system.d.ts.map +1 -0
  87. package/dist/collision/physics/physics-system.js +86 -0
  88. package/dist/collision/physics/physics-system.js.map +1 -0
  89. package/dist/collision/physics/resolver.d.ts +16 -0
  90. package/dist/collision/physics/resolver.d.ts.map +1 -0
  91. package/dist/collision/physics/resolver.js +91 -0
  92. package/dist/collision/physics/resolver.js.map +1 -0
  93. package/dist/collision/types.d.ts +22 -0
  94. package/dist/collision/types.d.ts.map +1 -0
  95. package/dist/collision/types.js +2 -0
  96. package/dist/collision/types.js.map +1 -0
  97. package/dist/core/game-config.d.ts +34 -0
  98. package/dist/core/game-config.d.ts.map +1 -0
  99. package/dist/core/game-config.js +31 -0
  100. package/dist/core/game-config.js.map +1 -0
  101. package/dist/core/game.d.ts +86 -0
  102. package/dist/core/game.d.ts.map +1 -0
  103. package/dist/core/game.js +166 -0
  104. package/dist/core/game.js.map +1 -0
  105. package/dist/core/index.d.ts +6 -0
  106. package/dist/core/index.d.ts.map +1 -0
  107. package/dist/core/index.js +6 -0
  108. package/dist/core/index.js.map +1 -0
  109. package/dist/core/scene-manager.d.ts +28 -0
  110. package/dist/core/scene-manager.d.ts.map +1 -0
  111. package/dist/core/scene-manager.js +65 -0
  112. package/dist/core/scene-manager.js.map +1 -0
  113. package/dist/core/scene.d.ts +43 -0
  114. package/dist/core/scene.d.ts.map +1 -0
  115. package/dist/core/scene.js +48 -0
  116. package/dist/core/scene.js.map +1 -0
  117. package/dist/core/theme.d.ts +63 -0
  118. package/dist/core/theme.d.ts.map +1 -0
  119. package/dist/core/theme.js +59 -0
  120. package/dist/core/theme.js.map +1 -0
  121. package/dist/errors/animation.d.ts +24 -0
  122. package/dist/errors/animation.d.ts.map +1 -0
  123. package/dist/errors/animation.js +29 -0
  124. package/dist/errors/animation.js.map +1 -0
  125. package/dist/errors/assets.d.ts +34 -0
  126. package/dist/errors/assets.d.ts.map +1 -0
  127. package/dist/errors/assets.js +41 -0
  128. package/dist/errors/assets.js.map +1 -0
  129. package/dist/errors/base.d.ts +12 -0
  130. package/dist/errors/base.d.ts.map +1 -0
  131. package/dist/errors/base.js +15 -0
  132. package/dist/errors/base.js.map +1 -0
  133. package/dist/errors/env.d.ts +24 -0
  134. package/dist/errors/env.d.ts.map +1 -0
  135. package/dist/errors/env.js +29 -0
  136. package/dist/errors/env.js.map +1 -0
  137. package/dist/errors/hook.d.ts +46 -0
  138. package/dist/errors/hook.d.ts.map +1 -0
  139. package/dist/errors/hook.js +55 -0
  140. package/dist/errors/hook.js.map +1 -0
  141. package/dist/errors/index.d.ts +11 -0
  142. package/dist/errors/index.d.ts.map +1 -0
  143. package/dist/errors/index.js +11 -0
  144. package/dist/errors/index.js.map +1 -0
  145. package/dist/errors/jsx.d.ts +26 -0
  146. package/dist/errors/jsx.d.ts.map +1 -0
  147. package/dist/errors/jsx.js +45 -0
  148. package/dist/errors/jsx.js.map +1 -0
  149. package/dist/errors/lifecycle.d.ts +35 -0
  150. package/dist/errors/lifecycle.d.ts.map +1 -0
  151. package/dist/errors/lifecycle.js +42 -0
  152. package/dist/errors/lifecycle.js.map +1 -0
  153. package/dist/errors/math.d.ts +24 -0
  154. package/dist/errors/math.d.ts.map +1 -0
  155. package/dist/errors/math.js +34 -0
  156. package/dist/errors/math.js.map +1 -0
  157. package/dist/errors/node.d.ts +68 -0
  158. package/dist/errors/node.d.ts.map +1 -0
  159. package/dist/errors/node.js +87 -0
  160. package/dist/errors/node.js.map +1 -0
  161. package/dist/errors/scene.d.ts +35 -0
  162. package/dist/errors/scene.d.ts.map +1 -0
  163. package/dist/errors/scene.js +42 -0
  164. package/dist/errors/scene.js.map +1 -0
  165. package/dist/events/event.d.ts +106 -0
  166. package/dist/events/event.d.ts.map +1 -0
  167. package/dist/events/event.js +125 -0
  168. package/dist/events/event.js.map +1 -0
  169. package/dist/events/index.d.ts +2 -0
  170. package/dist/events/index.d.ts.map +1 -0
  171. package/dist/events/index.js +2 -0
  172. package/dist/events/index.js.map +1 -0
  173. package/dist/events/types.d.ts +20 -0
  174. package/dist/events/types.d.ts.map +1 -0
  175. package/dist/events/types.js +2 -0
  176. package/dist/events/types.js.map +1 -0
  177. package/dist/hooks/context.d.ts +15 -0
  178. package/dist/hooks/context.d.ts.map +1 -0
  179. package/dist/hooks/context.js +26 -0
  180. package/dist/hooks/context.js.map +1 -0
  181. package/dist/hooks/deriveds/by-nodes/index.d.ts +7 -0
  182. package/dist/hooks/deriveds/by-nodes/index.d.ts.map +1 -0
  183. package/dist/hooks/deriveds/by-nodes/index.js +7 -0
  184. package/dist/hooks/deriveds/by-nodes/index.js.map +1 -0
  185. package/dist/hooks/deriveds/by-nodes/use-animation.d.ts +44 -0
  186. package/dist/hooks/deriveds/by-nodes/use-animation.d.ts.map +1 -0
  187. package/dist/hooks/deriveds/by-nodes/use-animation.js +61 -0
  188. package/dist/hooks/deriveds/by-nodes/use-animation.js.map +1 -0
  189. package/dist/hooks/deriveds/by-nodes/use-audio.d.ts +33 -0
  190. package/dist/hooks/deriveds/by-nodes/use-audio.d.ts.map +1 -0
  191. package/dist/hooks/deriveds/by-nodes/use-audio.js +43 -0
  192. package/dist/hooks/deriveds/by-nodes/use-audio.js.map +1 -0
  193. package/dist/hooks/deriveds/by-nodes/use-clickable.d.ts +32 -0
  194. package/dist/hooks/deriveds/by-nodes/use-clickable.d.ts.map +1 -0
  195. package/dist/hooks/deriveds/by-nodes/use-clickable.js +43 -0
  196. package/dist/hooks/deriveds/by-nodes/use-clickable.js.map +1 -0
  197. package/dist/hooks/deriveds/by-nodes/use-collider.d.ts +35 -0
  198. package/dist/hooks/deriveds/by-nodes/use-collider.d.ts.map +1 -0
  199. package/dist/hooks/deriveds/by-nodes/use-collider.js +55 -0
  200. package/dist/hooks/deriveds/by-nodes/use-collider.js.map +1 -0
  201. package/dist/hooks/deriveds/by-nodes/use-ray-cast.d.ts +35 -0
  202. package/dist/hooks/deriveds/by-nodes/use-ray-cast.d.ts.map +1 -0
  203. package/dist/hooks/deriveds/by-nodes/use-ray-cast.js +47 -0
  204. package/dist/hooks/deriveds/by-nodes/use-ray-cast.js.map +1 -0
  205. package/dist/hooks/deriveds/by-nodes/use-timer.d.ts +34 -0
  206. package/dist/hooks/deriveds/by-nodes/use-timer.d.ts.map +1 -0
  207. package/dist/hooks/deriveds/by-nodes/use-timer.js +48 -0
  208. package/dist/hooks/deriveds/by-nodes/use-timer.js.map +1 -0
  209. package/dist/hooks/deriveds/index.d.ts +5 -0
  210. package/dist/hooks/deriveds/index.d.ts.map +1 -0
  211. package/dist/hooks/deriveds/index.js +5 -0
  212. package/dist/hooks/deriveds/index.js.map +1 -0
  213. package/dist/hooks/deriveds/use-condition.d.ts +37 -0
  214. package/dist/hooks/deriveds/use-condition.d.ts.map +1 -0
  215. package/dist/hooks/deriveds/use-condition.js +47 -0
  216. package/dist/hooks/deriveds/use-condition.js.map +1 -0
  217. package/dist/hooks/deriveds/use-match.d.ts +26 -0
  218. package/dist/hooks/deriveds/use-match.d.ts.map +1 -0
  219. package/dist/hooks/deriveds/use-match.js +38 -0
  220. package/dist/hooks/deriveds/use-match.js.map +1 -0
  221. package/dist/hooks/deriveds/use-partial-node.d.ts +22 -0
  222. package/dist/hooks/deriveds/use-partial-node.d.ts.map +1 -0
  223. package/dist/hooks/deriveds/use-partial-node.js +25 -0
  224. package/dist/hooks/deriveds/use-partial-node.js.map +1 -0
  225. package/dist/hooks/deriveds/use-when.d.ts +28 -0
  226. package/dist/hooks/deriveds/use-when.d.ts.map +1 -0
  227. package/dist/hooks/deriveds/use-when.js +35 -0
  228. package/dist/hooks/deriveds/use-when.js.map +1 -0
  229. package/dist/hooks/index.d.ts +16 -0
  230. package/dist/hooks/index.d.ts.map +1 -0
  231. package/dist/hooks/index.js +16 -0
  232. package/dist/hooks/index.js.map +1 -0
  233. package/dist/hooks/use-child.d.ts +24 -0
  234. package/dist/hooks/use-child.d.ts.map +1 -0
  235. package/dist/hooks/use-child.js +37 -0
  236. package/dist/hooks/use-child.js.map +1 -0
  237. package/dist/hooks/use-computed.d.ts +28 -0
  238. package/dist/hooks/use-computed.d.ts.map +1 -0
  239. package/dist/hooks/use-computed.js +41 -0
  240. package/dist/hooks/use-computed.js.map +1 -0
  241. package/dist/hooks/use-context.d.ts +58 -0
  242. package/dist/hooks/use-context.d.ts.map +1 -0
  243. package/dist/hooks/use-context.js +77 -0
  244. package/dist/hooks/use-context.js.map +1 -0
  245. package/dist/hooks/use-effect.d.ts +24 -0
  246. package/dist/hooks/use-effect.d.ts.map +1 -0
  247. package/dist/hooks/use-effect.js +63 -0
  248. package/dist/hooks/use-effect.js.map +1 -0
  249. package/dist/hooks/use-event.d.ts +29 -0
  250. package/dist/hooks/use-event.d.ts.map +1 -0
  251. package/dist/hooks/use-event.js +30 -0
  252. package/dist/hooks/use-event.js.map +1 -0
  253. package/dist/hooks/use-game.d.ts +17 -0
  254. package/dist/hooks/use-game.d.ts.map +1 -0
  255. package/dist/hooks/use-game.js +35 -0
  256. package/dist/hooks/use-game.js.map +1 -0
  257. package/dist/hooks/use-mount.d.ts +21 -0
  258. package/dist/hooks/use-mount.d.ts.map +1 -0
  259. package/dist/hooks/use-mount.js +33 -0
  260. package/dist/hooks/use-mount.js.map +1 -0
  261. package/dist/hooks/use-node.d.ts +42 -0
  262. package/dist/hooks/use-node.d.ts.map +1 -0
  263. package/dist/hooks/use-node.js +63 -0
  264. package/dist/hooks/use-node.js.map +1 -0
  265. package/dist/hooks/use-ref.d.ts +27 -0
  266. package/dist/hooks/use-ref.d.ts.map +1 -0
  267. package/dist/hooks/use-ref.js +33 -0
  268. package/dist/hooks/use-ref.js.map +1 -0
  269. package/dist/hooks/use-script.d.ts +33 -0
  270. package/dist/hooks/use-script.d.ts.map +1 -0
  271. package/dist/hooks/use-script.js +40 -0
  272. package/dist/hooks/use-script.js.map +1 -0
  273. package/dist/hooks/use-signal.d.ts +25 -0
  274. package/dist/hooks/use-signal.d.ts.map +1 -0
  275. package/dist/hooks/use-signal.js +36 -0
  276. package/dist/hooks/use-signal.js.map +1 -0
  277. package/dist/hooks/use-spawn.d.ts +27 -0
  278. package/dist/hooks/use-spawn.d.ts.map +1 -0
  279. package/dist/hooks/use-spawn.js +39 -0
  280. package/dist/hooks/use-spawn.js.map +1 -0
  281. package/dist/hooks/use-trigger.d.ts +51 -0
  282. package/dist/hooks/use-trigger.d.ts.map +1 -0
  283. package/dist/hooks/use-trigger.js +68 -0
  284. package/dist/hooks/use-trigger.js.map +1 -0
  285. package/dist/index.d.ts +11 -0
  286. package/dist/index.d.ts.map +1 -0
  287. package/dist/index.js +11 -0
  288. package/dist/index.js.map +1 -0
  289. package/dist/input/input.d.ts +46 -0
  290. package/dist/input/input.d.ts.map +1 -0
  291. package/dist/input/input.js +159 -0
  292. package/dist/input/input.js.map +1 -0
  293. package/dist/jsx/components/fragment.d.ts +3 -0
  294. package/dist/jsx/components/fragment.d.ts.map +1 -0
  295. package/dist/jsx/components/fragment.js +7 -0
  296. package/dist/jsx/components/fragment.js.map +1 -0
  297. package/dist/jsx/components/game.d.ts +21 -0
  298. package/dist/jsx/components/game.d.ts.map +1 -0
  299. package/dist/jsx/components/game.js +17 -0
  300. package/dist/jsx/components/game.js.map +1 -0
  301. package/dist/jsx/components/index.d.ts +5 -0
  302. package/dist/jsx/components/index.d.ts.map +1 -0
  303. package/dist/jsx/components/index.js +5 -0
  304. package/dist/jsx/components/index.js.map +1 -0
  305. package/dist/jsx/components/list.d.ts +88 -0
  306. package/dist/jsx/components/list.d.ts.map +1 -0
  307. package/dist/jsx/components/list.js +93 -0
  308. package/dist/jsx/components/list.js.map +1 -0
  309. package/dist/jsx/components/scene.d.ts +40 -0
  310. package/dist/jsx/components/scene.d.ts.map +1 -0
  311. package/dist/jsx/components/scene.js +20 -0
  312. package/dist/jsx/components/scene.js.map +1 -0
  313. package/dist/jsx/index.d.ts +5 -0
  314. package/dist/jsx/index.d.ts.map +1 -0
  315. package/dist/jsx/index.js +5 -0
  316. package/dist/jsx/index.js.map +1 -0
  317. package/dist/jsx/jsx.d.ts +3 -0
  318. package/dist/jsx/jsx.d.ts.map +1 -0
  319. package/dist/jsx/jsx.js +4 -0
  320. package/dist/jsx/jsx.js.map +1 -0
  321. package/dist/jsx/render/game.d.ts +41 -0
  322. package/dist/jsx/render/game.d.ts.map +1 -0
  323. package/dist/jsx/render/game.js +86 -0
  324. package/dist/jsx/render/game.js.map +1 -0
  325. package/dist/jsx/render/index.d.ts +3 -0
  326. package/dist/jsx/render/index.d.ts.map +1 -0
  327. package/dist/jsx/render/index.js +3 -0
  328. package/dist/jsx/render/index.js.map +1 -0
  329. package/dist/jsx/render/to-nodes.d.ts +10 -0
  330. package/dist/jsx/render/to-nodes.d.ts.map +1 -0
  331. package/dist/jsx/render/to-nodes.js +52 -0
  332. package/dist/jsx/render/to-nodes.js.map +1 -0
  333. package/dist/jsx/render/types/class-component.d.ts +4 -0
  334. package/dist/jsx/render/types/class-component.d.ts.map +1 -0
  335. package/dist/jsx/render/types/class-component.js +8 -0
  336. package/dist/jsx/render/types/class-component.js.map +1 -0
  337. package/dist/jsx/render/types/func-components.d.ts +4 -0
  338. package/dist/jsx/render/types/func-components.d.ts.map +1 -0
  339. package/dist/jsx/render/types/func-components.js +8 -0
  340. package/dist/jsx/render/types/func-components.js.map +1 -0
  341. package/dist/jsx/render/types/instrinsic-elements.d.ts +6 -0
  342. package/dist/jsx/render/types/instrinsic-elements.d.ts.map +1 -0
  343. package/dist/jsx/render/types/instrinsic-elements.js +41 -0
  344. package/dist/jsx/render/types/instrinsic-elements.js.map +1 -0
  345. package/dist/jsx/types.d.ts +41 -0
  346. package/dist/jsx/types.d.ts.map +1 -0
  347. package/dist/jsx/types.js +2 -0
  348. package/dist/jsx/types.js.map +1 -0
  349. package/dist/jsx/utils.d.ts +4 -0
  350. package/dist/jsx/utils.d.ts.map +1 -0
  351. package/dist/jsx/utils.js +15 -0
  352. package/dist/jsx/utils.js.map +1 -0
  353. package/dist/jsx-runtime.d.ts +6 -0
  354. package/dist/jsx-runtime.d.ts.map +1 -0
  355. package/dist/jsx-runtime.js +6 -0
  356. package/dist/jsx-runtime.js.map +1 -0
  357. package/dist/math/index.d.ts +3 -0
  358. package/dist/math/index.d.ts.map +1 -0
  359. package/dist/math/index.js +2 -0
  360. package/dist/math/index.js.map +1 -0
  361. package/dist/math/types.d.ts +13 -0
  362. package/dist/math/types.d.ts.map +1 -0
  363. package/dist/math/types.js +2 -0
  364. package/dist/math/types.js.map +1 -0
  365. package/dist/math/vector2.d.ts +145 -0
  366. package/dist/math/vector2.d.ts.map +1 -0
  367. package/dist/math/vector2.js +164 -0
  368. package/dist/math/vector2.js.map +1 -0
  369. package/dist/nodes/_node.d.ts +283 -0
  370. package/dist/nodes/_node.d.ts.map +1 -0
  371. package/dist/nodes/_node.js +371 -0
  372. package/dist/nodes/_node.js.map +1 -0
  373. package/dist/nodes/animation-player.d.ts +208 -0
  374. package/dist/nodes/animation-player.d.ts.map +1 -0
  375. package/dist/nodes/animation-player.js +249 -0
  376. package/dist/nodes/animation-player.js.map +1 -0
  377. package/dist/nodes/audio-player.d.ts +128 -0
  378. package/dist/nodes/audio-player.d.ts.map +1 -0
  379. package/dist/nodes/audio-player.js +173 -0
  380. package/dist/nodes/audio-player.js.map +1 -0
  381. package/dist/nodes/group.d.ts +55 -0
  382. package/dist/nodes/group.d.ts.map +1 -0
  383. package/dist/nodes/group.js +54 -0
  384. package/dist/nodes/group.js.map +1 -0
  385. package/dist/nodes/index.d.ts +8 -0
  386. package/dist/nodes/index.d.ts.map +1 -0
  387. package/dist/nodes/index.js +7 -0
  388. package/dist/nodes/index.js.map +1 -0
  389. package/dist/nodes/lib/enum.d.ts +42 -0
  390. package/dist/nodes/lib/enum.d.ts.map +1 -0
  391. package/dist/nodes/lib/enum.js +43 -0
  392. package/dist/nodes/lib/enum.js.map +1 -0
  393. package/dist/nodes/lib/index.d.ts +5 -0
  394. package/dist/nodes/lib/index.d.ts.map +1 -0
  395. package/dist/nodes/lib/index.js +5 -0
  396. package/dist/nodes/lib/index.js.map +1 -0
  397. package/dist/nodes/lib/registry.d.ts +43 -0
  398. package/dist/nodes/lib/registry.d.ts.map +1 -0
  399. package/dist/nodes/lib/registry.js +46 -0
  400. package/dist/nodes/lib/registry.js.map +1 -0
  401. package/dist/nodes/lib/types.d.ts +89 -0
  402. package/dist/nodes/lib/types.d.ts.map +1 -0
  403. package/dist/nodes/lib/types.js +2 -0
  404. package/dist/nodes/lib/types.js.map +1 -0
  405. package/dist/nodes/lib/utils.d.ts +35 -0
  406. package/dist/nodes/lib/utils.d.ts.map +1 -0
  407. package/dist/nodes/lib/utils.js +58 -0
  408. package/dist/nodes/lib/utils.js.map +1 -0
  409. package/dist/nodes/node2d/_node2d.d.ts +59 -0
  410. package/dist/nodes/node2d/_node2d.d.ts.map +1 -0
  411. package/dist/nodes/node2d/_node2d.js +57 -0
  412. package/dist/nodes/node2d/_node2d.js.map +1 -0
  413. package/dist/nodes/node2d/camera.d.ts +64 -0
  414. package/dist/nodes/node2d/camera.d.ts.map +1 -0
  415. package/dist/nodes/node2d/camera.js +72 -0
  416. package/dist/nodes/node2d/camera.js.map +1 -0
  417. package/dist/nodes/node2d/clickable.d.ts +96 -0
  418. package/dist/nodes/node2d/clickable.d.ts.map +1 -0
  419. package/dist/nodes/node2d/clickable.js +117 -0
  420. package/dist/nodes/node2d/clickable.js.map +1 -0
  421. package/dist/nodes/node2d/collider.d.ts +96 -0
  422. package/dist/nodes/node2d/collider.d.ts.map +1 -0
  423. package/dist/nodes/node2d/collider.js +116 -0
  424. package/dist/nodes/node2d/collider.js.map +1 -0
  425. package/dist/nodes/node2d/index.d.ts +12 -0
  426. package/dist/nodes/node2d/index.d.ts.map +1 -0
  427. package/dist/nodes/node2d/index.js +11 -0
  428. package/dist/nodes/node2d/index.js.map +1 -0
  429. package/dist/nodes/node2d/lib/index.d.ts +2 -0
  430. package/dist/nodes/node2d/lib/index.d.ts.map +1 -0
  431. package/dist/nodes/node2d/lib/index.js +2 -0
  432. package/dist/nodes/node2d/lib/index.js.map +1 -0
  433. package/dist/nodes/node2d/lib/utils.d.ts +4 -0
  434. package/dist/nodes/node2d/lib/utils.d.ts.map +1 -0
  435. package/dist/nodes/node2d/lib/utils.js +14 -0
  436. package/dist/nodes/node2d/lib/utils.js.map +1 -0
  437. package/dist/nodes/node2d/ray-cast.d.ts +115 -0
  438. package/dist/nodes/node2d/ray-cast.d.ts.map +1 -0
  439. package/dist/nodes/node2d/ray-cast.js +129 -0
  440. package/dist/nodes/node2d/ray-cast.js.map +1 -0
  441. package/dist/nodes/node2d/rectangle.d.ts +87 -0
  442. package/dist/nodes/node2d/rectangle.d.ts.map +1 -0
  443. package/dist/nodes/node2d/rectangle.js +60 -0
  444. package/dist/nodes/node2d/rectangle.js.map +1 -0
  445. package/dist/nodes/node2d/rigid-body.d.ts +65 -0
  446. package/dist/nodes/node2d/rigid-body.d.ts.map +1 -0
  447. package/dist/nodes/node2d/rigid-body.js +56 -0
  448. package/dist/nodes/node2d/rigid-body.js.map +1 -0
  449. package/dist/nodes/node2d/sprite.d.ts +285 -0
  450. package/dist/nodes/node2d/sprite.d.ts.map +1 -0
  451. package/dist/nodes/node2d/sprite.js +226 -0
  452. package/dist/nodes/node2d/sprite.js.map +1 -0
  453. package/dist/nodes/node2d/text.d.ts +62 -0
  454. package/dist/nodes/node2d/text.d.ts.map +1 -0
  455. package/dist/nodes/node2d/text.js +52 -0
  456. package/dist/nodes/node2d/text.js.map +1 -0
  457. package/dist/nodes/node2d/transform.d.ts +32 -0
  458. package/dist/nodes/node2d/transform.d.ts.map +1 -0
  459. package/dist/nodes/node2d/transform.js +30 -0
  460. package/dist/nodes/node2d/transform.js.map +1 -0
  461. package/dist/nodes/timer.d.ts +107 -0
  462. package/dist/nodes/timer.d.ts.map +1 -0
  463. package/dist/nodes/timer.js +108 -0
  464. package/dist/nodes/timer.js.map +1 -0
  465. package/dist/reactivity/index.d.ts +5 -0
  466. package/dist/reactivity/index.d.ts.map +1 -0
  467. package/dist/reactivity/index.js +5 -0
  468. package/dist/reactivity/index.js.map +1 -0
  469. package/dist/reactivity/reactive.d.ts +4 -0
  470. package/dist/reactivity/reactive.d.ts.map +1 -0
  471. package/dist/reactivity/reactive.js +50 -0
  472. package/dist/reactivity/reactive.js.map +1 -0
  473. package/dist/reactivity/register.d.ts +7 -0
  474. package/dist/reactivity/register.d.ts.map +1 -0
  475. package/dist/reactivity/register.js +18 -0
  476. package/dist/reactivity/register.js.map +1 -0
  477. package/dist/reactivity/signal.d.ts +126 -0
  478. package/dist/reactivity/signal.d.ts.map +1 -0
  479. package/dist/reactivity/signal.js +152 -0
  480. package/dist/reactivity/signal.js.map +1 -0
  481. package/dist/reactivity/types.d.ts +31 -0
  482. package/dist/reactivity/types.d.ts.map +1 -0
  483. package/dist/reactivity/types.js +2 -0
  484. package/dist/reactivity/types.js.map +1 -0
  485. package/dist/scripts/index.d.ts +2 -0
  486. package/dist/scripts/index.d.ts.map +1 -0
  487. package/dist/scripts/index.js +2 -0
  488. package/dist/scripts/index.js.map +1 -0
  489. package/dist/scripts/script.d.ts +80 -0
  490. package/dist/scripts/script.d.ts.map +1 -0
  491. package/dist/scripts/script.js +75 -0
  492. package/dist/scripts/script.js.map +1 -0
  493. package/dist/utils/dpr.d.ts +2 -0
  494. package/dist/utils/dpr.d.ts.map +1 -0
  495. package/dist/utils/dpr.js +14 -0
  496. package/dist/utils/dpr.js.map +1 -0
  497. package/dist/utils/ternaries.d.ts +6 -0
  498. package/dist/utils/ternaries.d.ts.map +1 -0
  499. package/dist/utils/ternaries.js +17 -0
  500. package/dist/utils/ternaries.js.map +1 -0
  501. package/package.json +56 -0
@@ -0,0 +1,29 @@
1
+ import { Event } from '../events/event.js';
2
+ import type { Fun } from '../events/types.js';
3
+ import type { PrimaryNode } from '../nodes/lib/enum.js';
4
+ import type { NodeInstances } from '../nodes/lib/types.js';
5
+ import type { NodeReference } from './use-node.js';
6
+ /**
7
+ * The **`useEvent`** hook subscribes to an event on a node reference.
8
+ *
9
+ * @param node A `NodeReference` to the node that emits the event
10
+ * @param eventName The name of the event to subscribe to
11
+ * @param listener The callback function to call when the event is emitted
12
+ *
13
+ * @example
14
+ * ```tsx
15
+ * const sprite = useNode(PrimaryNode.Sprite)
16
+ *
17
+ * useEvent(sprite, 'started', () => {
18
+ * console.log('Sprite started!')
19
+ * })
20
+ *
21
+ * return <sprite ref={sprite} />
22
+ * ```
23
+ */
24
+ export declare function useEvent<N extends PrimaryNode, K extends keyof Events<N>>(node: NodeReference<N>, eventName: K, listener: Events<N>[K]): void;
25
+ export type GetEvent<T> = T extends Event<infer P, string> ? Fun<P> : Fun<[]>;
26
+ export type Events<T extends PrimaryNode> = {
27
+ [P in keyof NodeInstances[T] as NodeInstances[T][P] extends Event<any[], string> ? P : never]: GetEvent<NodeInstances[T][P]>;
28
+ };
29
+ //# sourceMappingURL=use-event.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-event.d.ts","sourceRoot":"","sources":["../../src/hooks/use-event.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAE1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAElD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,MAAM,MAAM,CAAC,CAAC,CAAC,EACvE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EACtB,SAAS,EAAE,CAAC,EACZ,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAOvB;AAED,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAA;AAE7E,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,WAAW,IAAI;KAExC,CAAC,IAAI,MAAM,aAAa,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,GAC1F,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACjC,CAAA"}
@@ -0,0 +1,30 @@
1
+ import { InvalidEventInHookError } from '../errors/hook.js';
2
+ import { Event } from '../events/event.js';
3
+ import { pushEffect } from './context.js';
4
+ /**
5
+ * The **`useEvent`** hook subscribes to an event on a node reference.
6
+ *
7
+ * @param node A `NodeReference` to the node that emits the event
8
+ * @param eventName The name of the event to subscribe to
9
+ * @param listener The callback function to call when the event is emitted
10
+ *
11
+ * @example
12
+ * ```tsx
13
+ * const sprite = useNode(PrimaryNode.Sprite)
14
+ *
15
+ * useEvent(sprite, 'started', () => {
16
+ * console.log('Sprite started!')
17
+ * })
18
+ *
19
+ * return <sprite ref={sprite} />
20
+ * ```
21
+ */
22
+ export function useEvent(node, eventName, listener) {
23
+ pushEffect('useEvent', () => {
24
+ const ev = node.node[eventName];
25
+ if (!(ev instanceof Event))
26
+ throw new InvalidEventInHookError('useEvent', eventName);
27
+ ev.on(listener);
28
+ });
29
+ }
30
+ //# sourceMappingURL=use-event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-event.js","sourceRoot":"","sources":["../../src/hooks/use-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAI1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAGzC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,QAAQ,CACtB,IAAsB,EACtB,SAAY,EACZ,QAAsB;IAEtB,UAAU,CAAC,UAAU,EAAE,GAAG,EAAE;QAC1B,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAC/B,IAAI,CAAC,CAAC,EAAE,YAAY,KAAK,CAAC;YAAE,MAAM,IAAI,uBAAuB,CAAC,UAAU,EAAE,SAAmB,CAAC,CAAA;QAC9F,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { GameControls } from '../jsx/render/game.js';
2
+ /**
3
+ * The **`useGame`** hooks gets the game controls.
4
+ *
5
+ * @example
6
+ * ```tsx
7
+ * const game = useGame()
8
+ *
9
+ * const handleStart = () => {
10
+ * game.pause()
11
+ * }
12
+ *
13
+ * return <transform onStart={handleStart} />
14
+ * ```
15
+ */
16
+ export declare function useGame(): GameControls;
17
+ //# sourceMappingURL=use-game.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-game.d.ts","sourceRoot":"","sources":["../../src/hooks/use-game.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAIzD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,OAAO,IAAI,YAAY,CAgBtC"}
@@ -0,0 +1,35 @@
1
+ import { GameConfig } from '../core/game-config.js';
2
+ import { Game } from '../core/game.js';
3
+ import { Vector2 } from '../math/vector2.js';
4
+ import { pushEffect } from './context.js';
5
+ /**
6
+ * The **`useGame`** hooks gets the game controls.
7
+ *
8
+ * @example
9
+ * ```tsx
10
+ * const game = useGame()
11
+ *
12
+ * const handleStart = () => {
13
+ * game.pause()
14
+ * }
15
+ *
16
+ * return <transform onStart={handleStart} />
17
+ * ```
18
+ */
19
+ export function useGame() {
20
+ pushEffect('useGame', () => { });
21
+ return {
22
+ play: () => Game.play(),
23
+ pause: () => Game.pause(),
24
+ changeScene: (name) => {
25
+ return Game.sceneManager.setScene(name);
26
+ },
27
+ preloadScene: (name) => {
28
+ return Game.sceneManager.preloadScene(name);
29
+ },
30
+ getSize() {
31
+ return new Vector2(GameConfig.width, GameConfig.height);
32
+ },
33
+ };
34
+ }
35
+ //# sourceMappingURL=use-game.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-game.js","sourceRoot":"","sources":["../../src/hooks/use-game.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAEtC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,OAAO;IACrB,UAAU,CAAC,SAAS,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IAE/B,OAAO;QACL,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE;QACvB,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE;QACzB,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE;YACpB,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACzC,CAAC;QACD,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE;YACrB,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;QAC7C,CAAC;QACD,OAAO;YACL,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;QACzD,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * The **`useMount`** hook runs a function when the node starts.
3
+ * If the function returns a cleanup function, it runs when the node is destroyed.
4
+ * Does not re-run on signal changes — only on mount and unmount.
5
+ *
6
+ * @param fn The function to run on mount. Can return a cleanup function that runs on destroy.
7
+ *
8
+ * @example
9
+ * ```tsx
10
+ * useMount(() => {
11
+ * console.log('Node mounted')
12
+ * return () => {
13
+ * console.log('Node destroyed')
14
+ * }
15
+ * })
16
+ *
17
+ * return <transform />
18
+ * ```
19
+ */
20
+ export declare function useMount(fn: () => void | (() => void)): void;
21
+ //# sourceMappingURL=use-mount.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-mount.d.ts","sourceRoot":"","sources":["../../src/hooks/use-mount.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAU5D"}
@@ -0,0 +1,33 @@
1
+ import { pushEffect } from './context.js';
2
+ /**
3
+ * The **`useMount`** hook runs a function when the node starts.
4
+ * If the function returns a cleanup function, it runs when the node is destroyed.
5
+ * Does not re-run on signal changes — only on mount and unmount.
6
+ *
7
+ * @param fn The function to run on mount. Can return a cleanup function that runs on destroy.
8
+ *
9
+ * @example
10
+ * ```tsx
11
+ * useMount(() => {
12
+ * console.log('Node mounted')
13
+ * return () => {
14
+ * console.log('Node destroyed')
15
+ * }
16
+ * })
17
+ *
18
+ * return <transform />
19
+ * ```
20
+ */
21
+ export function useMount(fn) {
22
+ pushEffect('useMount', (nodes) => {
23
+ if (nodes.length < 0)
24
+ return;
25
+ const node = nodes[0];
26
+ node.started.on(() => {
27
+ const unmount = fn();
28
+ if (unmount)
29
+ node.destroyed.on(() => unmount());
30
+ });
31
+ });
32
+ }
33
+ //# sourceMappingURL=use-mount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-mount.js","sourceRoot":"","sources":["../../src/hooks/use-mount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,QAAQ,CAAC,EAA6B;IACpD,UAAU,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE;QAC/B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,OAAM;QAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAA;QAEtB,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE;YACnB,MAAM,OAAO,GAAG,EAAE,EAAE,CAAA;YACpB,IAAI,OAAO;gBAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAA;QACjD,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { PrimaryNode } from '../nodes/lib/enum.js';
2
+ import { type NodeInstances } from '../nodes/lib/types.js';
3
+ import type { SignalGetter } from '../reactivity/types.js';
4
+ /**
5
+ * The **`useNode`** hook creates a reference to a node of the specified type.
6
+ * The reference can be passed to a node's `ref` prop to get a reference to it.
7
+ *
8
+ * @param type The type of node to reference
9
+ * @returns A `NodeReference` that will be populated when the node is mounted
10
+ *
11
+ * @example
12
+ * ```tsx
13
+ * const sprite = useNode(PrimaryNode.Sprite)
14
+ *
15
+ * return (
16
+ * <transform>
17
+ * <sprite ref={sprite} />
18
+ * </transform>
19
+ * )
20
+ * ```
21
+ *
22
+ * @example
23
+ * ```tsx
24
+ * const transform = useNode(PrimaryNode.Transform)
25
+ * const spawn = useSpawn(transform)
26
+ *
27
+ * return (
28
+ * <transform ref={transform}>
29
+ * <clickable onClick={() => spawn(<sprite />)} />
30
+ * </transform>
31
+ * )
32
+ * ```
33
+ */
34
+ export declare function useNode<T extends PrimaryNode>(type: T): NodeReference<T>;
35
+ export declare class NodeReference<T extends PrimaryNode> {
36
+ #private;
37
+ set node(node: NodeInstances[T]);
38
+ get node(): NodeInstances[T];
39
+ signal: SignalGetter<NodeInstances[T] | null>;
40
+ constructor(type: T);
41
+ }
42
+ //# sourceMappingURL=use-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-node.d.ts","sourceRoot":"","sources":["../../src/hooks/use-node.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAE1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAG1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAKxE;AAED,qBAAa,aAAa,CAAC,CAAC,SAAS,WAAW;;IAI9C,IAAI,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EAK9B;IACD,IAAI,IAAI,IANO,aAAa,CAAC,CAAC,CAAC,CAW9B;IACD,MAAM,EAAE,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;gBAEjC,IAAI,EAAE,CAAC;CAIpB"}
@@ -0,0 +1,63 @@
1
+ import { NodeNotInitializedError } from '../errors/lifecycle.js';
2
+ import { NodeTypeMismatchError } from '../errors/node.js';
3
+ import { PrimaryNode } from '../nodes/lib/enum.js';
4
+ import {} from '../nodes/lib/types.js';
5
+ import { Signal } from '../reactivity/signal.js';
6
+ import { pushEffect } from './context.js';
7
+ /**
8
+ * The **`useNode`** hook creates a reference to a node of the specified type.
9
+ * The reference can be passed to a node's `ref` prop to get a reference to it.
10
+ *
11
+ * @param type The type of node to reference
12
+ * @returns A `NodeReference` that will be populated when the node is mounted
13
+ *
14
+ * @example
15
+ * ```tsx
16
+ * const sprite = useNode(PrimaryNode.Sprite)
17
+ *
18
+ * return (
19
+ * <transform>
20
+ * <sprite ref={sprite} />
21
+ * </transform>
22
+ * )
23
+ * ```
24
+ *
25
+ * @example
26
+ * ```tsx
27
+ * const transform = useNode(PrimaryNode.Transform)
28
+ * const spawn = useSpawn(transform)
29
+ *
30
+ * return (
31
+ * <transform ref={transform}>
32
+ * <clickable onClick={() => spawn(<sprite />)} />
33
+ * </transform>
34
+ * )
35
+ * ```
36
+ */
37
+ export function useNode(type) {
38
+ pushEffect('useNode', () => { });
39
+ const nodeRef = new NodeReference(type);
40
+ return nodeRef;
41
+ }
42
+ export class NodeReference {
43
+ #type;
44
+ #node = new Signal(null);
45
+ set node(node) {
46
+ if (node.type !== this.#type) {
47
+ throw new NodeTypeMismatchError(this.#type, node.type);
48
+ }
49
+ this.#node.value = node;
50
+ }
51
+ get node() {
52
+ if (this.#node.value == null) {
53
+ throw new NodeNotInitializedError(this.#type);
54
+ }
55
+ return this.#node.value;
56
+ }
57
+ signal;
58
+ constructor(type) {
59
+ this.#type = type;
60
+ this.signal = this.#node.getter;
61
+ }
62
+ }
63
+ //# sourceMappingURL=use-node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-node.js","sourceRoot":"","sources":["../../src/hooks/use-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAsB,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,UAAU,OAAO,CAAwB,IAAO;IACpD,UAAU,CAAC,SAAS,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IAC/B,MAAM,OAAO,GAAG,IAAI,aAAa,CAAI,IAAI,CAAC,CAAA;IAE1C,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,OAAO,aAAa;IACxB,KAAK,CAAG;IACR,KAAK,GAAG,IAAI,MAAM,CAA0B,IAAI,CAAC,CAAA;IAEjD,IAAI,IAAI,CAAC,IAAsB;QAC7B,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;YAC7B,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QACxD,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAA;IACzB,CAAC;IACD,IAAI,IAAI;QACN,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;YAC7B,MAAM,IAAI,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC/C,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAA;IACzB,CAAC;IACD,MAAM,CAAuC;IAE7C,YAAY,IAAO;QACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAA;IACjC,CAAC;CACF"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * The **`Reference`** class holds a mutable value that persists across renders.
3
+ */
4
+ export declare class Reference<T> {
5
+ constructor(value: T);
6
+ current: T;
7
+ }
8
+ /**
9
+ * The **`useRef`** hook creates a mutable reference that persists across renders.
10
+ *
11
+ * @param value The initial value
12
+ * @returns A `Reference` object with a mutable `current` property
13
+ *
14
+ * @example
15
+ * ```tsx
16
+ * const count = useRef(0)
17
+ *
18
+ * const handleClick = () => {
19
+ * count.current++
20
+ * console.log(count.current)
21
+ * }
22
+ *
23
+ * return <clickable onClick={handleClick} />
24
+ * ```
25
+ */
26
+ export declare function useRef<T>(value: T): Reference<T>;
27
+ //# sourceMappingURL=use-ref.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-ref.d.ts","sourceRoot":"","sources":["../../src/hooks/use-ref.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,qBAAa,SAAS,CAAC,CAAC;gBACV,KAAK,EAAE,CAAC;IAIpB,OAAO,EAAE,CAAC,CAAA;CACX;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,gBAGjC"}
@@ -0,0 +1,33 @@
1
+ import { pushEffect } from './context';
2
+ /**
3
+ * The **`Reference`** class holds a mutable value that persists across renders.
4
+ */
5
+ export class Reference {
6
+ constructor(value) {
7
+ this.current = value;
8
+ }
9
+ current;
10
+ }
11
+ /**
12
+ * The **`useRef`** hook creates a mutable reference that persists across renders.
13
+ *
14
+ * @param value The initial value
15
+ * @returns A `Reference` object with a mutable `current` property
16
+ *
17
+ * @example
18
+ * ```tsx
19
+ * const count = useRef(0)
20
+ *
21
+ * const handleClick = () => {
22
+ * count.current++
23
+ * console.log(count.current)
24
+ * }
25
+ *
26
+ * return <clickable onClick={handleClick} />
27
+ * ```
28
+ */
29
+ export function useRef(value) {
30
+ pushEffect('useRef', () => { });
31
+ return new Reference(value);
32
+ }
33
+ //# sourceMappingURL=use-ref.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-ref.js","sourceRoot":"","sources":["../../src/hooks/use-ref.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAEtC;;GAEG;AACH,MAAM,OAAO,SAAS;IACpB,YAAY,KAAQ;QAClB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;IACtB,CAAC;IAED,OAAO,CAAG;CACX;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,MAAM,CAAI,KAAQ;IAChC,UAAU,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IAC9B,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,CAAA;AAC7B,CAAC"}
@@ -0,0 +1,33 @@
1
+ import type { PrimaryNode } from '../nodes';
2
+ import type { DinixScript } from '../scripts';
3
+ import type { NodeReference } from './use-node';
4
+ /**
5
+ * The **`useScript`** hook retrieves the script attached to a node reference.
6
+ *
7
+ * @param node A `NodeReference` to the node that has the script
8
+ * @returns A `SignalGetter` containing the script instance
9
+ *
10
+ * @example
11
+ * ```tsx
12
+ * function Player() {
13
+ * const sprite = useNode(PrimaryNode.Sprite)
14
+ * const script = useScript<PlayerScript>(sprite)
15
+ *
16
+ * const handleStart = () => {
17
+ * console.log(script()) // The script instance
18
+ * }
19
+ *
20
+ * return <sprite ref={sprite} onStart={handleStart} script={new PlayerScript()} />
21
+ * }
22
+ *
23
+ * class PlayerScript extends DinixScript<PrimaryNode.Sprite> {
24
+ * health = 100
25
+ *
26
+ * setup() {
27
+ * // Do something...
28
+ * }
29
+ * }
30
+ * ```
31
+ */
32
+ export declare function useScript<T extends DinixScript<PrimaryNode>>(node: NodeReference<PrimaryNode>): import("..").SignalGetter<T | undefined>;
33
+ //# sourceMappingURL=use-script.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-script.d.ts","sourceRoot":"","sources":["../../src/hooks/use-script.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAE7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAI/C;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,WAAW,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,WAAW,CAAC,4CAU7F"}
@@ -0,0 +1,40 @@
1
+ import { pushEffect } from './context';
2
+ import { useEffect } from './use-effect';
3
+ import { Signal } from '../reactivity';
4
+ /**
5
+ * The **`useScript`** hook retrieves the script attached to a node reference.
6
+ *
7
+ * @param node A `NodeReference` to the node that has the script
8
+ * @returns A `SignalGetter` containing the script instance
9
+ *
10
+ * @example
11
+ * ```tsx
12
+ * function Player() {
13
+ * const sprite = useNode(PrimaryNode.Sprite)
14
+ * const script = useScript<PlayerScript>(sprite)
15
+ *
16
+ * const handleStart = () => {
17
+ * console.log(script()) // The script instance
18
+ * }
19
+ *
20
+ * return <sprite ref={sprite} onStart={handleStart} script={new PlayerScript()} />
21
+ * }
22
+ *
23
+ * class PlayerScript extends DinixScript<PrimaryNode.Sprite> {
24
+ * health = 100
25
+ *
26
+ * setup() {
27
+ * // Do something...
28
+ * }
29
+ * }
30
+ * ```
31
+ */
32
+ export function useScript(node) {
33
+ pushEffect('useScript', () => { });
34
+ const script = new Signal(undefined);
35
+ useEffect(() => {
36
+ script.value = node.signal()?.script;
37
+ });
38
+ return script.getter;
39
+ }
40
+ //# sourceMappingURL=use-script.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-script.js","sourceRoot":"","sources":["../../src/hooks/use-script.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAEtC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAEtC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,SAAS,CAAqC,IAAgC;IAC5F,UAAU,CAAC,WAAW,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IAEjC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAgB,SAAS,CAAC,CAAA;IAEnD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,MAAW,CAAA;IAC3C,CAAC,CAAC,CAAA;IAEF,OAAO,MAAM,CAAC,MAAM,CAAA;AACtB,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { SignalGetter, SignalSetter } from '../reactivity/types.js';
2
+ /**
3
+ * The **`useSignal`** hook creates a reactive signal with an initial value.
4
+ * The signal will notify subscribers when its value changes.
5
+ *
6
+ * @param initialValue The initial value of the signal
7
+ * @returns A tuple to [get, set] the value.
8
+ *
9
+ * @example
10
+ * ```tsx
11
+ * const [count, setCount] = useSignal(0)
12
+ *
13
+ * const handleClick = () => {
14
+ * setCount(count() + 1)
15
+ * }
16
+ *
17
+ * useEffect(() => {
18
+ * console.log('Count:', count())
19
+ * })
20
+ *
21
+ * return <clickable onClick={handleClick} />
22
+ * ```
23
+ */
24
+ export declare function useSignal<T>(initialValue: T): [SignalGetter<T>, SignalSetter<T>];
25
+ //# sourceMappingURL=use-signal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-signal.d.ts","sourceRoot":"","sources":["../../src/hooks/use-signal.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAGxE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAYhF"}
@@ -0,0 +1,36 @@
1
+ import { Signal } from '../reactivity/signal.js';
2
+ import { pushEffect } from './context.js';
3
+ /**
4
+ * The **`useSignal`** hook creates a reactive signal with an initial value.
5
+ * The signal will notify subscribers when its value changes.
6
+ *
7
+ * @param initialValue The initial value of the signal
8
+ * @returns A tuple to [get, set] the value.
9
+ *
10
+ * @example
11
+ * ```tsx
12
+ * const [count, setCount] = useSignal(0)
13
+ *
14
+ * const handleClick = () => {
15
+ * setCount(count() + 1)
16
+ * }
17
+ *
18
+ * useEffect(() => {
19
+ * console.log('Count:', count())
20
+ * })
21
+ *
22
+ * return <clickable onClick={handleClick} />
23
+ * ```
24
+ */
25
+ export function useSignal(initialValue) {
26
+ pushEffect('useSignal', ([node]) => {
27
+ if (node == null)
28
+ return;
29
+ node.destroyed.on(() => signal.clearSubs());
30
+ });
31
+ const signal = new Signal(initialValue);
32
+ const getter = signal.getter;
33
+ const setter = signal.setter;
34
+ return [getter, setter];
35
+ }
36
+ //# sourceMappingURL=use-signal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-signal.js","sourceRoot":"","sources":["../../src/hooks/use-signal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,SAAS,CAAI,YAAe;IAC1C,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE;QACjC,IAAI,IAAI,IAAI,IAAI;YAAE,OAAM;QACxB,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,CAAA;IAEvC,MAAM,MAAM,GAAoB,MAAM,CAAC,MAAM,CAAA;IAC7C,MAAM,MAAM,GAAoB,MAAM,CAAC,MAAM,CAAA;IAE7C,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AACzB,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { Dinix } from '../jsx/types.js';
2
+ import type { PrimaryNode } from '../nodes/lib/enum.js';
3
+ import type { NodeReference } from './use-node.js';
4
+ /**
5
+ * The **`useSpawn`** hook returns a function that can spawn nodes as children of the specified node.
6
+ *
7
+ * @param node A `NodeReference` to the node that will be the parent of spawned nodes
8
+ * @returns A function that accepts JSX nodes and adds them as children
9
+ *
10
+ * @example
11
+ * ```tsx
12
+ * const container = useNode(PrimaryNode.Transform)
13
+ * const spawn = useSpawn(container)
14
+ *
15
+ * const handleClick = () => {
16
+ * spawn(<sprite />)
17
+ * }
18
+ *
19
+ * return (
20
+ * <transform ref={container}>
21
+ * <clickable onClick={handleClick} />
22
+ * </transform>
23
+ * )
24
+ * ```
25
+ */
26
+ export declare function useSpawn<T extends PrimaryNode>(node: NodeReference<T>): (jsx: Dinix.Node) => void;
27
+ //# sourceMappingURL=use-spawn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-spawn.d.ts","sourceRoot":"","sources":["../../src/hooks/use-spawn.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAEvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAElD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,SAGhD,KAAK,CAAC,IAAI,UAgB/B"}
@@ -0,0 +1,39 @@
1
+ import { renderToNodes } from '../jsx/index.js';
2
+ import { currentContext, pushEffect } from './context.js';
3
+ /**
4
+ * The **`useSpawn`** hook returns a function that can spawn nodes as children of the specified node.
5
+ *
6
+ * @param node A `NodeReference` to the node that will be the parent of spawned nodes
7
+ * @returns A function that accepts JSX nodes and adds them as children
8
+ *
9
+ * @example
10
+ * ```tsx
11
+ * const container = useNode(PrimaryNode.Transform)
12
+ * const spawn = useSpawn(container)
13
+ *
14
+ * const handleClick = () => {
15
+ * spawn(<sprite />)
16
+ * }
17
+ *
18
+ * return (
19
+ * <transform ref={container}>
20
+ * <clickable onClick={handleClick} />
21
+ * </transform>
22
+ * )
23
+ * ```
24
+ */
25
+ export function useSpawn(node) {
26
+ const oldCtx = currentContext.slice();
27
+ const spawn = (jsx) => {
28
+ const currentCtx = currentContext.slice();
29
+ currentContext.length = 0;
30
+ currentContext.push(...oldCtx);
31
+ const nodes = renderToNodes(jsx);
32
+ node.node.addChild(...nodes);
33
+ currentContext.length = 0;
34
+ currentContext.push(...currentCtx);
35
+ };
36
+ pushEffect('useSpawn', () => { });
37
+ return spawn;
38
+ }
39
+ //# sourceMappingURL=use-spawn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-spawn.js","sourceRoot":"","sources":["../../src/hooks/use-spawn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAG/C,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAGzD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,QAAQ,CAAwB,IAAsB;IACpE,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,CAAA;IAErC,MAAM,KAAK,GAAG,CAAC,GAAe,EAAE,EAAE;QAChC,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,EAAE,CAAA;QAEzC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAA;QACzB,cAAc,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAA;QAE9B,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;QAChC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,CAAA;QAE5B,cAAc,CAAC,MAAM,GAAG,CAAC,CAAA;QACzB,cAAc,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAA;IACpC,CAAC,CAAA;IAED,UAAU,CAAC,UAAU,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IAEhC,OAAO,KAAK,CAAA;AACd,CAAC"}