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,115 @@
1
+ import { Event } from '../../events/event.js';
2
+ import { Vector2, type VectorLike } from '../../math/vector2.js';
3
+ import { PrimaryNode } from '../lib/enum.js';
4
+ import { Node2D, type Node2DOptions } from './_node2d.js';
5
+ import type { Collider } from './collider.js';
6
+ import type { Reactive } from '../../reactivity/types.js';
7
+ export interface RayCastOptions extends Node2DOptions<PrimaryNode.RayCast> {
8
+ /**
9
+ * The **`direction`** property defines the relative point from the raycast origin.
10
+ * The origin is the node's position in the game world.
11
+ *
12
+ * @example
13
+ * ```tsx
14
+ * // 3 units to the right
15
+ * <ray-cast direction={new Vector2(3, 0)} ... />
16
+ *
17
+ * // 2 units to the left
18
+ * <ray-cast direction={new Vector2(-2, 0)} ... />
19
+ *
20
+ * // 3 units right and 3 units up (diagonal)
21
+ * <ray-cast direction={new Vector2(3, 3)} ... />
22
+ * ```
23
+ */
24
+ direction: Reactive<VectorLike>;
25
+ /**
26
+ * The **`collidesWith`** property defines which groups this raycast can interact with.
27
+ *
28
+ * @example
29
+ * ```tsx
30
+ * <ray-cast direction={...} collidesWith={['enemy', 'obstacle']} ... />
31
+ * ```
32
+ */
33
+ collidesWith: string[];
34
+ }
35
+ /**
36
+ * The **`RayCast`** node projects a ray from its position in a direction and detects the first collider it hits.
37
+ * It supports both rectangle and circle collider shapes and emits events when the detected collider changes.
38
+ *
39
+ * @example
40
+ * ```tsx
41
+ * import { useNode, useEvent } from 'dinix/hooks'
42
+ * import { PrimaryNode } from 'dinix/nodes/enum'
43
+ *
44
+ * function Gun() {
45
+ * const ray = useNode(PrimaryNode.RayCast)
46
+ *
47
+ * useEvent(ray, 'colliderEnter', (collider) => {
48
+ * console.log('Hit:', collider)
49
+ * })
50
+ *
51
+ * return (
52
+ * <ray-cast
53
+ * ref={ray}
54
+ * direction={new Vector2(100, 0)}
55
+ * collidesWith={['enemy']}
56
+ * />
57
+ * )
58
+ * }
59
+ * ```
60
+ */
61
+ export declare class RayCast extends Node2D<PrimaryNode.RayCast> {
62
+ #private;
63
+ /**
64
+ * The **`direction`** property defines the relative endpoint of the raycast from its origin.
65
+ */
66
+ direction: Vector2;
67
+ _detectedCollider: Collider | null;
68
+ constructor(options: RayCastOptions);
69
+ /**
70
+ * The read-only **`collidesWith`** property returns the groups this raycast detects.
71
+ */
72
+ get collidesWith(): string[];
73
+ /**
74
+ * The read-only **`length`** property returns the length of the raycast direction vector.
75
+ *
76
+ * @example
77
+ * ```ts
78
+ * // Ray pointing 5 units right, 12 units up
79
+ * const length = ray.length // 13
80
+ * ```
81
+ */
82
+ get length(): number;
83
+ /**
84
+ * The **`colliderEntered`** event fires when a new collider is hit by this raycast.
85
+ */
86
+ colliderEntered: Event<[_collider: Collider], "colliderEnter">;
87
+ /**
88
+ * The **`colliderExited`** event fires when the previously hit collider is no longer in range.
89
+ */
90
+ colliderExited: Event<[_collider: Collider], "colliderExit">;
91
+ /**
92
+ * The **`getCollider`** method returns the currently detected collider, or `null` if none is in range.
93
+ * @returns The detected `Collider` or `null`.
94
+ *
95
+ * @example
96
+ * ```ts
97
+ * useEvent(ray, 'colliderEnter', () => {
98
+ * const target = ray.node.getCollider()
99
+ * if (target) {
100
+ * console.log('Target found at:', target.globalPosition)
101
+ * }
102
+ * })
103
+ * ```
104
+ */
105
+ getCollider(): Collider | null;
106
+ /** @internal Registers this raycast with the collision system. */
107
+ start(): void;
108
+ /** @internal Draws the raycast direction for debugging. */
109
+ draw(delta: number): void;
110
+ /** @internal Updates the raycast each frame. */
111
+ update(delta: number): void;
112
+ /** @internal Unregisters this raycast from the collision system. */
113
+ destroy(): void;
114
+ }
115
+ //# sourceMappingURL=ray-cast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ray-cast.d.ts","sourceRoot":"","sources":["../../../src/nodes/node2d/ray-cast.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAC7C,OAAO,EAAE,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAA;AAGzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAGzD,MAAM,WAAW,cAAe,SAAQ,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC;IACxE;;;;;;;;;;;;;;;OAeG;IACH,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAA;IAC/B;;;;;;;OAOG;IACH,YAAY,EAAE,MAAM,EAAE,CAAA;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,OAAQ,SAAQ,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC;;IACtD;;OAEG;IACH,SAAS,EAAE,OAAO,CAAA;IAIlB,iBAAiB,EAAE,QAAQ,GAAG,IAAI,CAAO;gBAE7B,OAAO,EAAE,cAAc;IAOnC;;OAEG;IACH,IAAI,YAAY,aAEf;IAED;;;;;;;;OAQG;IACH,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED;;OAEG;IACH,eAAe,gDAA0D;IAEzE;;OAEG;IACH,cAAc,+CAAyD;IAEvE;;;;;;;;;;;;;OAaG;IACH,WAAW,IAAI,QAAQ,GAAG,IAAI;IAI9B,kEAAkE;IAClE,KAAK,IAAI,IAAI;IAKb,2DAA2D;IAC3D,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAkCzB,gDAAgD;IAChD,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI3B,oEAAoE;IACpE,OAAO,IAAI,IAAI;CAIhB"}
@@ -0,0 +1,129 @@
1
+ import { GameConfig } from '../../core/game-config.js';
2
+ import { Event } from '../../events/event.js';
3
+ import { Vector2, vectorize } from '../../math/vector2.js';
4
+ import { PrimaryNode } from '../lib/enum.js';
5
+ import { Node2D } from './_node2d.js';
6
+ import { Nodes } from '../lib/registry.js';
7
+ import { CollisionSystem } from '../../collision/collision-system.js';
8
+ import { applySignal, propSignal } from '../../utils/ternaries.js';
9
+ /**
10
+ * The **`RayCast`** node projects a ray from its position in a direction and detects the first collider it hits.
11
+ * It supports both rectangle and circle collider shapes and emits events when the detected collider changes.
12
+ *
13
+ * @example
14
+ * ```tsx
15
+ * import { useNode, useEvent } from 'dinix/hooks'
16
+ * import { PrimaryNode } from 'dinix/nodes/enum'
17
+ *
18
+ * function Gun() {
19
+ * const ray = useNode(PrimaryNode.RayCast)
20
+ *
21
+ * useEvent(ray, 'colliderEnter', (collider) => {
22
+ * console.log('Hit:', collider)
23
+ * })
24
+ *
25
+ * return (
26
+ * <ray-cast
27
+ * ref={ray}
28
+ * direction={new Vector2(100, 0)}
29
+ * collidesWith={['enemy']}
30
+ * />
31
+ * )
32
+ * }
33
+ * ```
34
+ */
35
+ export class RayCast extends Node2D {
36
+ /**
37
+ * The **`direction`** property defines the relative endpoint of the raycast from its origin.
38
+ */
39
+ direction;
40
+ #collidesWith;
41
+ _detectedCollider = null;
42
+ constructor(options) {
43
+ super(PrimaryNode.RayCast, options);
44
+ this.direction = propSignal(this, 'direction', applySignal(options.direction, vectorize));
45
+ this.#collidesWith = Array.from(new Set(options.collidesWith));
46
+ }
47
+ /**
48
+ * The read-only **`collidesWith`** property returns the groups this raycast detects.
49
+ */
50
+ get collidesWith() {
51
+ return this.#collidesWith;
52
+ }
53
+ /**
54
+ * The read-only **`length`** property returns the length of the raycast direction vector.
55
+ *
56
+ * @example
57
+ * ```ts
58
+ * // Ray pointing 5 units right, 12 units up
59
+ * const length = ray.length // 13
60
+ * ```
61
+ */
62
+ get length() {
63
+ return Math.sqrt(this.direction.x ** 2 + this.direction.y ** 2);
64
+ }
65
+ /**
66
+ * The **`colliderEntered`** event fires when a new collider is hit by this raycast.
67
+ */
68
+ colliderEntered = new Event('colliderEnter', (_collider) => { });
69
+ /**
70
+ * The **`colliderExited`** event fires when the previously hit collider is no longer in range.
71
+ */
72
+ colliderExited = new Event('colliderExit', (_collider) => { });
73
+ /**
74
+ * The **`getCollider`** method returns the currently detected collider, or `null` if none is in range.
75
+ * @returns The detected `Collider` or `null`.
76
+ *
77
+ * @example
78
+ * ```ts
79
+ * useEvent(ray, 'colliderEnter', () => {
80
+ * const target = ray.node.getCollider()
81
+ * if (target) {
82
+ * console.log('Target found at:', target.globalPosition)
83
+ * }
84
+ * })
85
+ * ```
86
+ */
87
+ getCollider() {
88
+ return this._detectedCollider;
89
+ }
90
+ /** @internal Registers this raycast with the collision system. */
91
+ start() {
92
+ CollisionSystem.registerRaycast(this);
93
+ super.start();
94
+ }
95
+ /** @internal Draws the raycast direction for debugging. */
96
+ draw(delta) {
97
+ if (GameConfig.testOptions.showRayCasts) {
98
+ const endX = this.position.x + this.direction.x;
99
+ const endY = this.position.y + this.direction.y;
100
+ GameConfig.ctx.fillStyle = '#b83c3c55';
101
+ GameConfig.ctx.strokeStyle = '#b83c3c55';
102
+ GameConfig.ctx.lineWidth = 1;
103
+ GameConfig.ctx.beginPath();
104
+ GameConfig.ctx.moveTo(this.position.x, this.position.y);
105
+ GameConfig.ctx.lineTo(endX, endY);
106
+ GameConfig.ctx.stroke();
107
+ const angle = Math.atan2(this.direction.y, this.direction.x);
108
+ const headLen = 4;
109
+ GameConfig.ctx.beginPath();
110
+ GameConfig.ctx.moveTo(endX, endY);
111
+ GameConfig.ctx.lineTo(endX - headLen * Math.cos(angle - Math.PI / 6), endY - headLen * Math.sin(angle - Math.PI / 6));
112
+ GameConfig.ctx.lineTo(endX - headLen * Math.cos(angle + Math.PI / 6), endY - headLen * Math.sin(angle + Math.PI / 6));
113
+ GameConfig.ctx.closePath();
114
+ GameConfig.ctx.fill();
115
+ }
116
+ super.draw(delta);
117
+ }
118
+ /** @internal Updates the raycast each frame. */
119
+ update(delta) {
120
+ super.update(delta);
121
+ }
122
+ /** @internal Unregisters this raycast from the collision system. */
123
+ destroy() {
124
+ CollisionSystem.unregisterRaycast(this);
125
+ super.destroy();
126
+ }
127
+ }
128
+ Nodes['ray-cast'] = RayCast;
129
+ //# sourceMappingURL=ray-cast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ray-cast.js","sourceRoot":"","sources":["../../../src/nodes/node2d/ray-cast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAC7C,OAAO,EAAE,OAAO,EAAE,SAAS,EAAmB,MAAM,uBAAuB,CAAA;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAsB,MAAM,cAAc,CAAA;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAA;AAGrE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AA+BlE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,OAAO,OAAQ,SAAQ,MAA2B;IACtD;;OAEG;IACH,SAAS,CAAS;IAElB,aAAa,CAAU;IAEvB,iBAAiB,GAAoB,IAAI,CAAA;IAEzC,YAAY,OAAuB;QACjC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAEnC,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAA;QACzF,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAA;IAChE,CAAC;IAED;;OAEG;IACH,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAA;IAC3B,CAAC;IAED;;;;;;;;OAQG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IACjE,CAAC;IAED;;OAEG;IACH,eAAe,GAAG,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC,SAAmB,EAAE,EAAE,GAAE,CAAC,CAAC,CAAA;IAEzE;;OAEG;IACH,cAAc,GAAG,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC,SAAmB,EAAE,EAAE,GAAE,CAAC,CAAC,CAAA;IAEvE;;;;;;;;;;;;;OAaG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,iBAAiB,CAAA;IAC/B,CAAC;IAED,kEAAkE;IAClE,KAAK;QACH,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;QACrC,KAAK,CAAC,KAAK,EAAE,CAAA;IACf,CAAC;IAED,2DAA2D;IAC3D,IAAI,CAAC,KAAa;QAChB,IAAI,UAAU,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;YACxC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;YAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;YAE/C,UAAU,CAAC,GAAG,CAAC,SAAS,GAAG,WAAW,CAAA;YACtC,UAAU,CAAC,GAAG,CAAC,WAAW,GAAG,WAAW,CAAA;YACxC,UAAU,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAA;YAE5B,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,CAAA;YAC1B,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;YACvD,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YACjC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,CAAA;YAEvB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;YAC5D,MAAM,OAAO,GAAG,CAAC,CAAA;YAEjB,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,CAAA;YAC1B,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YACjC,UAAU,CAAC,GAAG,CAAC,MAAM,CACnB,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EAC9C,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAC/C,CAAA;YACD,UAAU,CAAC,GAAG,CAAC,MAAM,CACnB,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EAC9C,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAC/C,CAAA;YACD,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,CAAA;YAC1B,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;QACvB,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACnB,CAAC;IAED,gDAAgD;IAChD,MAAM,CAAC,KAAa;QAClB,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACrB,CAAC;IAED,oEAAoE;IACpE,OAAO;QACL,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;QACvC,KAAK,CAAC,OAAO,EAAE,CAAA;IACjB,CAAC;CACF;AAED,KAAK,CAAC,UAAU,CAAC,GAAG,OAAO,CAAA"}
@@ -0,0 +1,87 @@
1
+ import { type Vector2, type VectorLike } from '../../math/vector2.js';
2
+ import type { Color } from '../../math/types.js';
3
+ import { PrimaryNode } from '../lib/enum.js';
4
+ import { Node2D, type Node2DOptions } from './_node2d.js';
5
+ import type { Reactive } from '../../reactivity/types.js';
6
+ /**
7
+ * Options for the `Rectangle` node.
8
+ */
9
+ export interface RectangleOptions extends Node2DOptions<PrimaryNode.Rectangle> {
10
+ /**
11
+ * The **`size`** property defines the dimensions of the rectangle.
12
+ *
13
+ * @example
14
+ * ```tsx
15
+ * <rectangle size={[64, 32]} />
16
+ * <rectangle size={new Vector2(100, 50)} />
17
+ * <rectangle size={32} />
18
+ * ```
19
+ */
20
+ size: Reactive<VectorLike>;
21
+ /**
22
+ * The **`fillColor`** property defines the fill color of the rectangle.
23
+ * Each channel ranges from `0` to `1`.
24
+ *
25
+ * @default [1, 1, 1, 1]
26
+ *
27
+ * @example
28
+ * ```tsx
29
+ * <rectangle size={[64, 32]} fillColor={[1, 0, 0, 1]} />
30
+ * ```
31
+ */
32
+ fillColor?: Reactive<Color>;
33
+ /**
34
+ * The **`strokeColor`** property defines the border color of the rectangle.
35
+ * If not provided, no border is drawn.
36
+ *
37
+ * @example
38
+ * ```tsx
39
+ * <rectangle size={[64, 32]} strokeColor={[0, 0, 0, 1]} strokeWidth={2} />
40
+ * ```
41
+ */
42
+ strokeColor?: Reactive<Color>;
43
+ /**
44
+ * The **`strokeWidth`** property defines the border width in pixels.
45
+ *
46
+ * @default 1
47
+ *
48
+ * @example
49
+ * ```tsx
50
+ * <rectangle size={[64, 32]} strokeColor={[0, 0, 0, 1]} strokeWidth={3} />
51
+ * ```
52
+ */
53
+ strokeWidth?: Reactive<number>;
54
+ }
55
+ /**
56
+ * The **`Rectangle`** node renders a filled and optionally stroked rectangle.
57
+ * It supports reactive props via `Reactive` for dynamic visuals.
58
+ *
59
+ * @example
60
+ * ```tsx
61
+ * import { useNode } from 'dinix/hooks'
62
+ * import { PrimaryNode } from 'dinix/nodes/enum'
63
+ *
64
+ * function HealthBar() {
65
+ * const bar = useNode(PrimaryNode.Rectangle)
66
+ *
67
+ * return (
68
+ * <rectangle
69
+ * ref={bar}
70
+ * position={[10, 10]}
71
+ * size={[100, 8]}
72
+ * fillColor={[0, 1, 0, 1]}
73
+ * />
74
+ * )
75
+ * }
76
+ * ```
77
+ */
78
+ export declare class Rectangle extends Node2D<PrimaryNode.Rectangle> {
79
+ size: Vector2;
80
+ fillColor: Color;
81
+ strokeColor: Color | undefined;
82
+ strokeWidth: number;
83
+ constructor(options: RectangleOptions);
84
+ /** @internal Draws the rectangle. */
85
+ draw(delta: number): void;
86
+ }
87
+ //# sourceMappingURL=rectangle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rectangle.d.ts","sourceRoot":"","sources":["../../../src/nodes/node2d/rectangle.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAChF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAEhD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAA;AAEzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAEzD;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC;IAC5E;;;;;;;;;OASG;IACH,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAA;IAC1B;;;;;;;;;;OAUG;IACH,SAAS,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC3B;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC7B;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;CAC/B;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,SAAU,SAAQ,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC;IAC1D,IAAI,EAAE,OAAO,CAAA;IACb,SAAS,EAAE,KAAK,CAAA;IAChB,WAAW,EAAE,KAAK,GAAG,SAAS,CAAA;IAC9B,WAAW,EAAE,MAAM,CAAA;gBAEP,OAAO,EAAE,gBAAgB;IAQrC,qCAAqC;IACrC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAoB1B"}
@@ -0,0 +1,60 @@
1
+ import { GameConfig } from '../../core/game-config.js';
2
+ import { vectorize } from '../../math/vector2.js';
3
+ import { applySignal, propSignal } from '../../utils/ternaries.js';
4
+ import { PrimaryNode } from '../lib/enum.js';
5
+ import { Node2D } from './_node2d.js';
6
+ import { Nodes } from '../lib/registry.js';
7
+ /**
8
+ * The **`Rectangle`** node renders a filled and optionally stroked rectangle.
9
+ * It supports reactive props via `Reactive` for dynamic visuals.
10
+ *
11
+ * @example
12
+ * ```tsx
13
+ * import { useNode } from 'dinix/hooks'
14
+ * import { PrimaryNode } from 'dinix/nodes/enum'
15
+ *
16
+ * function HealthBar() {
17
+ * const bar = useNode(PrimaryNode.Rectangle)
18
+ *
19
+ * return (
20
+ * <rectangle
21
+ * ref={bar}
22
+ * position={[10, 10]}
23
+ * size={[100, 8]}
24
+ * fillColor={[0, 1, 0, 1]}
25
+ * />
26
+ * )
27
+ * }
28
+ * ```
29
+ */
30
+ export class Rectangle extends Node2D {
31
+ size;
32
+ fillColor;
33
+ strokeColor;
34
+ strokeWidth;
35
+ constructor(options) {
36
+ super(PrimaryNode.Rectangle, options);
37
+ this.size = propSignal(this, 'size', applySignal(options.size, vectorize));
38
+ this.fillColor = propSignal(this, 'fillColor', options.fillColor) ?? [1, 1, 1, 1];
39
+ this.strokeColor = propSignal(this, 'strokeColor', options.strokeColor);
40
+ this.strokeWidth = propSignal(this, 'strokeWidth', options.strokeWidth) ?? 1;
41
+ }
42
+ /** @internal Draws the rectangle. */
43
+ draw(delta) {
44
+ const ctx = GameConfig.ctx;
45
+ const [r, g, b, a] = this.fillColor;
46
+ ctx.save();
47
+ ctx.fillStyle = `rgba(${r * 255}, ${g * 255}, ${b * 255}, ${a})`;
48
+ ctx.fillRect(this.position.x, this.position.y, this.size.x, this.size.y);
49
+ if (this.strokeColor) {
50
+ const [sr, sg, sb, sa] = this.strokeColor;
51
+ ctx.strokeStyle = `rgba(${sr * 255}, ${sg * 255}, ${sb * 255}, ${sa})`;
52
+ ctx.lineWidth = this.strokeWidth;
53
+ ctx.strokeRect(this.position.x, this.position.y, this.size.x, this.size.y);
54
+ }
55
+ ctx.restore();
56
+ super.draw(delta);
57
+ }
58
+ }
59
+ Nodes.rectangle = Rectangle;
60
+ //# sourceMappingURL=rectangle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rectangle.js","sourceRoot":"","sources":["../../../src/nodes/node2d/rectangle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,SAAS,EAAiC,MAAM,uBAAuB,CAAA;AAEhF,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAsB,MAAM,cAAc,CAAA;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAqD1C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,OAAO,SAAU,SAAQ,MAA6B;IAC1D,IAAI,CAAS;IACb,SAAS,CAAO;IAChB,WAAW,CAAmB;IAC9B,WAAW,CAAQ;IAEnB,YAAY,OAAyB;QACnC,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;QACrC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAA;QAC1E,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QACjF,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,CAAC,WAAW,CAAC,CAAA;QACvE,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IAC9E,CAAC;IAED,qCAAqC;IACrC,IAAI,CAAC,KAAa;QAChB,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAA;QAC1B,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAA;QAEnC,GAAG,CAAC,IAAI,EAAE,CAAA;QAEV,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAA;QAChE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAExE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAA;YACzC,GAAG,CAAC,WAAW,GAAG,QAAQ,EAAE,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,KAAK,EAAE,GAAG,CAAA;YACtE,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAA;YAChC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC5E,CAAC;QAED,GAAG,CAAC,OAAO,EAAE,CAAA;QAEb,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACnB,CAAC;CACF;AAED,KAAK,CAAC,SAAS,GAAG,SAAS,CAAA"}
@@ -0,0 +1,65 @@
1
+ import { PrimaryNode } from '../lib/enum.js';
2
+ import { Node2D, type Node2DOptions } from './_node2d.js';
3
+ import { PhysicsBody } from '../../collision/physics/physics-body.js';
4
+ /**
5
+ * Options for the `RigidBody` node.
6
+ */
7
+ export interface RigidBodyOptions extends Node2DOptions<PrimaryNode.RigidBody> {
8
+ /**
9
+ * Mass of the body. Higher values are heavier. `0` means infinite mass (static).
10
+ * @default 1
11
+ */
12
+ mass?: number;
13
+ /**
14
+ * Friction coefficient (0 to 1).
15
+ * @default 0.1
16
+ */
17
+ friction?: number;
18
+ /**
19
+ * Restitution / bounce coefficient (0 to 1). `0` = no bounce, `1` = perfect bounce.
20
+ * @default 0
21
+ */
22
+ bounce?: number;
23
+ /**
24
+ * If true, the body does not move.
25
+ * @default false
26
+ */
27
+ isStatic?: boolean;
28
+ /**
29
+ * If false, gravity is not applied.
30
+ * @default true
31
+ */
32
+ useGravity?: boolean;
33
+ }
34
+ /**
35
+ * The **`RigidBody`** node adds physics simulation to a collider.
36
+ * It must be a sibling of a `Collider` node to work.
37
+ *
38
+ * Gravity is applied by default (980 px/s² downward). The body integrates
39
+ * velocity into position each frame and resolves collisions with other bodies.
40
+ *
41
+ * @example
42
+ * ```tsx
43
+ * import { shapes } from 'dinix'
44
+ *
45
+ * function FallingRock() {
46
+ * return (
47
+ * <transform position={[100, 0]}>
48
+ * <sprite textureId={ROCK} />
49
+ * <collider shape={shapes.circle(16)} group={['rock']} collidesWith={['ground']} />
50
+ * <rigid-body mass={2} bounce={0.6} />
51
+ * </transform>
52
+ * )
53
+ * }
54
+ * ```
55
+ */
56
+ export declare class RigidBody extends Node2D<PrimaryNode.RigidBody> {
57
+ /** The underlying physics body. */
58
+ readonly physicsBody: PhysicsBody;
59
+ constructor(options: RigidBodyOptions);
60
+ /** @internal Registers with the physics system using the sibling collider. */
61
+ start(): void;
62
+ /** @internal Unregisters from the physics system. */
63
+ destroy(): void;
64
+ }
65
+ //# sourceMappingURL=rigid-body.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rigid-body.d.ts","sourceRoot":"","sources":["../../../src/nodes/node2d/rigid-body.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE5C,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAA;AAIrE;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC;IAC5E;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,SAAU,SAAQ,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC;IAC1D,mCAAmC;IACnC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;gBAErB,OAAO,EAAE,gBAAgB;IAWrC,8EAA8E;IAC9E,KAAK,IAAI,IAAI;IAUb,qDAAqD;IACrD,OAAO,IAAI,IAAI;CAIhB"}
@@ -0,0 +1,56 @@
1
+ import { PrimaryNode } from '../lib/enum.js';
2
+ import { Nodes } from '../lib/registry.js';
3
+ import { Node2D } from './_node2d.js';
4
+ import { PhysicsBody } from '../../collision/physics/physics-body.js';
5
+ import { PhysicsSystem } from '../../collision/physics/physics-system.js';
6
+ /**
7
+ * The **`RigidBody`** node adds physics simulation to a collider.
8
+ * It must be a sibling of a `Collider` node to work.
9
+ *
10
+ * Gravity is applied by default (980 px/s² downward). The body integrates
11
+ * velocity into position each frame and resolves collisions with other bodies.
12
+ *
13
+ * @example
14
+ * ```tsx
15
+ * import { shapes } from 'dinix'
16
+ *
17
+ * function FallingRock() {
18
+ * return (
19
+ * <transform position={[100, 0]}>
20
+ * <sprite textureId={ROCK} />
21
+ * <collider shape={shapes.circle(16)} group={['rock']} collidesWith={['ground']} />
22
+ * <rigid-body mass={2} bounce={0.6} />
23
+ * </transform>
24
+ * )
25
+ * }
26
+ * ```
27
+ */
28
+ export class RigidBody extends Node2D {
29
+ /** The underlying physics body. */
30
+ physicsBody;
31
+ constructor(options) {
32
+ super(PrimaryNode.RigidBody, options);
33
+ this.physicsBody = new PhysicsBody({
34
+ mass: options.mass,
35
+ friction: options.friction,
36
+ bounce: options.bounce,
37
+ isStatic: options.isStatic,
38
+ useGravity: options.useGravity,
39
+ });
40
+ }
41
+ /** @internal Registers with the physics system using the sibling collider. */
42
+ start() {
43
+ const collider = this._children.find((c) => c.type === PrimaryNode.Collider);
44
+ if (collider != null) {
45
+ PhysicsSystem.register(this.physicsBody, collider);
46
+ }
47
+ super.start();
48
+ }
49
+ /** @internal Unregisters from the physics system. */
50
+ destroy() {
51
+ PhysicsSystem.unregister(this.physicsBody);
52
+ super.destroy();
53
+ }
54
+ }
55
+ Nodes['rigid-body'] = RigidBody;
56
+ //# sourceMappingURL=rigid-body.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rigid-body.js","sourceRoot":"","sources":["../../../src/nodes/node2d/rigid-body.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAsB,MAAM,cAAc,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAA;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAA;AAkCzE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,OAAO,SAAU,SAAQ,MAA6B;IAC1D,mCAAmC;IAC1B,WAAW,CAAa;IAEjC,YAAY,OAAyB;QACnC,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;QACrC,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC;YACjC,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC,CAAA;IACJ,CAAC;IAED,8EAA8E;IAC9E,KAAK;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAiB,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,QAAQ,CAAC,CAAA;QAE3F,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACrB,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;QACpD,CAAC;QAED,KAAK,CAAC,KAAK,EAAE,CAAA;IACf,CAAC;IAED,qDAAqD;IACrD,OAAO;QACL,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAC1C,KAAK,CAAC,OAAO,EAAE,CAAA;IACjB,CAAC;CACF;AAED,KAAK,CAAC,YAAY,CAAC,GAAG,SAAS,CAAA"}