@codexo/exojs 0.12.0 → 0.14.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 (759) hide show
  1. package/CHANGELOG.md +258 -6
  2. package/README.md +80 -63
  3. package/dist/esm/animation/Tween.js +1 -1
  4. package/dist/esm/animation/Tween.js.map +1 -1
  5. package/dist/esm/animation/TweenManager.d.ts +9 -5
  6. package/dist/esm/animation/TweenManager.d.ts.map +1 -1
  7. package/dist/esm/animation/TweenManager.js +14 -8
  8. package/dist/esm/animation/TweenManager.js.map +1 -1
  9. package/dist/esm/animation/index.d.ts +6 -4
  10. package/dist/esm/animation/index.d.ts.map +1 -1
  11. package/dist/esm/audio/AudioBus.d.ts +12 -12
  12. package/dist/esm/audio/AudioBus.js +29 -29
  13. package/dist/esm/audio/AudioEffect.d.ts +18 -0
  14. package/dist/esm/audio/AudioEffect.d.ts.map +1 -0
  15. package/dist/esm/audio/AudioEffect.js +16 -0
  16. package/dist/esm/audio/AudioEffect.js.map +1 -0
  17. package/dist/esm/audio/AudioGenerator.d.ts +91 -0
  18. package/dist/esm/audio/AudioGenerator.d.ts.map +1 -0
  19. package/dist/esm/audio/AudioGenerator.js +165 -0
  20. package/dist/esm/audio/AudioGenerator.js.map +1 -0
  21. package/dist/esm/audio/AudioGeneratorVoice.d.ts +52 -0
  22. package/dist/esm/audio/AudioGeneratorVoice.d.ts.map +1 -0
  23. package/dist/esm/audio/AudioGeneratorVoice.js +141 -0
  24. package/dist/esm/audio/AudioGeneratorVoice.js.map +1 -0
  25. package/dist/esm/audio/AudioInput.d.ts +39 -0
  26. package/dist/esm/audio/AudioInput.d.ts.map +1 -0
  27. package/dist/esm/audio/AudioInput.js +53 -0
  28. package/dist/esm/audio/AudioInput.js.map +1 -0
  29. package/dist/esm/audio/AudioManager.d.ts +72 -34
  30. package/dist/esm/audio/AudioManager.d.ts.map +1 -1
  31. package/dist/esm/audio/AudioManager.js +97 -51
  32. package/dist/esm/audio/AudioManager.js.map +1 -1
  33. package/dist/esm/audio/AudioStream.d.ts +49 -0
  34. package/dist/esm/audio/AudioStream.d.ts.map +1 -0
  35. package/dist/esm/audio/AudioStream.js +109 -0
  36. package/dist/esm/audio/AudioStream.js.map +1 -0
  37. package/dist/esm/audio/AudioStreamVoice.d.ts +61 -0
  38. package/dist/esm/audio/AudioStreamVoice.d.ts.map +1 -0
  39. package/dist/esm/audio/AudioStreamVoice.js +137 -0
  40. package/dist/esm/audio/AudioStreamVoice.js.map +1 -0
  41. package/dist/esm/audio/BaseVoice.d.ts +111 -0
  42. package/dist/esm/audio/BaseVoice.d.ts.map +1 -0
  43. package/dist/esm/audio/BaseVoice.js +298 -0
  44. package/dist/esm/audio/BaseVoice.js.map +1 -0
  45. package/dist/esm/audio/BiquadEffect.d.ts +53 -0
  46. package/dist/esm/audio/BiquadEffect.d.ts.map +1 -0
  47. package/dist/esm/audio/BiquadEffect.js +110 -0
  48. package/dist/esm/audio/BiquadEffect.js.map +1 -0
  49. package/dist/esm/audio/InputVoice.d.ts +41 -0
  50. package/dist/esm/audio/InputVoice.d.ts.map +1 -0
  51. package/dist/esm/audio/InputVoice.js +85 -0
  52. package/dist/esm/audio/InputVoice.js.map +1 -0
  53. package/dist/esm/audio/NoopVoice.d.ts +29 -0
  54. package/dist/esm/audio/NoopVoice.d.ts.map +1 -0
  55. package/dist/esm/audio/NoopVoice.js +52 -0
  56. package/dist/esm/audio/NoopVoice.js.map +1 -0
  57. package/dist/esm/audio/Playable.d.ts +135 -0
  58. package/dist/esm/audio/Playable.d.ts.map +1 -0
  59. package/dist/esm/audio/Sound.d.ts +64 -69
  60. package/dist/esm/audio/Sound.d.ts.map +1 -1
  61. package/dist/esm/audio/Sound.js +176 -377
  62. package/dist/esm/audio/Sound.js.map +1 -1
  63. package/dist/esm/audio/SoundVoice.d.ts +63 -0
  64. package/dist/esm/audio/SoundVoice.d.ts.map +1 -0
  65. package/dist/esm/audio/SoundVoice.js +168 -0
  66. package/dist/esm/audio/SoundVoice.js.map +1 -0
  67. package/dist/esm/audio/{filters/WorkletFilter.d.ts → WorkletEffect.d.ts} +3 -3
  68. package/dist/esm/audio/WorkletEffect.d.ts.map +1 -0
  69. package/dist/esm/audio/{filters/WorkletFilter.js → WorkletEffect.js} +6 -6
  70. package/dist/esm/audio/WorkletEffect.js.map +1 -0
  71. package/dist/esm/audio/audio-context.js +1 -1
  72. package/dist/esm/audio/audio-context.js.map +1 -1
  73. package/dist/esm/audio/crossFade.d.ts +22 -13
  74. package/dist/esm/audio/crossFade.d.ts.map +1 -1
  75. package/dist/esm/audio/crossFade.js +21 -13
  76. package/dist/esm/audio/crossFade.js.map +1 -1
  77. package/dist/esm/audio/filters/HighpassFilter.d.ts +2 -2
  78. package/dist/esm/audio/filters/HighpassFilter.js +2 -2
  79. package/dist/esm/audio/filters/LowpassFilter.d.ts +2 -2
  80. package/dist/esm/audio/filters/LowpassFilter.js +2 -2
  81. package/dist/esm/audio/filters/index.d.ts +0 -10
  82. package/dist/esm/audio/filters/index.d.ts.map +1 -1
  83. package/dist/esm/audio/index.d.ts +13 -15
  84. package/dist/esm/audio/index.d.ts.map +1 -1
  85. package/dist/esm/core/Application.d.ts +127 -10
  86. package/dist/esm/core/Application.d.ts.map +1 -1
  87. package/dist/esm/core/Application.js +226 -25
  88. package/dist/esm/core/Application.js.map +1 -1
  89. package/dist/esm/core/BuildInfo.js +2 -2
  90. package/dist/esm/core/Color.d.ts +6 -4
  91. package/dist/esm/core/Color.d.ts.map +1 -1
  92. package/dist/esm/core/Color.js +19 -15
  93. package/dist/esm/core/Color.js.map +1 -1
  94. package/dist/esm/core/DisposalScope.d.ts +50 -0
  95. package/dist/esm/core/DisposalScope.d.ts.map +1 -0
  96. package/dist/esm/core/DisposalScope.js +86 -0
  97. package/dist/esm/core/DisposalScope.js.map +1 -0
  98. package/dist/esm/core/Perf.d.ts +10 -22
  99. package/dist/esm/core/Perf.d.ts.map +1 -1
  100. package/dist/esm/core/Perf.js +15 -8
  101. package/dist/esm/core/Perf.js.map +1 -1
  102. package/dist/esm/core/Registry.d.ts +64 -0
  103. package/dist/esm/core/Registry.d.ts.map +1 -0
  104. package/dist/esm/core/Registry.js +79 -0
  105. package/dist/esm/core/Registry.js.map +1 -0
  106. package/dist/esm/core/Scene.d.ts +69 -21
  107. package/dist/esm/core/Scene.d.ts.map +1 -1
  108. package/dist/esm/core/Scene.js +109 -16
  109. package/dist/esm/core/Scene.js.map +1 -1
  110. package/dist/esm/core/SceneManager.d.ts +22 -60
  111. package/dist/esm/core/SceneManager.d.ts.map +1 -1
  112. package/dist/esm/core/SceneManager.js +68 -153
  113. package/dist/esm/core/SceneManager.js.map +1 -1
  114. package/dist/esm/core/SceneNode.d.ts +43 -2
  115. package/dist/esm/core/SceneNode.d.ts.map +1 -1
  116. package/dist/esm/core/SceneNode.js +101 -12
  117. package/dist/esm/core/SceneNode.js.map +1 -1
  118. package/dist/esm/core/Signal.js.map +1 -1
  119. package/dist/esm/core/Stage.d.ts +42 -0
  120. package/dist/esm/core/Stage.d.ts.map +1 -0
  121. package/dist/esm/core/System.d.ts +22 -0
  122. package/dist/esm/core/System.d.ts.map +1 -0
  123. package/dist/esm/core/SystemRegistry.d.ts +35 -0
  124. package/dist/esm/core/SystemRegistry.d.ts.map +1 -0
  125. package/dist/esm/core/SystemRegistry.js +104 -0
  126. package/dist/esm/core/SystemRegistry.js.map +1 -0
  127. package/dist/esm/core/Time.d.ts +15 -0
  128. package/dist/esm/core/Time.d.ts.map +1 -1
  129. package/dist/esm/core/Time.js +25 -0
  130. package/dist/esm/core/Time.js.map +1 -1
  131. package/dist/esm/core/dev.d.ts +9 -4
  132. package/dist/esm/core/dev.d.ts.map +1 -1
  133. package/dist/esm/core/dev.js +5 -0
  134. package/dist/esm/core/dev.js.map +1 -1
  135. package/dist/esm/core/index.d.ts +26 -15
  136. package/dist/esm/core/index.d.ts.map +1 -1
  137. package/dist/esm/core/letterbox.d.ts +25 -0
  138. package/dist/esm/core/letterbox.d.ts.map +1 -0
  139. package/dist/esm/core/letterbox.js +26 -0
  140. package/dist/esm/core/letterbox.js.map +1 -0
  141. package/dist/esm/core/serialization/NodeSerializer.d.ts +71 -0
  142. package/dist/esm/core/serialization/NodeSerializer.d.ts.map +1 -0
  143. package/dist/esm/core/serialization/Prefab.d.ts +49 -0
  144. package/dist/esm/core/serialization/Prefab.d.ts.map +1 -0
  145. package/dist/esm/core/serialization/Prefab.js +61 -0
  146. package/dist/esm/core/serialization/Prefab.js.map +1 -0
  147. package/dist/esm/core/serialization/SerializationRegistry.d.ts +95 -0
  148. package/dist/esm/core/serialization/SerializationRegistry.d.ts.map +1 -0
  149. package/dist/esm/core/serialization/SerializationRegistry.js +108 -0
  150. package/dist/esm/core/serialization/SerializationRegistry.js.map +1 -0
  151. package/dist/esm/core/serialization/commonFields.d.ts +20 -0
  152. package/dist/esm/core/serialization/commonFields.d.ts.map +1 -0
  153. package/dist/esm/core/serialization/commonFields.js +149 -0
  154. package/dist/esm/core/serialization/commonFields.js.map +1 -0
  155. package/dist/esm/core/serialization/coreSerializers.d.ts +9 -0
  156. package/dist/esm/core/serialization/coreSerializers.d.ts.map +1 -0
  157. package/dist/esm/core/serialization/coreSerializers.js +101 -0
  158. package/dist/esm/core/serialization/coreSerializers.js.map +1 -0
  159. package/dist/esm/core/serialization/index.d.ts +6 -0
  160. package/dist/esm/core/serialization/index.d.ts.map +1 -0
  161. package/dist/esm/core/serialization/read.d.ts +65 -0
  162. package/dist/esm/core/serialization/read.d.ts.map +1 -0
  163. package/dist/esm/core/serialization/read.js +48 -0
  164. package/dist/esm/core/serialization/read.js.map +1 -0
  165. package/dist/esm/core/serialization/renderingSerializers.d.ts +7 -0
  166. package/dist/esm/core/serialization/renderingSerializers.d.ts.map +1 -0
  167. package/dist/esm/core/serialization/renderingSerializers.js +311 -0
  168. package/dist/esm/core/serialization/renderingSerializers.js.map +1 -0
  169. package/dist/esm/core/serialization/serialize.d.ts +56 -0
  170. package/dist/esm/core/serialization/serialize.d.ts.map +1 -0
  171. package/dist/esm/core/serialization/serialize.js +144 -0
  172. package/dist/esm/core/serialization/serialize.js.map +1 -0
  173. package/dist/esm/core/serialization/serializerHelpers.d.ts +46 -0
  174. package/dist/esm/core/serialization/serializerHelpers.d.ts.map +1 -0
  175. package/dist/esm/core/serialization/serializerHelpers.js +161 -0
  176. package/dist/esm/core/serialization/serializerHelpers.js.map +1 -0
  177. package/dist/esm/core/serialization/types.d.ts +49 -0
  178. package/dist/esm/core/serialization/types.d.ts.map +1 -0
  179. package/dist/esm/core/serialization/types.js +9 -0
  180. package/dist/esm/core/serialization/types.js.map +1 -0
  181. package/dist/esm/core/serialization/uiSerializers.d.ts +7 -0
  182. package/dist/esm/core/serialization/uiSerializers.d.ts.map +1 -0
  183. package/dist/esm/core/serialization/uiSerializers.js +206 -0
  184. package/dist/esm/core/serialization/uiSerializers.js.map +1 -0
  185. package/dist/esm/core/types.d.ts +1 -1
  186. package/dist/esm/core/types.d.ts.map +1 -1
  187. package/dist/esm/core/utils.d.ts +1 -16
  188. package/dist/esm/core/utils.d.ts.map +1 -1
  189. package/dist/esm/core/utils.js +2 -100
  190. package/dist/esm/core/utils.js.map +1 -1
  191. package/dist/esm/debug/PerformanceLayer.js +8 -9
  192. package/dist/esm/debug/PerformanceLayer.js.map +1 -1
  193. package/dist/esm/debug/PointerStackLayer.d.ts.map +1 -1
  194. package/dist/esm/debug/PointerStackLayer.js +9 -6
  195. package/dist/esm/debug/PointerStackLayer.js.map +1 -1
  196. package/dist/esm/debug/RenderPassInspectorLayer.d.ts.map +1 -1
  197. package/dist/esm/debug/RenderPassInspectorLayer.js +19 -12
  198. package/dist/esm/debug/RenderPassInspectorLayer.js.map +1 -1
  199. package/dist/esm/extensions/Extension.d.ts +78 -11
  200. package/dist/esm/extensions/Extension.d.ts.map +1 -1
  201. package/dist/esm/extensions/ExtensionRegistry.d.ts.map +1 -1
  202. package/dist/esm/extensions/ExtensionRegistry.js.map +1 -1
  203. package/dist/esm/extensions/materialize.d.ts +9 -1
  204. package/dist/esm/extensions/materialize.d.ts.map +1 -1
  205. package/dist/esm/extensions/materialize.js +17 -2
  206. package/dist/esm/extensions/materialize.js.map +1 -1
  207. package/dist/esm/extensions/snapshot.d.ts +14 -3
  208. package/dist/esm/extensions/snapshot.d.ts.map +1 -1
  209. package/dist/esm/extensions/snapshot.js +51 -14
  210. package/dist/esm/extensions/snapshot.js.map +1 -1
  211. package/dist/esm/index.d.ts +2 -1
  212. package/dist/esm/index.d.ts.map +1 -1
  213. package/dist/esm/index.js +37 -54
  214. package/dist/esm/index.js.map +1 -1
  215. package/dist/esm/input/FocusManager.d.ts +59 -0
  216. package/dist/esm/input/FocusManager.d.ts.map +1 -0
  217. package/dist/esm/input/FocusManager.js +175 -0
  218. package/dist/esm/input/FocusManager.js.map +1 -0
  219. package/dist/esm/input/Gamepad.d.ts.map +1 -1
  220. package/dist/esm/input/Gamepad.js +8 -4
  221. package/dist/esm/input/Gamepad.js.map +1 -1
  222. package/dist/esm/input/GamepadAxis.js +2 -2
  223. package/dist/esm/input/GamepadDefinitions.d.ts.map +1 -1
  224. package/dist/esm/input/GamepadDefinitions.js +6 -2
  225. package/dist/esm/input/GamepadDefinitions.js.map +1 -1
  226. package/dist/esm/input/GestureRecognizer.d.ts +1 -2
  227. package/dist/esm/input/GestureRecognizer.d.ts.map +1 -1
  228. package/dist/esm/input/GestureRecognizer.js +1 -3
  229. package/dist/esm/input/GestureRecognizer.js.map +1 -1
  230. package/dist/esm/input/InputBinding.js +3 -3
  231. package/dist/esm/input/InputBinding.js.map +1 -1
  232. package/dist/esm/input/InputManager.d.ts +7 -2
  233. package/dist/esm/input/InputManager.d.ts.map +1 -1
  234. package/dist/esm/input/InputManager.js +35 -21
  235. package/dist/esm/input/InputManager.js.map +1 -1
  236. package/dist/esm/input/InteractionManager.d.ts +67 -2
  237. package/dist/esm/input/InteractionManager.d.ts.map +1 -1
  238. package/dist/esm/input/InteractionManager.js +165 -41
  239. package/dist/esm/input/InteractionManager.js.map +1 -1
  240. package/dist/esm/input/KeyEvent.d.ts +25 -0
  241. package/dist/esm/input/KeyEvent.d.ts.map +1 -0
  242. package/dist/esm/input/KeyEvent.js +32 -0
  243. package/dist/esm/input/KeyEvent.js.map +1 -0
  244. package/dist/esm/input/Pointer.d.ts +21 -4
  245. package/dist/esm/input/Pointer.d.ts.map +1 -1
  246. package/dist/esm/input/Pointer.js +54 -15
  247. package/dist/esm/input/Pointer.js.map +1 -1
  248. package/dist/esm/input/index.d.ts +3 -1
  249. package/dist/esm/input/index.d.ts.map +1 -1
  250. package/dist/esm/math/AbstractVector.d.ts.map +1 -1
  251. package/dist/esm/math/AbstractVector.js +7 -2
  252. package/dist/esm/math/AbstractVector.js.map +1 -1
  253. package/dist/esm/math/Circle.d.ts.map +1 -1
  254. package/dist/esm/math/Circle.js +5 -1
  255. package/dist/esm/math/Circle.js.map +1 -1
  256. package/dist/esm/math/Line.d.ts +1 -1
  257. package/dist/esm/math/Line.d.ts.map +1 -1
  258. package/dist/esm/math/Line.js +1 -1
  259. package/dist/esm/math/Line.js.map +1 -1
  260. package/dist/esm/math/Matrix.d.ts.map +1 -1
  261. package/dist/esm/math/Matrix.js +6 -1
  262. package/dist/esm/math/Matrix.js.map +1 -1
  263. package/dist/esm/math/ObservableVector.d.ts +26 -8
  264. package/dist/esm/math/ObservableVector.d.ts.map +1 -1
  265. package/dist/esm/math/ObservableVector.js +24 -16
  266. package/dist/esm/math/ObservableVector.js.map +1 -1
  267. package/dist/esm/math/Polygon.d.ts +5 -0
  268. package/dist/esm/math/Polygon.d.ts.map +1 -1
  269. package/dist/esm/math/Polygon.js +27 -3
  270. package/dist/esm/math/Polygon.js.map +1 -1
  271. package/dist/esm/math/Random.d.ts +9 -9
  272. package/dist/esm/math/Random.d.ts.map +1 -1
  273. package/dist/esm/math/Random.js +46 -46
  274. package/dist/esm/math/Random.js.map +1 -1
  275. package/dist/esm/math/Rectangle.d.ts +11 -4
  276. package/dist/esm/math/Rectangle.d.ts.map +1 -1
  277. package/dist/esm/math/Rectangle.js +12 -6
  278. package/dist/esm/math/Rectangle.js.map +1 -1
  279. package/dist/esm/math/Vector.d.ts +1 -1
  280. package/dist/esm/math/Vector.d.ts.map +1 -1
  281. package/dist/esm/math/Vector.js +1 -1
  282. package/dist/esm/math/Vector.js.map +1 -1
  283. package/dist/esm/math/collision-detection.d.ts +42 -0
  284. package/dist/esm/math/collision-detection.d.ts.map +1 -1
  285. package/dist/esm/math/collision-detection.js +54 -4
  286. package/dist/esm/math/collision-detection.js.map +1 -1
  287. package/dist/esm/math/collision-primitives.d.ts.map +1 -1
  288. package/dist/esm/math/collision-primitives.js +4 -0
  289. package/dist/esm/math/collision-primitives.js.map +1 -1
  290. package/dist/esm/math/geometry.d.ts +26 -0
  291. package/dist/esm/math/geometry.d.ts.map +1 -1
  292. package/dist/esm/math/geometry.js +89 -2
  293. package/dist/esm/math/geometry.js.map +1 -1
  294. package/dist/esm/math/index.d.ts +7 -5
  295. package/dist/esm/math/index.d.ts.map +1 -1
  296. package/dist/esm/math/swept-collision.d.ts +13 -0
  297. package/dist/esm/math/swept-collision.d.ts.map +1 -1
  298. package/dist/esm/math/swept-collision.js +15 -1
  299. package/dist/esm/math/swept-collision.js.map +1 -1
  300. package/dist/esm/math/triangulate.d.ts.map +1 -1
  301. package/dist/esm/math/triangulate.js +9 -1
  302. package/dist/esm/math/triangulate.js.map +1 -1
  303. package/dist/esm/math/utils.d.ts +20 -0
  304. package/dist/esm/math/utils.d.ts.map +1 -1
  305. package/dist/esm/math/utils.js +18 -15
  306. package/dist/esm/math/utils.js.map +1 -1
  307. package/dist/esm/renderer-sdk.d.ts +2 -0
  308. package/dist/esm/renderer-sdk.d.ts.map +1 -1
  309. package/dist/esm/{rendering.js → renderer-sdk.js} +1 -1
  310. package/dist/esm/renderer-sdk.js.map +1 -0
  311. package/dist/esm/rendering/CallbackRenderPass.js +1 -1
  312. package/dist/esm/rendering/CallbackRenderPass.js.map +1 -1
  313. package/dist/esm/rendering/Container.d.ts +3 -0
  314. package/dist/esm/rendering/Container.d.ts.map +1 -1
  315. package/dist/esm/rendering/Container.js +28 -5
  316. package/dist/esm/rendering/Container.js.map +1 -1
  317. package/dist/esm/rendering/Drawable.d.ts +47 -0
  318. package/dist/esm/rendering/Drawable.d.ts.map +1 -1
  319. package/dist/esm/rendering/Drawable.js +88 -0
  320. package/dist/esm/rendering/Drawable.js.map +1 -1
  321. package/dist/esm/rendering/GpuResourceAccountant.d.ts +65 -0
  322. package/dist/esm/rendering/GpuResourceAccountant.d.ts.map +1 -0
  323. package/dist/esm/rendering/GpuResourceAccountant.js +130 -0
  324. package/dist/esm/rendering/GpuResourceAccountant.js.map +1 -0
  325. package/dist/esm/rendering/RenderBackend.d.ts +15 -1
  326. package/dist/esm/rendering/RenderBackend.d.ts.map +1 -1
  327. package/dist/esm/rendering/RenderBatch.d.ts +55 -0
  328. package/dist/esm/rendering/RenderBatch.d.ts.map +1 -0
  329. package/dist/esm/rendering/RenderBatch.js +107 -0
  330. package/dist/esm/rendering/RenderBatch.js.map +1 -0
  331. package/dist/esm/rendering/RenderNode.d.ts +50 -10
  332. package/dist/esm/rendering/RenderNode.d.ts.map +1 -1
  333. package/dist/esm/rendering/RenderNode.js +113 -20
  334. package/dist/esm/rendering/RenderNode.js.map +1 -1
  335. package/dist/esm/rendering/RenderNodePass.js +2 -2
  336. package/dist/esm/rendering/RenderNodePass.js.map +1 -1
  337. package/dist/esm/rendering/RenderStats.d.ts +39 -0
  338. package/dist/esm/rendering/RenderStats.d.ts.map +1 -1
  339. package/dist/esm/rendering/RenderStats.js +14 -0
  340. package/dist/esm/rendering/RenderStats.js.map +1 -1
  341. package/dist/esm/rendering/RendererRegistry.d.ts.map +1 -1
  342. package/dist/esm/rendering/RendererRegistry.js +20 -23
  343. package/dist/esm/rendering/RendererRegistry.js.map +1 -1
  344. package/dist/esm/rendering/RenderingContext.d.ts +88 -4
  345. package/dist/esm/rendering/RenderingContext.d.ts.map +1 -1
  346. package/dist/esm/rendering/RenderingContext.js +107 -5
  347. package/dist/esm/rendering/RenderingContext.js.map +1 -1
  348. package/dist/esm/rendering/TransformBuffer.d.ts.map +1 -1
  349. package/dist/esm/rendering/TransformBuffer.js +2 -0
  350. package/dist/esm/rendering/TransformBuffer.js.map +1 -1
  351. package/dist/esm/rendering/View.d.ts +47 -15
  352. package/dist/esm/rendering/View.d.ts.map +1 -1
  353. package/dist/esm/rendering/View.js +44 -27
  354. package/dist/esm/rendering/View.js.map +1 -1
  355. package/dist/esm/rendering/coreRendererBindings.d.ts.map +1 -1
  356. package/dist/esm/rendering/coreRendererBindings.js +22 -0
  357. package/dist/esm/rendering/coreRendererBindings.js.map +1 -1
  358. package/dist/esm/rendering/filters/WebGpuShaderFilter.d.ts.map +1 -1
  359. package/dist/esm/rendering/filters/WebGpuShaderFilter.js +3 -1
  360. package/dist/esm/rendering/filters/WebGpuShaderFilter.js.map +1 -1
  361. package/dist/esm/rendering/geometry/Geometry.d.ts.map +1 -1
  362. package/dist/esm/rendering/geometry/Geometry.js +4 -2
  363. package/dist/esm/rendering/geometry/Geometry.js.map +1 -1
  364. package/dist/esm/rendering/gradient/Gradient.d.ts.map +1 -1
  365. package/dist/esm/rendering/gradient/Gradient.js +7 -2
  366. package/dist/esm/rendering/gradient/Gradient.js.map +1 -1
  367. package/dist/esm/rendering/material/MaterialKey.d.ts.map +1 -1
  368. package/dist/esm/rendering/material/MaterialKey.js +2 -0
  369. package/dist/esm/rendering/material/MaterialKey.js.map +1 -1
  370. package/dist/esm/rendering/material/ShaderSource.js +6 -0
  371. package/dist/esm/rendering/material/ShaderSource.js.map +1 -1
  372. package/dist/esm/rendering/mesh/ImmediateMesh.d.ts +48 -0
  373. package/dist/esm/rendering/mesh/ImmediateMesh.d.ts.map +1 -0
  374. package/dist/esm/rendering/mesh/ImmediateMesh.js +85 -0
  375. package/dist/esm/rendering/mesh/ImmediateMesh.js.map +1 -0
  376. package/dist/esm/rendering/mesh/Mesh.d.ts +29 -6
  377. package/dist/esm/rendering/mesh/Mesh.d.ts.map +1 -1
  378. package/dist/esm/rendering/mesh/Mesh.js +40 -13
  379. package/dist/esm/rendering/mesh/Mesh.js.map +1 -1
  380. package/dist/esm/rendering/pixelSnap.d.ts +219 -0
  381. package/dist/esm/rendering/pixelSnap.d.ts.map +1 -0
  382. package/dist/esm/rendering/pixelSnap.js +187 -0
  383. package/dist/esm/rendering/pixelSnap.js.map +1 -0
  384. package/dist/esm/rendering/plan/RenderCommand.d.ts +31 -9
  385. package/dist/esm/rendering/plan/RenderCommand.d.ts.map +1 -1
  386. package/dist/esm/rendering/plan/RenderCommand.js +23 -21
  387. package/dist/esm/rendering/plan/RenderCommand.js.map +1 -1
  388. package/dist/esm/rendering/plan/RenderEffectExecutor.d.ts.map +1 -1
  389. package/dist/esm/rendering/plan/RenderEffectExecutor.js +1 -0
  390. package/dist/esm/rendering/plan/RenderEffectExecutor.js.map +1 -1
  391. package/dist/esm/rendering/plan/RenderInstruction.d.ts +7 -37
  392. package/dist/esm/rendering/plan/RenderInstruction.d.ts.map +1 -1
  393. package/dist/esm/rendering/plan/RenderPlanBuilder.d.ts +17 -2
  394. package/dist/esm/rendering/plan/RenderPlanBuilder.d.ts.map +1 -1
  395. package/dist/esm/rendering/plan/RenderPlanBuilder.js +132 -46
  396. package/dist/esm/rendering/plan/RenderPlanBuilder.js.map +1 -1
  397. package/dist/esm/rendering/plan/RenderPlanOptimizer.d.ts.map +1 -1
  398. package/dist/esm/rendering/plan/RenderPlanOptimizer.js +31 -4
  399. package/dist/esm/rendering/plan/RenderPlanOptimizer.js.map +1 -1
  400. package/dist/esm/rendering/plan/RenderPlanPlayer.d.ts.map +1 -1
  401. package/dist/esm/rendering/plan/RenderPlanPlayer.js +70 -13
  402. package/dist/esm/rendering/plan/RenderPlanPlayer.js.map +1 -1
  403. package/dist/esm/rendering/plan/RenderScope.d.ts +16 -10
  404. package/dist/esm/rendering/plan/RenderScope.d.ts.map +1 -1
  405. package/dist/esm/rendering/primitives/Graphics.d.ts +6 -0
  406. package/dist/esm/rendering/primitives/Graphics.d.ts.map +1 -1
  407. package/dist/esm/rendering/primitives/Graphics.js +17 -1
  408. package/dist/esm/rendering/primitives/Graphics.js.map +1 -1
  409. package/dist/esm/rendering/{index.d.ts → public.d.ts} +13 -30
  410. package/dist/esm/rendering/public.d.ts.map +1 -0
  411. package/dist/esm/rendering/shader/ShaderAttribute.d.ts.map +1 -1
  412. package/dist/esm/rendering/shader/ShaderAttribute.js +2 -0
  413. package/dist/esm/rendering/shader/ShaderAttribute.js.map +1 -1
  414. package/dist/esm/rendering/sprite/AnimatedSprite.d.ts +11 -0
  415. package/dist/esm/rendering/sprite/AnimatedSprite.d.ts.map +1 -1
  416. package/dist/esm/rendering/sprite/AnimatedSprite.js +24 -2
  417. package/dist/esm/rendering/sprite/AnimatedSprite.js.map +1 -1
  418. package/dist/esm/rendering/sprite/NineSliceSprite.d.ts +69 -0
  419. package/dist/esm/rendering/sprite/NineSliceSprite.d.ts.map +1 -0
  420. package/dist/esm/rendering/sprite/NineSliceSprite.js +206 -0
  421. package/dist/esm/rendering/sprite/NineSliceSprite.js.map +1 -0
  422. package/dist/esm/rendering/sprite/RepeatingSprite.d.ts +120 -0
  423. package/dist/esm/rendering/sprite/RepeatingSprite.d.ts.map +1 -0
  424. package/dist/esm/rendering/sprite/RepeatingSprite.js +277 -0
  425. package/dist/esm/rendering/sprite/RepeatingSprite.js.map +1 -0
  426. package/dist/esm/rendering/sprite/Sprite.d.ts +13 -0
  427. package/dist/esm/rendering/sprite/Sprite.d.ts.map +1 -1
  428. package/dist/esm/rendering/sprite/Sprite.js +53 -3
  429. package/dist/esm/rendering/sprite/Sprite.js.map +1 -1
  430. package/dist/esm/rendering/sprite/nineSlice.d.ts +53 -0
  431. package/dist/esm/rendering/sprite/nineSlice.d.ts.map +1 -0
  432. package/dist/esm/rendering/sprite/nineSlice.js +334 -0
  433. package/dist/esm/rendering/sprite/nineSlice.js.map +1 -0
  434. package/dist/esm/rendering/sprite/repeatingSpritePlan.d.ts +57 -0
  435. package/dist/esm/rendering/sprite/repeatingSpritePlan.d.ts.map +1 -0
  436. package/dist/esm/rendering/sprite/repeatingSpritePlan.js +156 -0
  437. package/dist/esm/rendering/sprite/repeatingSpritePlan.js.map +1 -0
  438. package/dist/esm/rendering/text/BitmapText.d.ts +2 -0
  439. package/dist/esm/rendering/text/BitmapText.d.ts.map +1 -1
  440. package/dist/esm/rendering/text/BitmapText.js +4 -0
  441. package/dist/esm/rendering/text/BitmapText.js.map +1 -1
  442. package/dist/esm/rendering/text/GlyphAtlas.d.ts.map +1 -1
  443. package/dist/esm/rendering/text/GlyphAtlas.js +2 -1
  444. package/dist/esm/rendering/text/GlyphAtlas.js.map +1 -1
  445. package/dist/esm/rendering/text/GlyphAtlasPool.d.ts +8 -1
  446. package/dist/esm/rendering/text/GlyphAtlasPool.d.ts.map +1 -1
  447. package/dist/esm/rendering/text/GlyphAtlasPool.js +9 -12
  448. package/dist/esm/rendering/text/GlyphAtlasPool.js.map +1 -1
  449. package/dist/esm/rendering/text/GlyphSdf.d.ts.map +1 -1
  450. package/dist/esm/rendering/text/GlyphSdf.js +5 -1
  451. package/dist/esm/rendering/text/GlyphSdf.js.map +1 -1
  452. package/dist/esm/rendering/text/HTMLText.d.ts.map +1 -1
  453. package/dist/esm/rendering/text/HTMLText.js +1 -0
  454. package/dist/esm/rendering/text/HTMLText.js.map +1 -1
  455. package/dist/esm/rendering/text/Text.d.ts +17 -6
  456. package/dist/esm/rendering/text/Text.d.ts.map +1 -1
  457. package/dist/esm/rendering/text/Text.js +7 -12
  458. package/dist/esm/rendering/text/Text.js.map +1 -1
  459. package/dist/esm/rendering/text/TextLayout.d.ts.map +1 -1
  460. package/dist/esm/rendering/text/TextLayout.js +4 -18
  461. package/dist/esm/rendering/text/TextLayout.js.map +1 -1
  462. package/dist/esm/rendering/texture/DataTexture.js +2 -2
  463. package/dist/esm/rendering/texture/DataTexture.js.map +1 -1
  464. package/dist/esm/rendering/texture/Texture.d.ts +6 -0
  465. package/dist/esm/rendering/texture/Texture.d.ts.map +1 -1
  466. package/dist/esm/rendering/texture/Texture.js +8 -0
  467. package/dist/esm/rendering/texture/Texture.js.map +1 -1
  468. package/dist/esm/rendering/texture/TextureRegion.d.ts +100 -0
  469. package/dist/esm/rendering/texture/TextureRegion.d.ts.map +1 -0
  470. package/dist/esm/rendering/texture/TextureRegion.js +144 -0
  471. package/dist/esm/rendering/texture/TextureRegion.js.map +1 -0
  472. package/dist/esm/rendering/texture/repeat.d.ts +96 -0
  473. package/dist/esm/rendering/texture/repeat.d.ts.map +1 -0
  474. package/dist/esm/rendering/texture/repeat.js +158 -0
  475. package/dist/esm/rendering/texture/repeat.js.map +1 -0
  476. package/dist/esm/rendering/types.d.ts +11 -0
  477. package/dist/esm/rendering/types.d.ts.map +1 -1
  478. package/dist/esm/rendering/types.js +11 -0
  479. package/dist/esm/rendering/types.js.map +1 -1
  480. package/dist/esm/rendering/video/Video.d.ts +7 -3
  481. package/dist/esm/rendering/video/Video.d.ts.map +1 -1
  482. package/dist/esm/rendering/video/Video.js +7 -3
  483. package/dist/esm/rendering/video/Video.js.map +1 -1
  484. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.d.ts.map +1 -1
  485. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js +2 -2
  486. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js.map +1 -1
  487. package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts +41 -2
  488. package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts.map +1 -1
  489. package/dist/esm/rendering/webgl2/WebGl2Backend.js +137 -8
  490. package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -1
  491. package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.d.ts.map +1 -1
  492. package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.js +2 -2
  493. package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.js.map +1 -1
  494. package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.d.ts +17 -0
  495. package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.d.ts.map +1 -1
  496. package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js +122 -38
  497. package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js.map +1 -1
  498. package/dist/esm/rendering/webgl2/WebGl2NineSliceSpriteRenderer.d.ts +32 -0
  499. package/dist/esm/rendering/webgl2/WebGl2NineSliceSpriteRenderer.d.ts.map +1 -0
  500. package/dist/esm/rendering/webgl2/WebGl2NineSliceSpriteRenderer.js +309 -0
  501. package/dist/esm/rendering/webgl2/WebGl2NineSliceSpriteRenderer.js.map +1 -0
  502. package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.d.ts +16 -1
  503. package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.d.ts.map +1 -1
  504. package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js +32 -1
  505. package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js.map +1 -1
  506. package/dist/esm/rendering/webgl2/WebGl2RepeatingSpriteRenderer.d.ts +49 -0
  507. package/dist/esm/rendering/webgl2/WebGl2RepeatingSpriteRenderer.d.ts.map +1 -0
  508. package/dist/esm/rendering/webgl2/WebGl2RepeatingSpriteRenderer.js +539 -0
  509. package/dist/esm/rendering/webgl2/WebGl2RepeatingSpriteRenderer.js.map +1 -0
  510. package/dist/esm/rendering/webgl2/WebGl2ShaderBlock.d.ts.map +1 -1
  511. package/dist/esm/rendering/webgl2/WebGl2ShaderBlock.js +14 -3
  512. package/dist/esm/rendering/webgl2/WebGl2ShaderBlock.js.map +1 -1
  513. package/dist/esm/rendering/webgl2/WebGl2ShaderMappings.js +3 -3
  514. package/dist/esm/rendering/webgl2/WebGl2ShaderMappings.js.map +1 -1
  515. package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.d.ts.map +1 -1
  516. package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.js +11 -2
  517. package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.js.map +1 -1
  518. package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.d.ts +9 -0
  519. package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.d.ts.map +1 -1
  520. package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js +29 -4
  521. package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js.map +1 -1
  522. package/dist/esm/rendering/webgl2/WebGl2StencilClipper.d.ts.map +1 -1
  523. package/dist/esm/rendering/webgl2/WebGl2StencilClipper.js +3 -2
  524. package/dist/esm/rendering/webgl2/WebGl2StencilClipper.js.map +1 -1
  525. package/dist/esm/rendering/webgl2/WebGl2TextRenderer.d.ts.map +1 -1
  526. package/dist/esm/rendering/webgl2/WebGl2TextRenderer.js +10 -4
  527. package/dist/esm/rendering/webgl2/WebGl2TextRenderer.js.map +1 -1
  528. package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts +39 -3
  529. package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts.map +1 -1
  530. package/dist/esm/rendering/webgpu/WebGpuBackend.js +120 -12
  531. package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -1
  532. package/dist/esm/rendering/webgpu/WebGpuBlendState.d.ts.map +1 -1
  533. package/dist/esm/rendering/webgpu/WebGpuBlendState.js +3 -0
  534. package/dist/esm/rendering/webgpu/WebGpuBlendState.js.map +1 -1
  535. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.d.ts +13 -0
  536. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.d.ts.map +1 -1
  537. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js +102 -24
  538. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js.map +1 -1
  539. package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.d.ts +36 -0
  540. package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.d.ts.map +1 -0
  541. package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.js +363 -0
  542. package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.js.map +1 -0
  543. package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.d.ts +52 -0
  544. package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.d.ts.map +1 -0
  545. package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.js +566 -0
  546. package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.js.map +1 -0
  547. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts +9 -0
  548. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts.map +1 -1
  549. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js +30 -6
  550. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js.map +1 -1
  551. package/dist/esm/rendering/webgpu/WebGpuStencilClipper.d.ts.map +1 -1
  552. package/dist/esm/rendering/webgpu/WebGpuStencilClipper.js +1 -0
  553. package/dist/esm/rendering/webgpu/WebGpuStencilClipper.js.map +1 -1
  554. package/dist/esm/rendering/webgpu/WebGpuTextRenderer.d.ts.map +1 -1
  555. package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js +19 -7
  556. package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js.map +1 -1
  557. package/dist/esm/rendering/webgpu/WebGpuTransformStorage.d.ts +16 -4
  558. package/dist/esm/rendering/webgpu/WebGpuTransformStorage.d.ts.map +1 -1
  559. package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js +26 -6
  560. package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js.map +1 -1
  561. package/dist/esm/rendering/webgpu/compute/WebGpuComputePipeline.js +1 -1
  562. package/dist/esm/rendering/webgpu/compute/WebGpuComputePipeline.js.map +1 -1
  563. package/dist/esm/rendering/webgpu/compute/WebGpuStorageBuffer.d.ts +7 -0
  564. package/dist/esm/rendering/webgpu/compute/WebGpuStorageBuffer.d.ts.map +1 -1
  565. package/dist/esm/rendering/webgpu/compute/WebGpuStorageBuffer.js +8 -0
  566. package/dist/esm/rendering/webgpu/compute/WebGpuStorageBuffer.js.map +1 -1
  567. package/dist/esm/resources/Asset.d.ts +1 -1
  568. package/dist/esm/resources/Asset.d.ts.map +1 -1
  569. package/dist/esm/resources/Asset.js +0 -2
  570. package/dist/esm/resources/Asset.js.map +1 -1
  571. package/dist/esm/resources/AssetContainer.d.ts +75 -0
  572. package/dist/esm/resources/AssetContainer.d.ts.map +1 -0
  573. package/dist/esm/resources/AssetContainer.js +100 -0
  574. package/dist/esm/resources/AssetContainer.js.map +1 -0
  575. package/dist/esm/resources/AssetDefinitions.d.ts +3 -3
  576. package/dist/esm/resources/AssetDefinitions.d.ts.map +1 -1
  577. package/dist/esm/resources/Assets.d.ts.map +1 -1
  578. package/dist/esm/resources/Assets.js +0 -1
  579. package/dist/esm/resources/Assets.js.map +1 -1
  580. package/dist/esm/resources/FactoryRegistry.d.ts.map +1 -1
  581. package/dist/esm/resources/FactoryRegistry.js +14 -23
  582. package/dist/esm/resources/FactoryRegistry.js.map +1 -1
  583. package/dist/esm/resources/IndexedDbDatabase.d.ts.map +1 -1
  584. package/dist/esm/resources/IndexedDbDatabase.js +8 -1
  585. package/dist/esm/resources/IndexedDbDatabase.js.map +1 -1
  586. package/dist/esm/resources/IndexedDbKeyValueStore.d.ts +37 -0
  587. package/dist/esm/resources/IndexedDbKeyValueStore.d.ts.map +1 -0
  588. package/dist/esm/resources/IndexedDbKeyValueStore.js +58 -0
  589. package/dist/esm/resources/IndexedDbKeyValueStore.js.map +1 -0
  590. package/dist/esm/resources/KeyValueStore.d.ts +31 -0
  591. package/dist/esm/resources/KeyValueStore.d.ts.map +1 -0
  592. package/dist/esm/resources/Loader.d.ts +78 -10
  593. package/dist/esm/resources/Loader.d.ts.map +1 -1
  594. package/dist/esm/resources/Loader.js +119 -15
  595. package/dist/esm/resources/Loader.js.map +1 -1
  596. package/dist/esm/resources/MemoryStore.d.ts +17 -0
  597. package/dist/esm/resources/MemoryStore.d.ts.map +1 -0
  598. package/dist/esm/resources/MemoryStore.js +30 -0
  599. package/dist/esm/resources/MemoryStore.js.map +1 -0
  600. package/dist/esm/resources/WebStorageStore.d.ts +40 -0
  601. package/dist/esm/resources/WebStorageStore.d.ts.map +1 -0
  602. package/dist/esm/resources/WebStorageStore.js +84 -0
  603. package/dist/esm/resources/WebStorageStore.js.map +1 -0
  604. package/dist/esm/resources/coreAssetBindings.d.ts.map +1 -1
  605. package/dist/esm/resources/coreAssetBindings.js +16 -5
  606. package/dist/esm/resources/coreAssetBindings.js.map +1 -1
  607. package/dist/esm/resources/factories/BmFontFactory.js +4 -4
  608. package/dist/esm/resources/factories/BmFontFactory.js.map +1 -1
  609. package/dist/esm/resources/factories/MusicFactory.d.ts +9 -9
  610. package/dist/esm/resources/factories/MusicFactory.d.ts.map +1 -1
  611. package/dist/esm/resources/factories/MusicFactory.js +7 -7
  612. package/dist/esm/resources/factories/MusicFactory.js.map +1 -1
  613. package/dist/esm/resources/factories/SoundFactory.js +2 -2
  614. package/dist/esm/resources/factories/SoundFactory.js.map +1 -1
  615. package/dist/esm/resources/factories/SubtitleFactory.d.ts +11 -1
  616. package/dist/esm/resources/factories/SubtitleFactory.d.ts.map +1 -1
  617. package/dist/esm/resources/factories/SubtitleFactory.js +13 -9
  618. package/dist/esm/resources/factories/SubtitleFactory.js.map +1 -1
  619. package/dist/esm/resources/index.d.ts +51 -34
  620. package/dist/esm/resources/index.d.ts.map +1 -1
  621. package/dist/esm/resources/utils.js +4 -4
  622. package/dist/esm/resources/utils.js.map +1 -1
  623. package/dist/esm/ui/Button.d.ts +54 -0
  624. package/dist/esm/ui/Button.d.ts.map +1 -0
  625. package/dist/esm/ui/Button.js +139 -0
  626. package/dist/esm/ui/Button.js.map +1 -0
  627. package/dist/esm/ui/Label.d.ts +17 -0
  628. package/dist/esm/ui/Label.d.ts.map +1 -0
  629. package/dist/esm/ui/Label.js +37 -0
  630. package/dist/esm/ui/Label.js.map +1 -0
  631. package/dist/esm/ui/Panel.d.ts +38 -0
  632. package/dist/esm/ui/Panel.d.ts.map +1 -0
  633. package/dist/esm/ui/Panel.js +61 -0
  634. package/dist/esm/ui/Panel.js.map +1 -0
  635. package/dist/esm/ui/ProgressBar.d.ts +37 -0
  636. package/dist/esm/ui/ProgressBar.d.ts.map +1 -0
  637. package/dist/esm/ui/ProgressBar.js +76 -0
  638. package/dist/esm/ui/ProgressBar.js.map +1 -0
  639. package/dist/esm/ui/Stack.d.ts +34 -0
  640. package/dist/esm/ui/Stack.d.ts.map +1 -0
  641. package/dist/esm/ui/Stack.js +69 -0
  642. package/dist/esm/ui/Stack.js.map +1 -0
  643. package/dist/esm/ui/UIRoot.d.ts +31 -0
  644. package/dist/esm/ui/UIRoot.d.ts.map +1 -0
  645. package/dist/esm/ui/UIRoot.js +49 -0
  646. package/dist/esm/ui/UIRoot.js.map +1 -0
  647. package/dist/esm/ui/Widget.d.ts +45 -0
  648. package/dist/esm/ui/Widget.d.ts.map +1 -0
  649. package/dist/esm/ui/Widget.js +113 -0
  650. package/dist/esm/ui/Widget.js.map +1 -0
  651. package/dist/esm/ui/index.d.ts +13 -0
  652. package/dist/esm/ui/index.d.ts.map +1 -0
  653. package/dist/exo.debug.esm.js +1 -948
  654. package/dist/exo.debug.esm.js.map +1 -1
  655. package/dist/exo.esm.js +1 -37555
  656. package/dist/exo.esm.js.map +1 -1
  657. package/package.json +31 -13
  658. package/dist/esm/audio/AbstractMedia.d.ts +0 -75
  659. package/dist/esm/audio/AbstractMedia.d.ts.map +0 -1
  660. package/dist/esm/audio/AbstractMedia.js +0 -179
  661. package/dist/esm/audio/AbstractMedia.js.map +0 -1
  662. package/dist/esm/audio/AudioAnalyser.d.ts +0 -128
  663. package/dist/esm/audio/AudioAnalyser.d.ts.map +0 -1
  664. package/dist/esm/audio/AudioAnalyser.js +0 -473
  665. package/dist/esm/audio/AudioAnalyser.js.map +0 -1
  666. package/dist/esm/audio/AudioFilter.d.ts +0 -17
  667. package/dist/esm/audio/AudioFilter.d.ts.map +0 -1
  668. package/dist/esm/audio/AudioFilter.js +0 -15
  669. package/dist/esm/audio/AudioFilter.js.map +0 -1
  670. package/dist/esm/audio/BeatDetector.d.ts +0 -207
  671. package/dist/esm/audio/BeatDetector.d.ts.map +0 -1
  672. package/dist/esm/audio/BeatDetector.js +0 -424
  673. package/dist/esm/audio/BeatDetector.js.map +0 -1
  674. package/dist/esm/audio/Media.d.ts +0 -37
  675. package/dist/esm/audio/Media.d.ts.map +0 -1
  676. package/dist/esm/audio/Music.d.ts +0 -42
  677. package/dist/esm/audio/Music.d.ts.map +0 -1
  678. package/dist/esm/audio/Music.js +0 -164
  679. package/dist/esm/audio/Music.js.map +0 -1
  680. package/dist/esm/audio/OscillatorSound.d.ts +0 -100
  681. package/dist/esm/audio/OscillatorSound.d.ts.map +0 -1
  682. package/dist/esm/audio/OscillatorSound.js +0 -346
  683. package/dist/esm/audio/OscillatorSound.js.map +0 -1
  684. package/dist/esm/audio/dsp/fft.d.ts +0 -23
  685. package/dist/esm/audio/dsp/fft.d.ts.map +0 -1
  686. package/dist/esm/audio/dsp/mel.d.ts +0 -44
  687. package/dist/esm/audio/dsp/mel.d.ts.map +0 -1
  688. package/dist/esm/audio/dsp/mel.js +0 -70
  689. package/dist/esm/audio/dsp/mel.js.map +0 -1
  690. package/dist/esm/audio/dsp/tempogram.d.ts +0 -52
  691. package/dist/esm/audio/dsp/tempogram.d.ts.map +0 -1
  692. package/dist/esm/audio/filters/ChorusFilter.d.ts +0 -54
  693. package/dist/esm/audio/filters/ChorusFilter.d.ts.map +0 -1
  694. package/dist/esm/audio/filters/ChorusFilter.js +0 -155
  695. package/dist/esm/audio/filters/ChorusFilter.js.map +0 -1
  696. package/dist/esm/audio/filters/CompressorFilter.d.ts +0 -54
  697. package/dist/esm/audio/filters/CompressorFilter.d.ts.map +0 -1
  698. package/dist/esm/audio/filters/CompressorFilter.js +0 -123
  699. package/dist/esm/audio/filters/CompressorFilter.js.map +0 -1
  700. package/dist/esm/audio/filters/DelayFilter.d.ts +0 -36
  701. package/dist/esm/audio/filters/DelayFilter.d.ts.map +0 -1
  702. package/dist/esm/audio/filters/DelayFilter.js +0 -114
  703. package/dist/esm/audio/filters/DelayFilter.js.map +0 -1
  704. package/dist/esm/audio/filters/DuckingFilter.d.ts +0 -45
  705. package/dist/esm/audio/filters/DuckingFilter.d.ts.map +0 -1
  706. package/dist/esm/audio/filters/DuckingFilter.js +0 -172
  707. package/dist/esm/audio/filters/DuckingFilter.js.map +0 -1
  708. package/dist/esm/audio/filters/EqualizerFilter.d.ts +0 -51
  709. package/dist/esm/audio/filters/EqualizerFilter.d.ts.map +0 -1
  710. package/dist/esm/audio/filters/EqualizerFilter.js +0 -138
  711. package/dist/esm/audio/filters/EqualizerFilter.js.map +0 -1
  712. package/dist/esm/audio/filters/GranularFilter.d.ts +0 -63
  713. package/dist/esm/audio/filters/GranularFilter.d.ts.map +0 -1
  714. package/dist/esm/audio/filters/GranularFilter.js +0 -107
  715. package/dist/esm/audio/filters/GranularFilter.js.map +0 -1
  716. package/dist/esm/audio/filters/PitchShiftFilter.d.ts +0 -45
  717. package/dist/esm/audio/filters/PitchShiftFilter.d.ts.map +0 -1
  718. package/dist/esm/audio/filters/PitchShiftFilter.js +0 -66
  719. package/dist/esm/audio/filters/PitchShiftFilter.js.map +0 -1
  720. package/dist/esm/audio/filters/ReverbFilter.d.ts +0 -38
  721. package/dist/esm/audio/filters/ReverbFilter.d.ts.map +0 -1
  722. package/dist/esm/audio/filters/ReverbFilter.js +0 -122
  723. package/dist/esm/audio/filters/ReverbFilter.js.map +0 -1
  724. package/dist/esm/audio/filters/VocoderFilter.d.ts +0 -50
  725. package/dist/esm/audio/filters/VocoderFilter.d.ts.map +0 -1
  726. package/dist/esm/audio/filters/VocoderFilter.js +0 -94
  727. package/dist/esm/audio/filters/VocoderFilter.js.map +0 -1
  728. package/dist/esm/audio/filters/WorkletFilter.d.ts.map +0 -1
  729. package/dist/esm/audio/filters/WorkletFilter.js.map +0 -1
  730. package/dist/esm/audio/worklets/beat-detector.worklet.d.ts +0 -2
  731. package/dist/esm/audio/worklets/beat-detector.worklet.d.ts.map +0 -1
  732. package/dist/esm/audio/worklets/beat-detector.worklet.js +0 -647
  733. package/dist/esm/audio/worklets/beat-detector.worklet.js.map +0 -1
  734. package/dist/esm/audio/worklets/granular.worklet.d.ts +0 -2
  735. package/dist/esm/audio/worklets/granular.worklet.d.ts.map +0 -1
  736. package/dist/esm/audio/worklets/granular.worklet.js +0 -89
  737. package/dist/esm/audio/worklets/granular.worklet.js.map +0 -1
  738. package/dist/esm/audio/worklets/pitch-shift.worklet.d.ts +0 -2
  739. package/dist/esm/audio/worklets/pitch-shift.worklet.d.ts.map +0 -1
  740. package/dist/esm/audio/worklets/pitch-shift.worklet.js +0 -74
  741. package/dist/esm/audio/worklets/pitch-shift.worklet.js.map +0 -1
  742. package/dist/esm/audio/worklets/vocoder.worklet.d.ts +0 -2
  743. package/dist/esm/audio/worklets/vocoder.worklet.d.ts.map +0 -1
  744. package/dist/esm/audio/worklets/vocoder.worklet.js +0 -92
  745. package/dist/esm/audio/worklets/vocoder.worklet.js.map +0 -1
  746. package/dist/esm/input/internal/interactionManagerRegistry.d.ts +0 -10
  747. package/dist/esm/input/internal/interactionManagerRegistry.d.ts.map +0 -1
  748. package/dist/esm/input/internal/interactionManagerRegistry.js +0 -10
  749. package/dist/esm/input/internal/interactionManagerRegistry.js.map +0 -1
  750. package/dist/esm/rendering/index.d.ts.map +0 -1
  751. package/dist/esm/rendering/plan/RenderInstruction.js +0 -45
  752. package/dist/esm/rendering/plan/RenderInstruction.js.map +0 -1
  753. package/dist/esm/rendering.d.ts +0 -28
  754. package/dist/esm/rendering.d.ts.map +0 -1
  755. package/dist/esm/rendering.js.map +0 -1
  756. package/dist/esm/resources/JsonStore.d.ts +0 -19
  757. package/dist/esm/resources/JsonStore.d.ts.map +0 -1
  758. package/dist/esm/resources/JsonStore.js +0 -62
  759. package/dist/esm/resources/JsonStore.js.map +0 -1
@@ -0,0 +1,108 @@
1
+ import { Registry } from '../Registry.js';
2
+
3
+ /** Walk one step up the constructor's prototype chain, or stop at the base. */
4
+ const walkPrototype = (ctor) => {
5
+ const parent = Object.getPrototypeOf(ctor);
6
+ return typeof parent === 'function' && parent !== Function.prototype ? parent : null;
7
+ };
8
+ /**
9
+ * Bidirectional name ↔ constructor ↔ {@link NodeSerializer} registry backing
10
+ * the scene serializer.
11
+ *
12
+ * Serialize resolves a node to its serializer by walking the constructor's
13
+ * prototype chain (so a subclass without its own registration inherits the
14
+ * nearest registered base serializer); deserialize resolves by type name.
15
+ * Core registers the built-in node types; extensions contribute their own via
16
+ * the {@link Extension.serializers} binding.
17
+ *
18
+ * @see registerSerializer for the convenience entry point onto the
19
+ * {@link defaultSerializationRegistry}.
20
+ */
21
+ class SerializationRegistry {
22
+ _fallback;
23
+ _byCtor = new Registry({ walk: walkPrototype });
24
+ _byName = new Map();
25
+ /**
26
+ * @param _fallback Optional parent registry consulted when this registry has
27
+ * no own entry for a lookup. An {@link Application} owns its own registry
28
+ * chained to the {@link defaultSerializationRegistry}, so app-scoped
29
+ * extension serializers stay isolated per Application while core and
30
+ * globally-registered serializers remain shared.
31
+ */
32
+ constructor(_fallback = null) {
33
+ this._fallback = _fallback;
34
+ }
35
+ /**
36
+ * Register `serializer` for `ctor` under `typeName`. Re-registering the same
37
+ * `(typeName, ctor)` pair overwrites silently; registering an existing
38
+ * `typeName` against a **different** constructor throws.
39
+ */
40
+ register(typeName, ctor, serializer) {
41
+ const existing = this._byName.get(typeName);
42
+ if (existing !== undefined && existing.ctor !== ctor) {
43
+ throw new Error(`A serializer for type name "${typeName}" is already registered for a different constructor.`);
44
+ }
45
+ const entry = { typeName, ctor, serializer };
46
+ this._byCtor.set(ctor, entry);
47
+ this._byName.set(typeName, entry);
48
+ }
49
+ /**
50
+ * Resolve the serializer for `node` by walking its constructor's prototype
51
+ * chain. Returns `undefined` if no registration matches.
52
+ * @internal
53
+ */
54
+ resolveByNode(node) {
55
+ return this._byCtor.resolve(node.constructor) ?? this._fallback?.resolveByNode(node);
56
+ }
57
+ /**
58
+ * Resolve the serializer registered under `typeName`, or `undefined`.
59
+ * @internal
60
+ */
61
+ resolveByName(typeName) {
62
+ return this._byName.get(typeName) ?? this._fallback?.resolveByName(typeName);
63
+ }
64
+ /** Returns `true` if a serializer is registered under `typeName`. */
65
+ hasType(typeName) {
66
+ return this._byName.has(typeName) || (this._fallback?.hasType(typeName) ?? false);
67
+ }
68
+ /**
69
+ * Remove every own registration (both the name and constructor maps). The
70
+ * fallback chain is left untouched. Test infrastructure only — used to reset
71
+ * the {@link defaultSerializationRegistry} between suites so process-wide
72
+ * registrations do not leak across them.
73
+ * @internal
74
+ */
75
+ clear() {
76
+ this._byName.clear();
77
+ this._byCtor.destroy();
78
+ }
79
+ }
80
+ /**
81
+ * Process-wide default registry. Core node serializers register here lazily on
82
+ * first use; extension serializers are materialised here at Application
83
+ * construction.
84
+ */
85
+ const defaultSerializationRegistry = new SerializationRegistry();
86
+ /**
87
+ * Register a custom {@link NodeSerializer}. Defaults to the
88
+ * {@link defaultSerializationRegistry}; pass `app.serializers` to register the
89
+ * type only for that {@link Application} (it stays isolated from other apps and
90
+ * from the global registry, resolving through the fallback chain).
91
+ *
92
+ * Use this to make your own {@link SceneNode} subclasses serializable. Delegate
93
+ * to a base type's behaviour by composing with the framework helpers, or
94
+ * register a fully custom serializer.
95
+ *
96
+ * ```ts
97
+ * registerSerializer('PowerUp', PowerUp, {
98
+ * write: (node) => ({ kind: node.kind }),
99
+ * read: (data) => new PowerUp(typeof data.kind === 'string' ? data.kind : ''),
100
+ * });
101
+ * ```
102
+ */
103
+ function registerSerializer(typeName, ctor, serializer, registry = defaultSerializationRegistry) {
104
+ registry.register(typeName, ctor, serializer);
105
+ }
106
+
107
+ export { SerializationRegistry, defaultSerializationRegistry, registerSerializer };
108
+ //# sourceMappingURL=SerializationRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SerializationRegistry.js","sources":["../../../../../src/core/serialization/SerializationRegistry.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAuBA;AACA,MAAM,aAAa,GAAG,CAAC,IAA0B,KAAiC;IAChF,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAY;AAErD,IAAA,OAAO,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,KAAK,QAAQ,CAAC,SAAS,GAAI,MAA+B,GAAG,IAAI;AAChH,CAAC;AAED;;;;;;;;;;;;AAYG;MACU,qBAAqB,CAAA;AAWI,IAAA,SAAA;IAVnB,OAAO,GAAG,IAAI,QAAQ,CAAwC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;AACtF,IAAA,OAAO,GAAG,IAAI,GAAG,EAA2B;AAE7D;;;;;;AAMG;AACH,IAAA,WAAA,CAAoC,YAA0C,IAAI,EAAA;QAA9C,IAAA,CAAA,SAAS,GAAT,SAAS;IAAwC;AAErF;;;;AAIG;AACI,IAAA,QAAQ,CAAsB,QAAgB,EAAE,IAA6B,EAAE,UAA6B,EAAA;QACjH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;QAE3C,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE;AACpD,YAAA,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,CAAA,oDAAA,CAAsD,CAAC;QAChH;QAEA,MAAM,KAAK,GAAoB,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE;QAE7D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC;IACnC;AAEA;;;;AAIG;AACI,IAAA,aAAa,CAAC,IAAe,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAmC,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC;IAC9G;AAEA;;;AAGG;AACI,IAAA,aAAa,CAAC,QAAgB,EAAA;AACnC,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,QAAQ,CAAC;IAC9E;;AAGO,IAAA,OAAO,CAAC,QAAgB,EAAA;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;IACnF;AAEA;;;;;;AAMG;IACI,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACpB,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;IACxB;AACD;AAED;;;;AAIG;AACI,MAAM,4BAA4B,GAAG,IAAI,qBAAqB;AAErE;;;;;;;;;;;;;;;;AAgBG;AACG,SAAU,kBAAkB,CAChC,QAAgB,EAChB,IAA6B,EAC7B,UAA6B,EAC7B,QAAA,GAAkC,4BAA4B,EAAA;IAE9D,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC;AAC/C;;;;"}
@@ -0,0 +1,20 @@
1
+ import type { SceneNode } from '#core/SceneNode';
2
+ import type { SerializedNode } from './types';
3
+ /**
4
+ * Write the common `SceneNode` (+ `Drawable`) fields of `node` into `out`.
5
+ *
6
+ * Only non-default values are written, so a freshly-constructed node
7
+ * contributes nothing here. Transforms are emitted in logical units
8
+ * (px / degrees); the `Drawable` tint is `[r, g, b, a]` with `r/g/b` in 0..255
9
+ * and `a` in 0..1. Runtime caches, matrices and dirty flags are never written.
10
+ */
11
+ export declare function writeCommonFields(node: SceneNode, out: SerializedNode): void;
12
+ /**
13
+ * Apply the common fields from `data` onto an already-constructed `node`.
14
+ *
15
+ * Called by the framework after a {@link NodeSerializer.read} returns, so it
16
+ * overrides any transform side-effects of construction (e.g. a `Sprite` frame
17
+ * resetting scale). Absent fields keep the node's constructed defaults.
18
+ */
19
+ export declare function applyCommonFields(node: SceneNode, data: SerializedNode): void;
20
+ //# sourceMappingURL=commonFields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commonFields.d.ts","sourceRoot":"","sources":["../../../../src/core/serialization/commonFields.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAOjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAiD5E;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,GAAG,IAAI,CA+C7E"}
@@ -0,0 +1,149 @@
1
+ import { Color } from '../Color.js';
2
+ import { Rectangle } from '../../math/Rectangle.js';
3
+ import { Drawable } from '../../rendering/Drawable.js';
4
+ import { isPixelSnapMode } from '../../rendering/pixelSnap.js';
5
+ import { RenderNode } from '../../rendering/RenderNode.js';
6
+ import { BlendModes } from '../../rendering/types.js';
7
+
8
+ /**
9
+ * Write the common `SceneNode` (+ `Drawable`) fields of `node` into `out`.
10
+ *
11
+ * Only non-default values are written, so a freshly-constructed node
12
+ * contributes nothing here. Transforms are emitted in logical units
13
+ * (px / degrees); the `Drawable` tint is `[r, g, b, a]` with `r/g/b` in 0..255
14
+ * and `a` in 0..1. Runtime caches, matrices and dirty flags are never written.
15
+ */
16
+ function writeCommonFields(node, out) {
17
+ if (node.x !== 0)
18
+ out.x = node.x;
19
+ if (node.y !== 0)
20
+ out.y = node.y;
21
+ if (node.rotation !== 0)
22
+ out.rotation = node.rotation;
23
+ if (node.scale.x !== 1)
24
+ out.scaleX = node.scale.x;
25
+ if (node.scale.y !== 1)
26
+ out.scaleY = node.scale.y;
27
+ if (node.skewX !== 0)
28
+ out.skewX = node.skewX;
29
+ if (node.skewY !== 0)
30
+ out.skewY = node.skewY;
31
+ if (node.origin.x !== 0)
32
+ out.originX = node.origin.x;
33
+ if (node.origin.y !== 0)
34
+ out.originY = node.origin.y;
35
+ if (!node.visible)
36
+ out.visible = false;
37
+ if (node.zIndex !== 0)
38
+ out.zIndex = node.zIndex;
39
+ if (!node.cullable)
40
+ out.cullable = false;
41
+ if (node.name !== null)
42
+ out.name = node.name;
43
+ if (node instanceof RenderNode) {
44
+ if (node.interactive)
45
+ out.interactive = true;
46
+ if (node.draggable)
47
+ out.draggable = true;
48
+ if (node.focusable)
49
+ out.focusable = true;
50
+ if (node.tabIndex !== 0)
51
+ out.tabIndex = node.tabIndex;
52
+ if (node.cursor !== null)
53
+ out.cursor = node.cursor;
54
+ if (node.clip)
55
+ out.clip = true;
56
+ if (node.preserveDrawOrder)
57
+ out.preserveDrawOrder = true;
58
+ if (node.cacheAsBitmap)
59
+ out.cacheAsBitmap = true;
60
+ const clipShape = node.clipShape;
61
+ if (clipShape instanceof Rectangle) {
62
+ out.clipShape = [clipShape.x, clipShape.y, clipShape.width, clipShape.height];
63
+ }
64
+ }
65
+ if (node instanceof Drawable) {
66
+ const tint = node.tint;
67
+ if (tint.r !== 255 || tint.g !== 255 || tint.b !== 255 || tint.a !== 1) {
68
+ out.tint = [tint.r, tint.g, tint.b, tint.a];
69
+ }
70
+ if (node.blendMode !== BlendModes.Normal) {
71
+ out.blendMode = node.blendMode;
72
+ }
73
+ if (node.pixelSnapMode !== 'none') {
74
+ out.pixelSnapMode = node.pixelSnapMode;
75
+ }
76
+ }
77
+ }
78
+ /**
79
+ * Apply the common fields from `data` onto an already-constructed `node`.
80
+ *
81
+ * Called by the framework after a {@link NodeSerializer.read} returns, so it
82
+ * overrides any transform side-effects of construction (e.g. a `Sprite` frame
83
+ * resetting scale). Absent fields keep the node's constructed defaults.
84
+ */
85
+ function applyCommonFields(node, data) {
86
+ if (typeof data.x === 'number')
87
+ node.x = data.x;
88
+ if (typeof data.y === 'number')
89
+ node.y = data.y;
90
+ if (typeof data.rotation === 'number')
91
+ node.rotation = data.rotation;
92
+ if (typeof data.scaleX === 'number')
93
+ node.scale.x = data.scaleX;
94
+ if (typeof data.scaleY === 'number')
95
+ node.scale.y = data.scaleY;
96
+ if (typeof data.skewX === 'number')
97
+ node.skewX = data.skewX;
98
+ if (typeof data.skewY === 'number')
99
+ node.skewY = data.skewY;
100
+ if (typeof data.originX === 'number')
101
+ node.origin.x = data.originX;
102
+ if (typeof data.originY === 'number')
103
+ node.origin.y = data.originY;
104
+ if (data.visible === false)
105
+ node.visible = false;
106
+ if (typeof data.zIndex === 'number')
107
+ node.zIndex = data.zIndex;
108
+ if (data.cullable === false)
109
+ node.cullable = false;
110
+ if (typeof data.name === 'string')
111
+ node.name = data.name;
112
+ if (node instanceof RenderNode) {
113
+ if (data.interactive === true)
114
+ node.interactive = true;
115
+ if (data.draggable === true)
116
+ node.draggable = true;
117
+ if (data.focusable === true)
118
+ node.focusable = true;
119
+ if (typeof data.tabIndex === 'number')
120
+ node.tabIndex = data.tabIndex;
121
+ if (typeof data.cursor === 'string')
122
+ node.cursor = data.cursor;
123
+ if (data.clip === true)
124
+ node.clip = true;
125
+ if (data.preserveDrawOrder === true)
126
+ node.preserveDrawOrder = true;
127
+ if (data.cacheAsBitmap === true)
128
+ node.cacheAsBitmap = true;
129
+ const clipShape = data.clipShape;
130
+ if (Array.isArray(clipShape) && clipShape.length === 4) {
131
+ node.clipShape = new Rectangle(Number(clipShape[0]), Number(clipShape[1]), Number(clipShape[2]), Number(clipShape[3]));
132
+ }
133
+ }
134
+ if (node instanceof Drawable) {
135
+ const tint = data.tint;
136
+ if (Array.isArray(tint) && tint.length === 4) {
137
+ node.tint = new Color(Number(tint[0]), Number(tint[1]), Number(tint[2]), Number(tint[3]));
138
+ }
139
+ if (typeof data.blendMode === 'number') {
140
+ node.blendMode = data.blendMode;
141
+ }
142
+ if (typeof data.pixelSnapMode === 'string' && isPixelSnapMode(data.pixelSnapMode)) {
143
+ node.pixelSnapMode = data.pixelSnapMode;
144
+ }
145
+ }
146
+ }
147
+
148
+ export { applyCommonFields, writeCommonFields };
149
+ //# sourceMappingURL=commonFields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commonFields.js","sources":["../../../../../src/core/serialization/commonFields.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { SerializationRegistry } from './SerializationRegistry';
2
+ /**
3
+ * Register all built-in node serializers (core leaf types + rendering package +
4
+ * UI widgets) on `registry`. Called once, lazily, from the serialization
5
+ * framework.
6
+ * @internal
7
+ */
8
+ export declare function registerCoreSerializers(registry: SerializationRegistry): void;
9
+ //# sourceMappingURL=coreSerializers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coreSerializers.d.ts","sourceRoot":"","sources":["../../../../src/core/serialization/coreSerializers.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAoGrE;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAO7E"}
@@ -0,0 +1,101 @@
1
+ import { Rectangle } from '../../math/Rectangle.js';
2
+ import { Container } from '../../rendering/Container.js';
3
+ import { Sprite } from '../../rendering/sprite/Sprite.js';
4
+ import { Text } from '../../rendering/text/Text.js';
5
+ import { Texture } from '../../rendering/texture/Texture.js';
6
+ import { asSerializedNode } from './read.js';
7
+ import { registerRenderingSerializers } from './renderingSerializers.js';
8
+ import { readLayoutOptions, compact, deserializeStyleOptions, serializeStyle } from './serializerHelpers.js';
9
+ import { registerUiSerializers } from './uiSerializers.js';
10
+ import { SDF_RADIUS } from '../../rendering/text/GlyphAtlas.js';
11
+
12
+ // ── Container ────────────────────────────────────────────────────────────────
13
+ const containerSerializer = {
14
+ write(node, ctx) {
15
+ if (node.children.length === 0) {
16
+ return {};
17
+ }
18
+ return { children: node.children.map(child => ctx.writeNode(child)) };
19
+ },
20
+ read(data, ctx) {
21
+ const node = new Container();
22
+ const children = data.children;
23
+ if (Array.isArray(children)) {
24
+ for (const child of children) {
25
+ const childNode = asSerializedNode(child);
26
+ if (childNode !== null)
27
+ node.addChild(ctx.readNode(childNode));
28
+ }
29
+ }
30
+ return node;
31
+ },
32
+ };
33
+ // ── Sprite ─────────────────────────────────────────────────────────────────
34
+ const spriteSerializer = {
35
+ write(node, ctx) {
36
+ const out = {};
37
+ const source = ctx.keyFor(node.texture);
38
+ if (source !== null) {
39
+ out.texture = source;
40
+ }
41
+ if (node.material !== null) ;
42
+ const texture = node.texture;
43
+ const frame = node.textureFrame;
44
+ // Emit the frame only for sub-regions (spritesheets); a full-texture frame
45
+ // is reconstructed for free by `new Sprite(texture)`.
46
+ if (texture !== null && (frame.x !== 0 || frame.y !== 0 || frame.width !== texture.width || frame.height !== texture.height)) {
47
+ out.frame = [frame.x, frame.y, frame.width, frame.height];
48
+ }
49
+ return out;
50
+ },
51
+ read(data, ctx) {
52
+ const texture = ctx.resolveAsset(typeof data.texture === 'string' ? data.texture : null, Texture);
53
+ const sprite = new Sprite(texture);
54
+ const frame = data.frame;
55
+ if (texture !== null && Array.isArray(frame) && frame.length === 4) {
56
+ sprite.setTextureFrame(Rectangle.temp.set(Number(frame[0]), Number(frame[1]), Number(frame[2]), Number(frame[3])));
57
+ }
58
+ return sprite;
59
+ },
60
+ };
61
+ // ── Text ─────────────────────────────────────────────────────────────────────
62
+ const textSerializer = {
63
+ write(node) {
64
+ const out = { text: node.text };
65
+ const style = serializeStyle(node.style);
66
+ if (style !== undefined)
67
+ out.style = style;
68
+ if (Object.keys(node.layout).length > 0)
69
+ out.layout = { ...node.layout };
70
+ if (node.colorGlyphs)
71
+ out.colorGlyphs = true;
72
+ if (node.sdfRadius !== SDF_RADIUS)
73
+ out.sdfRadius = node.sdfRadius;
74
+ return out;
75
+ },
76
+ read(data) {
77
+ const layout = readLayoutOptions(data.layout);
78
+ return new Text(typeof data.text === 'string' ? data.text : '', compact({
79
+ ...deserializeStyleOptions(data.style),
80
+ ...layout,
81
+ colorGlyphs: data.colorGlyphs === true,
82
+ sdfRadius: typeof data.sdfRadius === 'number' ? data.sdfRadius : undefined,
83
+ }));
84
+ },
85
+ };
86
+ /**
87
+ * Register all built-in node serializers (core leaf types + rendering package +
88
+ * UI widgets) on `registry`. Called once, lazily, from the serialization
89
+ * framework.
90
+ * @internal
91
+ */
92
+ function registerCoreSerializers(registry) {
93
+ registry.register('Container', Container, containerSerializer);
94
+ registry.register('Sprite', Sprite, spriteSerializer);
95
+ registry.register('Text', Text, textSerializer);
96
+ registerRenderingSerializers(registry);
97
+ registerUiSerializers(registry);
98
+ }
99
+
100
+ export { registerCoreSerializers };
101
+ //# sourceMappingURL=coreSerializers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coreSerializers.js","sources":["../../../../../src/core/serialization/coreSerializers.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export type { DeserializeContext, NodeSerializer, SerializeContext } from './NodeSerializer';
2
+ export { Prefab } from './Prefab';
3
+ export { registerSerializer, type SceneNodeConstructor, SerializationRegistry } from './SerializationRegistry';
4
+ export type { AssetRef, SerializedNode, SerializedScene } from './types';
5
+ export { SERIALIZATION_VERSION } from './types';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/serialization/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC7F,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,KAAK,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC/G,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,65 @@
1
+ import type { SerializedNode } from './types';
2
+ /**
3
+ * Validating read helpers for deserialization — **check instead of cast**.
4
+ *
5
+ * Deserialized JSON is treated as untrusted input (it may come from a save
6
+ * file, cloud sync, shared prefab, or user-generated content). Every field
7
+ * access goes through one of these helpers so a manipulated or corrupt document
8
+ * can only ever cause a field to be *ignored* (falling back to the constructor
9
+ * default) — never to inject an unchecked value of the wrong type/domain into
10
+ * the engine. Structural top-level errors are rejected at the boundary
11
+ * (`migrate` / `Scene.deserialize`); per-field garbage degrades to defaults.
12
+ *
13
+ * The `read*` helpers take `(data, key)` for field access; the `as*` helpers
14
+ * narrow an already-extracted value (used for nested elements).
15
+ *
16
+ * @internal
17
+ */
18
+ type Data = Record<string, unknown>;
19
+ /** Read a string field; `fallback` (or `undefined`) when absent or not a string. */
20
+ export declare function readString(data: Data, key: string): string | undefined;
21
+ export declare function readString(data: Data, key: string, fallback: string): string;
22
+ /**
23
+ * Read a finite-number field; `fallback` (or `undefined`) when absent, not a
24
+ * number, or non-finite. The finite check rejects `NaN`/`Infinity` smuggled in
25
+ * through a hand-edited document.
26
+ */
27
+ export declare function readNumber(data: Data, key: string): number | undefined;
28
+ export declare function readNumber(data: Data, key: string, fallback: number): number;
29
+ /** Read a boolean field; `fallback` (or `undefined`) when absent or not a boolean. */
30
+ export declare function readBoolean(data: Data, key: string): boolean | undefined;
31
+ export declare function readBoolean(data: Data, key: string, fallback: boolean): boolean;
32
+ /**
33
+ * Read a string field constrained to `allowed`; `fallback` (or `undefined`)
34
+ * when absent or not a member. The cast is performed **after** the runtime
35
+ * membership check, so it is sound — this is the helper that replaces the bare
36
+ * `data.x as SomeEnum` casts.
37
+ */
38
+ export declare function readEnum<T extends string>(data: Data, key: string, allowed: readonly T[]): T | undefined;
39
+ export declare function readEnum<T extends string>(data: Data, key: string, allowed: readonly T[], fallback: T): T;
40
+ /** Read an object-valued (non-array) field as a record, or `undefined`. */
41
+ export declare function readObject(data: Data, key: string): Data | undefined;
42
+ /** Narrow an already-extracted value to a plain object record, or `null`. */
43
+ export declare function asObject(value: unknown): Data | null;
44
+ /**
45
+ * Narrow an already-extracted value to a {@link SerializedNode} (an object
46
+ * carrying a string `type` tag), or `null`. Guards the recursive child descent
47
+ * so a `children` array containing non-objects is skipped rather than crashing
48
+ * with `Cannot read 'type' of …`.
49
+ */
50
+ export declare function asSerializedNode(value: unknown): SerializedNode | null;
51
+ /**
52
+ * Narrow an already-extracted value to an array of finite numbers (non-numeric
53
+ * or non-finite entries collapse to `0`), or `null` when not an array.
54
+ */
55
+ export declare function asNumberArray(value: unknown): number[] | null;
56
+ /** Allowed {@link FontWeight} values for {@link readEnum}. */
57
+ export declare const FONT_WEIGHTS: readonly ["normal", "bold", "100", "200", "300", "400", "500", "600", "700", "800", "900"];
58
+ /** Allowed {@link TextAlignment} values for {@link readEnum}. */
59
+ export declare const TEXT_ALIGNMENTS: readonly ["left", "center", "right", "justify"];
60
+ /** Allowed {@link RepeatMode} values for {@link readEnum}. */
61
+ export declare const REPEAT_MODES: readonly ["stretch", "repeat", "mirror-repeat"];
62
+ /** Allowed {@link RepeatFit} values for {@link readEnum}. */
63
+ export declare const REPEAT_FITS: readonly ["clip", "round"];
64
+ export {};
65
+ //# sourceMappingURL=read.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../../src/core/serialization/read.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C;;;;;;;;;;;;;;;GAeG;AAEH,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEpC,oFAAoF;AACpF,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AACxE,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;AAO9E;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AACxE,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;AAO9E,sFAAsF;AACtF,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAC1E,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC;AAOjF;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;AAC1G,wBAAgB,QAAQ,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;AAO3G,2EAA2E;AAC3E,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAEpE;AAED,6EAA6E;AAC7E,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI,CAEpD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,GAAG,IAAI,CAEtE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,GAAG,IAAI,CAE7D;AAQD,8DAA8D;AAC9D,eAAO,MAAM,YAAY,4FAA6H,CAAC;AAEvJ,iEAAiE;AACjE,eAAO,MAAM,eAAe,iDAAqF,CAAC;AAElH,8DAA8D;AAC9D,eAAO,MAAM,YAAY,iDAAkF,CAAC;AAE5G,6DAA6D;AAC7D,eAAO,MAAM,WAAW,4BAA4D,CAAC"}
@@ -0,0 +1,48 @@
1
+ function readNumber(data, key, fallback) {
2
+ const value = data[key];
3
+ return typeof value === 'number' && Number.isFinite(value) ? value : fallback;
4
+ }
5
+ function readBoolean(data, key, fallback) {
6
+ const value = data[key];
7
+ return typeof value === 'boolean' ? value : fallback;
8
+ }
9
+ function readEnum(data, key, allowed, fallback) {
10
+ const value = data[key];
11
+ return typeof value === 'string' && allowed.includes(value) ? value : fallback;
12
+ }
13
+ /** Narrow an already-extracted value to a plain object record, or `null`. */
14
+ function asObject(value) {
15
+ return typeof value === 'object' && value !== null && !Array.isArray(value) ? value : null;
16
+ }
17
+ /**
18
+ * Narrow an already-extracted value to a {@link SerializedNode} (an object
19
+ * carrying a string `type` tag), or `null`. Guards the recursive child descent
20
+ * so a `children` array containing non-objects is skipped rather than crashing
21
+ * with `Cannot read 'type' of …`.
22
+ */
23
+ function asSerializedNode(value) {
24
+ return typeof value === 'object' && value !== null && typeof value.type === 'string' ? value : null;
25
+ }
26
+ /**
27
+ * Narrow an already-extracted value to an array of finite numbers (non-numeric
28
+ * or non-finite entries collapse to `0`), or `null` when not an array.
29
+ */
30
+ function asNumberArray(value) {
31
+ return Array.isArray(value) ? value.map(entry => (typeof entry === 'number' && Number.isFinite(entry) ? entry : 0)) : null;
32
+ }
33
+ // ── Serialized-enum value lists ──────────────────────────────────────────────
34
+ // `satisfies readonly T[]` makes a typo here a compile error (a listed value
35
+ // that is not a union member fails to type-check). If a new union member is
36
+ // added upstream, an omission here only makes an otherwise-valid value fall
37
+ // back to its default — never unsafe — so keep these in sync deliberately.
38
+ /** Allowed {@link FontWeight} values for {@link readEnum}. */
39
+ const FONT_WEIGHTS = ['normal', 'bold', '100', '200', '300', '400', '500', '600', '700', '800', '900'];
40
+ /** Allowed {@link TextAlignment} values for {@link readEnum}. */
41
+ const TEXT_ALIGNMENTS = ['left', 'center', 'right', 'justify'];
42
+ /** Allowed {@link RepeatMode} values for {@link readEnum}. */
43
+ const REPEAT_MODES = ['stretch', 'repeat', 'mirror-repeat'];
44
+ /** Allowed {@link RepeatFit} values for {@link readEnum}. */
45
+ const REPEAT_FITS = ['clip', 'round'];
46
+
47
+ export { FONT_WEIGHTS, REPEAT_FITS, REPEAT_MODES, TEXT_ALIGNMENTS, asNumberArray, asObject, asSerializedNode, readBoolean, readEnum, readNumber };
48
+ //# sourceMappingURL=read.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.js","sources":["../../../../../src/core/serialization/read.ts"],"sourcesContent":[null],"names":[],"mappings":"SAyCgB,UAAU,CAAC,IAAU,EAAE,GAAW,EAAE,QAAiB,EAAA;AACnE,IAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;AAEvB,IAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,QAAQ;AAC/E;SAKgB,WAAW,CAAC,IAAU,EAAE,GAAW,EAAE,QAAkB,EAAA;AACrE,IAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;AAEvB,IAAA,OAAO,OAAO,KAAK,KAAK,SAAS,GAAG,KAAK,GAAG,QAAQ;AACtD;AAUM,SAAU,QAAQ,CAAmB,IAAU,EAAE,GAAW,EAAE,OAAqB,EAAE,QAAY,EAAA;AACrG,IAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;AAEvB,IAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAK,OAA6B,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAI,KAAW,GAAG,QAAQ;AAC9G;AAOA;AACM,SAAU,QAAQ,CAAC,KAAc,EAAA;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAI,KAAc,GAAG,IAAI;AACtG;AAEA;;;;;AAKG;AACG,SAAU,gBAAgB,CAAC,KAAc,EAAA;IAC7C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,OAAQ,KAAc,CAAC,IAAI,KAAK,QAAQ,GAAI,KAAwB,GAAG,IAAI;AACnI;AAEA;;;AAGG;AACG,SAAU,aAAa,CAAC,KAAc,EAAA;AAC1C,IAAA,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI;AAC5H;AAEA;AACA;AACA;AACA;AACA;AAEA;AACO,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;AAE5G;AACO,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS;AAEpE;AACO,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,eAAe;AAEjE;MACa,WAAW,GAAG,CAAC,MAAM,EAAE,OAAO;;;;"}
@@ -0,0 +1,7 @@
1
+ import type { SerializationRegistry } from './SerializationRegistry';
2
+ /**
3
+ * Register the rendering-package node serializers on `registry`.
4
+ * @internal
5
+ */
6
+ export declare function registerRenderingSerializers(registry: SerializationRegistry): void;
7
+ //# sourceMappingURL=renderingSerializers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderingSerializers.d.ts","sourceRoot":"","sources":["../../../../src/core/serialization/renderingSerializers.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAmVrE;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAQlF"}