@codexo/exojs 0.8.4 → 0.10.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 (470) hide show
  1. package/CHANGELOG.md +99 -0
  2. package/README.md +34 -13
  3. package/dist/esm/animation/Tween.d.ts +20 -3
  4. package/dist/esm/animation/Tween.js +16 -8
  5. package/dist/esm/animation/Tween.js.map +1 -1
  6. package/dist/esm/animation/TweenManager.d.ts +16 -1
  7. package/dist/esm/animation/TweenManager.js +27 -2
  8. package/dist/esm/animation/TweenManager.js.map +1 -1
  9. package/dist/esm/audio/AudioAnalyser.d.ts +2 -0
  10. package/dist/esm/audio/AudioAnalyser.js +24 -9
  11. package/dist/esm/audio/AudioAnalyser.js.map +1 -1
  12. package/dist/esm/audio/AudioBus.d.ts +1 -0
  13. package/dist/esm/audio/AudioBus.js +8 -4
  14. package/dist/esm/audio/AudioBus.js.map +1 -1
  15. package/dist/esm/audio/AudioListener.d.ts +1 -0
  16. package/dist/esm/audio/AudioListener.js +7 -5
  17. package/dist/esm/audio/AudioListener.js.map +1 -1
  18. package/dist/esm/audio/AudioManager.d.ts +8 -2
  19. package/dist/esm/audio/AudioManager.js +14 -1
  20. package/dist/esm/audio/AudioManager.js.map +1 -1
  21. package/dist/esm/audio/BeatDetector.d.ts +2 -0
  22. package/dist/esm/audio/BeatDetector.js +27 -661
  23. package/dist/esm/audio/BeatDetector.js.map +1 -1
  24. package/dist/esm/audio/Music.d.ts +1 -0
  25. package/dist/esm/audio/Music.js +7 -3
  26. package/dist/esm/audio/Music.js.map +1 -1
  27. package/dist/esm/audio/OscillatorSound.d.ts +1 -0
  28. package/dist/esm/audio/OscillatorSound.js +7 -3
  29. package/dist/esm/audio/OscillatorSound.js.map +1 -1
  30. package/dist/esm/audio/Sound.d.ts +1 -0
  31. package/dist/esm/audio/Sound.js +7 -3
  32. package/dist/esm/audio/Sound.js.map +1 -1
  33. package/dist/esm/audio/audio-context.d.ts +2 -2
  34. package/dist/esm/audio/audio-context.js +4 -4
  35. package/dist/esm/audio/audio-context.js.map +1 -1
  36. package/dist/esm/audio/filters/ChorusFilter.d.ts +1 -0
  37. package/dist/esm/audio/filters/ChorusFilter.js +7 -3
  38. package/dist/esm/audio/filters/ChorusFilter.js.map +1 -1
  39. package/dist/esm/audio/filters/CompressorFilter.d.ts +1 -0
  40. package/dist/esm/audio/filters/CompressorFilter.js +7 -3
  41. package/dist/esm/audio/filters/CompressorFilter.js.map +1 -1
  42. package/dist/esm/audio/filters/DelayFilter.d.ts +1 -0
  43. package/dist/esm/audio/filters/DelayFilter.js +7 -3
  44. package/dist/esm/audio/filters/DelayFilter.js.map +1 -1
  45. package/dist/esm/audio/filters/EqualizerFilter.d.ts +1 -0
  46. package/dist/esm/audio/filters/EqualizerFilter.js +7 -3
  47. package/dist/esm/audio/filters/EqualizerFilter.js.map +1 -1
  48. package/dist/esm/audio/filters/GranularFilter.js +1 -86
  49. package/dist/esm/audio/filters/GranularFilter.js.map +1 -1
  50. package/dist/esm/audio/filters/HighpassFilter.d.ts +1 -0
  51. package/dist/esm/audio/filters/HighpassFilter.js +7 -3
  52. package/dist/esm/audio/filters/HighpassFilter.js.map +1 -1
  53. package/dist/esm/audio/filters/LowpassFilter.d.ts +1 -0
  54. package/dist/esm/audio/filters/LowpassFilter.js +7 -3
  55. package/dist/esm/audio/filters/LowpassFilter.js.map +1 -1
  56. package/dist/esm/audio/filters/PitchShiftFilter.js +1 -71
  57. package/dist/esm/audio/filters/PitchShiftFilter.js.map +1 -1
  58. package/dist/esm/audio/filters/ReverbFilter.d.ts +1 -0
  59. package/dist/esm/audio/filters/ReverbFilter.js +7 -3
  60. package/dist/esm/audio/filters/ReverbFilter.js.map +1 -1
  61. package/dist/esm/audio/filters/VocoderFilter.js +1 -89
  62. package/dist/esm/audio/filters/VocoderFilter.js.map +1 -1
  63. package/dist/esm/audio/filters/WorkletFilter.d.ts +2 -0
  64. package/dist/esm/audio/filters/WorkletFilter.js +10 -5
  65. package/dist/esm/audio/filters/WorkletFilter.js.map +1 -1
  66. package/dist/esm/audio/index.d.ts +15 -10
  67. package/dist/esm/audio/worklet/registerWorklet.d.ts +1 -1
  68. package/dist/esm/audio/worklet/registerWorklet.js +2 -2
  69. package/dist/esm/audio/worklet/registerWorklet.js.map +1 -1
  70. package/dist/esm/audio/worklets/beat-detector.worklet.d.ts +1 -0
  71. package/dist/esm/audio/worklets/beat-detector.worklet.js +647 -0
  72. package/dist/esm/audio/worklets/beat-detector.worklet.js.map +1 -0
  73. package/dist/esm/audio/worklets/granular.worklet.d.ts +1 -0
  74. package/dist/esm/audio/worklets/granular.worklet.js +89 -0
  75. package/dist/esm/audio/worklets/granular.worklet.js.map +1 -0
  76. package/dist/esm/audio/worklets/pitch-shift.worklet.d.ts +1 -0
  77. package/dist/esm/audio/worklets/pitch-shift.worklet.js +74 -0
  78. package/dist/esm/audio/worklets/pitch-shift.worklet.js.map +1 -0
  79. package/dist/esm/audio/worklets/vocoder.worklet.d.ts +1 -0
  80. package/dist/esm/audio/worklets/vocoder.worklet.js +92 -0
  81. package/dist/esm/audio/worklets/vocoder.worklet.js.map +1 -0
  82. package/dist/esm/core/Application.d.ts +86 -29
  83. package/dist/esm/core/Application.js +157 -47
  84. package/dist/esm/core/Application.js.map +1 -1
  85. package/dist/esm/core/Color.d.ts +0 -8
  86. package/dist/esm/core/Color.js +0 -24
  87. package/dist/esm/core/Color.js.map +1 -1
  88. package/dist/esm/core/Perf.d.ts +23 -0
  89. package/dist/esm/core/Perf.js +49 -0
  90. package/dist/esm/core/Perf.js.map +1 -0
  91. package/dist/esm/core/Scene.d.ts +40 -80
  92. package/dist/esm/core/Scene.js +63 -43
  93. package/dist/esm/core/Scene.js.map +1 -1
  94. package/dist/esm/core/SceneManager.d.ts +11 -25
  95. package/dist/esm/core/SceneManager.js +37 -100
  96. package/dist/esm/core/SceneManager.js.map +1 -1
  97. package/dist/esm/core/SceneNode.d.ts +28 -17
  98. package/dist/esm/core/SceneNode.js +66 -42
  99. package/dist/esm/core/SceneNode.js.map +1 -1
  100. package/dist/esm/core/Signal.d.ts +24 -28
  101. package/dist/esm/core/Signal.js +64 -50
  102. package/dist/esm/core/Signal.js.map +1 -1
  103. package/dist/esm/core/Timer.d.ts +1 -0
  104. package/dist/esm/core/Timer.js +3 -0
  105. package/dist/esm/core/Timer.js.map +1 -1
  106. package/dist/esm/core/capabilities.d.ts +2 -0
  107. package/dist/esm/core/capabilities.js +15 -0
  108. package/dist/esm/core/capabilities.js.map +1 -1
  109. package/dist/esm/core/index.d.ts +1 -0
  110. package/dist/esm/core/types.d.ts +1 -1
  111. package/dist/esm/core/utils.d.ts +12 -0
  112. package/dist/esm/core/utils.js +18 -1
  113. package/dist/esm/core/utils.js.map +1 -1
  114. package/dist/esm/debug/BoundingBoxesLayer.js +1 -1
  115. package/dist/esm/debug/BoundingBoxesLayer.js.map +1 -1
  116. package/dist/esm/debug/HitTestLayer.js +1 -1
  117. package/dist/esm/debug/HitTestLayer.js.map +1 -1
  118. package/dist/esm/debug/PerformanceLayer.js +1 -2
  119. package/dist/esm/debug/PerformanceLayer.js.map +1 -1
  120. package/dist/esm/debug/PointerStackLayer.js +1 -2
  121. package/dist/esm/debug/PointerStackLayer.js.map +1 -1
  122. package/dist/esm/debug/RenderPassInspectorLayer.js +1 -2
  123. package/dist/esm/debug/RenderPassInspectorLayer.js.map +1 -1
  124. package/dist/esm/index.js +37 -10
  125. package/dist/esm/index.js.map +1 -1
  126. package/dist/esm/input/InputManager.d.ts +1 -0
  127. package/dist/esm/input/InputManager.js +30 -3
  128. package/dist/esm/input/InputManager.js.map +1 -1
  129. package/dist/esm/input/InteractionManager.d.ts +5 -2
  130. package/dist/esm/input/InteractionManager.js +29 -18
  131. package/dist/esm/input/InteractionManager.js.map +1 -1
  132. package/dist/esm/input/Pointer.js +3 -2
  133. package/dist/esm/input/Pointer.js.map +1 -1
  134. package/dist/esm/input/internal/interactionManagerRegistry.d.ts +9 -0
  135. package/dist/esm/input/internal/interactionManagerRegistry.js +10 -0
  136. package/dist/esm/input/internal/interactionManagerRegistry.js.map +1 -0
  137. package/dist/esm/math/AbstractVector.d.ts +1 -7
  138. package/dist/esm/math/AbstractVector.js +6 -20
  139. package/dist/esm/math/AbstractVector.js.map +1 -1
  140. package/dist/esm/math/Circle.js +0 -2
  141. package/dist/esm/math/Circle.js.map +1 -1
  142. package/dist/esm/math/Collision.d.ts +9 -3
  143. package/dist/esm/math/Ellipse.d.ts +2 -5
  144. package/dist/esm/math/Ellipse.js +10 -7
  145. package/dist/esm/math/Ellipse.js.map +1 -1
  146. package/dist/esm/math/ObservableVector.d.ts +1 -1
  147. package/dist/esm/math/ObservableVector.js +3 -3
  148. package/dist/esm/math/ObservableVector.js.map +1 -1
  149. package/dist/esm/math/Polygon.d.ts +0 -2
  150. package/dist/esm/math/Polygon.js +1 -9
  151. package/dist/esm/math/Polygon.js.map +1 -1
  152. package/dist/esm/math/Rectangle.js +0 -2
  153. package/dist/esm/math/Rectangle.js.map +1 -1
  154. package/dist/esm/math/collision-detection.d.ts +19 -4
  155. package/dist/esm/math/collision-detection.js +61 -4
  156. package/dist/esm/math/collision-detection.js.map +1 -1
  157. package/dist/esm/math/swept-collision.d.ts +16 -12
  158. package/dist/esm/math/swept-collision.js +109 -19
  159. package/dist/esm/math/swept-collision.js.map +1 -1
  160. package/dist/esm/particles/ParticleSystem.d.ts +8 -5
  161. package/dist/esm/particles/ParticleSystem.js +10 -6
  162. package/dist/esm/particles/ParticleSystem.js.map +1 -1
  163. package/dist/esm/particles/distributions/{Gradient.d.ts → ColorGradient.d.ts} +5 -5
  164. package/dist/esm/particles/distributions/{Gradient.js → ColorGradient.js} +5 -5
  165. package/dist/esm/particles/distributions/ColorGradient.js.map +1 -0
  166. package/dist/esm/particles/distributions/Distribution.d.ts +2 -2
  167. package/dist/esm/particles/distributions/index.d.ts +2 -2
  168. package/dist/esm/particles/gpu/ParticleGpuState.js +1 -1
  169. package/dist/esm/particles/index.d.ts +1 -0
  170. package/dist/esm/particles/modules/ColorOverLifetime.d.ts +3 -3
  171. package/dist/esm/particles/modules/ColorOverLifetime.js.map +1 -1
  172. package/dist/esm/particles/modules/ColorOverSpeed.d.ts +3 -3
  173. package/dist/esm/particles/modules/ColorOverSpeed.js.map +1 -1
  174. package/dist/esm/particles/modules/UpdateModule.d.ts +2 -2
  175. package/dist/esm/particles/modules/UpdateModule.js +1 -1
  176. package/dist/esm/particles/modules/WgslContribution.d.ts +2 -2
  177. package/dist/esm/rendering/CallbackRenderPass.d.ts +1 -0
  178. package/dist/esm/rendering/CallbackRenderPass.js +1 -0
  179. package/dist/esm/rendering/CallbackRenderPass.js.map +1 -1
  180. package/dist/esm/rendering/Camera.d.ts +33 -0
  181. package/dist/esm/rendering/Camera.js +38 -0
  182. package/dist/esm/rendering/Camera.js.map +1 -0
  183. package/dist/esm/rendering/Container.d.ts +7 -25
  184. package/dist/esm/rendering/Container.js +25 -87
  185. package/dist/esm/rendering/Container.js.map +1 -1
  186. package/dist/esm/rendering/Drawable.d.ts +8 -10
  187. package/dist/esm/rendering/Drawable.js +12 -20
  188. package/dist/esm/rendering/Drawable.js.map +1 -1
  189. package/dist/esm/rendering/RenderBackend.d.ts +19 -0
  190. package/dist/esm/rendering/RenderNode.d.ts +82 -11
  191. package/dist/esm/rendering/RenderNode.js +133 -163
  192. package/dist/esm/rendering/RenderNode.js.map +1 -1
  193. package/dist/esm/rendering/RenderPass.d.ts +1 -0
  194. package/dist/esm/rendering/RenderStats.d.ts +9 -0
  195. package/dist/esm/rendering/RenderStats.js +2 -0
  196. package/dist/esm/rendering/RenderStats.js.map +1 -1
  197. package/dist/esm/rendering/RenderTarget.d.ts +13 -0
  198. package/dist/esm/rendering/RenderTarget.js +13 -0
  199. package/dist/esm/rendering/RenderTarget.js.map +1 -1
  200. package/dist/esm/rendering/RenderTargetPass.js +17 -0
  201. package/dist/esm/rendering/RenderTargetPass.js.map +1 -1
  202. package/dist/esm/rendering/RendererRegistry.d.ts +1 -0
  203. package/dist/esm/rendering/RendererRegistry.js +1 -0
  204. package/dist/esm/rendering/RendererRegistry.js.map +1 -1
  205. package/dist/esm/rendering/RenderingContext.d.ts +87 -0
  206. package/dist/esm/rendering/RenderingContext.js +157 -0
  207. package/dist/esm/rendering/RenderingContext.js.map +1 -0
  208. package/dist/esm/rendering/TransformBuffer.d.ts +38 -0
  209. package/dist/esm/rendering/TransformBuffer.js +116 -0
  210. package/dist/esm/rendering/TransformBuffer.js.map +1 -0
  211. package/dist/esm/rendering/View.d.ts +23 -0
  212. package/dist/esm/rendering/View.js +42 -0
  213. package/dist/esm/rendering/View.js.map +1 -1
  214. package/dist/esm/rendering/filters/WebGpuShaderFilter.js +5 -12
  215. package/dist/esm/rendering/filters/WebGpuShaderFilter.js.map +1 -1
  216. package/dist/esm/rendering/geometry/Geometry.d.ts +40 -0
  217. package/dist/esm/rendering/geometry/Geometry.js +228 -0
  218. package/dist/esm/rendering/geometry/Geometry.js.map +1 -0
  219. package/dist/esm/rendering/geometry/GeometryAttribute.d.ts +32 -0
  220. package/dist/esm/rendering/geometry/QuadGeometry.d.ts +5 -0
  221. package/dist/esm/rendering/gradient/Gradient.d.ts +34 -0
  222. package/dist/esm/rendering/gradient/Gradient.js +114 -0
  223. package/dist/esm/rendering/gradient/Gradient.js.map +1 -0
  224. package/dist/esm/rendering/gradient/LinearGradient.d.ts +10 -0
  225. package/dist/esm/rendering/gradient/LinearGradient.js +26 -0
  226. package/dist/esm/rendering/gradient/LinearGradient.js.map +1 -0
  227. package/dist/esm/rendering/gradient/RadialGradient.d.ts +10 -0
  228. package/dist/esm/rendering/gradient/RadialGradient.js +25 -0
  229. package/dist/esm/rendering/gradient/RadialGradient.js.map +1 -0
  230. package/dist/esm/rendering/index.d.ts +103 -59
  231. package/dist/esm/rendering/material/Material.d.ts +114 -0
  232. package/dist/esm/rendering/material/Material.js +111 -0
  233. package/dist/esm/rendering/material/Material.js.map +1 -0
  234. package/dist/esm/rendering/material/MaterialKey.d.ts +18 -0
  235. package/dist/esm/rendering/material/MaterialKey.js +82 -0
  236. package/dist/esm/rendering/material/MaterialKey.js.map +1 -0
  237. package/dist/esm/rendering/material/MeshMaterial.d.ts +16 -0
  238. package/dist/esm/rendering/material/MeshMaterial.js +21 -0
  239. package/dist/esm/rendering/material/MeshMaterial.js.map +1 -0
  240. package/dist/esm/rendering/{mesh/MeshShader.d.ts → material/ShaderSource.d.ts} +30 -62
  241. package/dist/esm/rendering/{mesh/MeshShader.js → material/ShaderSource.js} +36 -62
  242. package/dist/esm/rendering/material/ShaderSource.js.map +1 -0
  243. package/dist/esm/rendering/material/SpriteMaterial.d.ts +15 -0
  244. package/dist/esm/rendering/material/SpriteMaterial.js +20 -0
  245. package/dist/esm/rendering/material/SpriteMaterial.js.map +1 -0
  246. package/dist/esm/rendering/mesh/Mesh.d.ts +29 -12
  247. package/dist/esm/rendering/mesh/Mesh.js +123 -4
  248. package/dist/esm/rendering/mesh/Mesh.js.map +1 -1
  249. package/dist/esm/rendering/pass/RenderPassCoordinator.d.ts +63 -0
  250. package/dist/esm/rendering/pass/RenderPassDescriptor.d.ts +48 -0
  251. package/dist/esm/rendering/pass/RenderPassDescriptor.js +16 -0
  252. package/dist/esm/rendering/pass/RenderPassDescriptor.js.map +1 -0
  253. package/dist/esm/rendering/plan/RenderCommand.d.ts +67 -0
  254. package/dist/esm/rendering/plan/RenderCommand.js +94 -0
  255. package/dist/esm/rendering/plan/RenderCommand.js.map +1 -0
  256. package/dist/esm/rendering/plan/RenderEffectExecutor.d.ts +10 -0
  257. package/dist/esm/rendering/plan/RenderEffectExecutor.js +159 -0
  258. package/dist/esm/rendering/plan/RenderEffectExecutor.js.map +1 -0
  259. package/dist/esm/rendering/plan/RenderPlan.d.ts +23 -0
  260. package/dist/esm/rendering/plan/RenderPlan.js +12 -0
  261. package/dist/esm/rendering/plan/RenderPlan.js.map +1 -0
  262. package/dist/esm/rendering/plan/RenderPlanBuilder.d.ts +31 -0
  263. package/dist/esm/rendering/plan/RenderPlanBuilder.js +242 -0
  264. package/dist/esm/rendering/plan/RenderPlanBuilder.js.map +1 -0
  265. package/dist/esm/rendering/plan/RenderPlanOptimizer.d.ts +10 -0
  266. package/dist/esm/rendering/plan/RenderPlanOptimizer.js +180 -0
  267. package/dist/esm/rendering/plan/RenderPlanOptimizer.js.map +1 -0
  268. package/dist/esm/rendering/plan/RenderPlanPlayer.d.ts +9 -0
  269. package/dist/esm/rendering/plan/RenderPlanPlayer.js +56 -0
  270. package/dist/esm/rendering/plan/RenderPlanPlayer.js.map +1 -0
  271. package/dist/esm/rendering/plan/RenderScope.d.ts +70 -0
  272. package/dist/esm/rendering/plan/RenderScope.js +16 -0
  273. package/dist/esm/rendering/plan/RenderScope.js.map +1 -0
  274. package/dist/esm/rendering/plan/playRenderTree.d.ts +4 -0
  275. package/dist/esm/rendering/plan/playRenderTree.js +19 -0
  276. package/dist/esm/rendering/plan/playRenderTree.js.map +1 -0
  277. package/dist/esm/rendering/shader/Shader.d.ts +1 -0
  278. package/dist/esm/rendering/shader/Shader.js +1 -0
  279. package/dist/esm/rendering/shader/Shader.js.map +1 -1
  280. package/dist/esm/rendering/shader/ShaderUniform.d.ts +1 -0
  281. package/dist/esm/rendering/shader/ShaderUniform.js +1 -0
  282. package/dist/esm/rendering/shader/ShaderUniform.js.map +1 -1
  283. package/dist/esm/rendering/sprite/Sprite.d.ts +25 -3
  284. package/dist/esm/rendering/sprite/Sprite.js +48 -15
  285. package/dist/esm/rendering/sprite/Sprite.js.map +1 -1
  286. package/dist/esm/rendering/sprite/spriteMaterialSources.d.ts +36 -0
  287. package/dist/esm/rendering/sprite/spriteMaterialSources.js +128 -0
  288. package/dist/esm/rendering/sprite/spriteMaterialSources.js.map +1 -0
  289. package/dist/esm/rendering/text/AbstractText.d.ts +36 -0
  290. package/dist/esm/rendering/text/AbstractText.js +49 -0
  291. package/dist/esm/rendering/text/AbstractText.js.map +1 -0
  292. package/dist/esm/rendering/text/BitmapText.d.ts +97 -0
  293. package/dist/esm/rendering/text/BitmapText.js +220 -0
  294. package/dist/esm/rendering/text/BitmapText.js.map +1 -0
  295. package/dist/esm/rendering/text/BmFont.d.ts +50 -0
  296. package/dist/esm/rendering/text/BmFont.js +24 -0
  297. package/dist/esm/rendering/text/BmFont.js.map +1 -0
  298. package/dist/esm/rendering/text/GlyphAtlas.d.ts +104 -0
  299. package/dist/esm/rendering/text/GlyphAtlas.js +347 -0
  300. package/dist/esm/rendering/text/GlyphAtlas.js.map +1 -0
  301. package/dist/esm/rendering/text/GlyphAtlasPool.d.ts +40 -0
  302. package/dist/esm/rendering/text/GlyphAtlasPool.js +67 -0
  303. package/dist/esm/rendering/text/GlyphAtlasPool.js.map +1 -0
  304. package/dist/esm/rendering/text/GlyphSdf.d.ts +92 -0
  305. package/dist/esm/rendering/text/GlyphSdf.js +220 -0
  306. package/dist/esm/rendering/text/GlyphSdf.js.map +1 -0
  307. package/dist/esm/rendering/text/HTMLText.d.ts +107 -0
  308. package/dist/esm/rendering/text/HTMLText.js +284 -0
  309. package/dist/esm/rendering/text/HTMLText.js.map +1 -0
  310. package/dist/esm/rendering/text/LayoutOptions.d.ts +30 -0
  311. package/dist/esm/rendering/text/Text.d.ts +89 -20
  312. package/dist/esm/rendering/text/Text.js +176 -101
  313. package/dist/esm/rendering/text/Text.js.map +1 -1
  314. package/dist/esm/rendering/text/TextLayout.d.ts +20 -8
  315. package/dist/esm/rendering/text/TextLayout.js +234 -25
  316. package/dist/esm/rendering/text/TextLayout.js.map +1 -1
  317. package/dist/esm/rendering/text/TextStyle.d.ts +154 -87
  318. package/dist/esm/rendering/text/TextStyle.js +257 -203
  319. package/dist/esm/rendering/text/TextStyle.js.map +1 -1
  320. package/dist/esm/rendering/text/types.d.ts +73 -13
  321. package/dist/esm/rendering/texture/DataTexture.d.ts +5 -0
  322. package/dist/esm/rendering/texture/DataTexture.js +7 -0
  323. package/dist/esm/rendering/texture/DataTexture.js.map +1 -1
  324. package/dist/esm/rendering/texture/Texture.d.ts +1 -0
  325. package/dist/esm/rendering/texture/Texture.js +1 -0
  326. package/dist/esm/rendering/texture/Texture.js.map +1 -1
  327. package/dist/esm/rendering/types.d.ts +3 -1
  328. package/dist/esm/rendering/types.js +2 -0
  329. package/dist/esm/rendering/types.js.map +1 -1
  330. package/dist/esm/rendering/video/Video.d.ts +5 -8
  331. package/dist/esm/rendering/video/Video.js +12 -13
  332. package/dist/esm/rendering/video/Video.js.map +1 -1
  333. package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts +40 -0
  334. package/dist/esm/rendering/webgl2/WebGl2Backend.js +344 -27
  335. package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -1
  336. package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.d.ts +22 -2
  337. package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js +404 -112
  338. package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js.map +1 -1
  339. package/dist/esm/rendering/webgl2/WebGl2PassCoordinator.d.ts +57 -0
  340. package/dist/esm/rendering/webgl2/WebGl2PassCoordinator.js +79 -0
  341. package/dist/esm/rendering/webgl2/WebGl2PassCoordinator.js.map +1 -0
  342. package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.d.ts +12 -0
  343. package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js +214 -58
  344. package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js.map +1 -1
  345. package/dist/esm/rendering/webgl2/WebGl2StencilClipper.d.ts +34 -0
  346. package/dist/esm/rendering/webgl2/WebGl2StencilClipper.js +169 -0
  347. package/dist/esm/rendering/webgl2/WebGl2StencilClipper.js.map +1 -0
  348. package/dist/esm/rendering/webgl2/WebGl2TextRenderer.d.ts +56 -0
  349. package/dist/esm/rendering/webgl2/WebGl2TextRenderer.js +486 -0
  350. package/dist/esm/rendering/webgl2/WebGl2TextRenderer.js.map +1 -0
  351. package/dist/esm/rendering/webgl2/glsl/mesh.frag.js +1 -1
  352. package/dist/esm/rendering/webgl2/glsl/mesh.vert.js +1 -1
  353. package/dist/esm/rendering/webgl2/glsl/stencil-clip.frag.js +4 -0
  354. package/dist/esm/rendering/webgl2/glsl/stencil-clip.frag.js.map +1 -0
  355. package/dist/esm/rendering/webgl2/glsl/stencil-clip.vert.js +4 -0
  356. package/dist/esm/rendering/webgl2/glsl/stencil-clip.vert.js.map +1 -0
  357. package/dist/esm/rendering/webgl2/glsl/text-color.frag.js +4 -0
  358. package/dist/esm/rendering/webgl2/glsl/text-color.frag.js.map +1 -0
  359. package/dist/esm/rendering/webgl2/glsl/text-msdf.frag.js +4 -0
  360. package/dist/esm/rendering/webgl2/glsl/text-msdf.frag.js.map +1 -0
  361. package/dist/esm/rendering/webgl2/glsl/text-sdf.frag.js +4 -0
  362. package/dist/esm/rendering/webgl2/glsl/text-sdf.frag.js.map +1 -0
  363. package/dist/esm/rendering/webgl2/glsl/text.vert.js +4 -0
  364. package/dist/esm/rendering/webgl2/glsl/text.vert.js.map +1 -0
  365. package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts +50 -0
  366. package/dist/esm/rendering/webgpu/WebGpuBackend.js +151 -27
  367. package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -1
  368. package/dist/esm/rendering/webgpu/WebGpuBlendState.js +26 -0
  369. package/dist/esm/rendering/webgpu/WebGpuBlendState.js.map +1 -1
  370. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js +22 -17
  371. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js.map +1 -1
  372. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.d.ts +26 -2
  373. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js +511 -89
  374. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js.map +1 -1
  375. package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js +13 -17
  376. package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js.map +1 -1
  377. package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.d.ts +141 -0
  378. package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.js +270 -0
  379. package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.js.map +1 -0
  380. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts +16 -0
  381. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js +344 -27
  382. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js.map +1 -1
  383. package/dist/esm/rendering/webgpu/WebGpuStencilClipper.d.ts +57 -0
  384. package/dist/esm/rendering/webgpu/WebGpuStencilClipper.js +257 -0
  385. package/dist/esm/rendering/webgpu/WebGpuStencilClipper.js.map +1 -0
  386. package/dist/esm/rendering/webgpu/WebGpuStencilState.d.ts +14 -0
  387. package/dist/esm/rendering/webgpu/WebGpuStencilState.js +36 -0
  388. package/dist/esm/rendering/webgpu/WebGpuStencilState.js.map +1 -0
  389. package/dist/esm/rendering/webgpu/WebGpuTextRenderer.d.ts +70 -0
  390. package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js +775 -0
  391. package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js.map +1 -0
  392. package/dist/esm/rendering/webgpu/WebGpuTransformStorage.d.ts +16 -0
  393. package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js +57 -0
  394. package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js.map +1 -0
  395. package/dist/esm/rendering/webgpu/compute/WebGpuComputePipeline.js +96 -0
  396. package/dist/esm/rendering/webgpu/compute/WebGpuComputePipeline.js.map +1 -0
  397. package/dist/esm/rendering/webgpu/compute/WebGpuStorageBuffer.js +68 -0
  398. package/dist/esm/rendering/webgpu/compute/WebGpuStorageBuffer.js.map +1 -0
  399. package/dist/esm/resources/Asset.d.ts +23 -0
  400. package/dist/esm/resources/Asset.js +23 -0
  401. package/dist/esm/resources/Asset.js.map +1 -0
  402. package/dist/esm/resources/AssetDefinitions.d.ts +137 -0
  403. package/dist/esm/resources/Assets.d.ts +35 -0
  404. package/dist/esm/resources/Assets.js +32 -0
  405. package/dist/esm/resources/Assets.js.map +1 -0
  406. package/dist/esm/resources/IndexedDbDatabase.js +17 -1
  407. package/dist/esm/resources/IndexedDbDatabase.js.map +1 -1
  408. package/dist/esm/resources/IndexedDbStore.js +17 -1
  409. package/dist/esm/resources/IndexedDbStore.js.map +1 -1
  410. package/dist/esm/resources/JsonStore.d.ts +18 -0
  411. package/dist/esm/resources/JsonStore.js +62 -0
  412. package/dist/esm/resources/JsonStore.js.map +1 -0
  413. package/dist/esm/resources/Loader.d.ts +244 -18
  414. package/dist/esm/resources/Loader.js +456 -50
  415. package/dist/esm/resources/Loader.js.map +1 -1
  416. package/dist/esm/resources/LoadingQueue.d.ts +28 -0
  417. package/dist/esm/resources/LoadingQueue.js +59 -0
  418. package/dist/esm/resources/LoadingQueue.js.map +1 -0
  419. package/dist/esm/resources/factories/BmFontFactory.d.ts +25 -0
  420. package/dist/esm/resources/factories/BmFontFactory.js +96 -0
  421. package/dist/esm/resources/factories/BmFontFactory.js.map +1 -0
  422. package/dist/esm/resources/factories/CsvFactory.d.ts +35 -0
  423. package/dist/esm/resources/factories/CsvFactory.js +87 -0
  424. package/dist/esm/resources/factories/CsvFactory.js.map +1 -0
  425. package/dist/esm/resources/factories/ImageFactory.d.ts +14 -8
  426. package/dist/esm/resources/factories/ImageFactory.js +13 -6
  427. package/dist/esm/resources/factories/ImageFactory.js.map +1 -1
  428. package/dist/esm/resources/factories/MusicFactory.d.ts +8 -2
  429. package/dist/esm/resources/factories/MusicFactory.js +25 -14
  430. package/dist/esm/resources/factories/MusicFactory.js.map +1 -1
  431. package/dist/esm/resources/factories/SoundFactory.d.ts +2 -2
  432. package/dist/esm/resources/factories/SoundFactory.js.map +1 -1
  433. package/dist/esm/resources/factories/SubtitleFactory.d.ts +28 -0
  434. package/dist/esm/resources/factories/SubtitleFactory.js +203 -0
  435. package/dist/esm/resources/factories/SubtitleFactory.js.map +1 -0
  436. package/dist/esm/resources/factories/SvgFactory.d.ts +18 -1
  437. package/dist/esm/resources/factories/SvgFactory.js +21 -2
  438. package/dist/esm/resources/factories/SvgFactory.js.map +1 -1
  439. package/dist/esm/resources/factories/TextureFactory.d.ts +4 -4
  440. package/dist/esm/resources/factories/TextureFactory.js +8 -4
  441. package/dist/esm/resources/factories/TextureFactory.js.map +1 -1
  442. package/dist/esm/resources/factories/VideoFactory.d.ts +8 -2
  443. package/dist/esm/resources/factories/VideoFactory.js +27 -20
  444. package/dist/esm/resources/factories/VideoFactory.js.map +1 -1
  445. package/dist/esm/resources/factories/XmlFactory.d.ts +24 -0
  446. package/dist/esm/resources/factories/XmlFactory.js +37 -0
  447. package/dist/esm/resources/factories/XmlFactory.js.map +1 -0
  448. package/dist/esm/resources/index.d.ts +9 -1
  449. package/dist/esm/resources/tokens.d.ts +49 -3
  450. package/dist/esm/resources/tokens.js +50 -4
  451. package/dist/esm/resources/tokens.js.map +1 -1
  452. package/dist/exo.esm.js +15382 -8078
  453. package/dist/exo.esm.js.map +1 -1
  454. package/package.json +34 -16
  455. package/dist/esm/input/interaction-hooks.d.ts +0 -34
  456. package/dist/esm/input/interaction-hooks.js +0 -35
  457. package/dist/esm/input/interaction-hooks.js.map +0 -1
  458. package/dist/esm/particles/distributions/Gradient.js.map +0 -1
  459. package/dist/esm/rendering/mesh/MeshShader.js.map +0 -1
  460. package/dist/esm/rendering/text/DynamicGlyphAtlas.d.ts +0 -33
  461. package/dist/esm/rendering/text/DynamicGlyphAtlas.js +0 -134
  462. package/dist/esm/rendering/text/DynamicGlyphAtlas.js.map +0 -1
  463. package/dist/esm/rendering/text/atlas-singleton.d.ts +0 -7
  464. package/dist/esm/rendering/text/atlas-singleton.js +0 -17
  465. package/dist/esm/rendering/text/atlas-singleton.js.map +0 -1
  466. package/dist/esm/resources/factories/VttFactory.d.ts +0 -24
  467. package/dist/esm/resources/factories/VttFactory.js +0 -158
  468. package/dist/esm/resources/factories/VttFactory.js.map +0 -1
  469. package/dist/esm/vendor/webgl-debug.js +0 -1160
  470. package/dist/esm/vendor/webgl-debug.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RenderEffectExecutor.js","sources":["../../../../../src/rendering/plan/RenderEffectExecutor.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AASA;MACa,oBAAoB,CAAA;AACxB,IAAA,OAAO,IAAI,CAAC,OAAqB,EAAE,OAAsB,EAAE,SAAsC,EAAA;AACtG,QAAA,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO;QAChC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;AAC5C,QAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,aAAa;QAC7C,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO;AAE5C,QAAA,IAAI,CAAC,UAAU,IAAI,CAAC,gBAAgB,EAAE;YACpC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAK;AAC1C,gBAAA,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,EAAE;AAC9B,oBAAA,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC;gBAC9B;AACF,YAAA,CAAC,CAAC;YAEF;QACF;QAEA,IAAI,gBAAgB,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,EAAE;AAClD,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,0BAA0B,EAAE;AAEvD,YAAA,IAAI,aAAa,KAAK,IAAI,EAAE;gBAC1B,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAK;AAC1C,oBAAA,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC;AACjG,gBAAA,CAAC,CAAC;YACJ;YAEA;QACF;AAEA,QAAA,MAAM,YAAY,GAAG,gBAAgB,GAAG,IAAI,CAAC,6BAA6B,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,IAAI;QAChG,IAAI,aAAa,GAAyB,IAAI;AAE9C,QAAA,IAAI;YACF,MAAM,aAAa,GAAG,gBAAgB,IAAI,CAAC,UAAU,GAAG,YAAa,GAAG,OAAO,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC;AAEnH,YAAA,IAAI,aAAa,KAAK,YAAY,EAAE;gBAClC,aAAa,GAAG,aAAa;YAC/B;AAEA,YAAA,IAAI,CAAC,0BAA0B,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAK;AACrF,gBAAA,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,EAAE;AAC9B,oBAAA,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC;gBAC9B;AACF,YAAA,CAAC,CAAC;YAEF,IAAI,YAAY,GAAG,aAAa;YAEhC,IAAI,UAAU,EAAE;AACd,gBAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;oBAC1D,MAAM,MAAM,GAAG,KAAK,KAAK,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;oBAClD,MAAM,MAAM,GAAG,MAAM,IAAI,gBAAgB,GAAG,YAAa,GAAG,OAAO,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC;AAEvG,oBAAA,IAAI;AACF,wBAAA,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC;oBAC5D;oBAAE,OAAO,KAAK,EAAE;AACd,wBAAA,IAAI,MAAM,KAAK,YAAY,EAAE;AAC3B,4BAAA,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC;wBACtC;AAEA,wBAAA,MAAM,KAAK;oBACb;AAEA,oBAAA,IAAI,aAAa,KAAK,IAAI,EAAE;AAC1B,wBAAA,OAAO,CAAC,oBAAoB,CAAC,aAAa,CAAC;wBAC3C,aAAa,GAAG,IAAI;oBACtB;oBAEA,YAAY,GAAG,MAAM;AAErB,oBAAA,IAAI,MAAM,KAAK,YAAY,EAAE;wBAC3B,aAAa,GAAG,MAAM;oBACxB;gBACF;YACF;YAEA,IAAI,gBAAgB,EAAE;AACpB,gBAAA,IAAI,CAAC,4BAA4B,CAAC,YAAa,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC;YAC5E;YAEA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAK;AAC1C,gBAAA,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC;AAChG,YAAA,CAAC,CAAC;QACJ;gBAAU;AACR,YAAA,IAAI,aAAa,KAAK,IAAI,EAAE;AAC1B,gBAAA,OAAO,CAAC,oBAAoB,CAAC,aAAa,CAAC;YAC7C;QACF;IACF;;;;;IAMQ,OAAO,SAAS,CAAC,IAAgB,EAAE,OAAsB,EAAE,OAAqB,EAAE,QAAoB,EAAA;QAC5G,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,OAAO,EAAE;AAC5C,YAAA,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,SAAqB,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAExF,YAAA,IAAI;gBACF,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;YACtD;oBAAU;gBACR,OAAO,CAAC,cAAc,EAAE;YAC1B;YAEA;QACF;QAEA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;IACtD;IAEQ,OAAO,aAAa,CAAC,IAAgB,EAAE,OAAsB,EAAE,OAAqB,EAAE,QAAoB,EAAA;QAChH,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE;AACzC,YAAA,MAAM,IAAI,GAAI,OAAO,CAAC,MAAM,CAAC,SAA8B,IAAI,IAAI,CAAC,SAAS,EAAE;AAE/E,YAAA,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;gBACvC;YACF;AAEA,YAAA,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC;AAE7B,YAAA,IAAI;gBACF,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;YAClD;oBAAU;gBACR,OAAO,CAAC,cAAc,EAAE;YAC1B;YAEA;QACF;QAEA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;IAClD;IAEQ,OAAO,SAAS,CAAC,IAAgB,EAAE,OAAsB,EAAE,OAAqB,EAAE,QAAoB,EAAA;AAC5G,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU;AAEtC,QAAA,IAAI,IAAI,KAAK,IAAI,EAAE;AACjB,YAAA,QAAQ,EAAE;YAEV;QACF;AAEA,QAAA,IAAI,IAAI,YAAY,SAAS,EAAE;AAC7B,YAAA,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;gBACvC;YACF;AAEA,YAAA,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC;AAE7B,YAAA,IAAI;AACF,gBAAA,QAAQ,EAAE;YACZ;oBAAU;gBACR,OAAO,CAAC,cAAc,EAAE;YAC1B;YAEA;QACF;AAEA,QAAA,MAAM,cAAc,GAAG,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC;AAClF,QAAA,MAAM,WAAW,GAAoB,CAAC,cAAc,CAAC;AAErD,QAAA,IAAI;YACF,IAAI,CAAC,0BAA0B,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC;AAE5H,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC;AAEvF,YAAA,OAAO,CAAC,oBAAoB,CAAC,cAAc,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;QAC/I;gBAAU;AACR,YAAA,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE;AACjC,gBAAA,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC;YACvC;QACF;IACF;IAEQ,OAAO,mBAAmB,CAChC,IAAgB,EAChB,OAAsB,EACtB,IAA2C,EAC3C,OAAqB,EACrB,WAA4B,EAAA;AAE5B,QAAA,IAAI,EAAE,IAAI,YAAY,OAAO,CAAC,IAAI,EAAE,IAAI,YAAY,aAAa,CAAC,EAAE;AAClE,YAAA,MAAM,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC;AAE/E,YAAA,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;YAE7B,IAAI,CAAC,0BAA0B,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,MAAK;AACnH,gBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AACtB,YAAA,CAAC,CAAC;AAEF,YAAA,OAAO,WAAW;QACpB;AAEA,QAAA,OAAO,IAAI;IACb;AACD;;;;"}
@@ -0,0 +1,23 @@
1
+ import type { Color } from '@/core/Color';
2
+ import type { RenderTarget } from '@/rendering/RenderTarget';
3
+ import type { View } from '@/rendering/View';
4
+ import type { GroupScope } from './RenderScope';
5
+ /** @internal */
6
+ export interface RenderPassScope {
7
+ target: RenderTarget | null;
8
+ view: View;
9
+ clearColor: Color | null;
10
+ root: GroupScope;
11
+ }
12
+ /** @internal */
13
+ export interface RenderPlan {
14
+ passes: RenderPassScope[];
15
+ nodeCount: number;
16
+ reset(): void;
17
+ }
18
+ /** @internal */
19
+ export declare class MutableRenderPlan implements RenderPlan {
20
+ readonly passes: RenderPassScope[];
21
+ nodeCount: number;
22
+ reset(): void;
23
+ }
@@ -0,0 +1,12 @@
1
+ /** @internal */
2
+ class MutableRenderPlan {
3
+ passes = [];
4
+ nodeCount = 0;
5
+ reset() {
6
+ this.passes.length = 0;
7
+ this.nodeCount = 0;
8
+ }
9
+ }
10
+
11
+ export { MutableRenderPlan };
12
+ //# sourceMappingURL=RenderPlan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RenderPlan.js","sources":["../../../../../src/rendering/plan/RenderPlan.ts"],"sourcesContent":[null],"names":[],"mappings":"AAqBA;MACa,iBAAiB,CAAA;IACZ,MAAM,GAAsB,EAAE;IACvC,SAAS,GAAG,CAAC;IAEb,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC;IACpB;AACD;;;;"}
@@ -0,0 +1,31 @@
1
+ import type { Drawable } from '@/rendering/Drawable';
2
+ import type { RenderBackend } from '@/rendering/RenderBackend';
3
+ import type { RenderNode } from '@/rendering/RenderNode';
4
+ import type { View } from '@/rendering/View';
5
+ import { type RenderPlan } from './RenderPlan';
6
+ /** @internal */
7
+ export declare class RenderPlanBuilder {
8
+ private static readonly _available;
9
+ private static readonly _active;
10
+ static acquire(): RenderPlanBuilder;
11
+ static release(builder: RenderPlanBuilder): void;
12
+ backend: RenderBackend;
13
+ private _view;
14
+ private readonly _plan;
15
+ private readonly _groupPool;
16
+ private readonly _scopeStack;
17
+ private _groupPoolCursor;
18
+ private _pendingEntryPlacement;
19
+ private _nodeIndex;
20
+ build(root: RenderNode, backend: RenderBackend): RenderPlan;
21
+ get view(): View;
22
+ emitNode(node: RenderNode, seq?: number): void;
23
+ emitDraw(drawable: Drawable, seq?: number): void;
24
+ private _resetRuntimeState;
25
+ private _acquireGroupScope;
26
+ private _reserveEntryPlacement;
27
+ private _pushEntry;
28
+ private _currentScope;
29
+ private _resolvePreserveDrawOrder;
30
+ private _createEffectDescriptor;
31
+ }
@@ -0,0 +1,242 @@
1
+ import { Rectangle } from '../../math/Rectangle.js';
2
+ import { RenderEntryKind, makeMaterialKey } from './RenderCommand.js';
3
+ import { MutableRenderPlan } from './RenderPlan.js';
4
+ import { ClipKind } from './RenderScope.js';
5
+
6
+ /** @internal */
7
+ class RenderPlanBuilder {
8
+ static _available = [];
9
+ static _active = [];
10
+ static acquire() {
11
+ const builder = RenderPlanBuilder._available.pop() ?? new RenderPlanBuilder();
12
+ RenderPlanBuilder._active.push(builder);
13
+ return builder;
14
+ }
15
+ static release(builder) {
16
+ const index = RenderPlanBuilder._active.lastIndexOf(builder);
17
+ if (index === -1) {
18
+ return;
19
+ }
20
+ RenderPlanBuilder._active.splice(index, 1);
21
+ builder._resetRuntimeState();
22
+ RenderPlanBuilder._available.push(builder);
23
+ }
24
+ backend;
25
+ _view = null;
26
+ _plan = new MutableRenderPlan();
27
+ _groupPool = [];
28
+ _scopeStack = [];
29
+ _groupPoolCursor = 0;
30
+ _pendingEntryPlacement = null;
31
+ _nodeIndex = 0;
32
+ build(root, backend) {
33
+ this.backend = backend;
34
+ this._view = null;
35
+ this._plan.reset();
36
+ this._groupPoolCursor = 0;
37
+ this._scopeStack.length = 0;
38
+ this._pendingEntryPlacement = null;
39
+ this._nodeIndex = 0;
40
+ const rootScope = this._acquireGroupScope(false);
41
+ this._scopeStack.push(rootScope);
42
+ root._collect(this);
43
+ this._scopeStack.pop();
44
+ if (rootScope.entries.length > 0) {
45
+ this._plan.passes.push({
46
+ target: null,
47
+ view: this.view,
48
+ clearColor: null,
49
+ root: rootScope,
50
+ });
51
+ }
52
+ this._plan.nodeCount = this._nodeIndex;
53
+ return this._plan;
54
+ }
55
+ get view() {
56
+ if (this._view === null) {
57
+ this._view = this.backend.view;
58
+ }
59
+ return this._view;
60
+ }
61
+ emitNode(node, seq) {
62
+ const placement = this._reserveEntryPlacement(seq, node.zIndex);
63
+ if (node._renderPlanHasBarrierEffects()) {
64
+ const effect = this._createEffectDescriptor(node);
65
+ const hasAlphaMask = effect.maskSource !== null && !(effect.maskSource instanceof Rectangle);
66
+ const needsBounds = effect.cacheAsBitmap || effect.filters.length > 0 || hasAlphaMask;
67
+ let left = 0;
68
+ let top = 0;
69
+ let width = 0;
70
+ let height = 0;
71
+ if (needsBounds) {
72
+ const bounds = node.getBounds();
73
+ if (bounds.width <= 0 || bounds.height <= 0) {
74
+ return;
75
+ }
76
+ left = Math.floor(bounds.left);
77
+ top = Math.floor(bounds.top);
78
+ width = Math.max(1, Math.ceil(bounds.width));
79
+ height = Math.max(1, Math.ceil(bounds.height));
80
+ }
81
+ const childPlan = effect.cacheAsBitmap && node._renderPlanCanReuseBitmapCache(left, top, width, height)
82
+ ? null
83
+ : this._acquireGroupScope(this._resolvePreserveDrawOrder(node));
84
+ const barrierScope = {
85
+ kind: RenderEntryKind.Barrier,
86
+ node,
87
+ effect,
88
+ childPlan,
89
+ left,
90
+ top,
91
+ width,
92
+ height,
93
+ };
94
+ this._pushEntry({
95
+ kind: RenderEntryKind.Barrier,
96
+ seq: placement.seq,
97
+ zIndex: placement.zIndex,
98
+ scope: barrierScope,
99
+ });
100
+ if (childPlan !== null) {
101
+ this._scopeStack.push(childPlan);
102
+ try {
103
+ node._collectForRenderPlan(this);
104
+ }
105
+ finally {
106
+ this._scopeStack.pop();
107
+ }
108
+ }
109
+ return;
110
+ }
111
+ if (node._isDrawableForRenderPlan()) {
112
+ this._pendingEntryPlacement = placement;
113
+ try {
114
+ node._collectForRenderPlan(this);
115
+ }
116
+ finally {
117
+ this._pendingEntryPlacement = null;
118
+ }
119
+ return;
120
+ }
121
+ const groupScope = this._acquireGroupScope(this._resolvePreserveDrawOrder(node));
122
+ this._pushEntry({
123
+ kind: RenderEntryKind.Group,
124
+ seq: placement.seq,
125
+ zIndex: placement.zIndex,
126
+ scope: groupScope,
127
+ });
128
+ this._scopeStack.push(groupScope);
129
+ try {
130
+ node._collectForRenderPlan(this);
131
+ }
132
+ finally {
133
+ this._scopeStack.pop();
134
+ }
135
+ }
136
+ emitDraw(drawable, seq) {
137
+ const pendingPlacement = this._pendingEntryPlacement;
138
+ if (pendingPlacement !== null) {
139
+ this._pendingEntryPlacement = null;
140
+ }
141
+ const zIndex = pendingPlacement?.zIndex ?? drawable.zIndex;
142
+ const placement = this._reserveEntryPlacement(seq ?? pendingPlacement?.seq, zIndex);
143
+ const bounds = drawable.getBounds();
144
+ const command = {
145
+ kind: RenderEntryKind.Draw,
146
+ drawable,
147
+ nodeIndex: this._nodeIndex++,
148
+ seq: placement.seq,
149
+ zIndex: placement.zIndex,
150
+ material: makeMaterialKey(drawable, this.backend),
151
+ minX: bounds.left,
152
+ minY: bounds.top,
153
+ maxX: bounds.right,
154
+ maxY: bounds.bottom,
155
+ };
156
+ this._pushEntry({
157
+ kind: RenderEntryKind.Draw,
158
+ seq: placement.seq,
159
+ zIndex: placement.zIndex,
160
+ command,
161
+ });
162
+ }
163
+ _resetRuntimeState() {
164
+ this._scopeStack.length = 0;
165
+ this._pendingEntryPlacement = null;
166
+ this._groupPoolCursor = 0;
167
+ this._view = null;
168
+ this._nodeIndex = 0;
169
+ }
170
+ _acquireGroupScope(preserveDrawOrder) {
171
+ const scope = this._groupPool[this._groupPoolCursor] ?? {
172
+ kind: RenderEntryKind.Group,
173
+ entries: [],
174
+ hasMixedZ: false,
175
+ preserveDrawOrder: false,
176
+ _nextSeq: 0,
177
+ firstZ: null,
178
+ };
179
+ this._groupPool[this._groupPoolCursor] = scope;
180
+ this._groupPoolCursor++;
181
+ scope.entries.length = 0;
182
+ scope.hasMixedZ = false;
183
+ scope.preserveDrawOrder = preserveDrawOrder;
184
+ scope._nextSeq = 0;
185
+ scope.firstZ = null;
186
+ return scope;
187
+ }
188
+ _reserveEntryPlacement(seq, zIndex) {
189
+ const scope = this._currentScope();
190
+ const nextSeq = seq ?? scope._nextSeq;
191
+ if (nextSeq >= scope._nextSeq) {
192
+ scope._nextSeq = nextSeq + 1;
193
+ }
194
+ if (scope.firstZ === null) {
195
+ scope.firstZ = zIndex;
196
+ }
197
+ else if (!scope.hasMixedZ && scope.firstZ !== zIndex) {
198
+ scope.hasMixedZ = true;
199
+ }
200
+ return { seq: nextSeq, zIndex };
201
+ }
202
+ _pushEntry(entry) {
203
+ this._currentScope().entries.push(entry);
204
+ }
205
+ _currentScope() {
206
+ const scope = this._scopeStack[this._scopeStack.length - 1];
207
+ if (!scope) {
208
+ throw new Error('RenderPlanBuilder scope stack is empty.');
209
+ }
210
+ return scope;
211
+ }
212
+ _resolvePreserveDrawOrder(node) {
213
+ return node.preserveDrawOrder;
214
+ }
215
+ _createEffectDescriptor(node) {
216
+ const mask = node._renderPlanGetMaskSource();
217
+ let clip = ClipKind.None;
218
+ let clipShape = null;
219
+ if (node.clip) {
220
+ const shape = node.clipShape;
221
+ if (shape === null || shape instanceof Rectangle) {
222
+ clip = ClipKind.Rect;
223
+ clipShape = shape;
224
+ }
225
+ else {
226
+ clip = ClipKind.Stencil;
227
+ clipShape = shape;
228
+ }
229
+ }
230
+ return {
231
+ filters: node._renderPlanGetFilters(),
232
+ clip,
233
+ clipShape,
234
+ maskSource: mask,
235
+ cacheAsBitmap: node.cacheAsBitmap,
236
+ blendMode: node._renderPlanGetBlendMode(),
237
+ };
238
+ }
239
+ }
240
+
241
+ export { RenderPlanBuilder };
242
+ //# sourceMappingURL=RenderPlanBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RenderPlanBuilder.js","sources":["../../../../../src/rendering/plan/RenderPlanBuilder.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { RenderPlan } from './RenderPlan';
2
+ /** @internal */
3
+ export declare class RenderPlanOptimizer {
4
+ static optimize(plan: RenderPlan): void;
5
+ private static _optimizeGroup;
6
+ private static _applyMaterialGrouping;
7
+ private static _assignGroupIndices;
8
+ private static _materialGroupSegment;
9
+ private static _overlapAwareGroup;
10
+ }
@@ -0,0 +1,180 @@
1
+ import { RenderEntryKind } from './RenderCommand.js';
2
+
3
+ const groupKey = (material) => `${material.pipelineKey}:${material.bindKey}`;
4
+ const aabbOverlap = (a, b) => a.minX < b.maxX && a.maxX > b.minX && a.minY < b.maxY && a.maxY > b.minY;
5
+ /** @internal */
6
+ class RenderPlanOptimizer {
7
+ static optimize(plan) {
8
+ for (const pass of plan.passes) {
9
+ this._optimizeGroup(pass.root);
10
+ }
11
+ }
12
+ static _optimizeGroup(scope) {
13
+ if (scope.hasMixedZ) {
14
+ const indexed = scope.entries.map((entry, index) => ({ entry, index }));
15
+ indexed.sort((left, right) => {
16
+ return left.entry.zIndex - right.entry.zIndex || left.entry.seq - right.entry.seq || left.index - right.index;
17
+ });
18
+ for (let i = 0; i < indexed.length; i++) {
19
+ scope.entries[i] = indexed[i].entry;
20
+ }
21
+ }
22
+ this._applyMaterialGrouping(scope);
23
+ for (const entry of scope.entries) {
24
+ if (entry.kind === RenderEntryKind.Group) {
25
+ this._optimizeGroup(entry.scope);
26
+ }
27
+ else if (entry.kind === RenderEntryKind.Barrier && entry.scope.childPlan !== null) {
28
+ this._optimizeGroup(entry.scope.childPlan);
29
+ }
30
+ }
31
+ }
32
+ static _applyMaterialGrouping(scope) {
33
+ const entries = scope.entries;
34
+ const n = entries.length;
35
+ if (n === 0) {
36
+ return;
37
+ }
38
+ let segStart = 0;
39
+ for (let i = 0; i <= n; i++) {
40
+ const entry = i < n ? entries[i] : null;
41
+ const isBoundary = entry === null || entry.kind === RenderEntryKind.Group || entry.kind === RenderEntryKind.Barrier;
42
+ if (isBoundary && i > segStart) {
43
+ const segEnd = i;
44
+ const segLen = segEnd - segStart;
45
+ if (segLen >= 1) {
46
+ this._materialGroupSegment(entries, segStart, segEnd, scope.preserveDrawOrder);
47
+ }
48
+ segStart = i + 1;
49
+ }
50
+ else if (isBoundary) {
51
+ segStart = i + 1;
52
+ }
53
+ }
54
+ this._assignGroupIndices(scope);
55
+ }
56
+ static _assignGroupIndices(scope) {
57
+ let nextGroupIndex = 1;
58
+ let prevKey = null;
59
+ let prevZ = null;
60
+ for (const entry of scope.entries) {
61
+ if (entry.kind !== RenderEntryKind.Draw) {
62
+ prevKey = null;
63
+ prevZ = null;
64
+ continue;
65
+ }
66
+ const key = groupKey(entry.command.material);
67
+ const z = entry.zIndex;
68
+ if (prevKey === null || prevZ === null || key !== prevKey || z !== prevZ) {
69
+ nextGroupIndex++;
70
+ prevKey = key;
71
+ prevZ = z;
72
+ }
73
+ entry.command.groupIndex = nextGroupIndex;
74
+ }
75
+ }
76
+ static _materialGroupSegment(entries, start, end, preserveDrawOrder) {
77
+ const len = end - start;
78
+ if (len <= 1) {
79
+ return;
80
+ }
81
+ const draws = [];
82
+ for (let i = start; i < end; i++) {
83
+ const entry = entries[i];
84
+ if (entry.kind === RenderEntryKind.Draw) {
85
+ draws.push({ entry, origIdx: i });
86
+ }
87
+ }
88
+ if (draws.length <= 1) {
89
+ return;
90
+ }
91
+ if (!preserveDrawOrder) {
92
+ const zGroups = new Map();
93
+ for (const d of draws) {
94
+ const z = d.entry.zIndex;
95
+ const list = zGroups.get(z) ?? [];
96
+ list.push(d);
97
+ zGroups.set(z, list);
98
+ }
99
+ for (const zGroup of zGroups.values()) {
100
+ if (zGroup.length > 1) {
101
+ this._overlapAwareGroup(zGroup, entries, start, end);
102
+ }
103
+ }
104
+ }
105
+ }
106
+ static _overlapAwareGroup(zGroup, entries, segStart, segEnd) {
107
+ const keyGroups = new Map();
108
+ for (const d of zGroup) {
109
+ const key = groupKey(d.entry.command.material);
110
+ const list = keyGroups.get(key) ?? [];
111
+ list.push(d);
112
+ keyGroups.set(key, list);
113
+ }
114
+ if (keyGroups.size <= 1) {
115
+ return;
116
+ }
117
+ for (const group of keyGroups.values()) {
118
+ if (group.length <= 1) {
119
+ continue;
120
+ }
121
+ const positions = [];
122
+ for (const g of group) {
123
+ const pos = entries.indexOf(g.entry, segStart);
124
+ if (pos >= segStart && pos < segEnd) {
125
+ positions.push(pos);
126
+ }
127
+ }
128
+ positions.sort((a, b) => a - b);
129
+ const first = positions[0];
130
+ const last = positions[positions.length - 1];
131
+ if (last - first + 1 === positions.length) {
132
+ continue;
133
+ }
134
+ let blocked = false;
135
+ for (let p = first + 1; p < last && !blocked; p++) {
136
+ const mid = entries[p];
137
+ if (mid.kind !== RenderEntryKind.Draw) {
138
+ continue;
139
+ }
140
+ const midKey = groupKey(mid.command.material);
141
+ if (midKey === groupKey(group[0].entry.command.material)) {
142
+ continue;
143
+ }
144
+ for (const g of group) {
145
+ if (aabbOverlap(g.entry.command, mid.command)) {
146
+ blocked = true;
147
+ break;
148
+ }
149
+ }
150
+ }
151
+ if (blocked) {
152
+ continue;
153
+ }
154
+ const beforeFirst = [];
155
+ for (let p = segStart; p < first; p++) {
156
+ beforeFirst.push(entries[p]);
157
+ }
158
+ const afterLast = [];
159
+ for (let p = last + 1; p < segEnd; p++) {
160
+ afterLast.push(entries[p]);
161
+ }
162
+ const groupSet = new Set(group.map(g => g.entry));
163
+ const betweenNonGroup = [];
164
+ for (let p = first; p <= last; p++) {
165
+ if (!groupSet.has(entries[p])) {
166
+ betweenNonGroup.push(entries[p]);
167
+ }
168
+ }
169
+ const groupEntries = group.map(g => g.entry);
170
+ const reordered = [...beforeFirst, ...groupEntries, ...betweenNonGroup, ...afterLast];
171
+ for (let p = segStart; p < segEnd; p++) {
172
+ entries[p] = reordered[p - segStart];
173
+ }
174
+ break;
175
+ }
176
+ }
177
+ }
178
+
179
+ export { RenderPlanOptimizer };
180
+ //# sourceMappingURL=RenderPlanOptimizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RenderPlanOptimizer.js","sources":["../../../../../src/rendering/plan/RenderPlanOptimizer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { RenderBackend } from '@/rendering/RenderBackend';
2
+ import type { RenderPlan } from './RenderPlan';
3
+ import type { RenderScope } from './RenderScope';
4
+ /** @internal */
5
+ export declare class RenderPlanPlayer {
6
+ static play(plan: RenderPlan, backend: RenderBackend): void;
7
+ static playScope(scope: RenderScope, backend: RenderBackend): void;
8
+ private static _playGroup;
9
+ }
@@ -0,0 +1,56 @@
1
+ import { RenderEntryKind } from './RenderCommand.js';
2
+ import { RenderEffectExecutor } from './RenderEffectExecutor.js';
3
+
4
+ /** @internal */
5
+ class RenderPlanPlayer {
6
+ static play(plan, backend) {
7
+ const hooks = backend;
8
+ hooks._beginDrawPlan?.(plan.nodeCount);
9
+ try {
10
+ for (const pass of plan.passes) {
11
+ if (pass.target !== null && backend.renderTarget !== pass.target) {
12
+ backend.setRenderTarget(pass.target);
13
+ }
14
+ if (backend.view !== pass.view) {
15
+ backend.setView(pass.view);
16
+ }
17
+ if (pass.clearColor !== null) {
18
+ backend.clear(pass.clearColor);
19
+ }
20
+ this.playScope(pass.root, backend);
21
+ }
22
+ }
23
+ finally {
24
+ hooks._endDrawPlan?.();
25
+ }
26
+ }
27
+ static playScope(scope, backend) {
28
+ if (scope.kind === RenderEntryKind.Barrier) {
29
+ RenderEffectExecutor.play(scope, backend, childScope => {
30
+ this.playScope(childScope, backend);
31
+ });
32
+ return;
33
+ }
34
+ this._playGroup(scope, backend);
35
+ }
36
+ static _playGroup(scope, backend) {
37
+ const hooks = backend;
38
+ for (const entry of scope.entries) {
39
+ if (entry.kind === RenderEntryKind.Draw) {
40
+ hooks._prepareDrawCommand?.(entry.command);
41
+ backend.draw(entry.command.drawable);
42
+ }
43
+ else if (entry.kind === RenderEntryKind.Group) {
44
+ this._playGroup(entry.scope, backend);
45
+ }
46
+ else {
47
+ RenderEffectExecutor.play(entry.scope, backend, childScope => {
48
+ this.playScope(childScope, backend);
49
+ });
50
+ }
51
+ }
52
+ }
53
+ }
54
+
55
+ export { RenderPlanPlayer };
56
+ //# sourceMappingURL=RenderPlanPlayer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RenderPlanPlayer.js","sources":["../../../../../src/rendering/plan/RenderPlanPlayer.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAcA;MACa,gBAAgB,CAAA;AACpB,IAAA,OAAO,IAAI,CAAC,IAAgB,EAAE,OAAsB,EAAA;QACzD,MAAM,KAAK,GAAG,OAAkD;QAEhE,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC;AAEtC,QAAA,IAAI;AACF,YAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AAC9B,gBAAA,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC,MAAM,EAAE;AAChE,oBAAA,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;gBACtC;gBAEA,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;AAC9B,oBAAA,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC5B;AAEA,gBAAA,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE;AAC5B,oBAAA,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;gBAChC;gBAEA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;YACpC;QACF;gBAAU;AACR,YAAA,KAAK,CAAC,YAAY,IAAI;QACxB;IACF;AAEO,IAAA,OAAO,SAAS,CAAC,KAAkB,EAAE,OAAsB,EAAA;QAChE,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,CAAC,OAAO,EAAE;YAC1C,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,IAAG;AACrD,gBAAA,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC;AACrC,YAAA,CAAC,CAAC;YAEF;QACF;AAEA,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC;IACjC;AAEQ,IAAA,OAAO,UAAU,CAAC,KAAiB,EAAE,OAAsB,EAAA;QACjE,MAAM,KAAK,GAAG,OAAkD;AAEhE,QAAA,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE;YACjC,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,CAAC,IAAI,EAAE;gBACvC,KAAK,CAAC,mBAAmB,GAAG,KAAK,CAAC,OAAO,CAAC;gBAC1C,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;YACtC;iBAAO,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,CAAC,KAAK,EAAE;gBAC/C,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC;YACvC;iBAAO;gBACL,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,IAAG;AAC3D,oBAAA,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC;AACrC,gBAAA,CAAC,CAAC;YACJ;QACF;IACF;AACD;;;;"}