@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
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "@codexo/exojs",
3
3
  "description": "A TypeScript-first browser 2D runtime for games and interactive apps.",
4
- "version": "0.8.4",
4
+ "version": "0.10.0",
5
5
  "type": "module",
6
+ "packageManager": "pnpm@11.4.0",
6
7
  "files": [
7
8
  "dist/esm/",
8
9
  "dist/exo.esm.js",
@@ -41,31 +42,46 @@
41
42
  "./package.json": "./package.json"
42
43
  },
43
44
  "scripts": {
45
+ "bootstrap": "pnpm install --frozen-lockfile --ignore-scripts",
44
46
  "clean": "rimraf dist",
45
- "build": "npm run clean && tsx node_modules/rollup/dist/bin/rollup -c",
46
- "build:watch": "tsx node_modules/rollup/dist/bin/rollup -cw",
47
+ "build": "pnpm clean && tsx node_modules/rollup/dist/bin/rollup -c --environment EXOJS_ENV:production",
48
+ "build:dev": "pnpm clean && tsx node_modules/rollup/dist/bin/rollup -c --environment EXOJS_ENV:development",
49
+ "build:watch": "tsx node_modules/rollup/dist/bin/rollup -cw --environment EXOJS_ENV:development",
47
50
  "verify:exports": "tsx ./scripts/verify-exports.ts",
48
- "verify:package": "npm run build && npm run verify:exports && npm pack --dry-run --ignore-scripts --cache ./.npm-cache",
51
+ "verify:package": "pnpm build && pnpm verify:exports && pnpm pack",
49
52
  "sync:example-capabilities": "tsx ./scripts/sync-example-capabilities.ts",
50
- "verify:release": "npm run typecheck && npm run lint:strict && npm run format:check && npm test && npm run verify:package",
53
+ "verify:release": "pnpm typecheck && pnpm lint:strict && pnpm format:check && pnpm test && pnpm verify:package",
51
54
  "release": "tsx ./scripts/release.ts",
52
55
  "release:notes": "tsx ./scripts/generate-release-notes.ts",
53
- "prepack": "npm run build",
56
+ "prepack": "pnpm build",
54
57
  "typecheck": "tsc --noEmit",
55
58
  "lint": "eslint \"src/**/*.ts\" \"test/**/*.ts\" \"examples/**/*.js\"",
56
59
  "lint:fix": "eslint --fix \"src/**/*.ts\" \"test/**/*.ts\" \"examples/**/*.js\"",
57
60
  "lint:strict": "eslint --max-warnings=0 \"src/**/*.ts\"",
61
+ "lint:strict:fast": "eslint --cache --cache-location .cache/eslintcache --max-warnings=0 \"src/**/*.ts\"",
58
62
  "lint:strict:fix": "eslint --fix --max-warnings=0 \"src/**/*.ts\"",
63
+ "lint:strict:fast:fix": "eslint --cache --cache-location .cache/eslintcache --fix --max-warnings=0 \"src/**/*.ts\"",
59
64
  "format": "prettier --write .",
60
65
  "format:check": "prettier --check .",
61
- "test": "jest --runInBand",
62
- "test:watch": "jest --watch",
66
+ "test": "vitest run --project=exojs",
67
+ "test:coverage": "vitest run --coverage --project=exojs",
68
+ "test:watch": "vitest --project=exojs",
69
+ "test:browser": "vitest run --project=browser",
70
+ "test:browser:webgl": "vitest run --project=browser",
71
+ "test:browser:webgpu": "vitest run --project=browser-webgpu",
72
+ "test:browser:webgpu:headed": "vitest run --project=browser-webgpu",
73
+ "test:browser:webgpu:headless": "vitest run --project=browser-webgpu --browser.headless",
74
+ "bench": "vitest bench",
75
+ "bench:run": "vitest bench --run",
76
+ "site:install": "pnpm bootstrap",
77
+ "site:build": "pnpm --filter @codexo/exojs-examples build",
78
+ "site:build:api": "pnpm --filter @codexo/exojs-examples build:api",
63
79
  "perf:bench:rendering": "tsx test/perf/rendering-benchmark.ts",
64
80
  "perf:bench:audio": "tsx test/perf/audio-benchmark.ts",
65
81
  "perf:bench:collision": "tsx test/perf/collision-benchmark.ts",
66
82
  "perf:bench:scene-graph": "tsx test/perf/scene-graph-benchmark.ts",
67
83
  "perf:bench:interaction": "tsx test/perf/interaction-benchmark.ts",
68
- "perf:bench:all": "npm run perf:bench:rendering && npm run perf:bench:audio && npm run perf:bench:collision && npm run perf:bench:scene-graph && npm run perf:bench:interaction",
84
+ "perf:bench:all": "pnpm perf:bench:rendering && pnpm perf:bench:audio && pnpm perf:bench:collision && pnpm perf:bench:scene-graph && pnpm perf:bench:interaction",
69
85
  "perf:profile": "tsx test/perf/profile-benchmark.ts",
70
86
  "perf:profile:gc": "node --expose-gc --import tsx/esm test/perf/profile-benchmark.ts",
71
87
  "prepare": "husky",
@@ -85,15 +101,17 @@
85
101
  },
86
102
  "devDependencies": {
87
103
  "@eslint/js": "^10.0.1",
88
- "@rollup/plugin-commonjs": "^29.0.2",
89
104
  "@rollup/plugin-node-resolve": "^16.0.3",
105
+ "@rollup/plugin-replace": "^6.0.3",
90
106
  "@rollup/plugin-typescript": "^12.3.0",
91
107
  "@types/css-font-loading-module": "0.0.14",
92
- "@types/jest": "^30.0.0",
93
108
  "@types/jsdom": "^28.0.1",
94
109
  "@types/node": "^25.6.0",
110
+ "@vitest/browser": "^4.1.7",
111
+ "@vitest/browser-playwright": "^4.1.7",
112
+ "@vitest/coverage-istanbul": "^4.1.7",
95
113
  "@webgpu/types": "^0.1.69",
96
- "eslint": "^10.2.1",
114
+ "eslint": "^10.4.1",
97
115
  "eslint-config-prettier": "^10.1.8",
98
116
  "eslint-plugin-security": "^4.0.0",
99
117
  "eslint-plugin-simple-import-sort": "^13.0.0",
@@ -102,17 +120,17 @@
102
120
  "gitmoji-cli": "^9.7.0",
103
121
  "globals": "^17.5.0",
104
122
  "husky": "^9.1.7",
105
- "jest": "^30.3.0",
106
- "jest-environment-jsdom": "^30.3.0",
107
123
  "jiti": "^2.7.0",
124
+ "jsdom": "^29.1.1",
125
+ "playwright": "^1.50.0",
108
126
  "prettier": "^3.8.3",
109
127
  "rimraf": "^6.1.3",
110
128
  "rollup": "^4.60.3",
111
129
  "rollup-plugin-string": "^3.0.0",
112
- "ts-jest": "^29.4.9",
113
130
  "tslib": "^2.8.1",
114
131
  "tsx": "^4.21.0",
115
132
  "typescript": "^6.0.3",
116
- "typescript-eslint": "^8.59.2"
133
+ "typescript-eslint": "^8.60.0",
134
+ "vitest": "^4.1.7"
117
135
  }
118
136
  }
@@ -1,34 +0,0 @@
1
- /**
2
- * Lightweight module that holds the module-level InteractionManager pointer
3
- * used by SceneNode / Container / RenderNode hooks.
4
- *
5
- * Kept in its own file to break the circular import chain:
6
- * SceneNode ← InteractionManager ← Container ← RenderNode ← SceneNode
7
- *
8
- * By splitting the singleton out here, SceneNode/Container/RenderNode can
9
- * import from this module while InteractionManager (which imports Container)
10
- * remains free of a SceneNode ↔ InteractionManager cycle.
11
- *
12
- * @internal
13
- */
14
- import type { RenderNode } from '@/rendering/RenderNode';
15
- export interface InteractionManagerHooks {
16
- _notifyNodeAdded(node: RenderNode): void;
17
- _notifyNodeRemoved(node: RenderNode): void;
18
- _notifyInteractiveChanged(node: RenderNode, becameInteractive: boolean): void;
19
- _notifyBoundsInvalidated(node: RenderNode): void;
20
- }
21
- /**
22
- * Returns the currently-registered InteractionManager, or null if none is
23
- * active. Called by RenderNode / Container / SceneNode hooks.
24
- *
25
- * @internal
26
- */
27
- export declare function _getCurrentInteractionManager(): InteractionManagerHooks | null;
28
- /**
29
- * Register the active InteractionManager. Called from the InteractionManager
30
- * constructor. Last-constructed-wins (single-Application assumed).
31
- *
32
- * @internal
33
- */
34
- export declare function _setCurrentInteractionManager(manager: InteractionManagerHooks | null): void;
@@ -1,35 +0,0 @@
1
- /**
2
- * Lightweight module that holds the module-level InteractionManager pointer
3
- * used by SceneNode / Container / RenderNode hooks.
4
- *
5
- * Kept in its own file to break the circular import chain:
6
- * SceneNode ← InteractionManager ← Container ← RenderNode ← SceneNode
7
- *
8
- * By splitting the singleton out here, SceneNode/Container/RenderNode can
9
- * import from this module while InteractionManager (which imports Container)
10
- * remains free of a SceneNode ↔ InteractionManager cycle.
11
- *
12
- * @internal
13
- */
14
- let _currentManager = null;
15
- /**
16
- * Returns the currently-registered InteractionManager, or null if none is
17
- * active. Called by RenderNode / Container / SceneNode hooks.
18
- *
19
- * @internal
20
- */
21
- function _getCurrentInteractionManager() {
22
- return _currentManager;
23
- }
24
- /**
25
- * Register the active InteractionManager. Called from the InteractionManager
26
- * constructor. Last-constructed-wins (single-Application assumed).
27
- *
28
- * @internal
29
- */
30
- function _setCurrentInteractionManager(manager) {
31
- _currentManager = manager;
32
- }
33
-
34
- export { _getCurrentInteractionManager, _setCurrentInteractionManager };
35
- //# sourceMappingURL=interaction-hooks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interaction-hooks.js","sources":["../../../../src/input/interaction-hooks.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;;;;;;;;AAYG;AAWH,IAAI,eAAe,GAAmC,IAAI;AAE1D;;;;;AAKG;SACa,6BAA6B,GAAA;AAC3C,IAAA,OAAO,eAAe;AACxB;AAEA;;;;;AAKG;AACG,SAAU,6BAA6B,CAAC,OAAuC,EAAA;IACnF,eAAe,GAAG,OAAO;AAC3B;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Gradient.js","sources":["../../../../../src/particles/distributions/Gradient.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"MeshShader.js","sources":["../../../../../src/rendering/mesh/MeshShader.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1,33 +0,0 @@
1
- import { Texture } from '@/rendering/texture/Texture';
2
- import type { GlyphInfo } from './types';
3
- /**
4
- * A shared atlas that rasterizes glyphs on demand into an offscreen canvas
5
- * and wraps it as a Texture for use by the Mesh-based Text renderer.
6
- *
7
- * Glyphs are always rasterized in white so that runtime tinting via
8
- * `Mesh.tint` applies the fill color without requiring re-rasterization.
9
- *
10
- * Use `getDefaultGlyphAtlas()` from `atlas-singleton.ts` rather than
11
- * constructing directly.
12
- */
13
- export declare class DynamicGlyphAtlas {
14
- readonly texture: Texture;
15
- private readonly _canvas;
16
- private readonly _ctx;
17
- private readonly _packer;
18
- private readonly _cache;
19
- private readonly _width;
20
- private readonly _height;
21
- constructor(width?: number, height?: number);
22
- /**
23
- * Returns the cached GlyphInfo for the given character + font parameters,
24
- * rasterizing it into the atlas if not already present.
25
- */
26
- getGlyph(char: string, family: string, size: number, weight: string | number, style: 'normal' | 'italic'): GlyphInfo;
27
- /**
28
- * Clears all cached glyphs and resets the atlas packer.
29
- * The underlying canvas pixels are also cleared.
30
- */
31
- clear(): void;
32
- private _rasterize;
33
- }
@@ -1,134 +0,0 @@
1
- import { Texture } from '../texture/Texture.js';
2
-
3
- const glyphPadding = 2;
4
- class ShelfPacker {
5
- _shelves = [];
6
- _width;
7
- _height;
8
- constructor(width, height) {
9
- this._width = width;
10
- this._height = height;
11
- }
12
- insert(width, height) {
13
- // Try existing shelves in order (ascending y)
14
- for (const shelf of this._shelves) {
15
- if (shelf.height >= height && shelf.cursorX + width <= this._width) {
16
- const x = shelf.cursorX;
17
- shelf.cursorX += width;
18
- return { x, y: shelf.y };
19
- }
20
- }
21
- // Create a new shelf at the bottom
22
- const last = this._shelves[this._shelves.length - 1];
23
- const bottomY = last === undefined ? 0 : last.y + last.height;
24
- if (bottomY + height > this._height) {
25
- throw new Error(`GlyphAtlas full — clear() and re-render, or instantiate with larger dims`);
26
- }
27
- this._shelves.push({ y: bottomY, height, cursorX: width });
28
- return { x: 0, y: bottomY };
29
- }
30
- reset() {
31
- this._shelves.length = 0;
32
- }
33
- }
34
- /**
35
- * A shared atlas that rasterizes glyphs on demand into an offscreen canvas
36
- * and wraps it as a Texture for use by the Mesh-based Text renderer.
37
- *
38
- * Glyphs are always rasterized in white so that runtime tinting via
39
- * `Mesh.tint` applies the fill color without requiring re-rasterization.
40
- *
41
- * Use `getDefaultGlyphAtlas()` from `atlas-singleton.ts` rather than
42
- * constructing directly.
43
- */
44
- class DynamicGlyphAtlas {
45
- texture;
46
- _canvas;
47
- _ctx;
48
- _packer;
49
- _cache = new Map();
50
- _width;
51
- _height;
52
- constructor(width = 1024, height = 1024) {
53
- this._width = width;
54
- this._height = height;
55
- // Use OffscreenCanvas when available, fall back to HTMLCanvasElement.
56
- // In jsdom / Node the global may be absent; createCanvas falls through
57
- // to document.createElement which jsdom provides.
58
- const canvas = typeof OffscreenCanvas !== 'undefined' ? new OffscreenCanvas(width, height) : document.createElement('canvas');
59
- if ('width' in canvas) {
60
- canvas.width = width;
61
- canvas.height = height;
62
- }
63
- this._canvas = canvas;
64
- const ctx = canvas.getContext('2d');
65
- if (ctx === null) {
66
- throw new Error('DynamicGlyphAtlas: could not obtain a 2D context.');
67
- }
68
- this._ctx = ctx;
69
- this._packer = new ShelfPacker(width, height);
70
- this.texture = new Texture(canvas);
71
- this.texture.setSize(width, height);
72
- }
73
- /**
74
- * Returns the cached GlyphInfo for the given character + font parameters,
75
- * rasterizing it into the atlas if not already present.
76
- */
77
- getGlyph(char, family, size, weight, style) {
78
- const key = `${char}:${family}:${size}:${weight}:${style}`;
79
- const cached = this._cache.get(key);
80
- if (cached !== undefined) {
81
- return cached;
82
- }
83
- const info = this._rasterize(char, family, size, weight, style, key);
84
- this._cache.set(key, info);
85
- // Bump texture version so GPU backends re-upload the canvas data.
86
- this.texture.updateSource();
87
- return info;
88
- }
89
- /**
90
- * Clears all cached glyphs and resets the atlas packer.
91
- * The underlying canvas pixels are also cleared.
92
- */
93
- clear() {
94
- this._cache.clear();
95
- this._packer.reset();
96
- this._ctx.clearRect(0, 0, this._width, this._height);
97
- this.texture.updateSource();
98
- }
99
- // -----------------------------------------------------------------------
100
- _rasterize(char, family, size, weight, fontStyle, _key) {
101
- const ctx = this._ctx;
102
- const padding = glyphPadding;
103
- ctx.font = `${fontStyle} ${weight} ${size}px ${family}`;
104
- ctx.textBaseline = 'alphabetic';
105
- ctx.fillStyle = '#ffffff';
106
- const metrics = ctx.measureText(char);
107
- const ascent = Math.ceil(metrics.fontBoundingBoxAscent ?? metrics.actualBoundingBoxAscent ?? size * 0.8);
108
- const descent = Math.ceil(metrics.fontBoundingBoxDescent ?? metrics.actualBoundingBoxDescent ?? size * 0.2);
109
- const advance = metrics.width;
110
- const glyphWidth = Math.max(1, Math.ceil((metrics.actualBoundingBoxLeft ?? 0) + (metrics.actualBoundingBoxRight ?? 0)) || Math.ceil(advance));
111
- const glyphHeight = Math.max(1, ascent + descent);
112
- const slotW = glyphWidth + padding * 2;
113
- const slotH = glyphHeight + padding * 2;
114
- const slot = this._packer.insert(slotW, slotH);
115
- // Draw the glyph white into the atlas slot
116
- ctx.fillText(char, slot.x + padding + (metrics.actualBoundingBoxLeft ?? 0), slot.y + padding + ascent);
117
- const info = {
118
- x: slot.x,
119
- y: slot.y,
120
- width: glyphWidth,
121
- height: glyphHeight,
122
- advance,
123
- ascent,
124
- uvLeft: slot.x / this._width,
125
- uvTop: slot.y / this._height,
126
- uvRight: (slot.x + slotW) / this._width,
127
- uvBottom: (slot.y + slotH) / this._height,
128
- };
129
- return info;
130
- }
131
- }
132
-
133
- export { DynamicGlyphAtlas };
134
- //# sourceMappingURL=DynamicGlyphAtlas.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DynamicGlyphAtlas.js","sources":["../../../../../src/rendering/text/DynamicGlyphAtlas.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import { DynamicGlyphAtlas } from './DynamicGlyphAtlas';
2
- /**
3
- * Returns the shared process-wide glyph atlas, creating it lazily on first
4
- * call. All `Text` instances share this atlas so that identical glyph shapes
5
- * (same char + family + size + weight + style) are rasterized only once.
6
- */
7
- export declare function getDefaultGlyphAtlas(): DynamicGlyphAtlas;
@@ -1,17 +0,0 @@
1
- import { DynamicGlyphAtlas } from './DynamicGlyphAtlas.js';
2
-
3
- let _defaultAtlas = null;
4
- /**
5
- * Returns the shared process-wide glyph atlas, creating it lazily on first
6
- * call. All `Text` instances share this atlas so that identical glyph shapes
7
- * (same char + family + size + weight + style) are rasterized only once.
8
- */
9
- function getDefaultGlyphAtlas() {
10
- if (_defaultAtlas === null) {
11
- _defaultAtlas = new DynamicGlyphAtlas();
12
- }
13
- return _defaultAtlas;
14
- }
15
-
16
- export { getDefaultGlyphAtlas };
17
- //# sourceMappingURL=atlas-singleton.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"atlas-singleton.js","sources":["../../../../../src/rendering/text/atlas-singleton.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAEA,IAAI,aAAa,GAA6B,IAAI;AAElD;;;;AAIG;SACa,oBAAoB,GAAA;AAClC,IAAA,IAAI,aAAa,KAAK,IAAI,EAAE;AAC1B,QAAA,aAAa,GAAG,IAAI,iBAAiB,EAAE;IACzC;AAEA,IAAA,OAAO,aAAa;AACtB;;;;"}
@@ -1,24 +0,0 @@
1
- import { AbstractAssetFactory } from '@/resources/AbstractAssetFactory';
2
- /**
3
- * {@link AssetFactory} implementation that parses WebVTT (`.vtt`) subtitle and
4
- * caption files and produces an array of {@link VTTCue} instances.
5
- *
6
- * The parser handles CRLF and CR line endings, skips the `WEBVTT` header and
7
- * any metadata blocks, and applies optional cue settings (`align`, `line`,
8
- * `position`, `size`, `vertical`) on the timestamp line directly to the
9
- * resulting {@link VTTCue}.
10
- */
11
- export declare class VttFactory extends AbstractAssetFactory<VTTCue[]> {
12
- readonly storageName = "vtt";
13
- /**
14
- * Reads the response body as a UTF-8 string containing the raw VTT markup.
15
- */
16
- process(response: Response): Promise<string>;
17
- /**
18
- * Parses VTT markup into an ordered array of {@link VTTCue} instances.
19
- *
20
- * Line endings are normalised before parsing. Cues are emitted in document
21
- * order; overlapping or out-of-order timestamps are preserved as-is.
22
- */
23
- create(source: string): Promise<VTTCue[]>;
24
- }
@@ -1,158 +0,0 @@
1
- import { AbstractAssetFactory } from '../AbstractAssetFactory.js';
2
-
3
- /**
4
- * Converts a WebVTT timestamp string (`HH:MM:SS.mmm`, `MM:SS.mmm`, or
5
- * `SS.mmm`) into a floating-point number of seconds.
6
- *
7
- * @internal
8
- */
9
- const parseTimestamp = (value) => {
10
- const parts = value.split(':');
11
- let seconds;
12
- if (parts.length === 3) {
13
- seconds = Number(parts[0]) * 3600 + Number(parts[1]) * 60 + Number(parts[2]);
14
- }
15
- else if (parts.length === 2) {
16
- seconds = Number(parts[0]) * 60 + Number(parts[1]);
17
- }
18
- else {
19
- seconds = Number(parts[0]);
20
- }
21
- return seconds;
22
- };
23
- const validAlignValues = new Set(['start', 'center', 'end', 'left', 'right']);
24
- const validLineAlignValues = new Set(['start', 'center', 'end']);
25
- const validPositionAlignValues = new Set(['auto', 'line-left', 'center', 'line-right']);
26
- /**
27
- * Parses the WebVTT cue-settings tail (`align:center line:80% position:50%`)
28
- * and applies each recognized setting to the supplied {@link VTTCue}.
29
- *
30
- * Unknown keys, malformed values, and unknown enum members are silently
31
- * skipped so that one bad token does not invalidate an otherwise valid cue.
32
- * Percent signs on numeric values are tolerated and stripped.
33
- *
34
- * @internal
35
- */
36
- const applyCueSettings = (cue, settings) => {
37
- if (!settings) {
38
- return;
39
- }
40
- for (const token of settings.split(/\s+/)) {
41
- const colonIndex = token.indexOf(':');
42
- if (colonIndex === -1) {
43
- continue;
44
- }
45
- const name = token.slice(0, colonIndex);
46
- const value = token.slice(colonIndex + 1);
47
- switch (name) {
48
- case 'vertical':
49
- if (value === 'rl' || value === 'lr' || value === '') {
50
- cue.vertical = value;
51
- }
52
- break;
53
- case 'line': {
54
- if (value === 'auto') {
55
- cue.line = 'auto';
56
- }
57
- else {
58
- const [linePart, alignPart] = value.split(',');
59
- const num = parseFloat(linePart);
60
- if (!Number.isNaN(num)) {
61
- cue.line = num;
62
- }
63
- if (alignPart !== undefined && validLineAlignValues.has(alignPart)) {
64
- cue.lineAlign = alignPart;
65
- }
66
- }
67
- break;
68
- }
69
- case 'position': {
70
- const [posPart, alignPart] = value.split(',');
71
- const num = parseFloat(posPart);
72
- if (!Number.isNaN(num)) {
73
- cue.position = num;
74
- }
75
- if (alignPart !== undefined && validPositionAlignValues.has(alignPart)) {
76
- cue.positionAlign = alignPart;
77
- }
78
- break;
79
- }
80
- case 'size': {
81
- const num = parseFloat(value);
82
- if (!Number.isNaN(num)) {
83
- cue.size = num;
84
- }
85
- break;
86
- }
87
- case 'align':
88
- if (validAlignValues.has(value)) {
89
- cue.align = value;
90
- }
91
- break;
92
- }
93
- }
94
- };
95
- /**
96
- * {@link AssetFactory} implementation that parses WebVTT (`.vtt`) subtitle and
97
- * caption files and produces an array of {@link VTTCue} instances.
98
- *
99
- * The parser handles CRLF and CR line endings, skips the `WEBVTT` header and
100
- * any metadata blocks, and applies optional cue settings (`align`, `line`,
101
- * `position`, `size`, `vertical`) on the timestamp line directly to the
102
- * resulting {@link VTTCue}.
103
- */
104
- class VttFactory extends AbstractAssetFactory {
105
- storageName = 'vtt';
106
- /**
107
- * Reads the response body as a UTF-8 string containing the raw VTT markup.
108
- */
109
- async process(response) {
110
- return response.text();
111
- }
112
- /**
113
- * Parses VTT markup into an ordered array of {@link VTTCue} instances.
114
- *
115
- * Line endings are normalised before parsing. Cues are emitted in document
116
- * order; overlapping or out-of-order timestamps are preserved as-is.
117
- */
118
- async create(source) {
119
- const cues = [];
120
- const lines = source.replaceAll('\r\n', '\n').replaceAll('\r', '\n').split('\n');
121
- let i = 0;
122
- // Skip header and any blank lines/metadata before first cue
123
- while (i < lines.length && !lines[i].includes('-->')) {
124
- i++;
125
- }
126
- while (i < lines.length) {
127
- const line = lines[i].trim();
128
- if (line.includes('-->')) {
129
- const arrowIndex = line.indexOf('-->');
130
- const startString = line.slice(0, arrowIndex).trim();
131
- const rest = line.slice(arrowIndex + 3).trim();
132
- // rest contains the end timestamp followed by optional cue
133
- // settings (align, line, position, size, vertical).
134
- const restTokens = rest.split(/\s+/);
135
- const endString = restTokens[0];
136
- const settingsString = restTokens.slice(1).join(' ');
137
- const start = parseTimestamp(startString);
138
- const end = parseTimestamp(endString);
139
- i++;
140
- const textLines = [];
141
- while (i < lines.length && lines[i].trim() !== '') {
142
- textLines.push(lines[i]);
143
- i++;
144
- }
145
- const cue = new VTTCue(start, end, textLines.join('\n'));
146
- applyCueSettings(cue, settingsString);
147
- cues.push(cue);
148
- }
149
- else {
150
- i++;
151
- }
152
- }
153
- return cues;
154
- }
155
- }
156
-
157
- export { VttFactory };
158
- //# sourceMappingURL=VttFactory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"VttFactory.js","sources":["../../../../../src/resources/factories/VttFactory.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}