@codexo/exojs 0.6.12 → 0.7.12

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 (512) hide show
  1. package/CHANGELOG.md +1424 -0
  2. package/dist/esm/animation/Tween.d.ts +60 -1
  3. package/dist/esm/animation/Tween.js +60 -1
  4. package/dist/esm/animation/Tween.js.map +1 -1
  5. package/dist/esm/animation/TweenManager.d.ts +10 -0
  6. package/dist/esm/animation/TweenManager.js +10 -0
  7. package/dist/esm/animation/TweenManager.js.map +1 -1
  8. package/dist/esm/animation/types.d.ts +15 -0
  9. package/dist/esm/animation/types.js +6 -0
  10. package/dist/esm/animation/types.js.map +1 -1
  11. package/dist/esm/audio/AbstractMedia.d.ts +29 -0
  12. package/dist/esm/audio/AbstractMedia.js +76 -0
  13. package/dist/esm/audio/AbstractMedia.js.map +1 -1
  14. package/dist/esm/audio/AudioAnalyser.d.ts +83 -23
  15. package/dist/esm/audio/AudioAnalyser.js +277 -57
  16. package/dist/esm/audio/AudioAnalyser.js.map +1 -1
  17. package/dist/esm/audio/AudioBus.d.ts +82 -0
  18. package/dist/esm/audio/AudioBus.js +255 -0
  19. package/dist/esm/audio/AudioBus.js.map +1 -0
  20. package/dist/esm/audio/AudioFilter.d.ts +16 -0
  21. package/dist/esm/audio/AudioFilter.js +13 -0
  22. package/dist/esm/audio/AudioFilter.js.map +1 -0
  23. package/dist/esm/audio/AudioListener.d.ts +39 -0
  24. package/dist/esm/audio/AudioListener.js +97 -0
  25. package/dist/esm/audio/AudioListener.js.map +1 -0
  26. package/dist/esm/audio/AudioManager.d.ts +68 -0
  27. package/dist/esm/audio/AudioManager.js +139 -0
  28. package/dist/esm/audio/AudioManager.js.map +1 -0
  29. package/dist/esm/audio/BeatDetector.d.ts +142 -0
  30. package/dist/esm/audio/BeatDetector.js +957 -0
  31. package/dist/esm/audio/BeatDetector.js.map +1 -0
  32. package/dist/esm/audio/Envelope.d.ts +44 -0
  33. package/dist/esm/audio/Envelope.js +60 -0
  34. package/dist/esm/audio/Envelope.js.map +1 -0
  35. package/dist/esm/audio/Media.d.ts +11 -0
  36. package/dist/esm/audio/Music.d.ts +20 -0
  37. package/dist/esm/audio/Music.js +45 -4
  38. package/dist/esm/audio/Music.js.map +1 -1
  39. package/dist/esm/audio/OscillatorSound.d.ts +98 -0
  40. package/dist/esm/audio/OscillatorSound.js +342 -0
  41. package/dist/esm/audio/OscillatorSound.js.map +1 -0
  42. package/dist/esm/audio/Sound.d.ts +119 -9
  43. package/dist/esm/audio/Sound.js +301 -117
  44. package/dist/esm/audio/Sound.js.map +1 -1
  45. package/dist/esm/audio/audio-context.d.ts +48 -0
  46. package/dist/esm/audio/audio-context.js +48 -5
  47. package/dist/esm/audio/audio-context.js.map +1 -1
  48. package/dist/esm/audio/crossFade.d.ts +19 -0
  49. package/dist/esm/audio/crossFade.js +26 -0
  50. package/dist/esm/audio/crossFade.js.map +1 -0
  51. package/dist/esm/audio/dsp/fft.d.ts +22 -0
  52. package/dist/esm/audio/dsp/mel.d.ts +43 -0
  53. package/dist/esm/audio/dsp/tempogram.d.ts +51 -0
  54. package/dist/esm/audio/filters/ChorusFilter.d.ts +52 -0
  55. package/dist/esm/audio/filters/ChorusFilter.js +143 -0
  56. package/dist/esm/audio/filters/ChorusFilter.js.map +1 -0
  57. package/dist/esm/audio/filters/CompressorFilter.d.ts +43 -0
  58. package/dist/esm/audio/filters/CompressorFilter.js +108 -0
  59. package/dist/esm/audio/filters/CompressorFilter.js.map +1 -0
  60. package/dist/esm/audio/filters/DelayFilter.d.ts +34 -0
  61. package/dist/esm/audio/filters/DelayFilter.js +110 -0
  62. package/dist/esm/audio/filters/DelayFilter.js.map +1 -0
  63. package/dist/esm/audio/filters/DuckingFilter.d.ts +44 -0
  64. package/dist/esm/audio/filters/DuckingFilter.js +164 -0
  65. package/dist/esm/audio/filters/DuckingFilter.js.map +1 -0
  66. package/dist/esm/audio/filters/EqualizerFilter.d.ts +49 -0
  67. package/dist/esm/audio/filters/EqualizerFilter.js +134 -0
  68. package/dist/esm/audio/filters/EqualizerFilter.js.map +1 -0
  69. package/dist/esm/audio/filters/GranularFilter.d.ts +62 -0
  70. package/dist/esm/audio/filters/GranularFilter.js +176 -0
  71. package/dist/esm/audio/filters/GranularFilter.js.map +1 -0
  72. package/dist/esm/audio/filters/HighpassFilter.d.ts +29 -0
  73. package/dist/esm/audio/filters/HighpassFilter.js +71 -0
  74. package/dist/esm/audio/filters/HighpassFilter.js.map +1 -0
  75. package/dist/esm/audio/filters/LowpassFilter.d.ts +29 -0
  76. package/dist/esm/audio/filters/LowpassFilter.js +71 -0
  77. package/dist/esm/audio/filters/LowpassFilter.js.map +1 -0
  78. package/dist/esm/audio/filters/PitchShiftFilter.d.ts +44 -0
  79. package/dist/esm/audio/filters/PitchShiftFilter.js +132 -0
  80. package/dist/esm/audio/filters/PitchShiftFilter.js.map +1 -0
  81. package/dist/esm/audio/filters/ReverbFilter.d.ts +36 -0
  82. package/dist/esm/audio/filters/ReverbFilter.js +118 -0
  83. package/dist/esm/audio/filters/ReverbFilter.js.map +1 -0
  84. package/dist/esm/audio/filters/VocoderFilter.d.ts +49 -0
  85. package/dist/esm/audio/filters/VocoderFilter.js +174 -0
  86. package/dist/esm/audio/filters/VocoderFilter.js.map +1 -0
  87. package/dist/esm/audio/filters/WorkletFilter.d.ts +51 -0
  88. package/dist/esm/audio/filters/WorkletFilter.js +106 -0
  89. package/dist/esm/audio/filters/WorkletFilter.js.map +1 -0
  90. package/dist/esm/audio/filters/index.d.ts +12 -0
  91. package/dist/esm/audio/index.d.ts +15 -1
  92. package/dist/esm/audio/worklet/registerWorklet.d.ts +10 -0
  93. package/dist/esm/audio/worklet/registerWorklet.js +44 -0
  94. package/dist/esm/audio/worklet/registerWorklet.js.map +1 -0
  95. package/dist/esm/core/Application.d.ts +82 -0
  96. package/dist/esm/core/Application.js +137 -2
  97. package/dist/esm/core/Application.js.map +1 -1
  98. package/dist/esm/core/Bounds.d.ts +23 -0
  99. package/dist/esm/core/Bounds.js +23 -0
  100. package/dist/esm/core/Bounds.js.map +1 -1
  101. package/dist/esm/core/Clock.d.ts +21 -0
  102. package/dist/esm/core/Clock.js +21 -0
  103. package/dist/esm/core/Clock.js.map +1 -1
  104. package/dist/esm/core/Color.d.ts +35 -0
  105. package/dist/esm/core/Color.js +35 -0
  106. package/dist/esm/core/Color.js.map +1 -1
  107. package/dist/esm/core/Scene.d.ts +46 -0
  108. package/dist/esm/core/Scene.js +27 -0
  109. package/dist/esm/core/Scene.js.map +1 -1
  110. package/dist/esm/core/SceneManager.d.ts +62 -0
  111. package/dist/esm/core/SceneManager.js +49 -0
  112. package/dist/esm/core/SceneManager.js.map +1 -1
  113. package/dist/esm/core/SceneNode.d.ts +40 -1
  114. package/dist/esm/core/SceneNode.js +75 -6
  115. package/dist/esm/core/SceneNode.js.map +1 -1
  116. package/dist/esm/core/Signal.d.ts +44 -0
  117. package/dist/esm/core/Signal.js +39 -0
  118. package/dist/esm/core/Signal.js.map +1 -1
  119. package/dist/esm/core/Time.d.ts +21 -0
  120. package/dist/esm/core/Time.js +22 -1
  121. package/dist/esm/core/Time.js.map +1 -1
  122. package/dist/esm/core/Timer.d.ts +7 -0
  123. package/dist/esm/core/Timer.js +7 -0
  124. package/dist/esm/core/Timer.js.map +1 -1
  125. package/dist/esm/core/capabilities.d.ts +12 -0
  126. package/dist/esm/core/capabilities.js +12 -0
  127. package/dist/esm/core/capabilities.js.map +1 -1
  128. package/dist/esm/core/index.d.ts +0 -1
  129. package/dist/esm/core/types.d.ts +37 -0
  130. package/dist/esm/core/utils.d.ts +48 -0
  131. package/dist/esm/core/utils.js +48 -0
  132. package/dist/esm/core/utils.js.map +1 -1
  133. package/dist/esm/debug/BoundingBoxesLayer.d.ts +26 -0
  134. package/dist/esm/debug/BoundingBoxesLayer.js +136 -0
  135. package/dist/esm/debug/BoundingBoxesLayer.js.map +1 -0
  136. package/dist/esm/debug/DebugLayer.d.ts +42 -0
  137. package/dist/esm/debug/DebugLayer.js +34 -0
  138. package/dist/esm/debug/DebugLayer.js.map +1 -0
  139. package/dist/esm/debug/DebugOverlay.d.ts +59 -0
  140. package/dist/esm/debug/DebugOverlay.js +123 -0
  141. package/dist/esm/debug/DebugOverlay.js.map +1 -0
  142. package/dist/esm/debug/HitTestLayer.d.ts +32 -0
  143. package/dist/esm/debug/HitTestLayer.js +118 -0
  144. package/dist/esm/debug/HitTestLayer.js.map +1 -0
  145. package/dist/esm/debug/PerformanceLayer.d.ts +37 -0
  146. package/dist/esm/debug/PerformanceLayer.js +193 -0
  147. package/dist/esm/debug/PerformanceLayer.js.map +1 -0
  148. package/dist/esm/debug/PointerStackLayer.d.ts +31 -0
  149. package/dist/esm/debug/PointerStackLayer.js +160 -0
  150. package/dist/esm/debug/PointerStackLayer.js.map +1 -0
  151. package/dist/esm/debug/index.d.ts +6 -0
  152. package/dist/esm/debug/index.js +7 -0
  153. package/dist/esm/debug/index.js.map +1 -0
  154. package/dist/esm/index.js +30 -4
  155. package/dist/esm/index.js.map +1 -1
  156. package/dist/esm/input/ArcadeStickGamepadMapping.d.ts +7 -0
  157. package/dist/esm/input/ArcadeStickGamepadMapping.js +7 -0
  158. package/dist/esm/input/ArcadeStickGamepadMapping.js.map +1 -1
  159. package/dist/esm/input/GameCubeGamepadMapping.d.ts +9 -0
  160. package/dist/esm/input/GameCubeGamepadMapping.js +9 -0
  161. package/dist/esm/input/GameCubeGamepadMapping.js.map +1 -1
  162. package/dist/esm/input/Gamepad.d.ts +48 -0
  163. package/dist/esm/input/Gamepad.js +43 -0
  164. package/dist/esm/input/Gamepad.js.map +1 -1
  165. package/dist/esm/input/GamepadChannels.d.ts +8 -0
  166. package/dist/esm/input/GamepadChannels.js +8 -0
  167. package/dist/esm/input/GamepadChannels.js.map +1 -1
  168. package/dist/esm/input/GamepadControl.d.ts +18 -0
  169. package/dist/esm/input/GamepadControl.js +13 -0
  170. package/dist/esm/input/GamepadControl.js.map +1 -1
  171. package/dist/esm/input/GamepadDefinitions.d.ts +64 -1
  172. package/dist/esm/input/GamepadDefinitions.js +40 -1
  173. package/dist/esm/input/GamepadDefinitions.js.map +1 -1
  174. package/dist/esm/input/GamepadMapping.d.ts +32 -2
  175. package/dist/esm/input/GamepadMapping.js +24 -0
  176. package/dist/esm/input/GamepadMapping.js.map +1 -1
  177. package/dist/esm/input/GamepadPromptLayouts.d.ts +32 -1
  178. package/dist/esm/input/GamepadPromptLayouts.js +25 -1
  179. package/dist/esm/input/GamepadPromptLayouts.js.map +1 -1
  180. package/dist/esm/input/GenericDualAnalogGamepadMapping.d.ts +10 -0
  181. package/dist/esm/input/GenericDualAnalogGamepadMapping.js +10 -0
  182. package/dist/esm/input/GenericDualAnalogGamepadMapping.js.map +1 -1
  183. package/dist/esm/input/GestureRecognizer.d.ts +11 -2
  184. package/dist/esm/input/GestureRecognizer.js +11 -2
  185. package/dist/esm/input/GestureRecognizer.js.map +1 -1
  186. package/dist/esm/input/Input.d.ts +24 -0
  187. package/dist/esm/input/Input.js +22 -0
  188. package/dist/esm/input/Input.js.map +1 -1
  189. package/dist/esm/input/InputManager.d.ts +43 -0
  190. package/dist/esm/input/InputManager.js +68 -5
  191. package/dist/esm/input/InputManager.js.map +1 -1
  192. package/dist/esm/input/InteractionEvent.d.ts +31 -0
  193. package/dist/esm/input/InteractionEvent.js +37 -0
  194. package/dist/esm/input/InteractionEvent.js.map +1 -0
  195. package/dist/esm/input/InteractionManager.d.ts +163 -0
  196. package/dist/esm/input/InteractionManager.js +575 -0
  197. package/dist/esm/input/InteractionManager.js.map +1 -0
  198. package/dist/esm/input/JoyConLeftGamepadMapping.d.ts +9 -0
  199. package/dist/esm/input/JoyConLeftGamepadMapping.js +9 -0
  200. package/dist/esm/input/JoyConLeftGamepadMapping.js.map +1 -1
  201. package/dist/esm/input/JoyConRightGamepadMapping.d.ts +9 -0
  202. package/dist/esm/input/JoyConRightGamepadMapping.js +9 -0
  203. package/dist/esm/input/JoyConRightGamepadMapping.js.map +1 -1
  204. package/dist/esm/input/PlayStationGamepadMapping.d.ts +8 -0
  205. package/dist/esm/input/PlayStationGamepadMapping.js +8 -0
  206. package/dist/esm/input/PlayStationGamepadMapping.js.map +1 -1
  207. package/dist/esm/input/Pointer.d.ts +22 -0
  208. package/dist/esm/input/Pointer.js +22 -0
  209. package/dist/esm/input/Pointer.js.map +1 -1
  210. package/dist/esm/input/SteamControllerGamepadMapping.d.ts +8 -0
  211. package/dist/esm/input/SteamControllerGamepadMapping.js +8 -0
  212. package/dist/esm/input/SteamControllerGamepadMapping.js.map +1 -1
  213. package/dist/esm/input/SwitchProGamepadMapping.d.ts +9 -0
  214. package/dist/esm/input/SwitchProGamepadMapping.js +9 -0
  215. package/dist/esm/input/SwitchProGamepadMapping.js.map +1 -1
  216. package/dist/esm/input/XboxGamepadMapping.d.ts +8 -0
  217. package/dist/esm/input/XboxGamepadMapping.js +8 -0
  218. package/dist/esm/input/XboxGamepadMapping.js.map +1 -1
  219. package/dist/esm/input/index.d.ts +2 -0
  220. package/dist/esm/input/interaction-hooks.d.ts +34 -0
  221. package/dist/esm/input/interaction-hooks.js +35 -0
  222. package/dist/esm/input/interaction-hooks.js.map +1 -0
  223. package/dist/esm/input/types.d.ts +20 -0
  224. package/dist/esm/input/types.js +20 -0
  225. package/dist/esm/input/types.js.map +1 -1
  226. package/dist/esm/math/AbstractVector.d.ts +83 -0
  227. package/dist/esm/math/AbstractVector.js +83 -0
  228. package/dist/esm/math/AbstractVector.js.map +1 -1
  229. package/dist/esm/math/Circle.d.ts +44 -2
  230. package/dist/esm/math/Circle.js +116 -16
  231. package/dist/esm/math/Circle.js.map +1 -1
  232. package/dist/esm/math/CircleLike.d.ts +1 -0
  233. package/dist/esm/math/Collision.d.ts +39 -0
  234. package/dist/esm/math/Collision.js +5 -0
  235. package/dist/esm/math/Collision.js.map +1 -1
  236. package/dist/esm/math/Ellipse.d.ts +11 -0
  237. package/dist/esm/math/Ellipse.js +18 -2
  238. package/dist/esm/math/Ellipse.js.map +1 -1
  239. package/dist/esm/math/EllipseLike.d.ts +3 -0
  240. package/dist/esm/math/Flags.d.ts +31 -0
  241. package/dist/esm/math/Flags.js +31 -0
  242. package/dist/esm/math/Flags.js.map +1 -1
  243. package/dist/esm/math/Interval.d.ts +15 -0
  244. package/dist/esm/math/Interval.js +16 -1
  245. package/dist/esm/math/Interval.js.map +1 -1
  246. package/dist/esm/math/Line.d.ts +17 -1
  247. package/dist/esm/math/Line.js +17 -1
  248. package/dist/esm/math/Line.js.map +1 -1
  249. package/dist/esm/math/LineLike.d.ts +1 -0
  250. package/dist/esm/math/Matrix.d.ts +44 -3
  251. package/dist/esm/math/Matrix.js +44 -3
  252. package/dist/esm/math/Matrix.js.map +1 -1
  253. package/dist/esm/math/ObservableSize.d.ts +7 -0
  254. package/dist/esm/math/ObservableSize.js +7 -0
  255. package/dist/esm/math/ObservableSize.js.map +1 -1
  256. package/dist/esm/math/ObservableVector.d.ts +11 -2
  257. package/dist/esm/math/ObservableVector.js +13 -2
  258. package/dist/esm/math/ObservableVector.js.map +1 -1
  259. package/dist/esm/math/PointLike.d.ts +1 -0
  260. package/dist/esm/math/PolarVector.d.ts +15 -0
  261. package/dist/esm/math/PolarVector.js +16 -1
  262. package/dist/esm/math/PolarVector.js.map +1 -1
  263. package/dist/esm/math/Polygon.d.ts +35 -1
  264. package/dist/esm/math/Polygon.js +78 -6
  265. package/dist/esm/math/Polygon.js.map +1 -1
  266. package/dist/esm/math/PolygonLike.d.ts +4 -0
  267. package/dist/esm/math/Quadtree.d.ts +84 -0
  268. package/dist/esm/math/Quadtree.js +204 -0
  269. package/dist/esm/math/Quadtree.js.map +1 -0
  270. package/dist/esm/math/Random.d.ts +25 -0
  271. package/dist/esm/math/Random.js +26 -1
  272. package/dist/esm/math/Random.js.map +1 -1
  273. package/dist/esm/math/Rectangle.d.ts +15 -0
  274. package/dist/esm/math/Rectangle.js +17 -2
  275. package/dist/esm/math/Rectangle.js.map +1 -1
  276. package/dist/esm/math/RectangleLike.d.ts +1 -0
  277. package/dist/esm/math/Segment.d.ts +7 -0
  278. package/dist/esm/math/Segment.js +7 -0
  279. package/dist/esm/math/Segment.js.map +1 -1
  280. package/dist/esm/math/ShapeLike.d.ts +6 -0
  281. package/dist/esm/math/Size.d.ts +9 -0
  282. package/dist/esm/math/Size.js +10 -1
  283. package/dist/esm/math/Size.js.map +1 -1
  284. package/dist/esm/math/Vector.d.ts +16 -0
  285. package/dist/esm/math/Vector.js +17 -1
  286. package/dist/esm/math/Vector.js.map +1 -1
  287. package/dist/esm/math/collision-detection.d.ts +47 -1
  288. package/dist/esm/math/collision-detection.js +231 -17
  289. package/dist/esm/math/collision-detection.js.map +1 -1
  290. package/dist/esm/math/collision-primitives.d.ts +23 -0
  291. package/dist/esm/math/collision-primitives.js +23 -0
  292. package/dist/esm/math/collision-primitives.js.map +1 -1
  293. package/dist/esm/math/geometry.d.ts +42 -0
  294. package/dist/esm/math/geometry.js +37 -0
  295. package/dist/esm/math/geometry.js.map +1 -1
  296. package/dist/esm/math/index.d.ts +1 -0
  297. package/dist/esm/math/utils.d.ts +41 -0
  298. package/dist/esm/math/utils.js +41 -0
  299. package/dist/esm/math/utils.js.map +1 -1
  300. package/dist/esm/particles/Particle.d.ts +37 -0
  301. package/dist/esm/particles/Particle.js +37 -0
  302. package/dist/esm/particles/Particle.js.map +1 -1
  303. package/dist/esm/particles/ParticleProperties.d.ts +15 -0
  304. package/dist/esm/particles/ParticleSystem.d.ts +69 -0
  305. package/dist/esm/particles/ParticleSystem.js +70 -0
  306. package/dist/esm/particles/ParticleSystem.js.map +1 -1
  307. package/dist/esm/particles/affectors/ColorAffector.d.ts +13 -0
  308. package/dist/esm/particles/affectors/ColorAffector.js +13 -0
  309. package/dist/esm/particles/affectors/ColorAffector.js.map +1 -1
  310. package/dist/esm/particles/affectors/ForceAffector.d.ts +11 -0
  311. package/dist/esm/particles/affectors/ForceAffector.js +11 -0
  312. package/dist/esm/particles/affectors/ForceAffector.js.map +1 -1
  313. package/dist/esm/particles/affectors/ParticleAffector.d.ts +13 -0
  314. package/dist/esm/particles/affectors/ScaleAffector.d.ts +10 -0
  315. package/dist/esm/particles/affectors/ScaleAffector.js +10 -0
  316. package/dist/esm/particles/affectors/ScaleAffector.js.map +1 -1
  317. package/dist/esm/particles/affectors/TorqueAffector.d.ts +11 -0
  318. package/dist/esm/particles/affectors/TorqueAffector.js +12 -1
  319. package/dist/esm/particles/affectors/TorqueAffector.js.map +1 -1
  320. package/dist/esm/particles/emitters/ParticleEmitter.d.ts +13 -0
  321. package/dist/esm/particles/emitters/ParticleOptions.d.ts +16 -0
  322. package/dist/esm/particles/emitters/ParticleOptions.js +16 -0
  323. package/dist/esm/particles/emitters/ParticleOptions.js.map +1 -1
  324. package/dist/esm/particles/emitters/UniversalEmitter.d.ts +23 -0
  325. package/dist/esm/particles/emitters/UniversalEmitter.js +23 -0
  326. package/dist/esm/particles/emitters/UniversalEmitter.js.map +1 -1
  327. package/dist/esm/rendering/CallbackRenderPass.d.ts +12 -0
  328. package/dist/esm/rendering/CallbackRenderPass.js +12 -0
  329. package/dist/esm/rendering/CallbackRenderPass.js.map +1 -1
  330. package/dist/esm/rendering/Container.d.ts +44 -0
  331. package/dist/esm/rendering/Container.js +62 -0
  332. package/dist/esm/rendering/Container.js.map +1 -1
  333. package/dist/esm/rendering/Drawable.d.ts +22 -0
  334. package/dist/esm/rendering/Drawable.js +22 -0
  335. package/dist/esm/rendering/Drawable.js.map +1 -1
  336. package/dist/esm/rendering/RenderBackend.d.ts +13 -0
  337. package/dist/esm/rendering/RenderBackendType.d.ts +4 -0
  338. package/dist/esm/rendering/RenderBackendType.js +4 -0
  339. package/dist/esm/rendering/RenderBackendType.js.map +1 -1
  340. package/dist/esm/rendering/RenderNode.d.ts +45 -0
  341. package/dist/esm/rendering/RenderNode.js +62 -0
  342. package/dist/esm/rendering/RenderNode.js.map +1 -1
  343. package/dist/esm/rendering/RenderPass.d.ts +8 -0
  344. package/dist/esm/rendering/RenderStats.d.ts +19 -0
  345. package/dist/esm/rendering/RenderStats.js +7 -0
  346. package/dist/esm/rendering/RenderStats.js.map +1 -1
  347. package/dist/esm/rendering/RenderTarget.d.ts +17 -0
  348. package/dist/esm/rendering/RenderTarget.js +17 -0
  349. package/dist/esm/rendering/RenderTarget.js.map +1 -1
  350. package/dist/esm/rendering/RenderTargetPass.d.ts +11 -0
  351. package/dist/esm/rendering/RenderTargetPass.js +7 -0
  352. package/dist/esm/rendering/RenderTargetPass.js.map +1 -1
  353. package/dist/esm/rendering/Renderer.d.ts +15 -0
  354. package/dist/esm/rendering/RendererRegistry.d.ts +7 -0
  355. package/dist/esm/rendering/RendererRegistry.js +7 -0
  356. package/dist/esm/rendering/RendererRegistry.js.map +1 -1
  357. package/dist/esm/rendering/View.d.ts +73 -6
  358. package/dist/esm/rendering/View.js +69 -2
  359. package/dist/esm/rendering/View.js.map +1 -1
  360. package/dist/esm/rendering/filters/BlurFilter.d.ts +9 -0
  361. package/dist/esm/rendering/filters/BlurFilter.js +8 -0
  362. package/dist/esm/rendering/filters/BlurFilter.js.map +1 -1
  363. package/dist/esm/rendering/filters/ColorFilter.d.ts +7 -0
  364. package/dist/esm/rendering/filters/ColorFilter.js +7 -0
  365. package/dist/esm/rendering/filters/ColorFilter.js.map +1 -1
  366. package/dist/esm/rendering/filters/Filter.d.ts +23 -0
  367. package/dist/esm/rendering/filters/Filter.js +20 -0
  368. package/dist/esm/rendering/filters/Filter.js.map +1 -1
  369. package/dist/esm/rendering/filters/WebGl2ShaderFilter.d.ts +114 -0
  370. package/dist/esm/rendering/filters/WebGl2ShaderFilter.js +273 -0
  371. package/dist/esm/rendering/filters/WebGl2ShaderFilter.js.map +1 -0
  372. package/dist/esm/rendering/filters/WebGpuShaderFilter.d.ts +116 -0
  373. package/dist/esm/rendering/filters/WebGpuShaderFilter.js +402 -0
  374. package/dist/esm/rendering/filters/WebGpuShaderFilter.js.map +1 -0
  375. package/dist/esm/rendering/index.d.ts +3 -0
  376. package/dist/esm/rendering/mesh/Mesh.d.ts +2 -0
  377. package/dist/esm/rendering/mesh/Mesh.js +3 -0
  378. package/dist/esm/rendering/mesh/Mesh.js.map +1 -1
  379. package/dist/esm/rendering/primitives/Graphics.d.ts +34 -0
  380. package/dist/esm/rendering/primitives/Graphics.js +34 -0
  381. package/dist/esm/rendering/primitives/Graphics.js.map +1 -1
  382. package/dist/esm/rendering/shader/Shader.d.ts +36 -0
  383. package/dist/esm/rendering/shader/Shader.js +26 -0
  384. package/dist/esm/rendering/shader/Shader.js.map +1 -1
  385. package/dist/esm/rendering/shader/ShaderAttribute.d.ts +13 -0
  386. package/dist/esm/rendering/shader/ShaderAttribute.js +13 -0
  387. package/dist/esm/rendering/shader/ShaderAttribute.js.map +1 -1
  388. package/dist/esm/rendering/shader/ShaderUniform.d.ts +27 -0
  389. package/dist/esm/rendering/shader/ShaderUniform.js +28 -1
  390. package/dist/esm/rendering/shader/ShaderUniform.js.map +1 -1
  391. package/dist/esm/rendering/shader/upgradeFragmentShaderToGl300.d.ts +34 -0
  392. package/dist/esm/rendering/shader/upgradeFragmentShaderToGl300.js +60 -0
  393. package/dist/esm/rendering/shader/upgradeFragmentShaderToGl300.js.map +1 -0
  394. package/dist/esm/rendering/sprite/AnimatedSprite.d.ts +38 -0
  395. package/dist/esm/rendering/sprite/AnimatedSprite.js +36 -0
  396. package/dist/esm/rendering/sprite/AnimatedSprite.js.map +1 -1
  397. package/dist/esm/rendering/sprite/Sprite.d.ts +62 -1
  398. package/dist/esm/rendering/sprite/Sprite.js +97 -19
  399. package/dist/esm/rendering/sprite/Sprite.js.map +1 -1
  400. package/dist/esm/rendering/sprite/Spritesheet.d.ts +25 -0
  401. package/dist/esm/rendering/sprite/Spritesheet.js +20 -0
  402. package/dist/esm/rendering/sprite/Spritesheet.js.map +1 -1
  403. package/dist/esm/rendering/text/Text.d.ts +2 -0
  404. package/dist/esm/rendering/text/Text.js +2 -0
  405. package/dist/esm/rendering/text/Text.js.map +1 -1
  406. package/dist/esm/rendering/text/TextStyle.d.ts +29 -0
  407. package/dist/esm/rendering/text/TextStyle.js +24 -0
  408. package/dist/esm/rendering/text/TextStyle.js.map +1 -1
  409. package/dist/esm/rendering/text/types.d.ts +1 -0
  410. package/dist/esm/rendering/texture/RenderTexture.d.ts +16 -0
  411. package/dist/esm/rendering/texture/RenderTexture.js +16 -0
  412. package/dist/esm/rendering/texture/RenderTexture.js.map +1 -1
  413. package/dist/esm/rendering/texture/Sampler.d.ts +23 -0
  414. package/dist/esm/rendering/texture/Sampler.js +13 -0
  415. package/dist/esm/rendering/texture/Sampler.js.map +1 -1
  416. package/dist/esm/rendering/texture/Texture.d.ts +30 -0
  417. package/dist/esm/rendering/texture/Texture.js +30 -0
  418. package/dist/esm/rendering/texture/Texture.js.map +1 -1
  419. package/dist/esm/rendering/types.d.ts +29 -0
  420. package/dist/esm/rendering/types.js +29 -0
  421. package/dist/esm/rendering/types.js.map +1 -1
  422. package/dist/esm/rendering/utils.d.ts +20 -0
  423. package/dist/esm/rendering/utils.js +10 -0
  424. package/dist/esm/rendering/utils.js.map +1 -1
  425. package/dist/esm/rendering/video/Video.d.ts +39 -1
  426. package/dist/esm/rendering/video/Video.js +68 -6
  427. package/dist/esm/rendering/video/Video.js.map +1 -1
  428. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.d.ts +7 -0
  429. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js +7 -0
  430. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js.map +1 -1
  431. package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts +17 -4
  432. package/dist/esm/rendering/webgl2/WebGl2Backend.js +20 -16
  433. package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -1
  434. package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.d.ts +8 -0
  435. package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js +8 -0
  436. package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js.map +1 -1
  437. package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts +45 -8
  438. package/dist/esm/rendering/webgpu/WebGpuBackend.js +160 -40
  439. package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -1
  440. package/dist/esm/resources/AbstractAssetFactory.d.ts +20 -0
  441. package/dist/esm/resources/AbstractAssetFactory.js +20 -0
  442. package/dist/esm/resources/AbstractAssetFactory.js.map +1 -1
  443. package/dist/esm/resources/AssetFactory.d.ts +26 -0
  444. package/dist/esm/resources/AssetManifest.d.ts +45 -0
  445. package/dist/esm/resources/AssetManifest.js +25 -0
  446. package/dist/esm/resources/AssetManifest.js.map +1 -1
  447. package/dist/esm/resources/CacheFirstStrategy.d.ts +12 -0
  448. package/dist/esm/resources/CacheFirstStrategy.js +12 -0
  449. package/dist/esm/resources/CacheFirstStrategy.js.map +1 -1
  450. package/dist/esm/resources/CacheStore.d.ts +23 -0
  451. package/dist/esm/resources/CacheStrategy.d.ts +20 -0
  452. package/dist/esm/resources/Database.d.ts +45 -0
  453. package/dist/esm/resources/FactoryRegistry.d.ts +28 -0
  454. package/dist/esm/resources/FactoryRegistry.js +24 -0
  455. package/dist/esm/resources/FactoryRegistry.js.map +1 -1
  456. package/dist/esm/resources/IndexedDbDatabase.d.ts +22 -1
  457. package/dist/esm/resources/IndexedDbDatabase.js +21 -0
  458. package/dist/esm/resources/IndexedDbDatabase.js.map +1 -1
  459. package/dist/esm/resources/IndexedDbStore.d.ts +20 -0
  460. package/dist/esm/resources/IndexedDbStore.js +12 -0
  461. package/dist/esm/resources/IndexedDbStore.js.map +1 -1
  462. package/dist/esm/resources/Loader.d.ts +167 -0
  463. package/dist/esm/resources/Loader.js +110 -0
  464. package/dist/esm/resources/Loader.js.map +1 -1
  465. package/dist/esm/resources/NetworkOnlyStrategy.d.ts +8 -0
  466. package/dist/esm/resources/NetworkOnlyStrategy.js +8 -0
  467. package/dist/esm/resources/NetworkOnlyStrategy.js.map +1 -1
  468. package/dist/esm/resources/factories/BinaryFactory.d.ts +13 -0
  469. package/dist/esm/resources/factories/BinaryFactory.js +13 -0
  470. package/dist/esm/resources/factories/BinaryFactory.js.map +1 -1
  471. package/dist/esm/resources/factories/FontFactory.d.ts +37 -0
  472. package/dist/esm/resources/factories/FontFactory.js +26 -0
  473. package/dist/esm/resources/factories/FontFactory.js.map +1 -1
  474. package/dist/esm/resources/factories/ImageFactory.d.ts +24 -0
  475. package/dist/esm/resources/factories/ImageFactory.js +19 -0
  476. package/dist/esm/resources/factories/ImageFactory.js.map +1 -1
  477. package/dist/esm/resources/factories/JsonFactory.d.ts +13 -0
  478. package/dist/esm/resources/factories/JsonFactory.js +13 -0
  479. package/dist/esm/resources/factories/JsonFactory.js.map +1 -1
  480. package/dist/esm/resources/factories/MusicFactory.d.ts +36 -0
  481. package/dist/esm/resources/factories/MusicFactory.js +44 -4
  482. package/dist/esm/resources/factories/MusicFactory.js.map +1 -1
  483. package/dist/esm/resources/factories/SoundFactory.d.ts +29 -0
  484. package/dist/esm/resources/factories/SoundFactory.js +18 -0
  485. package/dist/esm/resources/factories/SoundFactory.js.map +1 -1
  486. package/dist/esm/resources/factories/SvgFactory.d.ts +19 -0
  487. package/dist/esm/resources/factories/SvgFactory.js +19 -0
  488. package/dist/esm/resources/factories/SvgFactory.js.map +1 -1
  489. package/dist/esm/resources/factories/TextFactory.d.ts +11 -0
  490. package/dist/esm/resources/factories/TextFactory.js +11 -0
  491. package/dist/esm/resources/factories/TextFactory.js.map +1 -1
  492. package/dist/esm/resources/factories/TextureFactory.d.ts +25 -0
  493. package/dist/esm/resources/factories/TextureFactory.js +20 -0
  494. package/dist/esm/resources/factories/TextureFactory.js.map +1 -1
  495. package/dist/esm/resources/factories/VideoFactory.d.ts +37 -0
  496. package/dist/esm/resources/factories/VideoFactory.js +48 -5
  497. package/dist/esm/resources/factories/VideoFactory.js.map +1 -1
  498. package/dist/esm/resources/factories/VttFactory.d.ts +18 -0
  499. package/dist/esm/resources/factories/VttFactory.js +24 -0
  500. package/dist/esm/resources/factories/VttFactory.js.map +1 -1
  501. package/dist/esm/resources/factories/WasmFactory.d.ts +16 -0
  502. package/dist/esm/resources/factories/WasmFactory.js +16 -0
  503. package/dist/esm/resources/factories/WasmFactory.js.map +1 -1
  504. package/dist/esm/resources/utils.d.ts +10 -0
  505. package/dist/esm/resources/utils.js +10 -0
  506. package/dist/esm/resources/utils.js.map +1 -1
  507. package/dist/exo.esm.js +11182 -2538
  508. package/dist/exo.esm.js.map +1 -1
  509. package/package.json +20 -9
  510. package/dist/esm/core/Quadtree.d.ts +0 -20
  511. package/dist/esm/core/Quadtree.js +0 -86
  512. package/dist/esm/core/Quadtree.js.map +0 -1
@@ -1,13 +1,50 @@
1
1
  import { AbstractAssetFactory } from '@/resources/AbstractAssetFactory';
2
+ /**
3
+ * Options accepted by {@link FontFactory.create}.
4
+ */
2
5
  export interface FontFactoryOptions {
6
+ /** CSS font-family name passed to the {@link FontFace} constructor. Required. */
3
7
  family: string;
8
+ /** Optional CSS font descriptors (style, weight, stretch, etc.). */
4
9
  descriptors?: FontFaceDescriptors;
10
+ /**
11
+ * When `true` (the default), the loaded {@link FontFace} is added to
12
+ * `document.fonts` so it is immediately available for CSS and Canvas
13
+ * rendering. Set to `false` to skip registration and manage the font
14
+ * lifecycle manually.
15
+ */
5
16
  addToDocument?: boolean;
6
17
  }
18
+ /**
19
+ * {@link AssetFactory} implementation that loads web-font binary data (WOFF,
20
+ * WOFF2, TTF, OTF) and produces a parsed {@link FontFace}.
21
+ *
22
+ * By default each created font is registered with `document.fonts`, making it
23
+ * globally available to CSS and Canvas without any further steps. Fonts added
24
+ * this way are automatically removed from `document.fonts` when
25
+ * {@link FontFactory.destroy} is called.
26
+ */
7
27
  export declare class FontFactory extends AbstractAssetFactory<FontFace> {
8
28
  readonly storageName = "font";
9
29
  private readonly _addedFontFaces;
30
+ /**
31
+ * Reads the full response body as an {@link ArrayBuffer} suitable for
32
+ * passing to the {@link FontFace} constructor.
33
+ */
10
34
  process(response: Response): Promise<ArrayBuffer>;
35
+ /**
36
+ * Constructs and loads a {@link FontFace} from binary font data.
37
+ *
38
+ * Throws if `options.family` is not supplied, or if the buffer contains
39
+ * fewer than 4 bytes or is otherwise unrecognised as a valid font.
40
+ * Unless `options.addToDocument` is explicitly `false`, the font face is
41
+ * registered via `document.fonts.add()` immediately after loading.
42
+ */
11
43
  create(source: ArrayBuffer, options?: FontFactoryOptions): Promise<FontFace>;
44
+ /**
45
+ * Removes all font faces previously registered with `document.fonts` by
46
+ * this factory, then releases any tracked object URLs via the base
47
+ * {@link AbstractAssetFactory.destroy} implementation.
48
+ */
12
49
  destroy(): void;
13
50
  }
@@ -1,11 +1,32 @@
1
1
  import { AbstractAssetFactory } from '../AbstractAssetFactory.js';
2
2
 
3
+ /**
4
+ * {@link AssetFactory} implementation that loads web-font binary data (WOFF,
5
+ * WOFF2, TTF, OTF) and produces a parsed {@link FontFace}.
6
+ *
7
+ * By default each created font is registered with `document.fonts`, making it
8
+ * globally available to CSS and Canvas without any further steps. Fonts added
9
+ * this way are automatically removed from `document.fonts` when
10
+ * {@link FontFactory.destroy} is called.
11
+ */
3
12
  class FontFactory extends AbstractAssetFactory {
4
13
  storageName = 'font';
5
14
  _addedFontFaces = [];
15
+ /**
16
+ * Reads the full response body as an {@link ArrayBuffer} suitable for
17
+ * passing to the {@link FontFace} constructor.
18
+ */
6
19
  async process(response) {
7
20
  return await response.arrayBuffer();
8
21
  }
22
+ /**
23
+ * Constructs and loads a {@link FontFace} from binary font data.
24
+ *
25
+ * Throws if `options.family` is not supplied, or if the buffer contains
26
+ * fewer than 4 bytes or is otherwise unrecognised as a valid font.
27
+ * Unless `options.addToDocument` is explicitly `false`, the font face is
28
+ * registered via `document.fonts.add()` immediately after loading.
29
+ */
9
30
  async create(source, options) {
10
31
  if (!options?.family) {
11
32
  throw new Error('FontFactory.create requires options with a "family" property.');
@@ -23,6 +44,11 @@ class FontFactory extends AbstractAssetFactory {
23
44
  }
24
45
  return fontFace;
25
46
  }
47
+ /**
48
+ * Removes all font faces previously registered with `document.fonts` by
49
+ * this factory, then releases any tracked object URLs via the base
50
+ * {@link AbstractAssetFactory.destroy} implementation.
51
+ */
26
52
  destroy() {
27
53
  for (const fontFace of this._addedFontFaces) {
28
54
  document.fonts.delete(fontFace);
@@ -1 +1 @@
1
- {"version":3,"file":"FontFactory.js","sources":["../../../../../src/resources/factories/FontFactory.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAQM,MAAO,WAAY,SAAQ,oBAA8B,CAAA;IAE3C,WAAW,GAAG,MAAM;IAEnB,eAAe,GAAoB,EAAE;IAE/C,MAAM,OAAO,CAAC,QAAkB,EAAA;AACnC,QAAA,OAAO,MAAM,QAAQ,CAAC,WAAW,EAAE;IACvC;AAEO,IAAA,MAAM,MAAM,CAAC,MAAmB,EAAE,OAA4B,EAAA;AACjE,QAAA,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE;AAClB,YAAA,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC;QACpF;QAEA,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,OAAO;AAEtD,QAAA,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE;YACvB,MAAM,IAAI,WAAW,CAAC,CAAA,uDAAA,EAA0D,MAAM,CAAC,UAAU,CAAA,CAAA,CAAG,CAAC;QACzG;AAEA,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,MAAK;YAC/E,MAAM,IAAI,WAAW,CAAC,CAAA,kCAAA,EAAqC,MAAM,CAAC,UAAU,CAAA,QAAA,CAAU,CAAC;AAC3F,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,aAAa,KAAK,KAAK,EAAE;AACzB,YAAA,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC5B,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;QACvC;AAEA,QAAA,OAAO,QAAQ;IACnB;IAEgB,OAAO,GAAA;AACnB,QAAA,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE;AACzC,YAAA,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;QACnC;AACA,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;QAC/B,KAAK,CAAC,OAAO,EAAE;IACnB;AACH;;;;"}
1
+ {"version":3,"file":"FontFactory.js","sources":["../../../../../src/resources/factories/FontFactory.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAmBA;;;;;;;;AAQG;AACG,MAAO,WAAY,SAAQ,oBAA8B,CAAA;IAE3C,WAAW,GAAG,MAAM;IAEnB,eAAe,GAAoB,EAAE;AAEtD;;;AAGG;IACI,MAAM,OAAO,CAAC,QAAkB,EAAA;AACnC,QAAA,OAAO,MAAM,QAAQ,CAAC,WAAW,EAAE;IACvC;AAEA;;;;;;;AAOG;AACI,IAAA,MAAM,MAAM,CAAC,MAAmB,EAAE,OAA4B,EAAA;AACjE,QAAA,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE;AAClB,YAAA,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC;QACpF;QAEA,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,OAAO;AAEtD,QAAA,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE;YACvB,MAAM,IAAI,WAAW,CAAC,CAAA,uDAAA,EAA0D,MAAM,CAAC,UAAU,CAAA,CAAA,CAAG,CAAC;QACzG;AAEA,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,MAAK;YAC/E,MAAM,IAAI,WAAW,CAAC,CAAA,kCAAA,EAAqC,MAAM,CAAC,UAAU,CAAA,QAAA,CAAU,CAAC;AAC3F,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,aAAa,KAAK,KAAK,EAAE;AACzB,YAAA,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC5B,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;QACvC;AAEA,QAAA,OAAO,QAAQ;IACnB;AAEA;;;;AAIG;IACa,OAAO,GAAA;AACnB,QAAA,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE;AACzC,YAAA,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;QACnC;AACA,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;QAC/B,KAAK,CAAC,OAAO,EAAE;IACnB;AACH;;;;"}
@@ -1,10 +1,34 @@
1
1
  import { AbstractAssetFactory } from '@/resources/AbstractAssetFactory';
2
2
  interface ImageFactoryOptions {
3
+ /**
4
+ * MIME type used when constructing the intermediate {@link Blob}. When
5
+ * omitted the type is inferred from the buffer's magic bytes via
6
+ * `determineMimeType`.
7
+ */
3
8
  mimeType?: string;
4
9
  }
10
+ /**
11
+ * {@link AssetFactory} implementation that loads PNG, JPG, WebP, AVIF, and
12
+ * other browser-supported raster image formats and produces a decoded
13
+ * {@link HTMLImageElement}.
14
+ *
15
+ * MIME type detection is performed automatically from the buffer's magic bytes;
16
+ * pass an explicit `mimeType` in options to override.
17
+ */
5
18
  export declare class ImageFactory extends AbstractAssetFactory<HTMLImageElement> {
6
19
  readonly storageName = "image";
20
+ /**
21
+ * Reads the full response body as an {@link ArrayBuffer} for MIME-type
22
+ * detection and blob construction.
23
+ */
7
24
  process(response: Response): Promise<ArrayBuffer>;
25
+ /**
26
+ * Decodes image bytes into a fully loaded {@link HTMLImageElement}.
27
+ *
28
+ * Creates a temporary object URL from the buffer, assigns it to an
29
+ * `<img>` element, and revokes the URL once loading completes or fails.
30
+ * Rejects if the browser reports a load error or the load is aborted.
31
+ */
8
32
  create(source: ArrayBuffer, options?: ImageFactoryOptions): Promise<HTMLImageElement>;
9
33
  }
10
34
  export {};
@@ -1,11 +1,30 @@
1
1
  import { determineMimeType } from '../utils.js';
2
2
  import { AbstractAssetFactory } from '../AbstractAssetFactory.js';
3
3
 
4
+ /**
5
+ * {@link AssetFactory} implementation that loads PNG, JPG, WebP, AVIF, and
6
+ * other browser-supported raster image formats and produces a decoded
7
+ * {@link HTMLImageElement}.
8
+ *
9
+ * MIME type detection is performed automatically from the buffer's magic bytes;
10
+ * pass an explicit `mimeType` in options to override.
11
+ */
4
12
  class ImageFactory extends AbstractAssetFactory {
5
13
  storageName = 'image';
14
+ /**
15
+ * Reads the full response body as an {@link ArrayBuffer} for MIME-type
16
+ * detection and blob construction.
17
+ */
6
18
  async process(response) {
7
19
  return await response.arrayBuffer();
8
20
  }
21
+ /**
22
+ * Decodes image bytes into a fully loaded {@link HTMLImageElement}.
23
+ *
24
+ * Creates a temporary object URL from the buffer, assigns it to an
25
+ * `<img>` element, and revokes the URL once loading completes or fails.
26
+ * Rejects if the browser reports a load error or the load is aborted.
27
+ */
9
28
  async create(source, options = {}) {
10
29
  const blob = new Blob([source], { type: options.mimeType ?? determineMimeType(source) });
11
30
  const objectUrl = this.createObjectUrl(blob);
@@ -1 +1 @@
1
- {"version":3,"file":"ImageFactory.js","sources":["../../../../../src/resources/factories/ImageFactory.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAOM,MAAO,YAAa,SAAQ,oBAAsC,CAAA;IAEpD,WAAW,GAAG,OAAO;IAE9B,MAAM,OAAO,CAAC,QAAkB,EAAA;AACnC,QAAA,OAAO,MAAM,QAAQ,CAAC,WAAW,EAAE;IACvC;AAEO,IAAA,MAAM,MAAM,CAAC,MAAmB,EAAE,UAA+B,EAAE,EAAA;QACtE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;QACxF,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;QAE5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACnC,YAAA,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE;YACzB,MAAM,QAAQ,GAAG,MAAW;AACxB,gBAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;AACnC,YAAA,CAAC;AAED,YAAA,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAK;AAChC,gBAAA,QAAQ,EAAE;gBACV,OAAO,CAAC,KAAK,CAAC;AAClB,YAAA,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAClB,YAAA,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAK;AACjC,gBAAA,QAAQ,EAAE;AACV,gBAAA,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAChD,YAAA,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAClB,YAAA,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAK;AACjC,gBAAA,QAAQ,EAAE;AACV,gBAAA,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAChD,YAAA,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAElB,YAAA,KAAK,CAAC,GAAG,GAAG,SAAS;AACzB,QAAA,CAAC,CAAC;IACN;AACH;;;;"}
1
+ {"version":3,"file":"ImageFactory.js","sources":["../../../../../src/resources/factories/ImageFactory.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAYA;;;;;;;AAOG;AACG,MAAO,YAAa,SAAQ,oBAAsC,CAAA;IAEpD,WAAW,GAAG,OAAO;AAErC;;;AAGG;IACI,MAAM,OAAO,CAAC,QAAkB,EAAA;AACnC,QAAA,OAAO,MAAM,QAAQ,CAAC,WAAW,EAAE;IACvC;AAEA;;;;;;AAMG;AACI,IAAA,MAAM,MAAM,CAAC,MAAmB,EAAE,UAA+B,EAAE,EAAA;QACtE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;QACxF,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;QAE5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACnC,YAAA,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE;YACzB,MAAM,QAAQ,GAAG,MAAW;AACxB,gBAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;AACnC,YAAA,CAAC;AAED,YAAA,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAK;AAChC,gBAAA,QAAQ,EAAE;gBACV,OAAO,CAAC,KAAK,CAAC;AAClB,YAAA,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAClB,YAAA,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAK;AACjC,gBAAA,QAAQ,EAAE;AACV,gBAAA,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAChD,YAAA,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAClB,YAAA,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAK;AACjC,gBAAA,QAAQ,EAAE;AACV,gBAAA,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAChD,YAAA,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAElB,YAAA,KAAK,CAAC,GAAG,GAAG,SAAS;AACzB,QAAA,CAAC,CAAC;IACN;AACH;;;;"}
@@ -1,6 +1,19 @@
1
1
  import { AbstractAssetFactory } from '@/resources/AbstractAssetFactory';
2
+ /**
3
+ * {@link AssetFactory} implementation that parses JSON files and exposes them
4
+ * as plain JavaScript values.
5
+ *
6
+ * The parsed value is typed as `unknown`; callers are expected to narrow or
7
+ * cast the result to their specific schema type.
8
+ */
2
9
  export declare class JsonFactory extends AbstractAssetFactory<unknown> {
3
10
  readonly storageName = "json";
11
+ /**
12
+ * Parses the response body as JSON and returns the resulting value.
13
+ */
4
14
  process(response: Response): Promise<unknown>;
15
+ /**
16
+ * Returns the already-parsed value unchanged.
17
+ */
5
18
  create(source: unknown): Promise<unknown>;
6
19
  }
@@ -1,10 +1,23 @@
1
1
  import { AbstractAssetFactory } from '../AbstractAssetFactory.js';
2
2
 
3
+ /**
4
+ * {@link AssetFactory} implementation that parses JSON files and exposes them
5
+ * as plain JavaScript values.
6
+ *
7
+ * The parsed value is typed as `unknown`; callers are expected to narrow or
8
+ * cast the result to their specific schema type.
9
+ */
3
10
  class JsonFactory extends AbstractAssetFactory {
4
11
  storageName = 'json';
12
+ /**
13
+ * Parses the response body as JSON and returns the resulting value.
14
+ */
5
15
  async process(response) {
6
16
  return await response.json();
7
17
  }
18
+ /**
19
+ * Returns the already-parsed value unchanged.
20
+ */
8
21
  async create(source) {
9
22
  return source;
10
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"JsonFactory.js","sources":["../../../../../src/resources/factories/JsonFactory.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAEM,MAAO,WAAY,SAAQ,oBAA6B,CAAA;IAE1C,WAAW,GAAG,MAAM;IAE7B,MAAM,OAAO,CAAC,QAAkB,EAAA;AACnC,QAAA,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE;IAChC;IAEO,MAAM,MAAM,CAAC,MAAe,EAAA;AAC/B,QAAA,OAAO,MAAM;IACjB;AACH;;;;"}
1
+ {"version":3,"file":"JsonFactory.js","sources":["../../../../../src/resources/factories/JsonFactory.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAEA;;;;;;AAMG;AACG,MAAO,WAAY,SAAQ,oBAA6B,CAAA;IAE1C,WAAW,GAAG,MAAM;AAEpC;;AAEG;IACI,MAAM,OAAO,CAAC,QAAkB,EAAA;AACnC,QAAA,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE;IAChC;AAEA;;AAEG;IACI,MAAM,MAAM,CAAC,MAAe,EAAA;AAC/B,QAAA,OAAO,MAAM;IACjB;AACH;;;;"}
@@ -2,15 +2,51 @@ import type { PlaybackOptions, StreamingLoadEvent } from '@/core/types';
2
2
  import { AbstractAssetFactory } from '@/resources/AbstractAssetFactory';
3
3
  import { Music } from '@/audio/Music';
4
4
  interface MusicFactoryOptions {
5
+ /**
6
+ * MIME type for the audio blob. Inferred from magic bytes when omitted.
7
+ */
5
8
  mimeType?: string;
9
+ /**
10
+ * The `HTMLAudioElement` event that signals the asset is ready. Defaults
11
+ * to `'canplaythrough'`. Use `'loadedmetadata'` or `'canplay'` for faster
12
+ * (but potentially less buffered) readiness.
13
+ */
6
14
  loadEvent?: StreamingLoadEvent;
15
+ /** Initial playback settings forwarded to the {@link Music} instance. */
7
16
  playbackOptions?: Partial<PlaybackOptions>;
8
17
  }
18
+ /**
19
+ * {@link AssetFactory} implementation that loads streaming audio assets
20
+ * (MP3, OGG, WAV, AAC, and other browser-supported formats) and produces a
21
+ * {@link Music} instance backed by an `<audio>` element.
22
+ *
23
+ * Unlike {@link SoundFactory}, music assets are decoded lazily via the browser's
24
+ * streaming audio pipeline rather than being fully decoded into an
25
+ * {@link AudioBuffer} up-front, making them appropriate for long-form
26
+ * background tracks. The underlying `<audio>` elements are paused and detached
27
+ * when {@link MusicFactory.destroy} is called.
28
+ */
9
29
  export declare class MusicFactory extends AbstractAssetFactory<Music> {
10
30
  readonly storageName = "music";
11
31
  private readonly _audioElements;
32
+ /**
33
+ * Reads the full response body as an {@link ArrayBuffer} for blob
34
+ * construction.
35
+ */
12
36
  process(response: Response): Promise<ArrayBuffer>;
37
+ /**
38
+ * Wraps audio bytes in an `<audio>` element and resolves with a
39
+ * {@link Music} instance once the configured `loadEvent` fires.
40
+ *
41
+ * Rejects if the element emits an `error` or `abort` event before the
42
+ * load event is received.
43
+ */
13
44
  create(source: ArrayBuffer, options?: MusicFactoryOptions): Promise<Music>;
45
+ /**
46
+ * Pauses and resets all `<audio>` elements created by this factory to
47
+ * release media resources, then delegates to the base
48
+ * {@link AbstractAssetFactory.destroy} to revoke any object URLs.
49
+ */
14
50
  destroy(): void;
15
51
  }
16
52
  export {};
@@ -3,25 +3,65 @@ import { determineMimeType } from '../utils.js';
3
3
  import { Music } from '../../audio/Music.js';
4
4
 
5
5
  const onceListenerOption = { once: true };
6
+ /**
7
+ * {@link AssetFactory} implementation that loads streaming audio assets
8
+ * (MP3, OGG, WAV, AAC, and other browser-supported formats) and produces a
9
+ * {@link Music} instance backed by an `<audio>` element.
10
+ *
11
+ * Unlike {@link SoundFactory}, music assets are decoded lazily via the browser's
12
+ * streaming audio pipeline rather than being fully decoded into an
13
+ * {@link AudioBuffer} up-front, making them appropriate for long-form
14
+ * background tracks. The underlying `<audio>` elements are paused and detached
15
+ * when {@link MusicFactory.destroy} is called.
16
+ */
6
17
  class MusicFactory extends AbstractAssetFactory {
7
18
  storageName = 'music';
8
19
  _audioElements = [];
20
+ /**
21
+ * Reads the full response body as an {@link ArrayBuffer} for blob
22
+ * construction.
23
+ */
9
24
  async process(response) {
10
25
  return await response.arrayBuffer();
11
26
  }
27
+ /**
28
+ * Wraps audio bytes in an `<audio>` element and resolves with a
29
+ * {@link Music} instance once the configured `loadEvent` fires.
30
+ *
31
+ * Rejects if the element emits an `error` or `abort` event before the
32
+ * load event is received.
33
+ */
12
34
  async create(source, options = {}) {
13
35
  const { mimeType, loadEvent, playbackOptions } = options;
14
36
  const blob = new Blob([source], { type: mimeType ?? determineMimeType(source) });
37
+ const objectUrl = this.createObjectUrl(blob);
15
38
  return new Promise((resolve, reject) => {
16
39
  const audio = document.createElement('audio');
17
40
  this._audioElements.push(audio);
18
- audio.addEventListener('error', () => reject(Error('Error loading audio source.')), onceListenerOption);
19
- audio.addEventListener('abort', () => reject(Error('Audio loading was canceled.')), onceListenerOption);
20
- audio.addEventListener(loadEvent ?? 'canplaythrough', () => resolve(new Music(audio, playbackOptions)), onceListenerOption);
41
+ const finalize = () => {
42
+ this.revokeObjectUrl(objectUrl);
43
+ };
44
+ audio.addEventListener('error', () => {
45
+ finalize();
46
+ reject(Error('Error loading audio source.'));
47
+ }, onceListenerOption);
48
+ audio.addEventListener('abort', () => {
49
+ finalize();
50
+ reject(Error('Audio loading was canceled.'));
51
+ }, onceListenerOption);
52
+ audio.addEventListener(loadEvent ?? 'canplaythrough', () => {
53
+ finalize();
54
+ resolve(new Music(audio, playbackOptions));
55
+ }, onceListenerOption);
21
56
  audio.preload = 'auto';
22
- audio.src = this.createObjectUrl(blob);
57
+ audio.src = objectUrl;
23
58
  });
24
59
  }
60
+ /**
61
+ * Pauses and resets all `<audio>` elements created by this factory to
62
+ * release media resources, then delegates to the base
63
+ * {@link AbstractAssetFactory.destroy} to revoke any object URLs.
64
+ */
25
65
  destroy() {
26
66
  for (const audio of this._audioElements) {
27
67
  audio.pause();
@@ -1 +1 @@
1
- {"version":3,"file":"MusicFactory.js","sources":["../../../../../src/resources/factories/MusicFactory.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKA,MAAM,kBAAkB,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE;AAQnC,MAAO,YAAa,SAAQ,oBAA2B,CAAA;IAEzC,WAAW,GAAG,OAAO;IAEpB,cAAc,GAA4B,EAAE;IAEtD,MAAM,OAAO,CAAC,QAAkB,EAAA;AACnC,QAAA,OAAO,MAAM,QAAQ,CAAC,WAAW,EAAE;IACvC;AAEO,IAAA,MAAM,MAAM,CAAC,MAAmB,EAAE,UAA+B,EAAE,EAAA;QACtE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,OAAO;QACxD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;QAEhF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;YACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAC7C,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;AAE/B,YAAA,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC,EAAE,kBAAkB,CAAC;AACvG,YAAA,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC,EAAE,kBAAkB,CAAC;YACvG,KAAK,CAAC,gBAAgB,CAAC,SAAS,IAAI,gBAAgB,EAAE,MAAM,OAAO,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,EAAE,kBAAkB,CAAC;AAE3H,YAAA,KAAK,CAAC,OAAO,GAAG,MAAM;YACtB,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AAC1C,QAAA,CAAC,CAAC;IACN;IAEgB,OAAO,GAAA;AACnB,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,cAAc,EAAE;YACrC,KAAK,CAAC,KAAK,EAAE;AACb,YAAA,KAAK,CAAC,GAAG,GAAG,EAAE;YACd,KAAK,CAAC,IAAI,EAAE;QAChB;AACA,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;QAC9B,KAAK,CAAC,OAAO,EAAE;IACnB;AACH;;;;"}
1
+ {"version":3,"file":"MusicFactory.js","sources":["../../../../../src/resources/factories/MusicFactory.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKA,MAAM,kBAAkB,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE;AAiBzC;;;;;;;;;;AAUG;AACG,MAAO,YAAa,SAAQ,oBAA2B,CAAA;IAEzC,WAAW,GAAG,OAAO;IAEpB,cAAc,GAA4B,EAAE;AAE7D;;;AAGG;IACI,MAAM,OAAO,CAAC,QAAkB,EAAA;AACnC,QAAA,OAAO,MAAM,QAAQ,CAAC,WAAW,EAAE;IACvC;AAEA;;;;;;AAMG;AACI,IAAA,MAAM,MAAM,CAAC,MAAmB,EAAE,UAA+B,EAAE,EAAA;QACtE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,OAAO;QACxD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;QAChF,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;QAE5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;YACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAC7C,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;YAE/B,MAAM,QAAQ,GAAG,MAAW;AACxB,gBAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;AACnC,YAAA,CAAC;AAED,YAAA,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAK;AACjC,gBAAA,QAAQ,EAAE;AACV,gBAAA,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAChD,CAAC,EAAE,kBAAkB,CAAC;AACtB,YAAA,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAK;AACjC,gBAAA,QAAQ,EAAE;AACV,gBAAA,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAChD,CAAC,EAAE,kBAAkB,CAAC;YACtB,KAAK,CAAC,gBAAgB,CAAC,SAAS,IAAI,gBAAgB,EAAE,MAAK;AACvD,gBAAA,QAAQ,EAAE;gBACV,OAAO,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;YAC9C,CAAC,EAAE,kBAAkB,CAAC;AAEtB,YAAA,KAAK,CAAC,OAAO,GAAG,MAAM;AACtB,YAAA,KAAK,CAAC,GAAG,GAAG,SAAS;AACzB,QAAA,CAAC,CAAC;IACN;AAEA;;;;AAIG;IACa,OAAO,GAAA;AACnB,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,cAAc,EAAE;YACrC,KAAK,CAAC,KAAK,EAAE;AACb,YAAA,KAAK,CAAC,GAAG,GAAG,EAAE;YACd,KAAK,CAAC,IAAI,EAAE;QAChB;AACA,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;QAC9B,KAAK,CAAC,OAAO,EAAE;IACnB;AACH;;;;"}
@@ -2,13 +2,42 @@ import type { PlaybackOptions } from '@/core/types';
2
2
  import { AbstractAssetFactory } from '@/resources/AbstractAssetFactory';
3
3
  import { Sound, type AudioSpriteClip } from '@/audio/Sound';
4
4
  interface SoundFactoryOptions {
5
+ /** Initial playback settings forwarded to the {@link Sound} instance. */
5
6
  playbackOptions?: Partial<PlaybackOptions>;
7
+ /**
8
+ * Number of concurrent voices the {@link Sound} instance pre-allocates.
9
+ * Higher values allow more simultaneous plays of the same clip. Default
10
+ * 8 (chosen by {@link Sound} when omitted).
11
+ */
6
12
  poolSize?: number;
13
+ /**
14
+ * Named sub-regions of the decoded {@link AudioBuffer} for use as an audio
15
+ * sprite sheet. Each entry maps a clip name to a {@link AudioSpriteClip}
16
+ * descriptor.
17
+ */
7
18
  sprites?: Readonly<Record<string, AudioSpriteClip>>;
8
19
  }
20
+ /**
21
+ * {@link AssetFactory} implementation that loads short audio assets
22
+ * (MP3, OGG, WAV, AAC, and other Web Audio API-supported formats), fully
23
+ * decodes them into an {@link AudioBuffer}, and produces a {@link Sound}
24
+ * instance ready for low-latency playback.
25
+ *
26
+ * For long-form background music use {@link MusicFactory} instead, which
27
+ * streams audio without up-front decoding. Supports audio sprite sheets via
28
+ * the `sprites` option.
29
+ */
9
30
  export declare class SoundFactory extends AbstractAssetFactory<Sound> {
10
31
  readonly storageName = "sound";
32
+ /**
33
+ * Reads the full response body as an {@link ArrayBuffer} for decoding
34
+ * by the Web Audio API.
35
+ */
11
36
  process(response: Response): Promise<ArrayBuffer>;
37
+ /**
38
+ * Fully decodes the audio buffer via the shared `AudioContext` and
39
+ * constructs a {@link Sound} with the given options.
40
+ */
12
41
  create(source: ArrayBuffer, options?: SoundFactoryOptions): Promise<Sound>;
13
42
  }
14
43
  export {};
@@ -2,11 +2,29 @@ import { AbstractAssetFactory } from '../AbstractAssetFactory.js';
2
2
  import { Sound } from '../../audio/Sound.js';
3
3
  import { decodeAudioData } from '../../audio/audio-context.js';
4
4
 
5
+ /**
6
+ * {@link AssetFactory} implementation that loads short audio assets
7
+ * (MP3, OGG, WAV, AAC, and other Web Audio API-supported formats), fully
8
+ * decodes them into an {@link AudioBuffer}, and produces a {@link Sound}
9
+ * instance ready for low-latency playback.
10
+ *
11
+ * For long-form background music use {@link MusicFactory} instead, which
12
+ * streams audio without up-front decoding. Supports audio sprite sheets via
13
+ * the `sprites` option.
14
+ */
5
15
  class SoundFactory extends AbstractAssetFactory {
6
16
  storageName = 'sound';
17
+ /**
18
+ * Reads the full response body as an {@link ArrayBuffer} for decoding
19
+ * by the Web Audio API.
20
+ */
7
21
  async process(response) {
8
22
  return await response.arrayBuffer();
9
23
  }
24
+ /**
25
+ * Fully decodes the audio buffer via the shared `AudioContext` and
26
+ * constructs a {@link Sound} with the given options.
27
+ */
10
28
  async create(source, options = {}) {
11
29
  const audioBuffer = await decodeAudioData(source);
12
30
  const sound = new Sound(audioBuffer, {
@@ -1 +1 @@
1
- {"version":3,"file":"SoundFactory.js","sources":["../../../../../src/resources/factories/SoundFactory.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAWM,MAAO,YAAa,SAAQ,oBAA2B,CAAA;IAEzC,WAAW,GAAG,OAAO;IAE9B,MAAM,OAAO,CAAC,QAAkB,EAAA;AACnC,QAAA,OAAO,MAAM,QAAQ,CAAC,WAAW,EAAE;IACvC;AAEO,IAAA,MAAM,MAAM,CAAC,MAAmB,EAAE,UAA+B,EAAE,EAAA;AACtE,QAAA,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC;AAEjD,QAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,WAAW,EAAE;YACjC,GAAG,OAAO,CAAC,eAAe;YAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;AAC3B,SAAA,CAAC;AAEF,QAAA,OAAO,KAAK;IAChB;AACH;;;;"}
1
+ {"version":3,"file":"SoundFactory.js","sources":["../../../../../src/resources/factories/SoundFactory.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAsBA;;;;;;;;;AASG;AACG,MAAO,YAAa,SAAQ,oBAA2B,CAAA;IAEzC,WAAW,GAAG,OAAO;AAErC;;;AAGG;IACI,MAAM,OAAO,CAAC,QAAkB,EAAA;AACnC,QAAA,OAAO,MAAM,QAAQ,CAAC,WAAW,EAAE;IACvC;AAEA;;;AAGG;AACI,IAAA,MAAM,MAAM,CAAC,MAAmB,EAAE,UAA+B,EAAE,EAAA;AACtE,QAAA,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC;AAEjD,QAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,WAAW,EAAE;YACjC,GAAG,OAAO,CAAC,eAAe;YAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;AAC3B,SAAA,CAAC;AAEF,QAAA,OAAO,KAAK;IAChB;AACH;;;;"}
@@ -1,6 +1,25 @@
1
1
  import { AbstractAssetFactory } from '@/resources/AbstractAssetFactory';
2
+ /**
3
+ * {@link AssetFactory} implementation that loads SVG markup and produces a
4
+ * rasterised {@link HTMLImageElement}.
5
+ *
6
+ * The SVG source text is wrapped in an `image/svg+xml` blob and decoded by the
7
+ * browser's image pipeline, which means the result is a bitmap snapshot at the
8
+ * element's intrinsic size rather than a live, interactive SVG DOM. Use this
9
+ * when you need an SVG as a static sprite or texture source.
10
+ */
2
11
  export declare class SvgFactory extends AbstractAssetFactory<HTMLImageElement> {
3
12
  readonly storageName = "svg";
13
+ /**
14
+ * Reads the response body as UTF-8 text containing the raw SVG markup.
15
+ */
4
16
  process(response: Response): Promise<string>;
17
+ /**
18
+ * Renders the SVG markup into a fully loaded {@link HTMLImageElement}.
19
+ *
20
+ * Creates a temporary `image/svg+xml` object URL, assigns it to an `<img>`
21
+ * element, and revokes the URL once loading settles. Rejects on load error
22
+ * or abort.
23
+ */
5
24
  create(source: string): Promise<HTMLImageElement>;
6
25
  }
@@ -1,10 +1,29 @@
1
1
  import { AbstractAssetFactory } from '../AbstractAssetFactory.js';
2
2
 
3
+ /**
4
+ * {@link AssetFactory} implementation that loads SVG markup and produces a
5
+ * rasterised {@link HTMLImageElement}.
6
+ *
7
+ * The SVG source text is wrapped in an `image/svg+xml` blob and decoded by the
8
+ * browser's image pipeline, which means the result is a bitmap snapshot at the
9
+ * element's intrinsic size rather than a live, interactive SVG DOM. Use this
10
+ * when you need an SVG as a static sprite or texture source.
11
+ */
3
12
  class SvgFactory extends AbstractAssetFactory {
4
13
  storageName = 'svg';
14
+ /**
15
+ * Reads the response body as UTF-8 text containing the raw SVG markup.
16
+ */
5
17
  async process(response) {
6
18
  return await response.text();
7
19
  }
20
+ /**
21
+ * Renders the SVG markup into a fully loaded {@link HTMLImageElement}.
22
+ *
23
+ * Creates a temporary `image/svg+xml` object URL, assigns it to an `<img>`
24
+ * element, and revokes the URL once loading settles. Rejects on load error
25
+ * or abort.
26
+ */
8
27
  async create(source) {
9
28
  const blob = new Blob([source], { type: 'image/svg+xml' });
10
29
  const objectUrl = this.createObjectUrl(blob);
@@ -1 +1 @@
1
- {"version":3,"file":"SvgFactory.js","sources":["../../../../../src/resources/factories/SvgFactory.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAEM,MAAO,UAAW,SAAQ,oBAAsC,CAAA;IAElD,WAAW,GAAG,KAAK;IAE5B,MAAM,OAAO,CAAC,QAAkB,EAAA;AACnC,QAAA,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE;IAChC;IAEO,MAAM,MAAM,CAAC,MAAc,EAAA;AAC9B,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;QAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;QAE5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACnC,YAAA,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE;YACzB,MAAM,QAAQ,GAAG,MAAW;AACxB,gBAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;AACnC,YAAA,CAAC;AAED,YAAA,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAK;AAChC,gBAAA,QAAQ,EAAE;gBACV,OAAO,CAAC,KAAK,CAAC;AAClB,YAAA,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAClB,YAAA,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAK;AACjC,gBAAA,QAAQ,EAAE;AACV,gBAAA,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAChD,YAAA,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAClB,YAAA,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAK;AACjC,gBAAA,QAAQ,EAAE;AACV,gBAAA,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAChD,YAAA,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAElB,YAAA,KAAK,CAAC,GAAG,GAAG,SAAS;AACzB,QAAA,CAAC,CAAC;IACN;AACH;;;;"}
1
+ {"version":3,"file":"SvgFactory.js","sources":["../../../../../src/resources/factories/SvgFactory.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAEA;;;;;;;;AAQG;AACG,MAAO,UAAW,SAAQ,oBAAsC,CAAA;IAElD,WAAW,GAAG,KAAK;AAEnC;;AAEG;IACI,MAAM,OAAO,CAAC,QAAkB,EAAA;AACnC,QAAA,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE;IAChC;AAEA;;;;;;AAMG;IACI,MAAM,MAAM,CAAC,MAAc,EAAA;AAC9B,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;QAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;QAE5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACnC,YAAA,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE;YACzB,MAAM,QAAQ,GAAG,MAAW;AACxB,gBAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;AACnC,YAAA,CAAC;AAED,YAAA,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAK;AAChC,gBAAA,QAAQ,EAAE;gBACV,OAAO,CAAC,KAAK,CAAC;AAClB,YAAA,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAClB,YAAA,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAK;AACjC,gBAAA,QAAQ,EAAE;AACV,gBAAA,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAChD,YAAA,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAClB,YAAA,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAK;AACjC,gBAAA,QAAQ,EAAE;AACV,gBAAA,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAChD,YAAA,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAElB,YAAA,KAAK,CAAC,GAAG,GAAG,SAAS;AACzB,QAAA,CAAC,CAAC;IACN;AACH;;;;"}
@@ -1,6 +1,17 @@
1
1
  import { AbstractAssetFactory } from '@/resources/AbstractAssetFactory';
2
+ /**
3
+ * {@link AssetFactory} implementation that loads plain-text files (TXT, CSV,
4
+ * GLSL shaders, HTML fragments, and any other UTF-8 text) and exposes them as
5
+ * JavaScript strings.
6
+ */
2
7
  export declare class TextFactory extends AbstractAssetFactory<string> {
3
8
  readonly storageName = "text";
9
+ /**
10
+ * Reads the response body as a UTF-8 decoded string.
11
+ */
4
12
  process(response: Response): Promise<string>;
13
+ /**
14
+ * Returns the decoded string unchanged.
15
+ */
5
16
  create(source: string): Promise<string>;
6
17
  }
@@ -1,10 +1,21 @@
1
1
  import { AbstractAssetFactory } from '../AbstractAssetFactory.js';
2
2
 
3
+ /**
4
+ * {@link AssetFactory} implementation that loads plain-text files (TXT, CSV,
5
+ * GLSL shaders, HTML fragments, and any other UTF-8 text) and exposes them as
6
+ * JavaScript strings.
7
+ */
3
8
  class TextFactory extends AbstractAssetFactory {
4
9
  storageName = 'text';
10
+ /**
11
+ * Reads the response body as a UTF-8 decoded string.
12
+ */
5
13
  async process(response) {
6
14
  return await response.text();
7
15
  }
16
+ /**
17
+ * Returns the decoded string unchanged.
18
+ */
8
19
  async create(source) {
9
20
  return source;
10
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TextFactory.js","sources":["../../../../../src/resources/factories/TextFactory.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAEM,MAAO,WAAY,SAAQ,oBAA4B,CAAA;IAEzC,WAAW,GAAG,MAAM;IAE7B,MAAM,OAAO,CAAC,QAAkB,EAAA;AACnC,QAAA,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE;IAChC;IAEO,MAAM,MAAM,CAAC,MAAc,EAAA;AAC9B,QAAA,OAAO,MAAM;IACjB;AACH;;;;"}
1
+ {"version":3,"file":"TextFactory.js","sources":["../../../../../src/resources/factories/TextFactory.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAEA;;;;AAIG;AACG,MAAO,WAAY,SAAQ,oBAA4B,CAAA;IAEzC,WAAW,GAAG,MAAM;AAEpC;;AAEG;IACI,MAAM,OAAO,CAAC,QAAkB,EAAA;AACnC,QAAA,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE;IAChC;AAEA;;AAEG;IACI,MAAM,MAAM,CAAC,MAAc,EAAA;AAC9B,QAAA,OAAO,MAAM;IACjB;AACH;;;;"}
@@ -2,12 +2,37 @@ import { Texture } from '@/rendering/texture/Texture';
2
2
  import type { SamplerOptions } from '@/rendering/texture/Sampler';
3
3
  import { AbstractAssetFactory } from '@/resources/AbstractAssetFactory';
4
4
  interface TextureFactoryOptions {
5
+ /**
6
+ * MIME type for the intermediate blob. Inferred from magic bytes when
7
+ * omitted.
8
+ */
5
9
  mimeType?: string;
10
+ /** Sampler parameters (wrap mode, filter, etc.) forwarded to the {@link Texture} constructor. */
6
11
  samplerOptions?: SamplerOptions;
7
12
  }
13
+ /**
14
+ * {@link AssetFactory} implementation that loads PNG, JPG, WebP, AVIF, and
15
+ * other browser-supported raster image formats and produces a GPU-ready
16
+ * {@link Texture} instance.
17
+ *
18
+ * MIME type detection is performed automatically from the buffer's magic bytes;
19
+ * pass an explicit `mimeType` to override. Sampler state (wrap, filter, etc.)
20
+ * can be configured via `samplerOptions`.
21
+ */
8
22
  export declare class TextureFactory extends AbstractAssetFactory<Texture> {
9
23
  readonly storageName = "texture";
24
+ /**
25
+ * Reads the full response body as an {@link ArrayBuffer} for MIME-type
26
+ * detection and blob construction.
27
+ */
10
28
  process(response: Response): Promise<ArrayBuffer>;
29
+ /**
30
+ * Decodes image bytes into a fully loaded {@link HTMLImageElement} and
31
+ * wraps it in a {@link Texture} with the given sampler options.
32
+ *
33
+ * Creates a temporary object URL, resolves when the image's `load` event
34
+ * fires, and revokes the URL regardless of outcome.
35
+ */
11
36
  create(source: ArrayBuffer, options?: TextureFactoryOptions): Promise<Texture>;
12
37
  }
13
38
  export {};
@@ -2,11 +2,31 @@ import { Texture } from '../../rendering/texture/Texture.js';
2
2
  import { AbstractAssetFactory } from '../AbstractAssetFactory.js';
3
3
  import { determineMimeType } from '../utils.js';
4
4
 
5
+ /**
6
+ * {@link AssetFactory} implementation that loads PNG, JPG, WebP, AVIF, and
7
+ * other browser-supported raster image formats and produces a GPU-ready
8
+ * {@link Texture} instance.
9
+ *
10
+ * MIME type detection is performed automatically from the buffer's magic bytes;
11
+ * pass an explicit `mimeType` to override. Sampler state (wrap, filter, etc.)
12
+ * can be configured via `samplerOptions`.
13
+ */
5
14
  class TextureFactory extends AbstractAssetFactory {
6
15
  storageName = 'texture';
16
+ /**
17
+ * Reads the full response body as an {@link ArrayBuffer} for MIME-type
18
+ * detection and blob construction.
19
+ */
7
20
  async process(response) {
8
21
  return await response.arrayBuffer();
9
22
  }
23
+ /**
24
+ * Decodes image bytes into a fully loaded {@link HTMLImageElement} and
25
+ * wraps it in a {@link Texture} with the given sampler options.
26
+ *
27
+ * Creates a temporary object URL, resolves when the image's `load` event
28
+ * fires, and revokes the URL regardless of outcome.
29
+ */
10
30
  async create(source, options = {}) {
11
31
  const { mimeType, samplerOptions } = options;
12
32
  const blob = new Blob([source], { type: mimeType ?? determineMimeType(source) });
@@ -1 +1 @@
1
- {"version":3,"file":"TextureFactory.js","sources":["../../../../../src/resources/factories/TextureFactory.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAUM,MAAO,cAAe,SAAQ,oBAA6B,CAAA;IAE7C,WAAW,GAAG,SAAS;IAEhC,MAAM,OAAO,CAAC,QAAkB,EAAA;AACnC,QAAA,OAAO,MAAM,QAAQ,CAAC,WAAW,EAAE;IACvC;AAEO,IAAA,MAAM,MAAM,CAAC,MAAmB,EAAE,UAAiC,EAAE,EAAA;AACxE,QAAA,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,OAAO;QAC5C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;QAChF,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;QAE5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACnC,YAAA,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE;YACzB,MAAM,QAAQ,GAAG,MAAW;AACxB,gBAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;AACnC,YAAA,CAAC;AAED,YAAA,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAK;AAChC,gBAAA,QAAQ,EAAE;gBACV,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;AAC/C,YAAA,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAClB,YAAA,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAK;AACjC,gBAAA,QAAQ,EAAE;AACV,gBAAA,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAChD,YAAA,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAClB,YAAA,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAK;AACjC,gBAAA,QAAQ,EAAE;AACV,gBAAA,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAChD,YAAA,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAElB,YAAA,KAAK,CAAC,GAAG,GAAG,SAAS;AACzB,QAAA,CAAC,CAAC;IACN;AACH;;;;"}
1
+ {"version":3,"file":"TextureFactory.js","sources":["../../../../../src/resources/factories/TextureFactory.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAeA;;;;;;;;AAQG;AACG,MAAO,cAAe,SAAQ,oBAA6B,CAAA;IAE7C,WAAW,GAAG,SAAS;AAEvC;;;AAGG;IACI,MAAM,OAAO,CAAC,QAAkB,EAAA;AACnC,QAAA,OAAO,MAAM,QAAQ,CAAC,WAAW,EAAE;IACvC;AAEA;;;;;;AAMG;AACI,IAAA,MAAM,MAAM,CAAC,MAAmB,EAAE,UAAiC,EAAE,EAAA;AACxE,QAAA,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,OAAO;QAC5C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;QAChF,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;QAE5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACnC,YAAA,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE;YACzB,MAAM,QAAQ,GAAG,MAAW;AACxB,gBAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;AACnC,YAAA,CAAC;AAED,YAAA,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAK;AAChC,gBAAA,QAAQ,EAAE;gBACV,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;AAC/C,YAAA,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAClB,YAAA,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAK;AACjC,gBAAA,QAAQ,EAAE;AACV,gBAAA,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAChD,YAAA,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAClB,YAAA,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAK;AACjC,gBAAA,QAAQ,EAAE;AACV,gBAAA,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAChD,YAAA,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAElB,YAAA,KAAK,CAAC,GAAG,GAAG,SAAS;AACzB,QAAA,CAAC,CAAC;IACN;AACH;;;;"}