@codexo/exojs 0.13.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (822) hide show
  1. package/CHANGELOG.md +265 -6
  2. package/README.md +82 -67
  3. package/dist/esm/animation/Tween.d.ts.map +1 -1
  4. package/dist/esm/animation/Tween.js +1 -2
  5. package/dist/esm/animation/Tween.js.map +1 -1
  6. package/dist/esm/animation/TweenManager.d.ts +50 -7
  7. package/dist/esm/animation/TweenManager.d.ts.map +1 -1
  8. package/dist/esm/animation/TweenManager.js +68 -10
  9. package/dist/esm/animation/TweenManager.js.map +1 -1
  10. package/dist/esm/animation/TweenSequencer.d.ts +139 -0
  11. package/dist/esm/animation/TweenSequencer.d.ts.map +1 -0
  12. package/dist/esm/animation/TweenSequencer.js +305 -0
  13. package/dist/esm/animation/TweenSequencer.js.map +1 -0
  14. package/dist/esm/animation/index.d.ts +7 -4
  15. package/dist/esm/animation/index.d.ts.map +1 -1
  16. package/dist/esm/audio/AudioBus.d.ts +12 -12
  17. package/dist/esm/audio/AudioBus.js +29 -29
  18. package/dist/esm/audio/AudioEffect.d.ts +18 -0
  19. package/dist/esm/audio/AudioEffect.d.ts.map +1 -0
  20. package/dist/esm/audio/AudioEffect.js +16 -0
  21. package/dist/esm/audio/AudioEffect.js.map +1 -0
  22. package/dist/esm/audio/AudioGenerator.d.ts +91 -0
  23. package/dist/esm/audio/AudioGenerator.d.ts.map +1 -0
  24. package/dist/esm/audio/AudioGenerator.js +165 -0
  25. package/dist/esm/audio/AudioGenerator.js.map +1 -0
  26. package/dist/esm/audio/AudioGeneratorVoice.d.ts +52 -0
  27. package/dist/esm/audio/AudioGeneratorVoice.d.ts.map +1 -0
  28. package/dist/esm/audio/AudioGeneratorVoice.js +141 -0
  29. package/dist/esm/audio/AudioGeneratorVoice.js.map +1 -0
  30. package/dist/esm/audio/AudioInput.d.ts +39 -0
  31. package/dist/esm/audio/AudioInput.d.ts.map +1 -0
  32. package/dist/esm/audio/AudioInput.js +53 -0
  33. package/dist/esm/audio/AudioInput.js.map +1 -0
  34. package/dist/esm/audio/AudioManager.d.ts +72 -34
  35. package/dist/esm/audio/AudioManager.d.ts.map +1 -1
  36. package/dist/esm/audio/AudioManager.js +97 -51
  37. package/dist/esm/audio/AudioManager.js.map +1 -1
  38. package/dist/esm/audio/AudioStream.d.ts +49 -0
  39. package/dist/esm/audio/AudioStream.d.ts.map +1 -0
  40. package/dist/esm/audio/AudioStream.js +109 -0
  41. package/dist/esm/audio/AudioStream.js.map +1 -0
  42. package/dist/esm/audio/AudioStreamVoice.d.ts +61 -0
  43. package/dist/esm/audio/AudioStreamVoice.d.ts.map +1 -0
  44. package/dist/esm/audio/AudioStreamVoice.js +137 -0
  45. package/dist/esm/audio/AudioStreamVoice.js.map +1 -0
  46. package/dist/esm/audio/BaseVoice.d.ts +111 -0
  47. package/dist/esm/audio/BaseVoice.d.ts.map +1 -0
  48. package/dist/esm/audio/BaseVoice.js +298 -0
  49. package/dist/esm/audio/BaseVoice.js.map +1 -0
  50. package/dist/esm/audio/BiquadEffect.d.ts +53 -0
  51. package/dist/esm/audio/BiquadEffect.d.ts.map +1 -0
  52. package/dist/esm/audio/BiquadEffect.js +110 -0
  53. package/dist/esm/audio/BiquadEffect.js.map +1 -0
  54. package/dist/esm/audio/InputVoice.d.ts +41 -0
  55. package/dist/esm/audio/InputVoice.d.ts.map +1 -0
  56. package/dist/esm/audio/InputVoice.js +85 -0
  57. package/dist/esm/audio/InputVoice.js.map +1 -0
  58. package/dist/esm/audio/NoopVoice.d.ts +29 -0
  59. package/dist/esm/audio/NoopVoice.d.ts.map +1 -0
  60. package/dist/esm/audio/NoopVoice.js +52 -0
  61. package/dist/esm/audio/NoopVoice.js.map +1 -0
  62. package/dist/esm/audio/Playable.d.ts +135 -0
  63. package/dist/esm/audio/Playable.d.ts.map +1 -0
  64. package/dist/esm/audio/Sound.d.ts +64 -69
  65. package/dist/esm/audio/Sound.d.ts.map +1 -1
  66. package/dist/esm/audio/Sound.js +176 -377
  67. package/dist/esm/audio/Sound.js.map +1 -1
  68. package/dist/esm/audio/SoundVoice.d.ts +63 -0
  69. package/dist/esm/audio/SoundVoice.d.ts.map +1 -0
  70. package/dist/esm/audio/SoundVoice.js +168 -0
  71. package/dist/esm/audio/SoundVoice.js.map +1 -0
  72. package/dist/esm/audio/WorkletEffect.d.ts +68 -0
  73. package/dist/esm/audio/WorkletEffect.d.ts.map +1 -0
  74. package/dist/esm/audio/WorkletEffect.js +177 -0
  75. package/dist/esm/audio/WorkletEffect.js.map +1 -0
  76. package/dist/esm/audio/audio-context.js +1 -1
  77. package/dist/esm/audio/audio-context.js.map +1 -1
  78. package/dist/esm/audio/crossFade.d.ts +22 -13
  79. package/dist/esm/audio/crossFade.d.ts.map +1 -1
  80. package/dist/esm/audio/crossFade.js +21 -13
  81. package/dist/esm/audio/crossFade.js.map +1 -1
  82. package/dist/esm/audio/filters/HighpassFilter.d.ts +2 -2
  83. package/dist/esm/audio/filters/HighpassFilter.js +2 -2
  84. package/dist/esm/audio/filters/LowpassFilter.d.ts +2 -2
  85. package/dist/esm/audio/filters/LowpassFilter.js +2 -2
  86. package/dist/esm/audio/filters/index.d.ts +0 -10
  87. package/dist/esm/audio/filters/index.d.ts.map +1 -1
  88. package/dist/esm/audio/index.d.ts +13 -15
  89. package/dist/esm/audio/index.d.ts.map +1 -1
  90. package/dist/esm/core/Application.d.ts +169 -14
  91. package/dist/esm/core/Application.d.ts.map +1 -1
  92. package/dist/esm/core/Application.js +306 -31
  93. package/dist/esm/core/Application.js.map +1 -1
  94. package/dist/esm/core/BuildInfo.js +2 -2
  95. package/dist/esm/core/Codec.d.ts +41 -0
  96. package/dist/esm/core/Codec.d.ts.map +1 -0
  97. package/dist/esm/core/Codec.js +79 -0
  98. package/dist/esm/core/Codec.js.map +1 -0
  99. package/dist/esm/core/Color.d.ts +6 -4
  100. package/dist/esm/core/Color.d.ts.map +1 -1
  101. package/dist/esm/core/Color.js +19 -15
  102. package/dist/esm/core/Color.js.map +1 -1
  103. package/dist/esm/core/DisposalScope.d.ts +50 -0
  104. package/dist/esm/core/DisposalScope.d.ts.map +1 -0
  105. package/dist/esm/core/DisposalScope.js +86 -0
  106. package/dist/esm/core/DisposalScope.js.map +1 -0
  107. package/dist/esm/core/FixedTimestep.d.ts +28 -0
  108. package/dist/esm/core/FixedTimestep.d.ts.map +1 -0
  109. package/dist/esm/core/FixedTimestep.js +62 -0
  110. package/dist/esm/core/FixedTimestep.js.map +1 -0
  111. package/dist/esm/core/Perf.d.ts +10 -22
  112. package/dist/esm/core/Perf.d.ts.map +1 -1
  113. package/dist/esm/core/Perf.js +15 -8
  114. package/dist/esm/core/Perf.js.map +1 -1
  115. package/dist/esm/core/Registry.d.ts +64 -0
  116. package/dist/esm/core/Registry.d.ts.map +1 -0
  117. package/dist/esm/core/Registry.js +79 -0
  118. package/dist/esm/core/Registry.js.map +1 -0
  119. package/dist/esm/core/Scene.d.ts +83 -21
  120. package/dist/esm/core/Scene.d.ts.map +1 -1
  121. package/dist/esm/core/Scene.js +127 -16
  122. package/dist/esm/core/Scene.js.map +1 -1
  123. package/dist/esm/core/SceneManager.d.ts +28 -59
  124. package/dist/esm/core/SceneManager.d.ts.map +1 -1
  125. package/dist/esm/core/SceneManager.js +86 -155
  126. package/dist/esm/core/SceneManager.js.map +1 -1
  127. package/dist/esm/core/SceneNode.d.ts +78 -7
  128. package/dist/esm/core/SceneNode.d.ts.map +1 -1
  129. package/dist/esm/core/SceneNode.js +162 -21
  130. package/dist/esm/core/SceneNode.js.map +1 -1
  131. package/dist/esm/core/Signal.js.map +1 -1
  132. package/dist/esm/core/Stage.d.ts +49 -0
  133. package/dist/esm/core/Stage.d.ts.map +1 -0
  134. package/dist/esm/core/System.d.ts +22 -0
  135. package/dist/esm/core/System.d.ts.map +1 -0
  136. package/dist/esm/core/SystemRegistry.d.ts +40 -0
  137. package/dist/esm/core/SystemRegistry.d.ts.map +1 -0
  138. package/dist/esm/core/SystemRegistry.js +114 -0
  139. package/dist/esm/core/SystemRegistry.js.map +1 -0
  140. package/dist/esm/core/Time.d.ts +15 -0
  141. package/dist/esm/core/Time.d.ts.map +1 -1
  142. package/dist/esm/core/Time.js +25 -0
  143. package/dist/esm/core/Time.js.map +1 -1
  144. package/dist/esm/core/dev.d.ts +9 -4
  145. package/dist/esm/core/dev.d.ts.map +1 -1
  146. package/dist/esm/core/dev.js +5 -0
  147. package/dist/esm/core/dev.js.map +1 -1
  148. package/dist/esm/core/index.d.ts +30 -15
  149. package/dist/esm/core/index.d.ts.map +1 -1
  150. package/dist/esm/core/letterbox.d.ts +25 -0
  151. package/dist/esm/core/letterbox.d.ts.map +1 -0
  152. package/dist/esm/core/letterbox.js +26 -0
  153. package/dist/esm/core/letterbox.js.map +1 -0
  154. package/dist/esm/core/logging.d.ts +34 -0
  155. package/dist/esm/core/logging.d.ts.map +1 -0
  156. package/dist/esm/core/logging.js +59 -0
  157. package/dist/esm/core/logging.js.map +1 -0
  158. package/dist/esm/core/serialization/NodeSerializer.d.ts +71 -0
  159. package/dist/esm/core/serialization/NodeSerializer.d.ts.map +1 -0
  160. package/dist/esm/core/serialization/Prefab.d.ts +49 -0
  161. package/dist/esm/core/serialization/Prefab.d.ts.map +1 -0
  162. package/dist/esm/core/serialization/Prefab.js +61 -0
  163. package/dist/esm/core/serialization/Prefab.js.map +1 -0
  164. package/dist/esm/core/serialization/SerializationRegistry.d.ts +95 -0
  165. package/dist/esm/core/serialization/SerializationRegistry.d.ts.map +1 -0
  166. package/dist/esm/core/serialization/SerializationRegistry.js +108 -0
  167. package/dist/esm/core/serialization/SerializationRegistry.js.map +1 -0
  168. package/dist/esm/core/serialization/commonFields.d.ts +20 -0
  169. package/dist/esm/core/serialization/commonFields.d.ts.map +1 -0
  170. package/dist/esm/core/serialization/commonFields.js +155 -0
  171. package/dist/esm/core/serialization/commonFields.js.map +1 -0
  172. package/dist/esm/core/serialization/coreSerializers.d.ts +9 -0
  173. package/dist/esm/core/serialization/coreSerializers.d.ts.map +1 -0
  174. package/dist/esm/core/serialization/coreSerializers.js +101 -0
  175. package/dist/esm/core/serialization/coreSerializers.js.map +1 -0
  176. package/dist/esm/core/serialization/index.d.ts +6 -0
  177. package/dist/esm/core/serialization/index.d.ts.map +1 -0
  178. package/dist/esm/core/serialization/read.d.ts +65 -0
  179. package/dist/esm/core/serialization/read.d.ts.map +1 -0
  180. package/dist/esm/core/serialization/read.js +48 -0
  181. package/dist/esm/core/serialization/read.js.map +1 -0
  182. package/dist/esm/core/serialization/renderingSerializers.d.ts +7 -0
  183. package/dist/esm/core/serialization/renderingSerializers.d.ts.map +1 -0
  184. package/dist/esm/core/serialization/renderingSerializers.js +320 -0
  185. package/dist/esm/core/serialization/renderingSerializers.js.map +1 -0
  186. package/dist/esm/core/serialization/serialize.d.ts +56 -0
  187. package/dist/esm/core/serialization/serialize.d.ts.map +1 -0
  188. package/dist/esm/core/serialization/serialize.js +144 -0
  189. package/dist/esm/core/serialization/serialize.js.map +1 -0
  190. package/dist/esm/core/serialization/serializerHelpers.d.ts +46 -0
  191. package/dist/esm/core/serialization/serializerHelpers.d.ts.map +1 -0
  192. package/dist/esm/core/serialization/serializerHelpers.js +161 -0
  193. package/dist/esm/core/serialization/serializerHelpers.js.map +1 -0
  194. package/dist/esm/core/serialization/types.d.ts +49 -0
  195. package/dist/esm/core/serialization/types.d.ts.map +1 -0
  196. package/dist/esm/core/serialization/types.js +9 -0
  197. package/dist/esm/core/serialization/types.js.map +1 -0
  198. package/dist/esm/core/serialization/uiSerializers.d.ts +7 -0
  199. package/dist/esm/core/serialization/uiSerializers.d.ts.map +1 -0
  200. package/dist/esm/core/serialization/uiSerializers.js +206 -0
  201. package/dist/esm/core/serialization/uiSerializers.js.map +1 -0
  202. package/dist/esm/core/types.d.ts +1 -1
  203. package/dist/esm/core/types.d.ts.map +1 -1
  204. package/dist/esm/core/utils.d.ts +1 -16
  205. package/dist/esm/core/utils.d.ts.map +1 -1
  206. package/dist/esm/core/utils.js +2 -100
  207. package/dist/esm/core/utils.js.map +1 -1
  208. package/dist/esm/debug/PerformanceLayer.js +8 -9
  209. package/dist/esm/debug/PerformanceLayer.js.map +1 -1
  210. package/dist/esm/debug/PointerStackLayer.d.ts.map +1 -1
  211. package/dist/esm/debug/PointerStackLayer.js +9 -6
  212. package/dist/esm/debug/PointerStackLayer.js.map +1 -1
  213. package/dist/esm/debug/RenderPassInspectorLayer.d.ts.map +1 -1
  214. package/dist/esm/debug/RenderPassInspectorLayer.js +19 -12
  215. package/dist/esm/debug/RenderPassInspectorLayer.js.map +1 -1
  216. package/dist/esm/extensions/Extension.d.ts +39 -4
  217. package/dist/esm/extensions/Extension.d.ts.map +1 -1
  218. package/dist/esm/extensions/materialize.d.ts +9 -1
  219. package/dist/esm/extensions/materialize.d.ts.map +1 -1
  220. package/dist/esm/extensions/materialize.js +17 -2
  221. package/dist/esm/extensions/materialize.js.map +1 -1
  222. package/dist/esm/extensions/snapshot.d.ts +2 -1
  223. package/dist/esm/extensions/snapshot.d.ts.map +1 -1
  224. package/dist/esm/extensions/snapshot.js +8 -0
  225. package/dist/esm/extensions/snapshot.js.map +1 -1
  226. package/dist/esm/index.d.ts +2 -1
  227. package/dist/esm/index.d.ts.map +1 -1
  228. package/dist/esm/index.js +41 -61
  229. package/dist/esm/index.js.map +1 -1
  230. package/dist/esm/input/FocusManager.d.ts +59 -0
  231. package/dist/esm/input/FocusManager.d.ts.map +1 -0
  232. package/dist/esm/input/FocusManager.js +175 -0
  233. package/dist/esm/input/FocusManager.js.map +1 -0
  234. package/dist/esm/input/Gamepad.d.ts +10 -0
  235. package/dist/esm/input/Gamepad.d.ts.map +1 -1
  236. package/dist/esm/input/Gamepad.js +20 -4
  237. package/dist/esm/input/Gamepad.js.map +1 -1
  238. package/dist/esm/input/GamepadAxis.js +2 -2
  239. package/dist/esm/input/GamepadDefinitions.d.ts.map +1 -1
  240. package/dist/esm/input/GamepadDefinitions.js +6 -2
  241. package/dist/esm/input/GamepadDefinitions.js.map +1 -1
  242. package/dist/esm/input/GestureRecognizer.d.ts +1 -2
  243. package/dist/esm/input/GestureRecognizer.d.ts.map +1 -1
  244. package/dist/esm/input/GestureRecognizer.js +1 -3
  245. package/dist/esm/input/GestureRecognizer.js.map +1 -1
  246. package/dist/esm/input/InputBinding.js +3 -3
  247. package/dist/esm/input/InputBinding.js.map +1 -1
  248. package/dist/esm/input/InputManager.d.ts +7 -2
  249. package/dist/esm/input/InputManager.d.ts.map +1 -1
  250. package/dist/esm/input/InputManager.js +40 -21
  251. package/dist/esm/input/InputManager.js.map +1 -1
  252. package/dist/esm/input/InteractionManager.d.ts +67 -2
  253. package/dist/esm/input/InteractionManager.d.ts.map +1 -1
  254. package/dist/esm/input/InteractionManager.js +165 -41
  255. package/dist/esm/input/InteractionManager.js.map +1 -1
  256. package/dist/esm/input/KeyEvent.d.ts +25 -0
  257. package/dist/esm/input/KeyEvent.d.ts.map +1 -0
  258. package/dist/esm/input/KeyEvent.js +32 -0
  259. package/dist/esm/input/KeyEvent.js.map +1 -0
  260. package/dist/esm/input/Pointer.d.ts +21 -4
  261. package/dist/esm/input/Pointer.d.ts.map +1 -1
  262. package/dist/esm/input/Pointer.js +54 -15
  263. package/dist/esm/input/Pointer.js.map +1 -1
  264. package/dist/esm/input/index.d.ts +3 -1
  265. package/dist/esm/input/index.d.ts.map +1 -1
  266. package/dist/esm/math/AbstractVector.d.ts.map +1 -1
  267. package/dist/esm/math/AbstractVector.js +7 -2
  268. package/dist/esm/math/AbstractVector.js.map +1 -1
  269. package/dist/esm/math/Circle.d.ts.map +1 -1
  270. package/dist/esm/math/Circle.js +5 -1
  271. package/dist/esm/math/Circle.js.map +1 -1
  272. package/dist/esm/math/Line.d.ts +1 -1
  273. package/dist/esm/math/Line.d.ts.map +1 -1
  274. package/dist/esm/math/Line.js +1 -1
  275. package/dist/esm/math/Line.js.map +1 -1
  276. package/dist/esm/math/Matrix.d.ts.map +1 -1
  277. package/dist/esm/math/Matrix.js +6 -1
  278. package/dist/esm/math/Matrix.js.map +1 -1
  279. package/dist/esm/math/ObservableVector.d.ts +26 -8
  280. package/dist/esm/math/ObservableVector.d.ts.map +1 -1
  281. package/dist/esm/math/ObservableVector.js +24 -16
  282. package/dist/esm/math/ObservableVector.js.map +1 -1
  283. package/dist/esm/math/Polygon.d.ts +5 -0
  284. package/dist/esm/math/Polygon.d.ts.map +1 -1
  285. package/dist/esm/math/Polygon.js +27 -3
  286. package/dist/esm/math/Polygon.js.map +1 -1
  287. package/dist/esm/math/Random.d.ts +9 -9
  288. package/dist/esm/math/Random.d.ts.map +1 -1
  289. package/dist/esm/math/Random.js +46 -46
  290. package/dist/esm/math/Random.js.map +1 -1
  291. package/dist/esm/math/Rectangle.d.ts +11 -4
  292. package/dist/esm/math/Rectangle.d.ts.map +1 -1
  293. package/dist/esm/math/Rectangle.js +12 -6
  294. package/dist/esm/math/Rectangle.js.map +1 -1
  295. package/dist/esm/math/Vector.d.ts +1 -1
  296. package/dist/esm/math/Vector.d.ts.map +1 -1
  297. package/dist/esm/math/Vector.js +1 -1
  298. package/dist/esm/math/Vector.js.map +1 -1
  299. package/dist/esm/math/collision-detection.d.ts +42 -0
  300. package/dist/esm/math/collision-detection.d.ts.map +1 -1
  301. package/dist/esm/math/collision-detection.js +54 -4
  302. package/dist/esm/math/collision-detection.js.map +1 -1
  303. package/dist/esm/math/collision-primitives.d.ts.map +1 -1
  304. package/dist/esm/math/collision-primitives.js +4 -0
  305. package/dist/esm/math/collision-primitives.js.map +1 -1
  306. package/dist/esm/math/geometry.d.ts +26 -0
  307. package/dist/esm/math/geometry.d.ts.map +1 -1
  308. package/dist/esm/math/geometry.js +89 -2
  309. package/dist/esm/math/geometry.js.map +1 -1
  310. package/dist/esm/math/index.d.ts +7 -5
  311. package/dist/esm/math/index.d.ts.map +1 -1
  312. package/dist/esm/math/swept-collision.d.ts +13 -0
  313. package/dist/esm/math/swept-collision.d.ts.map +1 -1
  314. package/dist/esm/math/swept-collision.js +15 -1
  315. package/dist/esm/math/swept-collision.js.map +1 -1
  316. package/dist/esm/math/triangulate.d.ts.map +1 -1
  317. package/dist/esm/math/triangulate.js +9 -1
  318. package/dist/esm/math/triangulate.js.map +1 -1
  319. package/dist/esm/math/utils.d.ts +20 -0
  320. package/dist/esm/math/utils.d.ts.map +1 -1
  321. package/dist/esm/math/utils.js +18 -15
  322. package/dist/esm/math/utils.js.map +1 -1
  323. package/dist/esm/renderer-sdk.d.ts +2 -0
  324. package/dist/esm/renderer-sdk.d.ts.map +1 -1
  325. package/dist/esm/{rendering.js → renderer-sdk.js} +1 -1
  326. package/dist/esm/renderer-sdk.js.map +1 -0
  327. package/dist/esm/rendering/BackendTargetPass.d.ts +1 -1
  328. package/dist/esm/rendering/BackendTargetPass.d.ts.map +1 -1
  329. package/dist/esm/rendering/CallbackRenderPass.d.ts +14 -10
  330. package/dist/esm/rendering/CallbackRenderPass.d.ts.map +1 -1
  331. package/dist/esm/rendering/CallbackRenderPass.js +17 -12
  332. package/dist/esm/rendering/CallbackRenderPass.js.map +1 -1
  333. package/dist/esm/rendering/Container.d.ts +3 -0
  334. package/dist/esm/rendering/Container.d.ts.map +1 -1
  335. package/dist/esm/rendering/Container.js +28 -5
  336. package/dist/esm/rendering/Container.js.map +1 -1
  337. package/dist/esm/rendering/DrawContext.d.ts +48 -0
  338. package/dist/esm/rendering/DrawContext.d.ts.map +1 -0
  339. package/dist/esm/rendering/Drawable.d.ts +24 -0
  340. package/dist/esm/rendering/Drawable.d.ts.map +1 -1
  341. package/dist/esm/rendering/Drawable.js +54 -0
  342. package/dist/esm/rendering/Drawable.js.map +1 -1
  343. package/dist/esm/rendering/GpuResourceAccountant.d.ts +65 -0
  344. package/dist/esm/rendering/GpuResourceAccountant.d.ts.map +1 -0
  345. package/dist/esm/rendering/GpuResourceAccountant.js +130 -0
  346. package/dist/esm/rendering/GpuResourceAccountant.js.map +1 -0
  347. package/dist/esm/rendering/PassContext.d.ts +42 -0
  348. package/dist/esm/rendering/PassContext.d.ts.map +1 -0
  349. package/dist/esm/rendering/PassContext.js +48 -0
  350. package/dist/esm/rendering/PassContext.js.map +1 -0
  351. package/dist/esm/rendering/RenderBackend.d.ts +29 -1
  352. package/dist/esm/rendering/RenderBackend.d.ts.map +1 -1
  353. package/dist/esm/rendering/RenderBatch.d.ts +55 -0
  354. package/dist/esm/rendering/RenderBatch.d.ts.map +1 -0
  355. package/dist/esm/rendering/RenderBatch.js +107 -0
  356. package/dist/esm/rendering/RenderBatch.js.map +1 -0
  357. package/dist/esm/rendering/RenderNode.d.ts +50 -10
  358. package/dist/esm/rendering/RenderNode.d.ts.map +1 -1
  359. package/dist/esm/rendering/RenderNode.js +115 -22
  360. package/dist/esm/rendering/RenderNode.js.map +1 -1
  361. package/dist/esm/rendering/RenderNodePass.d.ts +1 -1
  362. package/dist/esm/rendering/RenderNodePass.d.ts.map +1 -1
  363. package/dist/esm/rendering/RenderNodePass.js +2 -2
  364. package/dist/esm/rendering/RenderNodePass.js.map +1 -1
  365. package/dist/esm/rendering/RenderStats.d.ts +39 -0
  366. package/dist/esm/rendering/RenderStats.d.ts.map +1 -1
  367. package/dist/esm/rendering/RenderStats.js +14 -0
  368. package/dist/esm/rendering/RenderStats.js.map +1 -1
  369. package/dist/esm/rendering/RendererRegistry.d.ts.map +1 -1
  370. package/dist/esm/rendering/RendererRegistry.js +20 -23
  371. package/dist/esm/rendering/RendererRegistry.js.map +1 -1
  372. package/dist/esm/rendering/RenderingContext.d.ts +132 -17
  373. package/dist/esm/rendering/RenderingContext.d.ts.map +1 -1
  374. package/dist/esm/rendering/RenderingContext.js +228 -28
  375. package/dist/esm/rendering/RenderingContext.js.map +1 -1
  376. package/dist/esm/rendering/TransformBuffer.d.ts +23 -0
  377. package/dist/esm/rendering/TransformBuffer.d.ts.map +1 -1
  378. package/dist/esm/rendering/TransformBuffer.js +60 -0
  379. package/dist/esm/rendering/TransformBuffer.js.map +1 -1
  380. package/dist/esm/rendering/View.d.ts +85 -15
  381. package/dist/esm/rendering/View.d.ts.map +1 -1
  382. package/dist/esm/rendering/View.js +81 -27
  383. package/dist/esm/rendering/View.js.map +1 -1
  384. package/dist/esm/rendering/filters/WebGpuShaderFilter.d.ts.map +1 -1
  385. package/dist/esm/rendering/filters/WebGpuShaderFilter.js +10 -1
  386. package/dist/esm/rendering/filters/WebGpuShaderFilter.js.map +1 -1
  387. package/dist/esm/rendering/geometry/Geometry.d.ts.map +1 -1
  388. package/dist/esm/rendering/geometry/Geometry.js +4 -2
  389. package/dist/esm/rendering/geometry/Geometry.js.map +1 -1
  390. package/dist/esm/rendering/gradient/Gradient.d.ts.map +1 -1
  391. package/dist/esm/rendering/gradient/Gradient.js +7 -2
  392. package/dist/esm/rendering/gradient/Gradient.js.map +1 -1
  393. package/dist/esm/rendering/material/MaterialKey.d.ts.map +1 -1
  394. package/dist/esm/rendering/material/MaterialKey.js +2 -0
  395. package/dist/esm/rendering/material/MaterialKey.js.map +1 -1
  396. package/dist/esm/rendering/material/MeshMaterial.d.ts +20 -1
  397. package/dist/esm/rendering/material/MeshMaterial.d.ts.map +1 -1
  398. package/dist/esm/rendering/material/MeshMaterial.js +17 -0
  399. package/dist/esm/rendering/material/MeshMaterial.js.map +1 -1
  400. package/dist/esm/rendering/material/ShaderSource.js +6 -0
  401. package/dist/esm/rendering/material/ShaderSource.js.map +1 -1
  402. package/dist/esm/rendering/material/SpriteMaterial.d.ts +20 -1
  403. package/dist/esm/rendering/material/SpriteMaterial.d.ts.map +1 -1
  404. package/dist/esm/rendering/material/SpriteMaterial.js +17 -0
  405. package/dist/esm/rendering/material/SpriteMaterial.js.map +1 -1
  406. package/dist/esm/rendering/mesh/ImmediateMesh.d.ts +48 -0
  407. package/dist/esm/rendering/mesh/ImmediateMesh.d.ts.map +1 -0
  408. package/dist/esm/rendering/mesh/ImmediateMesh.js +85 -0
  409. package/dist/esm/rendering/mesh/ImmediateMesh.js.map +1 -0
  410. package/dist/esm/rendering/mesh/Mesh.d.ts +29 -6
  411. package/dist/esm/rendering/mesh/Mesh.d.ts.map +1 -1
  412. package/dist/esm/rendering/mesh/Mesh.js +40 -13
  413. package/dist/esm/rendering/mesh/Mesh.js.map +1 -1
  414. package/dist/esm/rendering/pixelSnap.d.ts.map +1 -1
  415. package/dist/esm/rendering/pixelSnap.js +1 -0
  416. package/dist/esm/rendering/pixelSnap.js.map +1 -1
  417. package/dist/esm/rendering/plan/RenderCommand.d.ts +31 -9
  418. package/dist/esm/rendering/plan/RenderCommand.d.ts.map +1 -1
  419. package/dist/esm/rendering/plan/RenderCommand.js +23 -21
  420. package/dist/esm/rendering/plan/RenderCommand.js.map +1 -1
  421. package/dist/esm/rendering/plan/RenderEffectExecutor.d.ts.map +1 -1
  422. package/dist/esm/rendering/plan/RenderEffectExecutor.js +8 -2
  423. package/dist/esm/rendering/plan/RenderEffectExecutor.js.map +1 -1
  424. package/dist/esm/rendering/plan/RenderInstruction.d.ts +12 -39
  425. package/dist/esm/rendering/plan/RenderInstruction.d.ts.map +1 -1
  426. package/dist/esm/rendering/plan/RenderPlanBuilder.d.ts +17 -2
  427. package/dist/esm/rendering/plan/RenderPlanBuilder.d.ts.map +1 -1
  428. package/dist/esm/rendering/plan/RenderPlanBuilder.js +154 -50
  429. package/dist/esm/rendering/plan/RenderPlanBuilder.js.map +1 -1
  430. package/dist/esm/rendering/plan/RenderPlanOptimizer.d.ts.map +1 -1
  431. package/dist/esm/rendering/plan/RenderPlanOptimizer.js +31 -4
  432. package/dist/esm/rendering/plan/RenderPlanOptimizer.js.map +1 -1
  433. package/dist/esm/rendering/plan/RenderPlanPlayer.d.ts.map +1 -1
  434. package/dist/esm/rendering/plan/RenderPlanPlayer.js +54 -17
  435. package/dist/esm/rendering/plan/RenderPlanPlayer.js.map +1 -1
  436. package/dist/esm/rendering/plan/RenderScope.d.ts +23 -10
  437. package/dist/esm/rendering/plan/RenderScope.d.ts.map +1 -1
  438. package/dist/esm/rendering/primitives/Graphics.d.ts +16 -1
  439. package/dist/esm/rendering/primitives/Graphics.d.ts.map +1 -1
  440. package/dist/esm/rendering/primitives/Graphics.js +46 -9
  441. package/dist/esm/rendering/primitives/Graphics.js.map +1 -1
  442. package/dist/esm/rendering/{index.d.ts → public.d.ts} +9 -39
  443. package/dist/esm/rendering/public.d.ts.map +1 -0
  444. package/dist/esm/rendering/shader/ShaderAttribute.d.ts.map +1 -1
  445. package/dist/esm/rendering/shader/ShaderAttribute.js +2 -0
  446. package/dist/esm/rendering/shader/ShaderAttribute.js.map +1 -1
  447. package/dist/esm/rendering/sprite/AnimatedSprite.d.ts +60 -12
  448. package/dist/esm/rendering/sprite/AnimatedSprite.d.ts.map +1 -1
  449. package/dist/esm/rendering/sprite/AnimatedSprite.js +142 -30
  450. package/dist/esm/rendering/sprite/AnimatedSprite.js.map +1 -1
  451. package/dist/esm/rendering/sprite/NineSliceSprite.d.ts.map +1 -1
  452. package/dist/esm/rendering/sprite/NineSliceSprite.js +10 -11
  453. package/dist/esm/rendering/sprite/NineSliceSprite.js.map +1 -1
  454. package/dist/esm/rendering/sprite/RepeatingSprite.d.ts.map +1 -1
  455. package/dist/esm/rendering/sprite/RepeatingSprite.js +1 -3
  456. package/dist/esm/rendering/sprite/RepeatingSprite.js.map +1 -1
  457. package/dist/esm/rendering/sprite/Sprite.d.ts.map +1 -1
  458. package/dist/esm/rendering/sprite/Sprite.js +30 -3
  459. package/dist/esm/rendering/sprite/Sprite.js.map +1 -1
  460. package/dist/esm/rendering/sprite/nineSlice.d.ts.map +1 -1
  461. package/dist/esm/rendering/sprite/nineSlice.js +12 -18
  462. package/dist/esm/rendering/sprite/nineSlice.js.map +1 -1
  463. package/dist/esm/rendering/sprite/repeatingSpritePlan.d.ts.map +1 -1
  464. package/dist/esm/rendering/sprite/repeatingSpritePlan.js +2 -2
  465. package/dist/esm/rendering/sprite/repeatingSpritePlan.js.map +1 -1
  466. package/dist/esm/rendering/text/BitmapText.d.ts +2 -0
  467. package/dist/esm/rendering/text/BitmapText.d.ts.map +1 -1
  468. package/dist/esm/rendering/text/BitmapText.js +6 -0
  469. package/dist/esm/rendering/text/BitmapText.js.map +1 -1
  470. package/dist/esm/rendering/text/GlyphAtlas.d.ts.map +1 -1
  471. package/dist/esm/rendering/text/GlyphAtlas.js +2 -1
  472. package/dist/esm/rendering/text/GlyphAtlas.js.map +1 -1
  473. package/dist/esm/rendering/text/GlyphAtlasPool.d.ts +8 -1
  474. package/dist/esm/rendering/text/GlyphAtlasPool.d.ts.map +1 -1
  475. package/dist/esm/rendering/text/GlyphAtlasPool.js +9 -12
  476. package/dist/esm/rendering/text/GlyphAtlasPool.js.map +1 -1
  477. package/dist/esm/rendering/text/GlyphSdf.d.ts.map +1 -1
  478. package/dist/esm/rendering/text/GlyphSdf.js +5 -1
  479. package/dist/esm/rendering/text/GlyphSdf.js.map +1 -1
  480. package/dist/esm/rendering/text/HTMLText.d.ts.map +1 -1
  481. package/dist/esm/rendering/text/HTMLText.js +3 -2
  482. package/dist/esm/rendering/text/HTMLText.js.map +1 -1
  483. package/dist/esm/rendering/text/Text.d.ts +17 -6
  484. package/dist/esm/rendering/text/Text.d.ts.map +1 -1
  485. package/dist/esm/rendering/text/Text.js +9 -12
  486. package/dist/esm/rendering/text/Text.js.map +1 -1
  487. package/dist/esm/rendering/text/TextLayout.d.ts.map +1 -1
  488. package/dist/esm/rendering/text/TextLayout.js +4 -18
  489. package/dist/esm/rendering/text/TextLayout.js.map +1 -1
  490. package/dist/esm/rendering/texture/DataTexture.js +2 -2
  491. package/dist/esm/rendering/texture/DataTexture.js.map +1 -1
  492. package/dist/esm/rendering/texture/Texture.d.ts +6 -0
  493. package/dist/esm/rendering/texture/Texture.d.ts.map +1 -1
  494. package/dist/esm/rendering/texture/Texture.js +8 -0
  495. package/dist/esm/rendering/texture/Texture.js.map +1 -1
  496. package/dist/esm/rendering/texture/TextureRegion.d.ts.map +1 -1
  497. package/dist/esm/rendering/texture/TextureRegion.js.map +1 -1
  498. package/dist/esm/rendering/texture/repeat.d.ts.map +1 -1
  499. package/dist/esm/rendering/texture/repeat.js +2 -2
  500. package/dist/esm/rendering/texture/repeat.js.map +1 -1
  501. package/dist/esm/rendering/types.d.ts +37 -2
  502. package/dist/esm/rendering/types.d.ts.map +1 -1
  503. package/dist/esm/rendering/types.js +37 -2
  504. package/dist/esm/rendering/types.js.map +1 -1
  505. package/dist/esm/rendering/video/Video.d.ts +7 -3
  506. package/dist/esm/rendering/video/Video.d.ts.map +1 -1
  507. package/dist/esm/rendering/video/Video.js +7 -3
  508. package/dist/esm/rendering/video/Video.js.map +1 -1
  509. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.d.ts.map +1 -1
  510. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js +2 -2
  511. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js.map +1 -1
  512. package/dist/esm/rendering/webgl2/WebGl2BackdropBlendCompositor.d.ts +41 -0
  513. package/dist/esm/rendering/webgl2/WebGl2BackdropBlendCompositor.d.ts.map +1 -0
  514. package/dist/esm/rendering/webgl2/WebGl2BackdropBlendCompositor.js +222 -0
  515. package/dist/esm/rendering/webgl2/WebGl2BackdropBlendCompositor.js.map +1 -0
  516. package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts +55 -3
  517. package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts.map +1 -1
  518. package/dist/esm/rendering/webgl2/WebGl2Backend.js +209 -61
  519. package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -1
  520. package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.d.ts.map +1 -1
  521. package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.js +2 -2
  522. package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.js.map +1 -1
  523. package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.d.ts +17 -0
  524. package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.d.ts.map +1 -1
  525. package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js +122 -38
  526. package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js.map +1 -1
  527. package/dist/esm/rendering/webgl2/WebGl2NineSliceSpriteRenderer.d.ts.map +1 -1
  528. package/dist/esm/rendering/webgl2/WebGl2NineSliceSpriteRenderer.js +2 -1
  529. package/dist/esm/rendering/webgl2/WebGl2NineSliceSpriteRenderer.js.map +1 -1
  530. package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.d.ts +16 -1
  531. package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.d.ts.map +1 -1
  532. package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js +32 -1
  533. package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js.map +1 -1
  534. package/dist/esm/rendering/webgl2/WebGl2RepeatingSpriteRenderer.d.ts.map +1 -1
  535. package/dist/esm/rendering/webgl2/WebGl2RepeatingSpriteRenderer.js +15 -11
  536. package/dist/esm/rendering/webgl2/WebGl2RepeatingSpriteRenderer.js.map +1 -1
  537. package/dist/esm/rendering/webgl2/WebGl2ShaderBlock.d.ts.map +1 -1
  538. package/dist/esm/rendering/webgl2/WebGl2ShaderBlock.js +14 -3
  539. package/dist/esm/rendering/webgl2/WebGl2ShaderBlock.js.map +1 -1
  540. package/dist/esm/rendering/webgl2/WebGl2ShaderMappings.js +3 -3
  541. package/dist/esm/rendering/webgl2/WebGl2ShaderMappings.js.map +1 -1
  542. package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.d.ts.map +1 -1
  543. package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.js +11 -2
  544. package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.js.map +1 -1
  545. package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.d.ts.map +1 -1
  546. package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js +7 -2
  547. package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js.map +1 -1
  548. package/dist/esm/rendering/webgl2/WebGl2StencilClipper.d.ts.map +1 -1
  549. package/dist/esm/rendering/webgl2/WebGl2StencilClipper.js +3 -2
  550. package/dist/esm/rendering/webgl2/WebGl2StencilClipper.js.map +1 -1
  551. package/dist/esm/rendering/webgl2/WebGl2TextRenderer.d.ts.map +1 -1
  552. package/dist/esm/rendering/webgl2/WebGl2TextRenderer.js +60 -15
  553. package/dist/esm/rendering/webgl2/WebGl2TextRenderer.js.map +1 -1
  554. package/dist/esm/rendering/webgl2/glsl/backdrop-blend.frag.js +4 -0
  555. package/dist/esm/rendering/webgl2/glsl/backdrop-blend.frag.js.map +1 -0
  556. package/dist/esm/rendering/webgl2/glsl/backdrop-blend.vert.js +4 -0
  557. package/dist/esm/rendering/webgl2/glsl/backdrop-blend.vert.js.map +1 -0
  558. package/dist/esm/rendering/webgl2/glsl/text.vert.js +1 -1
  559. package/dist/esm/rendering/webgpu/WebGpuBackdropBlendCompositor.d.ts +72 -0
  560. package/dist/esm/rendering/webgpu/WebGpuBackdropBlendCompositor.d.ts.map +1 -0
  561. package/dist/esm/rendering/webgpu/WebGpuBackdropBlendCompositor.js +494 -0
  562. package/dist/esm/rendering/webgpu/WebGpuBackdropBlendCompositor.js.map +1 -0
  563. package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts +45 -2
  564. package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts.map +1 -1
  565. package/dist/esm/rendering/webgpu/WebGpuBackend.js +247 -69
  566. package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -1
  567. package/dist/esm/rendering/webgpu/WebGpuBlendState.d.ts.map +1 -1
  568. package/dist/esm/rendering/webgpu/WebGpuBlendState.js +5 -26
  569. package/dist/esm/rendering/webgpu/WebGpuBlendState.js.map +1 -1
  570. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.d.ts +2 -0
  571. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.d.ts.map +1 -1
  572. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js +2 -1
  573. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js.map +1 -1
  574. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.d.ts +17 -0
  575. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.d.ts.map +1 -1
  576. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js +105 -25
  577. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js.map +1 -1
  578. package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.d.ts +2 -0
  579. package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.d.ts.map +1 -1
  580. package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.js +8 -2
  581. package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.js.map +1 -1
  582. package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.d.ts +8 -0
  583. package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.d.ts.map +1 -1
  584. package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.js +20 -0
  585. package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.js.map +1 -1
  586. package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.d.ts +6 -0
  587. package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.d.ts.map +1 -1
  588. package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.js +23 -10
  589. package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.js.map +1 -1
  590. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts +2 -0
  591. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts.map +1 -1
  592. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js +10 -5
  593. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js.map +1 -1
  594. package/dist/esm/rendering/webgpu/WebGpuStencilClipper.d.ts +2 -0
  595. package/dist/esm/rendering/webgpu/WebGpuStencilClipper.d.ts.map +1 -1
  596. package/dist/esm/rendering/webgpu/WebGpuStencilClipper.js +3 -1
  597. package/dist/esm/rendering/webgpu/WebGpuStencilClipper.js.map +1 -1
  598. package/dist/esm/rendering/webgpu/WebGpuTextRenderer.d.ts +2 -0
  599. package/dist/esm/rendering/webgpu/WebGpuTextRenderer.d.ts.map +1 -1
  600. package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js +22 -9
  601. package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js.map +1 -1
  602. package/dist/esm/rendering/webgpu/WebGpuTransformStorage.d.ts +16 -3
  603. package/dist/esm/rendering/webgpu/WebGpuTransformStorage.d.ts.map +1 -1
  604. package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js +50 -6
  605. package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js.map +1 -1
  606. package/dist/esm/rendering/webgpu/compute/WebGpuComputePipeline.js +1 -1
  607. package/dist/esm/rendering/webgpu/compute/WebGpuComputePipeline.js.map +1 -1
  608. package/dist/esm/rendering/webgpu/compute/WebGpuStorageBuffer.d.ts +7 -0
  609. package/dist/esm/rendering/webgpu/compute/WebGpuStorageBuffer.d.ts.map +1 -1
  610. package/dist/esm/rendering/webgpu/compute/WebGpuStorageBuffer.js +8 -0
  611. package/dist/esm/rendering/webgpu/compute/WebGpuStorageBuffer.js.map +1 -1
  612. package/dist/esm/resources/Asset.d.ts +1 -1
  613. package/dist/esm/resources/Asset.d.ts.map +1 -1
  614. package/dist/esm/resources/Asset.js +0 -2
  615. package/dist/esm/resources/Asset.js.map +1 -1
  616. package/dist/esm/resources/AssetContainer.d.ts +75 -0
  617. package/dist/esm/resources/AssetContainer.d.ts.map +1 -0
  618. package/dist/esm/resources/AssetContainer.js +100 -0
  619. package/dist/esm/resources/AssetContainer.js.map +1 -0
  620. package/dist/esm/resources/AssetDefinitions.d.ts +3 -3
  621. package/dist/esm/resources/AssetDefinitions.d.ts.map +1 -1
  622. package/dist/esm/resources/Assets.d.ts.map +1 -1
  623. package/dist/esm/resources/Assets.js +0 -1
  624. package/dist/esm/resources/Assets.js.map +1 -1
  625. package/dist/esm/resources/FactoryRegistry.d.ts.map +1 -1
  626. package/dist/esm/resources/FactoryRegistry.js +14 -23
  627. package/dist/esm/resources/FactoryRegistry.js.map +1 -1
  628. package/dist/esm/resources/IndexedDbDatabase.d.ts.map +1 -1
  629. package/dist/esm/resources/IndexedDbDatabase.js +8 -1
  630. package/dist/esm/resources/IndexedDbDatabase.js.map +1 -1
  631. package/dist/esm/resources/IndexedDbKeyValueStore.d.ts +37 -0
  632. package/dist/esm/resources/IndexedDbKeyValueStore.d.ts.map +1 -0
  633. package/dist/esm/resources/IndexedDbKeyValueStore.js +58 -0
  634. package/dist/esm/resources/IndexedDbKeyValueStore.js.map +1 -0
  635. package/dist/esm/resources/KeyValueStore.d.ts +31 -0
  636. package/dist/esm/resources/KeyValueStore.d.ts.map +1 -0
  637. package/dist/esm/resources/Loader.d.ts +55 -2
  638. package/dist/esm/resources/Loader.d.ts.map +1 -1
  639. package/dist/esm/resources/Loader.js +159 -14
  640. package/dist/esm/resources/Loader.js.map +1 -1
  641. package/dist/esm/resources/MemoryStore.d.ts +17 -0
  642. package/dist/esm/resources/MemoryStore.d.ts.map +1 -0
  643. package/dist/esm/resources/MemoryStore.js +30 -0
  644. package/dist/esm/resources/MemoryStore.js.map +1 -0
  645. package/dist/esm/resources/WebStorageStore.d.ts +40 -0
  646. package/dist/esm/resources/WebStorageStore.d.ts.map +1 -0
  647. package/dist/esm/resources/WebStorageStore.js +84 -0
  648. package/dist/esm/resources/WebStorageStore.js.map +1 -0
  649. package/dist/esm/resources/coreAssetBindings.d.ts.map +1 -1
  650. package/dist/esm/resources/coreAssetBindings.js +16 -5
  651. package/dist/esm/resources/coreAssetBindings.js.map +1 -1
  652. package/dist/esm/resources/factories/BmFontFactory.js +4 -4
  653. package/dist/esm/resources/factories/BmFontFactory.js.map +1 -1
  654. package/dist/esm/resources/factories/MusicFactory.d.ts +9 -9
  655. package/dist/esm/resources/factories/MusicFactory.d.ts.map +1 -1
  656. package/dist/esm/resources/factories/MusicFactory.js +7 -7
  657. package/dist/esm/resources/factories/MusicFactory.js.map +1 -1
  658. package/dist/esm/resources/factories/SoundFactory.js +2 -2
  659. package/dist/esm/resources/factories/SoundFactory.js.map +1 -1
  660. package/dist/esm/resources/factories/SubtitleFactory.d.ts +11 -1
  661. package/dist/esm/resources/factories/SubtitleFactory.d.ts.map +1 -1
  662. package/dist/esm/resources/factories/SubtitleFactory.js +13 -9
  663. package/dist/esm/resources/factories/SubtitleFactory.js.map +1 -1
  664. package/dist/esm/resources/index.d.ts +51 -34
  665. package/dist/esm/resources/index.d.ts.map +1 -1
  666. package/dist/esm/resources/utils.js +4 -4
  667. package/dist/esm/resources/utils.js.map +1 -1
  668. package/dist/esm/ui/Button.d.ts +54 -0
  669. package/dist/esm/ui/Button.d.ts.map +1 -0
  670. package/dist/esm/ui/Button.js +139 -0
  671. package/dist/esm/ui/Button.js.map +1 -0
  672. package/dist/esm/ui/Label.d.ts +17 -0
  673. package/dist/esm/ui/Label.d.ts.map +1 -0
  674. package/dist/esm/ui/Label.js +37 -0
  675. package/dist/esm/ui/Label.js.map +1 -0
  676. package/dist/esm/ui/Panel.d.ts +38 -0
  677. package/dist/esm/ui/Panel.d.ts.map +1 -0
  678. package/dist/esm/ui/Panel.js +61 -0
  679. package/dist/esm/ui/Panel.js.map +1 -0
  680. package/dist/esm/ui/ProgressBar.d.ts +37 -0
  681. package/dist/esm/ui/ProgressBar.d.ts.map +1 -0
  682. package/dist/esm/ui/ProgressBar.js +76 -0
  683. package/dist/esm/ui/ProgressBar.js.map +1 -0
  684. package/dist/esm/ui/ScrollContainer.d.ts +63 -0
  685. package/dist/esm/ui/ScrollContainer.d.ts.map +1 -0
  686. package/dist/esm/ui/ScrollContainer.js +99 -0
  687. package/dist/esm/ui/ScrollContainer.js.map +1 -0
  688. package/dist/esm/ui/Stack.d.ts +34 -0
  689. package/dist/esm/ui/Stack.d.ts.map +1 -0
  690. package/dist/esm/ui/Stack.js +69 -0
  691. package/dist/esm/ui/Stack.js.map +1 -0
  692. package/dist/esm/ui/Tooltip.d.ts +67 -0
  693. package/dist/esm/ui/Tooltip.d.ts.map +1 -0
  694. package/dist/esm/ui/Tooltip.js +133 -0
  695. package/dist/esm/ui/Tooltip.js.map +1 -0
  696. package/dist/esm/ui/UIRoot.d.ts +31 -0
  697. package/dist/esm/ui/UIRoot.d.ts.map +1 -0
  698. package/dist/esm/ui/UIRoot.js +49 -0
  699. package/dist/esm/ui/UIRoot.js.map +1 -0
  700. package/dist/esm/ui/Widget.d.ts +45 -0
  701. package/dist/esm/ui/Widget.d.ts.map +1 -0
  702. package/dist/esm/ui/Widget.js +113 -0
  703. package/dist/esm/ui/Widget.js.map +1 -0
  704. package/dist/esm/ui/index.d.ts +17 -0
  705. package/dist/esm/ui/index.d.ts.map +1 -0
  706. package/dist/exo.debug.esm.js +1 -948
  707. package/dist/exo.debug.esm.js.map +1 -1
  708. package/dist/exo.esm.js +1 -40945
  709. package/dist/exo.esm.js.map +1 -1
  710. package/dist/exo.iife.js +45202 -0
  711. package/dist/exo.iife.js.map +1 -0
  712. package/dist/exo.iife.min.js +2 -0
  713. package/dist/exo.iife.min.js.map +1 -0
  714. package/package.json +37 -14
  715. package/dist/esm/audio/AbstractMedia.d.ts +0 -75
  716. package/dist/esm/audio/AbstractMedia.d.ts.map +0 -1
  717. package/dist/esm/audio/AbstractMedia.js +0 -179
  718. package/dist/esm/audio/AbstractMedia.js.map +0 -1
  719. package/dist/esm/audio/AudioAnalyser.d.ts +0 -128
  720. package/dist/esm/audio/AudioAnalyser.d.ts.map +0 -1
  721. package/dist/esm/audio/AudioAnalyser.js +0 -473
  722. package/dist/esm/audio/AudioAnalyser.js.map +0 -1
  723. package/dist/esm/audio/AudioFilter.d.ts +0 -17
  724. package/dist/esm/audio/AudioFilter.d.ts.map +0 -1
  725. package/dist/esm/audio/AudioFilter.js +0 -15
  726. package/dist/esm/audio/AudioFilter.js.map +0 -1
  727. package/dist/esm/audio/BeatDetector.d.ts +0 -207
  728. package/dist/esm/audio/BeatDetector.d.ts.map +0 -1
  729. package/dist/esm/audio/BeatDetector.js +0 -424
  730. package/dist/esm/audio/BeatDetector.js.map +0 -1
  731. package/dist/esm/audio/Media.d.ts +0 -37
  732. package/dist/esm/audio/Media.d.ts.map +0 -1
  733. package/dist/esm/audio/Music.d.ts +0 -42
  734. package/dist/esm/audio/Music.d.ts.map +0 -1
  735. package/dist/esm/audio/Music.js +0 -164
  736. package/dist/esm/audio/Music.js.map +0 -1
  737. package/dist/esm/audio/OscillatorSound.d.ts +0 -100
  738. package/dist/esm/audio/OscillatorSound.d.ts.map +0 -1
  739. package/dist/esm/audio/OscillatorSound.js +0 -346
  740. package/dist/esm/audio/OscillatorSound.js.map +0 -1
  741. package/dist/esm/audio/dsp/fft.d.ts +0 -23
  742. package/dist/esm/audio/dsp/fft.d.ts.map +0 -1
  743. package/dist/esm/audio/dsp/mel.d.ts +0 -44
  744. package/dist/esm/audio/dsp/mel.d.ts.map +0 -1
  745. package/dist/esm/audio/dsp/mel.js +0 -70
  746. package/dist/esm/audio/dsp/mel.js.map +0 -1
  747. package/dist/esm/audio/dsp/tempogram.d.ts +0 -52
  748. package/dist/esm/audio/dsp/tempogram.d.ts.map +0 -1
  749. package/dist/esm/audio/filters/ChorusFilter.d.ts +0 -54
  750. package/dist/esm/audio/filters/ChorusFilter.d.ts.map +0 -1
  751. package/dist/esm/audio/filters/ChorusFilter.js +0 -155
  752. package/dist/esm/audio/filters/ChorusFilter.js.map +0 -1
  753. package/dist/esm/audio/filters/CompressorFilter.d.ts +0 -54
  754. package/dist/esm/audio/filters/CompressorFilter.d.ts.map +0 -1
  755. package/dist/esm/audio/filters/CompressorFilter.js +0 -123
  756. package/dist/esm/audio/filters/CompressorFilter.js.map +0 -1
  757. package/dist/esm/audio/filters/DelayFilter.d.ts +0 -36
  758. package/dist/esm/audio/filters/DelayFilter.d.ts.map +0 -1
  759. package/dist/esm/audio/filters/DelayFilter.js +0 -114
  760. package/dist/esm/audio/filters/DelayFilter.js.map +0 -1
  761. package/dist/esm/audio/filters/DuckingFilter.d.ts +0 -45
  762. package/dist/esm/audio/filters/DuckingFilter.d.ts.map +0 -1
  763. package/dist/esm/audio/filters/DuckingFilter.js +0 -172
  764. package/dist/esm/audio/filters/DuckingFilter.js.map +0 -1
  765. package/dist/esm/audio/filters/EqualizerFilter.d.ts +0 -51
  766. package/dist/esm/audio/filters/EqualizerFilter.d.ts.map +0 -1
  767. package/dist/esm/audio/filters/EqualizerFilter.js +0 -138
  768. package/dist/esm/audio/filters/EqualizerFilter.js.map +0 -1
  769. package/dist/esm/audio/filters/GranularFilter.d.ts +0 -63
  770. package/dist/esm/audio/filters/GranularFilter.d.ts.map +0 -1
  771. package/dist/esm/audio/filters/GranularFilter.js +0 -107
  772. package/dist/esm/audio/filters/GranularFilter.js.map +0 -1
  773. package/dist/esm/audio/filters/PitchShiftFilter.d.ts +0 -45
  774. package/dist/esm/audio/filters/PitchShiftFilter.d.ts.map +0 -1
  775. package/dist/esm/audio/filters/PitchShiftFilter.js +0 -66
  776. package/dist/esm/audio/filters/PitchShiftFilter.js.map +0 -1
  777. package/dist/esm/audio/filters/ReverbFilter.d.ts +0 -38
  778. package/dist/esm/audio/filters/ReverbFilter.d.ts.map +0 -1
  779. package/dist/esm/audio/filters/ReverbFilter.js +0 -122
  780. package/dist/esm/audio/filters/ReverbFilter.js.map +0 -1
  781. package/dist/esm/audio/filters/VocoderFilter.d.ts +0 -50
  782. package/dist/esm/audio/filters/VocoderFilter.d.ts.map +0 -1
  783. package/dist/esm/audio/filters/VocoderFilter.js +0 -94
  784. package/dist/esm/audio/filters/VocoderFilter.js.map +0 -1
  785. package/dist/esm/audio/filters/WorkletFilter.d.ts +0 -54
  786. package/dist/esm/audio/filters/WorkletFilter.d.ts.map +0 -1
  787. package/dist/esm/audio/filters/WorkletFilter.js +0 -110
  788. package/dist/esm/audio/filters/WorkletFilter.js.map +0 -1
  789. package/dist/esm/audio/worklets/beat-detector.worklet.d.ts +0 -2
  790. package/dist/esm/audio/worklets/beat-detector.worklet.d.ts.map +0 -1
  791. package/dist/esm/audio/worklets/beat-detector.worklet.js +0 -647
  792. package/dist/esm/audio/worklets/beat-detector.worklet.js.map +0 -1
  793. package/dist/esm/audio/worklets/granular.worklet.d.ts +0 -2
  794. package/dist/esm/audio/worklets/granular.worklet.d.ts.map +0 -1
  795. package/dist/esm/audio/worklets/granular.worklet.js +0 -89
  796. package/dist/esm/audio/worklets/granular.worklet.js.map +0 -1
  797. package/dist/esm/audio/worklets/pitch-shift.worklet.d.ts +0 -2
  798. package/dist/esm/audio/worklets/pitch-shift.worklet.d.ts.map +0 -1
  799. package/dist/esm/audio/worklets/pitch-shift.worklet.js +0 -74
  800. package/dist/esm/audio/worklets/pitch-shift.worklet.js.map +0 -1
  801. package/dist/esm/audio/worklets/vocoder.worklet.d.ts +0 -2
  802. package/dist/esm/audio/worklets/vocoder.worklet.d.ts.map +0 -1
  803. package/dist/esm/audio/worklets/vocoder.worklet.js +0 -92
  804. package/dist/esm/audio/worklets/vocoder.worklet.js.map +0 -1
  805. package/dist/esm/input/internal/interactionManagerRegistry.d.ts +0 -10
  806. package/dist/esm/input/internal/interactionManagerRegistry.d.ts.map +0 -1
  807. package/dist/esm/input/internal/interactionManagerRegistry.js +0 -10
  808. package/dist/esm/input/internal/interactionManagerRegistry.js.map +0 -1
  809. package/dist/esm/rendering/Camera.d.ts +0 -34
  810. package/dist/esm/rendering/Camera.d.ts.map +0 -1
  811. package/dist/esm/rendering/Camera.js +0 -38
  812. package/dist/esm/rendering/Camera.js.map +0 -1
  813. package/dist/esm/rendering/index.d.ts.map +0 -1
  814. package/dist/esm/rendering/plan/RenderInstruction.js +0 -45
  815. package/dist/esm/rendering/plan/RenderInstruction.js.map +0 -1
  816. package/dist/esm/rendering.d.ts +0 -29
  817. package/dist/esm/rendering.d.ts.map +0 -1
  818. package/dist/esm/rendering.js.map +0 -1
  819. package/dist/esm/resources/JsonStore.d.ts +0 -19
  820. package/dist/esm/resources/JsonStore.d.ts.map +0 -1
  821. package/dist/esm/resources/JsonStore.js +0 -62
  822. package/dist/esm/resources/JsonStore.js.map +0 -1
@@ -0,0 +1,144 @@
1
+ import { applyCommonFields, writeCommonFields } from './commonFields.js';
2
+ import { registerCoreSerializers } from './coreSerializers.js';
3
+ import { asSerializedNode, asObject } from './read.js';
4
+ import { defaultSerializationRegistry } from './SerializationRegistry.js';
5
+ import { SERIALIZATION_VERSION } from './types.js';
6
+
7
+ // Core serializers register lazily (not as an import side effect) so they
8
+ // survive `sideEffects: false` tree-shaking: the registration is reachable
9
+ // only through the framework entry points below, which a consumer must call.
10
+ let _coreRegistered = false;
11
+ /** Idempotently register the built-in node serializers on first use. @internal */
12
+ function ensureCoreSerializers() {
13
+ if (_coreRegistered) {
14
+ return;
15
+ }
16
+ _coreRegistered = true;
17
+ registerCoreSerializers(defaultSerializationRegistry);
18
+ }
19
+ function createSerializeContext(loader, registry) {
20
+ const ctx = {
21
+ version: SERIALIZATION_VERSION,
22
+ loader,
23
+ writeNode: node => writeNodeWith(node, ctx, registry),
24
+ keyFor: resource => {
25
+ if (resource === null || resource === undefined || typeof resource !== 'object' || loader === null) {
26
+ return null;
27
+ }
28
+ const key = loader.keyFor(resource);
29
+ if (key === null) {
30
+ return null;
31
+ }
32
+ return key.source;
33
+ },
34
+ };
35
+ return ctx;
36
+ }
37
+ function createDeserializeContext(loader, version, registry) {
38
+ const ctx = {
39
+ version,
40
+ loader,
41
+ readNode: data => readNodeWith(data, ctx, registry),
42
+ resolveAsset: (source, type) => {
43
+ if (source === null || source === undefined || loader === null) {
44
+ return null;
45
+ }
46
+ const resource = loader.peek(type, source);
47
+ return resource;
48
+ },
49
+ };
50
+ return ctx;
51
+ }
52
+ function writeNodeWith(node, ctx, registry) {
53
+ const entry = registry.resolveByNode(node);
54
+ if (entry === undefined) {
55
+ throw new Error(`No serializer registered for node type "${node.constructor.name}". Register one via registerSerializer().`);
56
+ }
57
+ const out = { type: entry.typeName };
58
+ writeCommonFields(node, out);
59
+ Object.assign(out, entry.serializer.write(node, ctx));
60
+ return out;
61
+ }
62
+ function readNodeWith(data, ctx, registry) {
63
+ const entry = registry.resolveByName(data.type);
64
+ if (entry === undefined) {
65
+ throw new Error(`No serializer registered for type "${data.type}". Register one via registerSerializer().`);
66
+ }
67
+ const node = entry.serializer.read(data, ctx);
68
+ applyCommonFields(node, data);
69
+ return node;
70
+ }
71
+ /**
72
+ * Serialize a single node and its subtree to a {@link SerializedNode}. Pass a
73
+ * {@link Loader} so texture/asset references resolve to their source keys.
74
+ * @internal
75
+ */
76
+ function serializeTree(node, loader = null, registry = defaultSerializationRegistry) {
77
+ ensureCoreSerializers();
78
+ return writeNodeWith(node, createSerializeContext(loader, registry), registry);
79
+ }
80
+ /**
81
+ * Reconstruct a node subtree from a {@link SerializedNode}. Referenced assets
82
+ * must be pre-loaded into `loader`.
83
+ * @internal
84
+ */
85
+ function deserializeTree(data, loader = null, registry = defaultSerializationRegistry) {
86
+ ensureCoreSerializers();
87
+ return readNodeWith(data, createDeserializeContext(loader, SERIALIZATION_VERSION, registry), registry);
88
+ }
89
+ /**
90
+ * Rebuild `container`'s contents from `data` in place: clears existing
91
+ * children, applies `data`'s common fields to the container, then deserializes
92
+ * and re-adds its children. Used by {@link Scene.deserialize} to reuse the
93
+ * eagerly-created scene root.
94
+ * @internal
95
+ */
96
+ function deserializeInto(container, data, loader = null, registry = defaultSerializationRegistry) {
97
+ ensureCoreSerializers();
98
+ const ctx = createDeserializeContext(loader, SERIALIZATION_VERSION, registry);
99
+ container.removeChildren();
100
+ applyCommonFields(container, data);
101
+ const children = data.children;
102
+ if (Array.isArray(children)) {
103
+ for (const child of children) {
104
+ const childNode = asSerializedNode(child);
105
+ if (childNode !== null)
106
+ container.addChild(ctx.readNode(childNode));
107
+ }
108
+ }
109
+ }
110
+ /**
111
+ * Validate and migrate a serialized scene document to the current
112
+ * {@link SERIALIZATION_VERSION}, returning a structurally-sound
113
+ * {@link SerializedScene}.
114
+ *
115
+ * This is the **untrusted top-level boundary**: the parameter is `unknown`
116
+ * because a save file / cloud document is not guaranteed to match the type. The
117
+ * frame (`version`/`root`/`ui`) is validated here so downstream `deserialize*`
118
+ * paths can rely on `root` being a real node. Throws on a non-object document,
119
+ * a version newer than supported, or a missing/invalid root; an invalid `ui` is
120
+ * dropped (it is optional) rather than thrown.
121
+ *
122
+ * The migration chain is empty at v1; future version bumps register
123
+ * version→version+1 transforms here.
124
+ * @internal
125
+ */
126
+ function migrate(data) {
127
+ const scene = asObject(data);
128
+ if (scene === null) {
129
+ throw new Error('Cannot deserialize scene: the document is not an object.');
130
+ }
131
+ const version = typeof scene.version === 'number' ? scene.version : 0;
132
+ if (version > SERIALIZATION_VERSION) {
133
+ throw new Error(`Cannot deserialize scene: data version ${version} is newer than the supported version ${SERIALIZATION_VERSION}.`);
134
+ }
135
+ const root = asSerializedNode(scene.root);
136
+ if (root === null) {
137
+ throw new Error('Cannot deserialize scene: the document has no valid root node.');
138
+ }
139
+ const ui = asSerializedNode(scene.ui);
140
+ return ui !== null ? { version, root, ui } : { version, root };
141
+ }
142
+
143
+ export { deserializeInto, deserializeTree, migrate, serializeTree };
144
+ //# sourceMappingURL=serialize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialize.js","sources":["../../../../../src/core/serialization/serialize.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import { Color } from '#core/Color';
2
+ import type { LayoutOptions } from '#rendering/text/LayoutOptions';
3
+ import type { TextStyleOptions } from '#rendering/text/TextStyle';
4
+ /**
5
+ * Return a shallow copy of `options` with every `undefined`-valued key removed,
6
+ * so an optional property is *omitted* rather than set to `undefined`. Lets a
7
+ * deserializer build an options bag from sparse JSON without forcing a default
8
+ * past a constructor's own `?? default` (and stays valid under
9
+ * `exactOptionalPropertyTypes`).
10
+ */
11
+ export declare function compact<T extends object>(options: T): {
12
+ [K in keyof T]: Exclude<T[K], undefined>;
13
+ };
14
+ /** Serialize a colour to `[r, g, b, a]` (r/g/b 0..255, a 0..1). */
15
+ export declare const colorToArray: (color: Color) => [number, number, number, number];
16
+ /** Deserialize a `[r, g, b, a]` tuple back to a {@link Color}, or `undefined`. */
17
+ export declare const arrayToColor: (value: unknown) => Color | undefined;
18
+ /** Serialize the plain-data fields of a {@link TextStyle}, omitting defaults. */
19
+ export declare function serializeStyle(style: {
20
+ fontFamily: string;
21
+ fontWeight: string;
22
+ fontStyle: string;
23
+ fontSize: number;
24
+ fillColor: Color;
25
+ outlineColor: Color;
26
+ outlineWidth: number;
27
+ align: string;
28
+ lineHeight: number;
29
+ leading: number;
30
+ shadowColor: Color;
31
+ shadowOffsetX: number;
32
+ shadowOffsetY: number;
33
+ shadowAlpha: number;
34
+ shadowBlur: number;
35
+ gradientColors: [Color, Color] | null;
36
+ gradientAxis: string;
37
+ }): Record<string, unknown> | undefined;
38
+ /** Rebuild {@link TextStyleOptions} from serialized style data, or `undefined`. */
39
+ export declare function deserializeStyleOptions(data: unknown): TextStyleOptions | undefined;
40
+ /**
41
+ * Rebuild {@link LayoutOptions} from a serialized layout object, dropping
42
+ * unknown or mistyped fields. Returns `undefined` when nothing valid remains,
43
+ * so a corrupt `layout` value degrades to the node's constructor defaults.
44
+ */
45
+ export declare function readLayoutOptions(value: unknown): LayoutOptions | undefined;
46
+ //# sourceMappingURL=serializerHelpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializerHelpers.d.ts","sourceRoot":"","sources":["../../../../src/core/serialization/serializerHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAMlE;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;CAAE,CAQlG;AAID,mEAAmE;AACnE,eAAO,MAAM,YAAY,GAAI,OAAO,KAAK,KAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAyC,CAAC;AAErH,kFAAkF;AAClF,eAAO,MAAM,YAAY,GAAI,OAAO,OAAO,KAAG,KAAK,GAAG,SACsF,CAAC;AAM7I,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,KAAK,EAAE;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,KAAK,CAAC;IACjB,YAAY,EAAE,KAAK,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,KAAK,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC;IACtC,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CA0BtC;AAED,mFAAmF;AACnF,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,GAAG,SAAS,CAoDnF;AAQD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,GAAG,SAAS,CA8B3E"}
@@ -0,0 +1,161 @@
1
+ import { Color } from '../Color.js';
2
+ import { readNumber, readEnum, readBoolean, FONT_WEIGHTS, TEXT_ALIGNMENTS } from './read.js';
3
+
4
+ // ── Options bags ───────────────────────────────────────────────────────────────
5
+ /**
6
+ * Return a shallow copy of `options` with every `undefined`-valued key removed,
7
+ * so an optional property is *omitted* rather than set to `undefined`. Lets a
8
+ * deserializer build an options bag from sparse JSON without forcing a default
9
+ * past a constructor's own `?? default` (and stays valid under
10
+ * `exactOptionalPropertyTypes`).
11
+ */
12
+ function compact(options) {
13
+ const out = {};
14
+ for (const [key, value] of Object.entries(options)) {
15
+ if (value !== undefined)
16
+ out[key] = value;
17
+ }
18
+ return out;
19
+ }
20
+ // ── Colour ───────────────────────────────────────────────────────────────────
21
+ /** Serialize a colour to `[r, g, b, a]` (r/g/b 0..255, a 0..1). */
22
+ const colorToArray = (color) => [color.r, color.g, color.b, color.a];
23
+ /** Deserialize a `[r, g, b, a]` tuple back to a {@link Color}, or `undefined`. */
24
+ const arrayToColor = (value) => Array.isArray(value) && value.length === 4 ? new Color(Number(value[0]), Number(value[1]), Number(value[2]), Number(value[3])) : undefined;
25
+ const colorEquals = (color, r, g, b, a) => color.r === r && color.g === g && color.b === b && color.a === a;
26
+ // ── TextStyle ────────────────────────────────────────────────────────────────
27
+ /** Serialize the plain-data fields of a {@link TextStyle}, omitting defaults. */
28
+ function serializeStyle(style) {
29
+ const out = {};
30
+ if (style.fontFamily !== 'Arial')
31
+ out.fontFamily = style.fontFamily;
32
+ if (style.fontWeight !== 'normal')
33
+ out.fontWeight = style.fontWeight;
34
+ if (style.fontStyle !== 'normal')
35
+ out.fontStyle = style.fontStyle;
36
+ if (style.fontSize !== 20)
37
+ out.fontSize = style.fontSize;
38
+ if (!colorEquals(style.fillColor, 255, 255, 255, 1))
39
+ out.fillColor = colorToArray(style.fillColor);
40
+ if (!colorEquals(style.outlineColor, 0, 0, 0, 1))
41
+ out.outlineColor = colorToArray(style.outlineColor);
42
+ if (style.outlineWidth !== 0)
43
+ out.outlineWidth = style.outlineWidth;
44
+ if (style.align !== 'left')
45
+ out.align = style.align;
46
+ if (style.lineHeight !== 1.2)
47
+ out.lineHeight = style.lineHeight;
48
+ if (style.leading !== 0)
49
+ out.leading = style.leading;
50
+ if (!colorEquals(style.shadowColor, 0, 0, 0, 1))
51
+ out.shadowColor = colorToArray(style.shadowColor);
52
+ if (style.shadowOffsetX !== 0)
53
+ out.shadowOffsetX = style.shadowOffsetX;
54
+ if (style.shadowOffsetY !== 0)
55
+ out.shadowOffsetY = style.shadowOffsetY;
56
+ if (style.shadowAlpha !== 0)
57
+ out.shadowAlpha = style.shadowAlpha;
58
+ if (style.shadowBlur !== 0)
59
+ out.shadowBlur = style.shadowBlur;
60
+ if (style.gradientColors !== null) {
61
+ out.gradientColors = [colorToArray(style.gradientColors[0]), colorToArray(style.gradientColors[1])];
62
+ }
63
+ if (style.gradientAxis !== 'vertical')
64
+ out.gradientAxis = style.gradientAxis;
65
+ return Object.keys(out).length > 0 ? out : undefined;
66
+ }
67
+ /** Rebuild {@link TextStyleOptions} from serialized style data, or `undefined`. */
68
+ function deserializeStyleOptions(data) {
69
+ if (typeof data !== 'object' || data === null) {
70
+ return undefined;
71
+ }
72
+ const source = data;
73
+ const options = {};
74
+ if (typeof source.fontFamily === 'string')
75
+ options.fontFamily = source.fontFamily;
76
+ const fontWeight = readEnum(source, 'fontWeight', FONT_WEIGHTS);
77
+ if (fontWeight !== undefined)
78
+ options.fontWeight = fontWeight;
79
+ if (source.fontStyle === 'italic' || source.fontStyle === 'normal')
80
+ options.fontStyle = source.fontStyle;
81
+ if (typeof source.fontSize === 'number')
82
+ options.fontSize = source.fontSize;
83
+ const fillColor = arrayToColor(source.fillColor);
84
+ if (fillColor !== undefined)
85
+ options.fillColor = fillColor;
86
+ const outlineColor = arrayToColor(source.outlineColor);
87
+ if (outlineColor !== undefined)
88
+ options.outlineColor = outlineColor;
89
+ if (typeof source.outlineWidth === 'number')
90
+ options.outlineWidth = source.outlineWidth;
91
+ const align = readEnum(source, 'align', TEXT_ALIGNMENTS);
92
+ if (align !== undefined)
93
+ options.align = align;
94
+ if (typeof source.lineHeight === 'number')
95
+ options.lineHeight = source.lineHeight;
96
+ if (typeof source.leading === 'number')
97
+ options.leading = source.leading;
98
+ const shadowColor = arrayToColor(source.shadowColor);
99
+ if (shadowColor !== undefined)
100
+ options.shadowColor = shadowColor;
101
+ if (typeof source.shadowOffsetX === 'number')
102
+ options.shadowOffsetX = source.shadowOffsetX;
103
+ if (typeof source.shadowOffsetY === 'number')
104
+ options.shadowOffsetY = source.shadowOffsetY;
105
+ if (typeof source.shadowAlpha === 'number')
106
+ options.shadowAlpha = source.shadowAlpha;
107
+ if (typeof source.shadowBlur === 'number')
108
+ options.shadowBlur = source.shadowBlur;
109
+ if (Array.isArray(source.gradientColors) && source.gradientColors.length === 2) {
110
+ const top = arrayToColor(source.gradientColors[0]);
111
+ const bottom = arrayToColor(source.gradientColors[1]);
112
+ if (top !== undefined && bottom !== undefined) {
113
+ options.gradientColors = [top, bottom];
114
+ }
115
+ }
116
+ if (source.gradientAxis === 'horizontal' || source.gradientAxis === 'vertical') {
117
+ options.gradientAxis = source.gradientAxis;
118
+ }
119
+ return options;
120
+ }
121
+ // ── LayoutOptions ─────────────────────────────────────────────────────────────
122
+ const OVERFLOWS = ['visible', 'clip', 'ellipsis'];
123
+ const DIRECTIONS = ['ltr', 'rtl'];
124
+ const WHITE_SPACES = ['normal', 'pre', 'pre-line'];
125
+ /**
126
+ * Rebuild {@link LayoutOptions} from a serialized layout object, dropping
127
+ * unknown or mistyped fields. Returns `undefined` when nothing valid remains,
128
+ * so a corrupt `layout` value degrades to the node's constructor defaults.
129
+ */
130
+ function readLayoutOptions(value) {
131
+ if (typeof value !== 'object' || value === null) {
132
+ return undefined;
133
+ }
134
+ const source = value;
135
+ const out = {};
136
+ const maxWidth = readNumber(source, 'maxWidth');
137
+ if (maxWidth !== undefined)
138
+ out.maxWidth = maxWidth;
139
+ const maxHeight = readNumber(source, 'maxHeight');
140
+ if (maxHeight !== undefined)
141
+ out.maxHeight = maxHeight;
142
+ const overflow = readEnum(source, 'overflow', OVERFLOWS);
143
+ if (overflow !== undefined)
144
+ out.overflow = overflow;
145
+ const letterSpacing = readNumber(source, 'letterSpacing');
146
+ if (letterSpacing !== undefined)
147
+ out.letterSpacing = letterSpacing;
148
+ const direction = readEnum(source, 'direction', DIRECTIONS);
149
+ if (direction !== undefined)
150
+ out.direction = direction;
151
+ const breakWords = readBoolean(source, 'breakWords');
152
+ if (breakWords !== undefined)
153
+ out.breakWords = breakWords;
154
+ const whiteSpace = readEnum(source, 'whiteSpace', WHITE_SPACES);
155
+ if (whiteSpace !== undefined)
156
+ out.whiteSpace = whiteSpace;
157
+ return Object.keys(out).length > 0 ? out : undefined;
158
+ }
159
+
160
+ export { arrayToColor, colorToArray, compact, deserializeStyleOptions, readLayoutOptions, serializeStyle };
161
+ //# sourceMappingURL=serializerHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializerHelpers.js","sources":["../../../../../src/core/serialization/serializerHelpers.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Current scene-serialization format version. Written into every
3
+ * {@link SerializedScene} and checked on deserialize so saved data can outlive
4
+ * the code that produced it (see the migration chain in `migrate`).
5
+ */
6
+ export declare const SERIALIZATION_VERSION = 1;
7
+ /**
8
+ * Plain-old-JSON description of a single scene-graph node.
9
+ *
10
+ * Always carries a `type` tag (the registered type name) plus an open set of
11
+ * common transform/visual fields and type-specific fields. Every field is
12
+ * JSON-serialisable; runtime-only state (caches, dirty flags, matrices,
13
+ * signals, GPU resources) is never present.
14
+ *
15
+ * Common fields are written by the framework and omitted when they hold their
16
+ * default value, so a freshly-constructed node serialises to `{ type }` alone.
17
+ */
18
+ export interface SerializedNode {
19
+ /** Registered type name, e.g. `"Container"`, `"Sprite"`, `"Text"`. */
20
+ type: string;
21
+ /** Optional node identity ({@link SceneNode.name}); omitted when `null`. */
22
+ name?: string;
23
+ /** Type-specific and common fields. */
24
+ [key: string]: unknown;
25
+ }
26
+ /**
27
+ * Top-level serialized form of a {@link Scene} produced by
28
+ * {@link Scene.serialize} and consumed by {@link Scene.deserialize}.
29
+ */
30
+ export interface SerializedScene {
31
+ /** Format version this document was written with ({@link SERIALIZATION_VERSION}). */
32
+ version: number;
33
+ /** The scene's structural root container subtree. */
34
+ root: SerializedNode;
35
+ /** The scene's screen-fixed UI layer ({@link Scene.ui}), if it was materialized. */
36
+ ui?: SerializedNode;
37
+ }
38
+ /**
39
+ * Serialized reference to a loaded asset (e.g. a {@link Texture}).
40
+ *
41
+ * Stores the loader **source key** the asset was loaded under, not the asset
42
+ * data itself. The contract is that referenced assets are pre-loaded into the
43
+ * target {@link Loader} before {@link Scene.deserialize} runs.
44
+ */
45
+ export interface AssetRef {
46
+ /** Loader alias/source the asset was originally loaded under. */
47
+ source: string;
48
+ }
49
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/serialization/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC;;;;;;;;;;GAUG;AACH,MAAM,WAAW,cAAc;IAC7B,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,qFAAqF;IACrF,OAAO,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,IAAI,EAAE,cAAc,CAAC;IACrB,oFAAoF;IACpF,EAAE,CAAC,EAAE,cAAc,CAAC;CACrB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,QAAQ;IACvB,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Current scene-serialization format version. Written into every
3
+ * {@link SerializedScene} and checked on deserialize so saved data can outlive
4
+ * the code that produced it (see the migration chain in `migrate`).
5
+ */
6
+ const SERIALIZATION_VERSION = 1;
7
+
8
+ export { SERIALIZATION_VERSION };
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sources":["../../../../../src/core/serialization/types.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;AAIG;AACI,MAAM,qBAAqB,GAAG;;;;"}
@@ -0,0 +1,7 @@
1
+ import type { SerializationRegistry } from './SerializationRegistry';
2
+ /**
3
+ * Register the UI widget node serializers on `registry`.
4
+ * @internal
5
+ */
6
+ export declare function registerUiSerializers(registry: SerializationRegistry): void;
7
+ //# sourceMappingURL=uiSerializers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uiSerializers.d.ts","sourceRoot":"","sources":["../../../../src/core/serialization/uiSerializers.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAyNrE;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAO3E"}
@@ -0,0 +1,206 @@
1
+ import { Button } from '../../ui/Button.js';
2
+ import { Label } from '../../ui/Label.js';
3
+ import { Panel } from '../../ui/Panel.js';
4
+ import { ProgressBar } from '../../ui/ProgressBar.js';
5
+ import { Stack } from '../../ui/Stack.js';
6
+ import { UIRoot } from '../../ui/UIRoot.js';
7
+ import { asSerializedNode } from './read.js';
8
+ import { deserializeStyleOptions, serializeStyle, compact, arrayToColor, colorToArray } from './serializerHelpers.js';
9
+
10
+ const num = (value) => (typeof value === 'number' && Number.isFinite(value) ? value : undefined);
11
+ // Widget composition note: widgets own internal children (a Label's Text, a
12
+ // Panel's background Graphics, etc.) that their constructors rebuild — those are
13
+ // never serialized. Only user-added children of the container widgets (Panel,
14
+ // Stack, UIRoot) round-trip. Anchoring (anchorIn) references a UIRoot and is not
15
+ // serialized; the resolved position still round-trips via the common fields.
16
+ // ── Label ────────────────────────────────────────────────────────────────────
17
+ const labelSerializer = {
18
+ write(node) {
19
+ const out = { text: node.text };
20
+ const style = serializeStyle(node.textNode.style);
21
+ if (style !== undefined)
22
+ out.style = style;
23
+ if (!node.enabled)
24
+ out.enabled = false;
25
+ return out;
26
+ },
27
+ read(data) {
28
+ const label = new Label(typeof data.text === 'string' ? data.text : '', deserializeStyleOptions(data.style));
29
+ if (data.enabled === false)
30
+ label.enabled = false;
31
+ return label;
32
+ },
33
+ };
34
+ // ── Panel ────────────────────────────────────────────────────────────────────
35
+ const panelSerializer = {
36
+ write(node, ctx) {
37
+ const out = {
38
+ width: node.uiWidth,
39
+ height: node.uiHeight,
40
+ color: colorToArray(node.color),
41
+ borderColor: colorToArray(node.borderColor),
42
+ borderWidth: node.borderWidth,
43
+ cornerRadius: node.cornerRadius,
44
+ };
45
+ if (!node.enabled)
46
+ out.enabled = false;
47
+ const userChildren = node.children.filter(child => child !== node.background);
48
+ if (userChildren.length > 0)
49
+ out.children = userChildren.map(child => ctx.writeNode(child));
50
+ return out;
51
+ },
52
+ read(data, ctx) {
53
+ const panel = new Panel(compact({
54
+ width: num(data.width),
55
+ height: num(data.height),
56
+ color: arrayToColor(data.color),
57
+ borderColor: arrayToColor(data.borderColor),
58
+ borderWidth: num(data.borderWidth),
59
+ cornerRadius: num(data.cornerRadius),
60
+ }));
61
+ if (data.enabled === false)
62
+ panel.enabled = false;
63
+ const children = data.children;
64
+ if (Array.isArray(children)) {
65
+ for (const child of children) {
66
+ const childNode = asSerializedNode(child);
67
+ if (childNode !== null)
68
+ panel.addChild(ctx.readNode(childNode));
69
+ }
70
+ }
71
+ return panel;
72
+ },
73
+ };
74
+ // ── Button ───────────────────────────────────────────────────────────────────
75
+ const buttonSerializer = {
76
+ write(node) {
77
+ const out = {
78
+ width: node.uiWidth,
79
+ height: node.uiHeight,
80
+ label: node.label,
81
+ cornerRadius: node.cornerRadius,
82
+ color: colorToArray(node.colors.normal),
83
+ hoverColor: colorToArray(node.colors.hover),
84
+ pressedColor: colorToArray(node.colors.pressed),
85
+ disabledColor: colorToArray(node.colors.disabled),
86
+ textColor: colorToArray(node.textColor),
87
+ fontSize: node.fontSize,
88
+ };
89
+ if (!node.enabled)
90
+ out.enabled = false;
91
+ return out;
92
+ },
93
+ read(data) {
94
+ const button = new Button(compact({
95
+ width: num(data.width),
96
+ height: num(data.height),
97
+ label: typeof data.label === 'string' ? data.label : undefined,
98
+ cornerRadius: num(data.cornerRadius),
99
+ color: arrayToColor(data.color),
100
+ hoverColor: arrayToColor(data.hoverColor),
101
+ pressedColor: arrayToColor(data.pressedColor),
102
+ disabledColor: arrayToColor(data.disabledColor),
103
+ textColor: arrayToColor(data.textColor),
104
+ fontSize: num(data.fontSize),
105
+ }));
106
+ if (data.enabled === false)
107
+ button.enabled = false;
108
+ return button;
109
+ },
110
+ };
111
+ // ── ProgressBar ──────────────────────────────────────────────────────────────
112
+ const progressBarSerializer = {
113
+ write(node) {
114
+ const out = {
115
+ width: node.uiWidth,
116
+ height: node.uiHeight,
117
+ value: node.value,
118
+ trackColor: colorToArray(node.trackColor),
119
+ fillColor: colorToArray(node.fillColor),
120
+ cornerRadius: node.cornerRadius,
121
+ };
122
+ if (!node.enabled)
123
+ out.enabled = false;
124
+ return out;
125
+ },
126
+ read(data) {
127
+ const bar = new ProgressBar(compact({
128
+ width: num(data.width),
129
+ height: num(data.height),
130
+ value: num(data.value),
131
+ trackColor: arrayToColor(data.trackColor),
132
+ fillColor: arrayToColor(data.fillColor),
133
+ cornerRadius: num(data.cornerRadius),
134
+ }));
135
+ if (data.enabled === false)
136
+ bar.enabled = false;
137
+ return bar;
138
+ },
139
+ };
140
+ // ── Stack ────────────────────────────────────────────────────────────────────
141
+ const stackSerializer = {
142
+ write(node, ctx) {
143
+ const out = {
144
+ direction: node.direction,
145
+ spacing: node.spacing,
146
+ padding: node.padding,
147
+ };
148
+ if (!node.enabled)
149
+ out.enabled = false;
150
+ if (node.children.length > 0)
151
+ out.children = node.children.map(child => ctx.writeNode(child));
152
+ return out;
153
+ },
154
+ read(data, ctx) {
155
+ const stack = new Stack(compact({
156
+ direction: data.direction === 'row' || data.direction === 'column' ? data.direction : undefined,
157
+ spacing: num(data.spacing),
158
+ padding: num(data.padding),
159
+ }));
160
+ if (data.enabled === false)
161
+ stack.enabled = false;
162
+ const children = data.children;
163
+ if (Array.isArray(children)) {
164
+ for (const child of children) {
165
+ const childNode = asSerializedNode(child);
166
+ if (childNode !== null)
167
+ stack.addChild(ctx.readNode(childNode));
168
+ }
169
+ stack.layout();
170
+ }
171
+ return stack;
172
+ },
173
+ };
174
+ // ── UIRoot ───────────────────────────────────────────────────────────────────
175
+ const uiRootSerializer = {
176
+ write(node, ctx) {
177
+ return node.children.length > 0 ? { children: node.children.map(child => ctx.writeNode(child)) } : {};
178
+ },
179
+ read(data, ctx) {
180
+ const root = new UIRoot();
181
+ const children = data.children;
182
+ if (Array.isArray(children)) {
183
+ for (const child of children) {
184
+ const childNode = asSerializedNode(child);
185
+ if (childNode !== null)
186
+ root.addChild(ctx.readNode(childNode));
187
+ }
188
+ }
189
+ return root;
190
+ },
191
+ };
192
+ /**
193
+ * Register the UI widget node serializers on `registry`.
194
+ * @internal
195
+ */
196
+ function registerUiSerializers(registry) {
197
+ registry.register('Label', Label, labelSerializer);
198
+ registry.register('Panel', Panel, panelSerializer);
199
+ registry.register('Button', Button, buttonSerializer);
200
+ registry.register('ProgressBar', ProgressBar, progressBarSerializer);
201
+ registry.register('Stack', Stack, stackSerializer);
202
+ registry.register('UIRoot', UIRoot, uiRootSerializer);
203
+ }
204
+
205
+ export { registerUiSerializers };
206
+ //# sourceMappingURL=uiSerializers.js.map