@lightningjs/renderer 3.0.0-beta2 → 3.0.0-beta21

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 (587) hide show
  1. package/README.md +16 -26
  2. package/dist/exports/canvas.d.ts +1 -1
  3. package/dist/exports/canvas.js +1 -1
  4. package/dist/exports/canvas.js.map +1 -1
  5. package/dist/exports/index.d.ts +2 -5
  6. package/dist/exports/index.js +1 -5
  7. package/dist/exports/index.js.map +1 -1
  8. package/dist/exports/utils.d.ts +2 -1
  9. package/dist/exports/utils.js +2 -1
  10. package/dist/exports/utils.js.map +1 -1
  11. package/dist/exports/webgl.d.ts +2 -1
  12. package/dist/exports/webgl.js +2 -1
  13. package/dist/exports/webgl.js.map +1 -1
  14. package/dist/src/common/CommonTypes.d.ts +13 -2
  15. package/dist/src/core/Autosizer.d.ts +35 -0
  16. package/dist/src/core/Autosizer.js +196 -0
  17. package/dist/src/core/Autosizer.js.map +1 -0
  18. package/dist/src/core/CoreNode.d.ts +124 -100
  19. package/dist/src/core/CoreNode.js +720 -472
  20. package/dist/src/core/CoreNode.js.map +1 -1
  21. package/dist/src/core/CoreShaderManager.d.ts +3 -5
  22. package/dist/src/core/CoreShaderManager.js.map +1 -1
  23. package/dist/src/core/CoreTextNode.d.ts +74 -87
  24. package/dist/src/core/CoreTextNode.js +355 -232
  25. package/dist/src/core/CoreTextNode.js.map +1 -1
  26. package/dist/src/core/CoreTextureManager.d.ts +25 -13
  27. package/dist/src/core/CoreTextureManager.js +80 -104
  28. package/dist/src/core/CoreTextureManager.js.map +1 -1
  29. package/dist/src/core/Stage.d.ts +93 -33
  30. package/dist/src/core/Stage.js +315 -151
  31. package/dist/src/core/Stage.js.map +1 -1
  32. package/dist/src/core/TextureError.d.ts +11 -0
  33. package/dist/src/core/TextureError.js +37 -0
  34. package/dist/src/core/TextureError.js.map +1 -0
  35. package/dist/src/core/TextureMemoryManager.d.ts +11 -4
  36. package/dist/src/core/TextureMemoryManager.js +128 -109
  37. package/dist/src/core/TextureMemoryManager.js.map +1 -1
  38. package/dist/src/core/animations/Animation.d.ts +21 -0
  39. package/dist/src/core/animations/Animation.js +194 -0
  40. package/dist/src/core/animations/Animation.js.map +1 -0
  41. package/dist/src/core/animations/CoreAnimation.d.ts +3 -3
  42. package/dist/src/core/animations/CoreAnimation.js +8 -3
  43. package/dist/src/core/animations/CoreAnimation.js.map +1 -1
  44. package/dist/src/core/animations/CoreAnimationController.d.ts +1 -0
  45. package/dist/src/core/animations/CoreAnimationController.js +11 -4
  46. package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
  47. package/dist/src/core/animations/Playback.d.ts +64 -0
  48. package/dist/src/core/animations/Playback.js +169 -0
  49. package/dist/src/core/animations/Playback.js.map +1 -0
  50. package/dist/src/core/animations/Transition.d.ts +27 -0
  51. package/dist/src/core/animations/Transition.js +52 -0
  52. package/dist/src/core/animations/Transition.js.map +1 -0
  53. package/dist/src/core/animations/utils.d.ts +2 -0
  54. package/dist/src/core/animations/utils.js +136 -0
  55. package/dist/src/core/animations/utils.js.map +1 -0
  56. package/dist/src/core/lib/ImageWorker.d.ts +2 -2
  57. package/dist/src/core/lib/ImageWorker.js +31 -12
  58. package/dist/src/core/lib/ImageWorker.js.map +1 -1
  59. package/dist/src/core/lib/WebGlContextWrapper.d.ts +41 -3
  60. package/dist/src/core/lib/WebGlContextWrapper.js +105 -28
  61. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
  62. package/dist/src/core/lib/collectionUtils.d.ts +5 -0
  63. package/dist/src/core/lib/collectionUtils.js +100 -0
  64. package/dist/src/core/lib/collectionUtils.js.map +1 -0
  65. package/dist/src/core/lib/colorCache.d.ts +1 -0
  66. package/dist/src/core/lib/colorCache.js +19 -0
  67. package/dist/src/core/lib/colorCache.js.map +1 -0
  68. package/dist/src/core/lib/colorParser.d.ts +21 -0
  69. package/dist/src/core/lib/colorParser.js +72 -0
  70. package/dist/src/core/lib/colorParser.js.map +1 -0
  71. package/dist/src/core/lib/textureCompression.d.ts +14 -2
  72. package/dist/src/core/lib/textureCompression.js +320 -67
  73. package/dist/src/core/lib/textureCompression.js.map +1 -1
  74. package/dist/src/core/lib/utils.d.ts +8 -2
  75. package/dist/src/core/lib/utils.js +43 -21
  76. package/dist/src/core/lib/utils.js.map +1 -1
  77. package/dist/src/core/lib/validateImageBitmap.d.ts +2 -1
  78. package/dist/src/core/lib/validateImageBitmap.js +4 -4
  79. package/dist/src/core/lib/validateImageBitmap.js.map +1 -1
  80. package/dist/src/core/platform.js +30 -5
  81. package/dist/src/core/platform.js.map +1 -1
  82. package/dist/src/core/platforms/Platform.d.ts +42 -0
  83. package/dist/src/{main-api/IRenderDriver.js → core/platforms/Platform.js} +4 -2
  84. package/dist/src/core/platforms/Platform.js.map +1 -0
  85. package/dist/src/core/platforms/web/WebPlatform.d.ts +10 -0
  86. package/dist/src/core/platforms/web/WebPlatform.js +87 -0
  87. package/dist/src/core/platforms/web/WebPlatform.js.map +1 -0
  88. package/dist/src/core/renderers/CoreContextTexture.d.ts +2 -1
  89. package/dist/src/core/renderers/CoreContextTexture.js.map +1 -1
  90. package/dist/src/core/renderers/CoreRenderer.d.ts +5 -30
  91. package/dist/src/core/renderers/CoreRenderer.js +1 -0
  92. package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
  93. package/dist/src/core/renderers/CoreShaderNode.d.ts +12 -1
  94. package/dist/src/core/renderers/CoreShaderNode.js +26 -0
  95. package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
  96. package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +2 -1
  97. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +11 -9
  98. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -1
  99. package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +4 -5
  100. package/dist/src/core/renderers/canvas/CanvasRenderer.js +65 -87
  101. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
  102. package/dist/src/core/renderers/canvas/CanvasShaderNode.d.ts +1 -2
  103. package/dist/src/core/renderers/canvas/CanvasShaderNode.js +3 -5
  104. package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -1
  105. package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +3 -2
  106. package/dist/src/core/renderers/canvas/CanvasTexture.js +17 -13
  107. package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
  108. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +13 -0
  109. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +113 -192
  110. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -1
  111. package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +0 -2
  112. package/dist/src/core/renderers/canvas/internal/ColorUtils.js +0 -14
  113. package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -1
  114. package/dist/src/core/renderers/webgl/SdfRenderOp.d.ts +33 -0
  115. package/dist/src/core/renderers/webgl/SdfRenderOp.js +97 -0
  116. package/dist/src/core/renderers/webgl/SdfRenderOp.js.map +1 -0
  117. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +3 -0
  118. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +1 -1
  119. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +18 -6
  120. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +87 -42
  121. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
  122. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +1 -1
  123. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +53 -17
  124. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -1
  125. package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +2 -7
  126. package/dist/src/core/renderers/webgl/WebGlCoreShader.js +21 -50
  127. package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -1
  128. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +2 -0
  129. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +14 -6
  130. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -1
  131. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +13 -0
  132. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +34 -5
  133. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +1 -1
  134. package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +16 -6
  135. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +102 -52
  136. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
  137. package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +1 -1
  138. package/dist/src/core/renderers/webgl/WebGlRenderOp.js +11 -4
  139. package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -1
  140. package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +11 -21
  141. package/dist/src/core/renderers/webgl/WebGlRenderer.js +168 -152
  142. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
  143. package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +2 -4
  144. package/dist/src/core/renderers/webgl/WebGlShaderNode.js +1 -4
  145. package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -1
  146. package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +9 -7
  147. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +83 -43
  148. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
  149. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +3 -6
  150. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +1 -1
  151. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +0 -11
  152. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +1 -1
  153. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +5 -10
  154. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -1
  155. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +5 -10
  156. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +1 -1
  157. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +0 -12
  158. package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -1
  159. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +1 -1
  160. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +1 -1
  161. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +1 -1
  162. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +1 -1
  163. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +5 -5
  164. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +1 -1
  165. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +24 -19
  166. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +1 -1
  167. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +1 -0
  168. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +32 -5
  169. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +1 -1
  170. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +1 -1
  171. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +5 -5
  172. package/dist/src/core/shaders/canvas/Border.d.ts +8 -2
  173. package/dist/src/core/shaders/canvas/Border.js +64 -25
  174. package/dist/src/core/shaders/canvas/Border.js.map +1 -1
  175. package/dist/src/core/shaders/canvas/HolePunch.js +4 -3
  176. package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -1
  177. package/dist/src/core/shaders/canvas/LinearGradient.js +11 -7
  178. package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
  179. package/dist/src/core/shaders/canvas/RadialGradient.js +21 -17
  180. package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -1
  181. package/dist/src/core/shaders/canvas/Rounded.js +3 -3
  182. package/dist/src/core/shaders/canvas/Rounded.js.map +1 -1
  183. package/dist/src/core/shaders/canvas/RoundedWithBorder.d.ts +6 -3
  184. package/dist/src/core/shaders/canvas/RoundedWithBorder.js +45 -7
  185. package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
  186. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.d.ts +2 -3
  187. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +50 -11
  188. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
  189. package/dist/src/core/shaders/canvas/RoundedWithShadow.js +10 -7
  190. package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -1
  191. package/dist/src/core/shaders/canvas/Shadow.js +4 -2
  192. package/dist/src/core/shaders/canvas/Shadow.js.map +1 -1
  193. package/dist/src/core/shaders/canvas/utils/render.d.ts +1 -1
  194. package/dist/src/core/shaders/canvas/utils/render.js +31 -18
  195. package/dist/src/core/shaders/canvas/utils/render.js.map +1 -1
  196. package/dist/src/core/shaders/templates/BorderTemplate.d.ts +12 -2
  197. package/dist/src/core/shaders/templates/BorderTemplate.js +31 -11
  198. package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -1
  199. package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +2 -2
  200. package/dist/src/core/shaders/templates/HolePunchTemplate.js +3 -3
  201. package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -1
  202. package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +8 -6
  203. package/dist/src/core/shaders/templates/RadialGradientTemplate.js +2 -2
  204. package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -1
  205. package/dist/src/core/shaders/templates/RoundedTemplate.js +1 -1
  206. package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -1
  207. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +1 -1
  208. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +1 -1
  209. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +1 -1
  210. package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +1 -1
  211. package/dist/src/core/shaders/{templates/shaderUtils.d.ts → utils.d.ts} +1 -1
  212. package/dist/src/core/shaders/{templates/shaderUtils.js → utils.js} +2 -2
  213. package/dist/src/core/shaders/utils.js.map +1 -0
  214. package/dist/src/core/shaders/webgl/Border.js +116 -35
  215. package/dist/src/core/shaders/webgl/Border.js.map +1 -1
  216. package/dist/src/core/shaders/webgl/Default.js +6 -7
  217. package/dist/src/core/shaders/webgl/Default.js.map +1 -1
  218. package/dist/src/core/shaders/webgl/HolePunch.js +4 -3
  219. package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
  220. package/dist/src/core/shaders/webgl/LinearGradient.js +33 -8
  221. package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
  222. package/dist/src/core/shaders/webgl/RadialGradient.js +56 -32
  223. package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
  224. package/dist/src/core/shaders/webgl/Rounded.js +4 -2
  225. package/dist/src/core/shaders/webgl/Rounded.js.map +1 -1
  226. package/dist/src/core/shaders/webgl/RoundedWithBorder.js +153 -39
  227. package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
  228. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +158 -43
  229. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
  230. package/dist/src/core/shaders/webgl/RoundedWithShadow.js +6 -4
  231. package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -1
  232. package/dist/src/core/shaders/webgl/SdfShader.d.ts +0 -2
  233. package/dist/src/core/shaders/webgl/SdfShader.js +7 -17
  234. package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -1
  235. package/dist/src/core/shaders/webgl/SdfShadowShader.d.ts +9 -0
  236. package/dist/src/core/shaders/webgl/SdfShadowShader.js +100 -0
  237. package/dist/src/core/shaders/webgl/SdfShadowShader.js.map +1 -0
  238. package/dist/src/core/shaders/webgl/Shadow.js +12 -6
  239. package/dist/src/core/shaders/webgl/Shadow.js.map +1 -1
  240. package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +59 -0
  241. package/dist/src/core/text-rendering/CanvasFontHandler.js +224 -0
  242. package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -0
  243. package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +17 -0
  244. package/dist/src/core/text-rendering/CanvasTextRenderer.js +157 -0
  245. package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -0
  246. package/dist/src/core/text-rendering/SdfFontHandler.d.ts +182 -0
  247. package/dist/src/core/text-rendering/SdfFontHandler.js +391 -0
  248. package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -0
  249. package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +17 -0
  250. package/dist/src/core/text-rendering/SdfTextRenderer.js +303 -0
  251. package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -0
  252. package/dist/src/core/text-rendering/TextLayoutEngine.d.ts +18 -0
  253. package/dist/src/core/text-rendering/TextLayoutEngine.js +380 -0
  254. package/dist/src/core/text-rendering/TextLayoutEngine.js.map +1 -0
  255. package/dist/src/core/text-rendering/TextRenderer.d.ts +383 -0
  256. package/dist/src/{main-api/ICoreDriver.js → core/text-rendering/TextRenderer.js} +1 -1
  257. package/dist/src/core/text-rendering/TextRenderer.js.map +1 -0
  258. package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -1
  259. package/dist/src/core/text-rendering/Utils.d.ts +30 -0
  260. package/dist/src/core/text-rendering/Utils.js +84 -0
  261. package/dist/src/core/text-rendering/Utils.js.map +1 -0
  262. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +2 -2
  263. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -1
  264. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +0 -6
  265. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
  266. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +3 -2
  267. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +35 -38
  268. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  269. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +4 -1
  270. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
  271. package/dist/src/core/textures/ColorTexture.d.ts +1 -1
  272. package/dist/src/core/textures/ColorTexture.js +3 -4
  273. package/dist/src/core/textures/ColorTexture.js.map +1 -1
  274. package/dist/src/core/textures/ImageTexture.d.ts +11 -4
  275. package/dist/src/core/textures/ImageTexture.js +31 -40
  276. package/dist/src/core/textures/ImageTexture.js.map +1 -1
  277. package/dist/src/core/textures/NoiseTexture.d.ts +3 -3
  278. package/dist/src/core/textures/NoiseTexture.js +8 -8
  279. package/dist/src/core/textures/NoiseTexture.js.map +1 -1
  280. package/dist/src/core/textures/RenderTexture.d.ts +7 -7
  281. package/dist/src/core/textures/RenderTexture.js +12 -12
  282. package/dist/src/core/textures/RenderTexture.js.map +1 -1
  283. package/dist/src/core/textures/SubTexture.d.ts +6 -8
  284. package/dist/src/core/textures/SubTexture.js +19 -37
  285. package/dist/src/core/textures/SubTexture.js.map +1 -1
  286. package/dist/src/core/textures/Texture.d.ts +87 -10
  287. package/dist/src/core/textures/Texture.js +160 -17
  288. package/dist/src/core/textures/Texture.js.map +1 -1
  289. package/dist/src/core/utils.d.ts +2 -1
  290. package/dist/src/core/utils.js +1 -1
  291. package/dist/src/core/utils.js.map +1 -1
  292. package/dist/src/main-api/INode.d.ts +2 -2
  293. package/dist/src/main-api/Inspector.d.ts +131 -2
  294. package/dist/src/main-api/Inspector.js +345 -28
  295. package/dist/src/main-api/Inspector.js.map +1 -1
  296. package/dist/src/main-api/Renderer.d.ts +295 -82
  297. package/dist/src/main-api/Renderer.js +223 -76
  298. package/dist/src/main-api/Renderer.js.map +1 -1
  299. package/dist/src/utils.d.ts +1 -6
  300. package/dist/src/utils.js +2 -9
  301. package/dist/src/utils.js.map +1 -1
  302. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  303. package/dist/tsconfig.tsbuildinfo +1 -0
  304. package/exports/canvas.ts +1 -1
  305. package/exports/index.ts +2 -8
  306. package/exports/utils.ts +7 -1
  307. package/exports/webgl.ts +3 -1
  308. package/package.json +15 -17
  309. package/src/common/CommonTypes.ts +18 -2
  310. package/src/core/Autosizer.ts +224 -0
  311. package/src/core/CoreNode.test.ts +179 -17
  312. package/src/core/CoreNode.ts +895 -599
  313. package/src/core/CoreShaderManager.ts +5 -10
  314. package/src/core/CoreTextNode.ts +422 -286
  315. package/src/core/CoreTextureManager.ts +110 -130
  316. package/src/core/Stage.ts +397 -195
  317. package/src/core/TextureError.ts +46 -0
  318. package/src/core/TextureMemoryManager.ts +164 -141
  319. package/src/core/animations/CoreAnimation.ts +15 -9
  320. package/src/core/animations/CoreAnimationController.ts +13 -4
  321. package/src/core/lib/ImageWorker.ts +43 -12
  322. package/src/core/lib/WebGlContextWrapper.ts +127 -79
  323. package/src/core/lib/collectionUtils.ts +118 -0
  324. package/src/core/lib/colorCache.ts +20 -0
  325. package/src/core/{renderers/canvas/internal/ColorUtils.ts → lib/colorParser.ts} +2 -2
  326. package/src/core/lib/textureCompression.ts +433 -75
  327. package/src/core/lib/utils.ts +54 -25
  328. package/src/core/lib/validateImageBitmap.ts +17 -6
  329. package/src/core/platforms/Platform.ts +83 -0
  330. package/src/core/platforms/web/WebPlatform.ts +132 -0
  331. package/src/core/renderers/CoreContextTexture.ts +2 -1
  332. package/src/core/renderers/CoreRenderer.ts +5 -32
  333. package/src/core/renderers/CoreShaderNode.ts +38 -3
  334. package/src/core/renderers/canvas/CanvasRenderer.ts +84 -126
  335. package/src/core/renderers/canvas/CanvasShaderNode.ts +4 -8
  336. package/src/core/renderers/canvas/CanvasTexture.ts +22 -18
  337. package/src/core/renderers/webgl/SdfRenderOp.ts +105 -0
  338. package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +18 -15
  339. package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +50 -5
  340. package/src/core/renderers/webgl/WebGlCtxTexture.ts +134 -84
  341. package/src/core/renderers/webgl/WebGlRenderer.ts +203 -190
  342. package/src/core/renderers/webgl/WebGlShaderNode.ts +4 -11
  343. package/src/core/renderers/webgl/WebGlShaderProgram.ts +101 -53
  344. package/src/core/shaders/canvas/Border.ts +88 -34
  345. package/src/core/shaders/canvas/HolePunch.ts +5 -11
  346. package/src/core/shaders/canvas/LinearGradient.ts +14 -10
  347. package/src/core/shaders/canvas/RadialGradient.ts +24 -41
  348. package/src/core/shaders/canvas/Rounded.ts +7 -7
  349. package/src/core/shaders/canvas/RoundedWithBorder.ts +77 -23
  350. package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +84 -36
  351. package/src/core/shaders/canvas/RoundedWithShadow.ts +15 -13
  352. package/src/core/shaders/canvas/Shadow.ts +7 -5
  353. package/src/core/shaders/canvas/utils/render.ts +45 -36
  354. package/src/core/shaders/templates/BorderTemplate.ts +42 -12
  355. package/src/core/shaders/templates/HolePunchTemplate.ts +5 -5
  356. package/src/core/shaders/templates/RadialGradientTemplate.ts +10 -8
  357. package/src/core/shaders/templates/RoundedTemplate.ts +1 -1
  358. package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +1 -1
  359. package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +1 -1
  360. package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +1 -1
  361. package/src/core/shaders/templates/ShadowTemplate.ts +1 -1
  362. package/src/core/shaders/{templates/shaderUtils.ts → utils.ts} +2 -3
  363. package/src/core/shaders/webgl/Border.ts +116 -39
  364. package/src/core/shaders/webgl/Default.ts +6 -7
  365. package/src/core/shaders/webgl/HolePunch.ts +4 -7
  366. package/src/core/shaders/webgl/LinearGradient.ts +33 -8
  367. package/src/core/shaders/webgl/RadialGradient.ts +58 -34
  368. package/src/core/shaders/webgl/Rounded.ts +4 -6
  369. package/src/core/shaders/webgl/RoundedWithBorder.ts +154 -46
  370. package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +159 -52
  371. package/src/core/shaders/webgl/RoundedWithShadow.ts +6 -8
  372. package/src/core/shaders/webgl/SdfShader.ts +7 -19
  373. package/src/core/shaders/webgl/Shadow.ts +12 -6
  374. package/src/core/text-rendering/CanvasFontHandler.ts +304 -0
  375. package/src/core/text-rendering/CanvasTextRenderer.ts +255 -0
  376. package/src/core/text-rendering/SdfFontHandler.ts +591 -0
  377. package/src/core/text-rendering/SdfTextRenderer.ts +408 -0
  378. package/src/core/text-rendering/TextLayoutEngine.ts +672 -0
  379. package/src/core/text-rendering/TextRenderer.ts +444 -0
  380. package/src/core/text-rendering/Utils.ts +99 -0
  381. package/src/core/text-rendering/tests/TextLayoutEngine.test.ts +453 -0
  382. package/src/core/textures/ColorTexture.ts +7 -5
  383. package/src/core/textures/ImageTexture.ts +78 -66
  384. package/src/core/textures/NoiseTexture.ts +14 -12
  385. package/src/core/textures/RenderTexture.ts +18 -16
  386. package/src/core/textures/SubTexture.ts +25 -46
  387. package/src/core/textures/Texture.ts +207 -24
  388. package/src/core/utils.ts +9 -7
  389. package/src/main-api/INode.ts +4 -3
  390. package/src/main-api/Inspector.ts +577 -36
  391. package/src/main-api/Renderer.ts +518 -139
  392. package/src/utils.ts +10 -10
  393. package/dist/exports/core-api.d.ts +0 -74
  394. package/dist/exports/core-api.js +0 -96
  395. package/dist/exports/core-api.js.map +0 -1
  396. package/dist/exports/main-api.d.ts +0 -30
  397. package/dist/exports/main-api.js +0 -45
  398. package/dist/exports/main-api.js.map +0 -1
  399. package/dist/src/core/CoreExtension.d.ts +0 -12
  400. package/dist/src/core/CoreExtension.js +0 -29
  401. package/dist/src/core/CoreExtension.js.map +0 -1
  402. package/dist/src/core/CoreStuff.d.ts +0 -1
  403. package/dist/src/core/CoreStuff.js +0 -138
  404. package/dist/src/core/CoreStuff.js.map +0 -1
  405. package/dist/src/core/CoreTexturizer.d.ts +0 -14
  406. package/dist/src/core/CoreTexturizer.js +0 -47
  407. package/dist/src/core/CoreTexturizer.js.map +0 -1
  408. package/dist/src/core/LngNode.d.ts +0 -736
  409. package/dist/src/core/LngNode.js +0 -1174
  410. package/dist/src/core/LngNode.js.map +0 -1
  411. package/dist/src/core/Matrix2DContext.d.ts +0 -15
  412. package/dist/src/core/Matrix2DContext.js +0 -45
  413. package/dist/src/core/Matrix2DContext.js.map +0 -1
  414. package/dist/src/core/ShaderNode.d.ts +0 -10
  415. package/dist/src/core/ShaderNode.js +0 -30
  416. package/dist/src/core/ShaderNode.js.map +0 -1
  417. package/dist/src/core/TextNode.d.ts +0 -103
  418. package/dist/src/core/TextNode.js +0 -331
  419. package/dist/src/core/TextNode.js.map +0 -1
  420. package/dist/src/core/lib/Coords.d.ts +0 -14
  421. package/dist/src/core/lib/Coords.js +0 -55
  422. package/dist/src/core/lib/Coords.js.map +0 -1
  423. package/dist/src/core/lib/glm/common.d.ts +0 -162
  424. package/dist/src/core/lib/glm/common.js +0 -81
  425. package/dist/src/core/lib/glm/common.js.map +0 -1
  426. package/dist/src/core/lib/glm/index.d.ts +0 -11
  427. package/dist/src/core/lib/glm/index.js +0 -30
  428. package/dist/src/core/lib/glm/index.js.map +0 -1
  429. package/dist/src/core/lib/glm/mat2.d.ts +0 -219
  430. package/dist/src/core/lib/glm/mat2.js +0 -396
  431. package/dist/src/core/lib/glm/mat2.js.map +0 -1
  432. package/dist/src/core/lib/glm/mat2d.d.ts +0 -237
  433. package/dist/src/core/lib/glm/mat2d.js +0 -442
  434. package/dist/src/core/lib/glm/mat2d.js.map +0 -1
  435. package/dist/src/core/lib/glm/mat3.d.ts +0 -283
  436. package/dist/src/core/lib/glm/mat3.js +0 -680
  437. package/dist/src/core/lib/glm/mat3.js.map +0 -1
  438. package/dist/src/core/lib/glm/mat4.d.ts +0 -550
  439. package/dist/src/core/lib/glm/mat4.js +0 -1802
  440. package/dist/src/core/lib/glm/mat4.js.map +0 -1
  441. package/dist/src/core/lib/glm/quat.d.ts +0 -363
  442. package/dist/src/core/lib/glm/quat.js +0 -693
  443. package/dist/src/core/lib/glm/quat.js.map +0 -1
  444. package/dist/src/core/lib/glm/quat2.d.ts +0 -356
  445. package/dist/src/core/lib/glm/quat2.js +0 -754
  446. package/dist/src/core/lib/glm/quat2.js.map +0 -1
  447. package/dist/src/core/lib/glm/vec2.d.ts +0 -365
  448. package/dist/src/core/lib/glm/vec2.js +0 -569
  449. package/dist/src/core/lib/glm/vec2.js.map +0 -1
  450. package/dist/src/core/lib/glm/vec3.d.ts +0 -406
  451. package/dist/src/core/lib/glm/vec3.js +0 -720
  452. package/dist/src/core/lib/glm/vec3.js.map +0 -1
  453. package/dist/src/core/lib/glm/vec4.d.ts +0 -330
  454. package/dist/src/core/lib/glm/vec4.js +0 -608
  455. package/dist/src/core/lib/glm/vec4.js.map +0 -1
  456. package/dist/src/core/renderers/CoreShaderManager.d.ts +0 -19
  457. package/dist/src/core/renderers/CoreShaderManager.js +0 -33
  458. package/dist/src/core/renderers/CoreShaderManager.js.map +0 -1
  459. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.d.ts +0 -27
  460. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js +0 -82
  461. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js.map +0 -1
  462. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.d.ts +0 -11
  463. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js +0 -34
  464. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js.map +0 -1
  465. package/dist/src/core/scene/Scene.d.ts +0 -59
  466. package/dist/src/core/scene/Scene.js +0 -106
  467. package/dist/src/core/scene/Scene.js.map +0 -1
  468. package/dist/src/core/shaders/templates/shaderUtils.js.map +0 -1
  469. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +0 -20
  470. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +0 -55
  471. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +0 -1
  472. package/dist/src/main-api/ICoreDriver.d.ts +0 -27
  473. package/dist/src/main-api/ICoreDriver.js.map +0 -1
  474. package/dist/src/main-api/IRenderDriver.d.ts +0 -20
  475. package/dist/src/main-api/IRenderDriver.js.map +0 -1
  476. package/dist/src/main-api/IShaderController.d.ts +0 -14
  477. package/dist/src/main-api/IShaderController.js +0 -30
  478. package/dist/src/main-api/IShaderController.js.map +0 -1
  479. package/dist/src/main-api/IShaderNode.d.ts +0 -17
  480. package/dist/src/main-api/IShaderNode.js +0 -19
  481. package/dist/src/main-api/IShaderNode.js.map +0 -1
  482. package/dist/src/main-api/RendererMain.d.ts +0 -375
  483. package/dist/src/main-api/RendererMain.js +0 -365
  484. package/dist/src/main-api/RendererMain.js.map +0 -1
  485. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.d.ts +0 -9
  486. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js +0 -38
  487. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js.map +0 -1
  488. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.d.ts +0 -56
  489. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js +0 -101
  490. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +0 -1
  491. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.d.ts +0 -32
  492. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js +0 -28
  493. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js.map +0 -1
  494. package/dist/src/render-drivers/main/MainCoreDriver.d.ts +0 -24
  495. package/dist/src/render-drivers/main/MainCoreDriver.js +0 -118
  496. package/dist/src/render-drivers/main/MainCoreDriver.js.map +0 -1
  497. package/dist/src/render-drivers/main/MainOnlyNode.d.ts +0 -99
  498. package/dist/src/render-drivers/main/MainOnlyNode.js +0 -396
  499. package/dist/src/render-drivers/main/MainOnlyNode.js.map +0 -1
  500. package/dist/src/render-drivers/main/MainOnlyShaderController.d.ts +0 -6
  501. package/dist/src/render-drivers/main/MainOnlyShaderController.js +0 -15
  502. package/dist/src/render-drivers/main/MainOnlyShaderController.js.map +0 -1
  503. package/dist/src/render-drivers/main/MainOnlyShaderNode.d.ts +0 -7
  504. package/dist/src/render-drivers/main/MainOnlyShaderNode.js +0 -34
  505. package/dist/src/render-drivers/main/MainOnlyShaderNode.js.map +0 -1
  506. package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +0 -47
  507. package/dist/src/render-drivers/main/MainOnlyTextNode.js +0 -205
  508. package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +0 -1
  509. package/dist/src/render-drivers/main/MainRenderDriver.d.ts +0 -17
  510. package/dist/src/render-drivers/main/MainRenderDriver.js +0 -88
  511. package/dist/src/render-drivers/main/MainRenderDriver.js.map +0 -1
  512. package/dist/src/render-drivers/threadx/NodeStruct.d.ts +0 -90
  513. package/dist/src/render-drivers/threadx/NodeStruct.js +0 -281
  514. package/dist/src/render-drivers/threadx/NodeStruct.js.map +0 -1
  515. package/dist/src/render-drivers/threadx/SharedNode.d.ts +0 -39
  516. package/dist/src/render-drivers/threadx/SharedNode.js +0 -60
  517. package/dist/src/render-drivers/threadx/SharedNode.js.map +0 -1
  518. package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +0 -44
  519. package/dist/src/render-drivers/threadx/TextNodeStruct.js +0 -201
  520. package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +0 -1
  521. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +0 -28
  522. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +0 -234
  523. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +0 -1
  524. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +0 -20
  525. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +0 -84
  526. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +0 -1
  527. package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +0 -44
  528. package/dist/src/render-drivers/threadx/ThreadXMainNode.js +0 -154
  529. package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +0 -1
  530. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.d.ts +0 -6
  531. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js +0 -16
  532. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js.map +0 -1
  533. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.d.ts +0 -7
  534. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js +0 -15
  535. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js.map +0 -1
  536. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +0 -28
  537. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +0 -55
  538. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +0 -1
  539. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.d.ts +0 -21
  540. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js +0 -198
  541. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js.map +0 -1
  542. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +0 -70
  543. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +0 -32
  544. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +0 -1
  545. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +0 -19
  546. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +0 -177
  547. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +0 -1
  548. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +0 -27
  549. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +0 -108
  550. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +0 -1
  551. package/dist/src/render-drivers/threadx/worker/renderer.d.ts +0 -1
  552. package/dist/src/render-drivers/threadx/worker/renderer.js +0 -145
  553. package/dist/src/render-drivers/threadx/worker/renderer.js.map +0 -1
  554. package/dist/src/render-drivers/utils.d.ts +0 -12
  555. package/dist/src/render-drivers/utils.js +0 -69
  556. package/dist/src/render-drivers/utils.js.map +0 -1
  557. package/scripts/please-use-pnpm.js +0 -13
  558. package/src/core/platform.ts +0 -64
  559. package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +0 -220
  560. package/src/core/renderers/webgl/WebGlRenderOp.ts +0 -161
  561. package/src/core/text-rendering/TextRenderingUtils.ts +0 -36
  562. package/src/core/text-rendering/TextTextureRendererUtils.ts +0 -263
  563. package/src/core/text-rendering/TrFontManager.ts +0 -183
  564. package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +0 -176
  565. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +0 -139
  566. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +0 -173
  567. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +0 -171
  568. package/src/core/text-rendering/font-face-types/TrFontFace.ts +0 -187
  569. package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +0 -94
  570. package/src/core/text-rendering/font-face-types/utils.ts +0 -39
  571. package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +0 -509
  572. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +0 -815
  573. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +0 -840
  574. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +0 -48
  575. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +0 -66
  576. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +0 -52
  577. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +0 -32
  578. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +0 -117
  579. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +0 -133
  580. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +0 -38
  581. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +0 -408
  582. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +0 -49
  583. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +0 -52
  584. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +0 -205
  585. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +0 -93
  586. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +0 -40
  587. package/src/core/text-rendering/renderers/TextRenderer.ts +0 -550
@@ -5,9 +5,61 @@ import {
5
5
  } from '../core/CoreNode.js';
6
6
  import { type RendererMainSettings } from './Renderer.js';
7
7
  import type { AnimationSettings } from '../core/animations/CoreAnimation.js';
8
- import type { IAnimationController } from '../common/IAnimationController.js';
8
+ import type {
9
+ IAnimationController,
10
+ AnimationControllerState,
11
+ } from '../common/IAnimationController.js';
9
12
  import { isProductionEnvironment } from '../utils.js';
10
- import type { CoreTextNode, CoreTextNodeProps } from '../core/CoreTextNode.js';
13
+ import { CoreTextNode, type CoreTextNodeProps } from '../core/CoreTextNode.js';
14
+
15
+ /**
16
+ * Inspector Options
17
+ *
18
+ * Configuration options for the Inspector's performance monitoring features.
19
+ */
20
+ export interface InspectorOptions {
21
+ /**
22
+ * Enable performance monitoring for setter calls
23
+ *
24
+ * @defaultValue true
25
+ */
26
+ enablePerformanceMonitoring: boolean;
27
+
28
+ /**
29
+ * Threshold for excessive setter calls before logging a warning
30
+ *
31
+ * @defaultValue 100
32
+ */
33
+ excessiveCallThreshold: number;
34
+
35
+ /**
36
+ * Time interval in milliseconds to reset the setter call counters
37
+ *
38
+ * @defaultValue 5000
39
+ */
40
+ resetInterval: number;
41
+
42
+ /**
43
+ * Enable animation monitoring and statistics tracking
44
+ *
45
+ * @defaultValue true
46
+ */
47
+ enableAnimationMonitoring: boolean;
48
+
49
+ /**
50
+ * Maximum number of animations to keep in history for statistics
51
+ *
52
+ * @defaultValue 1000
53
+ */
54
+ maxAnimationHistory: number;
55
+
56
+ /**
57
+ * Automatically print animation statistics every X seconds (0 to disable)
58
+ *
59
+ * @defaultValue 0
60
+ */
61
+ animationStatsInterval: number;
62
+ }
11
63
 
12
64
  /**
13
65
  * Inspector
@@ -48,16 +100,16 @@ const stylePropertyMap: {
48
100
  y: (y) => {
49
101
  return { prop: 'top', value: `${y}px` };
50
102
  },
51
- width: (w) => {
103
+ w: (w) => {
52
104
  if (w === 0) {
53
- return null;
105
+ return { prop: 'width', value: 'auto' };
54
106
  }
55
107
 
56
108
  return { prop: 'width', value: `${w}px` };
57
109
  },
58
- height: (h) => {
110
+ h: (h) => {
59
111
  if (h === 0) {
60
- return null;
112
+ return { prop: 'height', value: 'auto' };
61
113
  }
62
114
 
63
115
  return { prop: 'height', value: `${h}px` };
@@ -79,8 +131,6 @@ const stylePropertyMap: {
79
131
  zIndex: () => 'z-index',
80
132
  fontFamily: () => 'font-family',
81
133
  fontStyle: () => 'font-style',
82
- fontWeight: () => 'font-weight',
83
- fontStretch: () => 'font-stretch',
84
134
  letterSpacing: () => 'letter-spacing',
85
135
  textAlign: () => 'text-align',
86
136
  overflowSuffix: () => 'overflow-suffix',
@@ -161,23 +211,86 @@ const knownProperties = new Set<string>([
161
211
  'src',
162
212
  'parent',
163
213
  'data',
214
+ 'text',
164
215
  ]);
165
216
 
166
217
  export class Inspector {
167
218
  private root: HTMLElement | null = null;
168
219
  private canvas: HTMLCanvasElement | null = null;
220
+ private mutationObserver: MutationObserver = new MutationObserver(() => {});
221
+ private resizeObserver: ResizeObserver = new ResizeObserver(() => {});
169
222
  private height = 1080;
170
223
  private width = 1920;
171
224
  private scaleX = 1;
172
225
  private scaleY = 1;
173
226
 
227
+ // Performance monitoring for frequent setter calls
228
+ private static setterCallCount = new Map<
229
+ string,
230
+ { count: number; lastReset: number; nodeId: number }
231
+ >();
232
+
233
+ // Animation monitoring structures
234
+ private static activeAnimations = new Map<
235
+ string,
236
+ {
237
+ nodeId: number;
238
+ animationId: string;
239
+ startTime: number;
240
+ props: CoreNodeAnimateProps;
241
+ settings: AnimationSettings;
242
+ controller: IAnimationController;
243
+ state: AnimationControllerState;
244
+ }
245
+ >();
246
+
247
+ private static animationHistory: Array<{
248
+ nodeId: number;
249
+ animationId: string;
250
+ startTime: number;
251
+ endTime: number;
252
+ duration: number;
253
+ actualDuration: number;
254
+ props: CoreNodeAnimateProps;
255
+ settings: AnimationSettings;
256
+ completionType: 'finished' | 'stopped' | 'cancelled';
257
+ }> = [];
258
+
259
+ // Performance monitoring settings (configured via constructor)
260
+ private performanceSettings: InspectorOptions = {
261
+ enablePerformanceMonitoring: false,
262
+ excessiveCallThreshold: 100,
263
+ resetInterval: 5000,
264
+ enableAnimationMonitoring: false,
265
+ maxAnimationHistory: 1000,
266
+ animationStatsInterval: 0,
267
+ };
268
+
269
+ // Animation stats printing timer
270
+ private animationStatsTimer: number | null = null;
271
+
174
272
  constructor(canvas: HTMLCanvasElement, settings: RendererMainSettings) {
175
- if (isProductionEnvironment()) return;
273
+ if (isProductionEnvironment === true) return;
176
274
 
177
275
  if (!settings) {
178
276
  throw new Error('settings is required');
179
277
  }
180
278
 
279
+ // Initialize performance monitoring settings with defaults
280
+ this.performanceSettings = {
281
+ enablePerformanceMonitoring:
282
+ settings.inspectorOptions?.enablePerformanceMonitoring ?? false,
283
+ excessiveCallThreshold:
284
+ settings.inspectorOptions?.excessiveCallThreshold ?? 100,
285
+ resetInterval: settings.inspectorOptions?.resetInterval ?? 5000,
286
+ enableAnimationMonitoring:
287
+ settings.inspectorOptions?.enableAnimationMonitoring ?? false,
288
+ maxAnimationHistory:
289
+ settings.inspectorOptions?.maxAnimationHistory ?? 1000,
290
+ animationStatsInterval:
291
+ settings.inspectorOptions?.animationStatsInterval ?? 0,
292
+ };
293
+
181
294
  // calc dimensions based on the devicePixelRatio
182
295
  this.height = Math.ceil(
183
296
  settings.appHeight ?? 1080 / (settings.deviceLogicalPixelRatio ?? 1),
@@ -196,25 +309,395 @@ export class Inspector {
196
309
  document.body.appendChild(this.root);
197
310
 
198
311
  //listen for changes on canvas
199
- const mutationObserver = new MutationObserver(
312
+ this.mutationObserver = new MutationObserver(
200
313
  this.setRootPosition.bind(this),
201
314
  );
202
- mutationObserver.observe(canvas, {
315
+ this.mutationObserver.observe(canvas, {
203
316
  attributes: true,
204
317
  childList: false,
205
318
  subtree: false,
206
319
  });
207
320
 
208
321
  // Create a ResizeObserver to watch for changes in the element's size
209
- const resizeObserver = new ResizeObserver(this.setRootPosition.bind(this));
210
- resizeObserver.observe(canvas);
322
+ this.resizeObserver = new ResizeObserver(this.setRootPosition.bind(this));
323
+ this.resizeObserver.observe(canvas);
211
324
 
212
325
  //listen for changes on window
213
326
  window.addEventListener('resize', this.setRootPosition.bind(this));
214
327
 
328
+ // Start animation stats timer if enabled
329
+ this.startAnimationStatsTimer();
330
+
215
331
  console.warn('Inspector is enabled, this will impact performance');
216
332
  }
217
333
 
334
+ /**
335
+ * Track setter calls for performance monitoring
336
+ * Only active when Inspector is loaded
337
+ */
338
+ private trackSetterCall(nodeId: number, setterName: string): void {
339
+ if (!this.performanceSettings.enablePerformanceMonitoring) {
340
+ return;
341
+ }
342
+
343
+ const key = `${nodeId}_${setterName}`;
344
+ const now = Date.now();
345
+ const existing = Inspector.setterCallCount.get(key);
346
+
347
+ if (!existing) {
348
+ Inspector.setterCallCount.set(key, { count: 1, lastReset: now, nodeId });
349
+ return;
350
+ }
351
+
352
+ // Reset counter if enough time has passed
353
+ if (now - existing.lastReset > this.performanceSettings.resetInterval) {
354
+ existing.count = 1;
355
+ existing.lastReset = now;
356
+ return;
357
+ }
358
+
359
+ existing.count++;
360
+
361
+ // Log if threshold exceeded
362
+ if (existing.count === this.performanceSettings.excessiveCallThreshold) {
363
+ console.warn(
364
+ `🚨 Inspector Performance Warning: Setter '${setterName}' called ${existing.count} times in ${this.performanceSettings.resetInterval}ms on node ${nodeId}`,
365
+ );
366
+ } else if (
367
+ existing.count > this.performanceSettings.excessiveCallThreshold &&
368
+ existing.count % 50 === 0
369
+ ) {
370
+ console.warn(
371
+ `🚨 Inspector Performance Warning: Setter '${setterName}' called ${existing.count} times in ${this.performanceSettings.resetInterval}ms on node ${nodeId} (continuing...)`,
372
+ );
373
+ }
374
+ }
375
+
376
+ /**
377
+ * Get current performance monitoring statistics
378
+ */
379
+ public static getPerformanceStats(): Array<{
380
+ nodeId: number;
381
+ setterName: string;
382
+ count: number;
383
+ timeWindow: number;
384
+ }> {
385
+ const stats: Array<{
386
+ nodeId: number;
387
+ setterName: string;
388
+ count: number;
389
+ timeWindow: number;
390
+ }> = [];
391
+ const now = Date.now();
392
+
393
+ Inspector.setterCallCount.forEach((data, key) => {
394
+ const parts = key.split('_');
395
+ const nodeIdStr = parts[0];
396
+ const setterName = parts[1];
397
+
398
+ if (nodeIdStr && setterName) {
399
+ const timeWindow = now - data.lastReset;
400
+
401
+ stats.push({
402
+ nodeId: parseInt(nodeIdStr, 10),
403
+ setterName,
404
+ count: data.count,
405
+ timeWindow,
406
+ });
407
+ }
408
+ });
409
+
410
+ return stats.sort((a, b) => b.count - a.count);
411
+ }
412
+
413
+ /**
414
+ * Clear performance monitoring statistics
415
+ */
416
+ public static clearPerformanceStats(): void {
417
+ Inspector.setterCallCount.clear();
418
+ }
419
+
420
+ /**
421
+ * Generate a unique animation ID
422
+ */
423
+ private static generateAnimationId(): string {
424
+ return `anim_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`;
425
+ }
426
+
427
+ /**
428
+ * Wrap animation controller with monitoring capabilities
429
+ */
430
+ private wrapAnimationController(
431
+ controller: IAnimationController,
432
+ nodeId: number,
433
+ props: CoreNodeAnimateProps,
434
+ settings: AnimationSettings,
435
+ div: HTMLElement,
436
+ ): IAnimationController {
437
+ if (!this.performanceSettings.enableAnimationMonitoring) {
438
+ // Just add the basic DOM animation without tracking
439
+ const originalStart = controller.start.bind(controller);
440
+ controller.start = () => {
441
+ this.animateNode(div, props, settings);
442
+ return originalStart();
443
+ };
444
+ return controller;
445
+ }
446
+
447
+ const animationId = Inspector.generateAnimationId();
448
+
449
+ // Create wrapper controller
450
+ const wrappedController: IAnimationController = {
451
+ start: () => {
452
+ this.trackAnimationStart(
453
+ animationId,
454
+ nodeId,
455
+ props,
456
+ settings,
457
+ controller,
458
+ );
459
+ this.animateNode(div, props, settings);
460
+ return controller.start();
461
+ },
462
+
463
+ stop: () => {
464
+ this.trackAnimationEnd(animationId, 'stopped');
465
+ return controller.stop();
466
+ },
467
+
468
+ pause: () => {
469
+ this.updateAnimationState(animationId, 'paused');
470
+ return controller.pause();
471
+ },
472
+
473
+ restore: () => {
474
+ this.trackAnimationEnd(animationId, 'cancelled');
475
+ return controller.restore();
476
+ },
477
+
478
+ waitUntilStopped: () => {
479
+ return controller.waitUntilStopped().then(() => {
480
+ this.trackAnimationEnd(animationId, 'finished');
481
+ });
482
+ },
483
+
484
+ get state() {
485
+ return controller.state;
486
+ },
487
+
488
+ // Event emitter methods
489
+ on: controller.on.bind(controller),
490
+ off: controller.off.bind(controller),
491
+ once: controller.once.bind(controller),
492
+ emit: controller.emit.bind(controller),
493
+ };
494
+
495
+ // Track animation events
496
+ controller.on('animating', () => {
497
+ this.updateAnimationState(animationId, 'running');
498
+ });
499
+
500
+ controller.on('stopped', () => {
501
+ this.trackAnimationEnd(animationId, 'finished');
502
+ });
503
+
504
+ return wrappedController;
505
+ }
506
+
507
+ /**
508
+ * Track animation start
509
+ */
510
+ private trackAnimationStart(
511
+ animationId: string,
512
+ nodeId: number,
513
+ props: CoreNodeAnimateProps,
514
+ settings: AnimationSettings,
515
+ controller: IAnimationController,
516
+ ): void {
517
+ const startTime = Date.now();
518
+
519
+ Inspector.activeAnimations.set(animationId, {
520
+ nodeId,
521
+ animationId,
522
+ startTime,
523
+ props,
524
+ settings,
525
+ controller,
526
+ state: 'scheduled',
527
+ });
528
+ }
529
+
530
+ /**
531
+ * Update animation state
532
+ */
533
+ private updateAnimationState(
534
+ animationId: string,
535
+ state: AnimationControllerState,
536
+ ): void {
537
+ const animation = Inspector.activeAnimations.get(animationId);
538
+ if (animation) {
539
+ animation.state = state;
540
+ }
541
+ }
542
+
543
+ /**
544
+ * Track animation end
545
+ */
546
+ private trackAnimationEnd(
547
+ animationId: string,
548
+ completionType: 'finished' | 'stopped' | 'cancelled',
549
+ ): void {
550
+ const animation = Inspector.activeAnimations.get(animationId);
551
+ if (!animation) return;
552
+
553
+ const endTime = Date.now();
554
+ const actualDuration = endTime - animation.startTime;
555
+ const expectedDuration = animation.settings.duration || 1000;
556
+
557
+ // Move to history
558
+ Inspector.animationHistory.unshift({
559
+ nodeId: animation.nodeId,
560
+ animationId: animation.animationId,
561
+ startTime: animation.startTime,
562
+ endTime,
563
+ duration: expectedDuration,
564
+ actualDuration,
565
+ props: animation.props,
566
+ settings: animation.settings,
567
+ completionType,
568
+ });
569
+
570
+ // Limit history size for performance
571
+ if (
572
+ Inspector.animationHistory.length >
573
+ this.performanceSettings.maxAnimationHistory
574
+ ) {
575
+ Inspector.animationHistory.splice(
576
+ this.performanceSettings.maxAnimationHistory,
577
+ );
578
+ }
579
+
580
+ // Remove from active animations
581
+ Inspector.activeAnimations.delete(animationId);
582
+ }
583
+
584
+ /**
585
+ * Get currently active animations
586
+ */
587
+ public static getActiveAnimations(): Array<{
588
+ nodeId: number;
589
+ animationId: string;
590
+ startTime: number;
591
+ duration: number;
592
+ elapsedTime: number;
593
+ props: CoreNodeAnimateProps;
594
+ settings: AnimationSettings;
595
+ state: AnimationControllerState;
596
+ }> {
597
+ const now = Date.now();
598
+ const activeAnimations: Array<{
599
+ nodeId: number;
600
+ animationId: string;
601
+ startTime: number;
602
+ duration: number;
603
+ elapsedTime: number;
604
+ props: CoreNodeAnimateProps;
605
+ settings: AnimationSettings;
606
+ state: AnimationControllerState;
607
+ }> = [];
608
+
609
+ Inspector.activeAnimations.forEach((animation) => {
610
+ activeAnimations.push({
611
+ nodeId: animation.nodeId,
612
+ animationId: animation.animationId,
613
+ startTime: animation.startTime,
614
+ duration: animation.settings.duration || 1000,
615
+ elapsedTime: now - animation.startTime,
616
+ props: animation.props,
617
+ settings: animation.settings,
618
+ state: animation.state,
619
+ });
620
+ });
621
+
622
+ return activeAnimations.sort((a, b) => b.startTime - a.startTime);
623
+ }
624
+
625
+ /**
626
+ * Get animation statistics
627
+ */
628
+ public static getAnimationStats(): {
629
+ totalAnimations: number;
630
+ activeCount: number;
631
+ averageDuration: number;
632
+ } {
633
+ const totalAnimations = Inspector.animationHistory.length;
634
+ const activeCount = Inspector.activeAnimations.size;
635
+
636
+ // Calculate average duration from finished animations only
637
+ const finishedAnimations = Inspector.animationHistory.filter(
638
+ (anim) => anim.completionType === 'finished',
639
+ );
640
+
641
+ const averageDuration =
642
+ finishedAnimations.length > 0
643
+ ? finishedAnimations.reduce(
644
+ (sum, anim) => sum + anim.actualDuration,
645
+ 0,
646
+ ) / finishedAnimations.length
647
+ : 0;
648
+
649
+ return {
650
+ totalAnimations,
651
+ activeCount,
652
+ averageDuration,
653
+ };
654
+ }
655
+
656
+ /**
657
+ * Clear animation monitoring data
658
+ */
659
+ public static clearAnimationStats(): void {
660
+ Inspector.activeAnimations.clear();
661
+ Inspector.animationHistory.length = 0;
662
+ }
663
+
664
+ /**
665
+ * Start the animation stats timer if enabled
666
+ */
667
+ private startAnimationStatsTimer(): void {
668
+ console.log(
669
+ `Starting animation stats timer with interval: ${this.performanceSettings.animationStatsInterval} seconds`,
670
+ );
671
+
672
+ if (this.performanceSettings.animationStatsInterval > 0) {
673
+ this.animationStatsTimer = setInterval(() => {
674
+ this.printAnimationStats();
675
+ }, this.performanceSettings.animationStatsInterval * 1000) as unknown as number;
676
+ }
677
+ }
678
+
679
+ /**
680
+ * Stop the animation stats timer
681
+ */
682
+ private stopAnimationStatsTimer(): void {
683
+ if (this.animationStatsTimer) {
684
+ clearInterval(this.animationStatsTimer);
685
+ this.animationStatsTimer = null;
686
+ }
687
+ }
688
+
689
+ /**
690
+ * Print current animation statistics to console
691
+ */
692
+ private printAnimationStats(): void {
693
+ const stats = Inspector.getAnimationStats();
694
+
695
+ console.log(
696
+ `🎬 Animation Stats: ${stats.activeCount} active, ${
697
+ stats.totalAnimations
698
+ } completed, ${Math.round(stats.averageDuration)}ms avg duration`,
699
+ );
700
+ }
218
701
  setRootPosition() {
219
702
  if (this.root === null || this.canvas === null) {
220
703
  return;
@@ -259,6 +742,24 @@ export class Inspector {
259
742
  return div;
260
743
  }
261
744
 
745
+ createNodes(node: CoreNode): boolean {
746
+ if (this.root === null) {
747
+ return false;
748
+ }
749
+
750
+ const div = this.root.querySelector(`[id="${node.id}"]`);
751
+ if (div === null && node instanceof CoreTextNode) {
752
+ this.createTextNode(node);
753
+ } else if (div === null && node instanceof CoreNode) {
754
+ this.createNode(node);
755
+ }
756
+
757
+ for (const child of node.children) {
758
+ this.createNodes(child);
759
+ }
760
+ return true;
761
+ }
762
+
262
763
  createNode(node: CoreNode): CoreNode {
263
764
  const div = this.createDiv(node.id, node.props);
264
765
  (div as HTMLElement & { node: CoreNode }).node = node;
@@ -272,10 +773,13 @@ export class Inspector {
272
773
  return this.createProxy(node, div);
273
774
  }
274
775
 
275
- createTextNode(node: CoreNode): CoreTextNode {
276
- const div = this.createDiv(node.id, node.props);
776
+ createTextNode(node: CoreTextNode): CoreTextNode {
777
+ // eslint-disable-next-line
778
+ // @ts-ignore - textProps is a private property and keeping it that way
779
+ // but we need it from the inspector to set the initial properties on the div element
780
+ const div = this.createDiv(node.id, node.textProps);
277
781
  (div as HTMLElement & { node: CoreNode }).node = node;
278
- (node as CoreNode & { div: HTMLElement }).div = div;
782
+ (node as CoreTextNode & { div: HTMLElement }).div = div;
279
783
 
280
784
  return this.createProxy(node, div) as CoreTextNode;
281
785
  }
@@ -304,6 +808,9 @@ export class Inspector {
304
808
  return originalProp?.get?.call(node);
305
809
  },
306
810
  set: (value) => {
811
+ // Track setter call for performance monitoring
812
+ this.trackSetterCall(node.id, property);
813
+
307
814
  originalProp?.set?.call(node, value);
308
815
  this.updateNodeProperty(
309
816
  div,
@@ -323,6 +830,7 @@ export class Inspector {
323
830
  this.destroyNode(node.id);
324
831
  originalDestroy.call(node);
325
832
  },
833
+ configurable: true,
326
834
  });
327
835
 
328
836
  const originalAnimate = node.animate;
@@ -333,21 +841,39 @@ export class Inspector {
333
841
  ): IAnimationController => {
334
842
  const animationController = originalAnimate.call(node, props, settings);
335
843
 
336
- const originalStart =
337
- animationController.start.bind(animationController);
338
- animationController.start = () => {
339
- this.animateNode(div, props, settings);
340
-
341
- return originalStart();
342
- };
343
-
344
- return animationController;
844
+ // Wrap animation controller with monitoring
845
+ return this.wrapAnimationController(
846
+ animationController,
847
+ node.id,
848
+ props,
849
+ settings,
850
+ div,
851
+ );
345
852
  },
853
+ configurable: true,
346
854
  });
347
855
 
348
856
  return node;
349
857
  }
350
858
 
859
+ public destroy() {
860
+ // Stop animation stats timer
861
+ this.stopAnimationStatsTimer();
862
+
863
+ // Remove DOM observers
864
+ this.mutationObserver.disconnect();
865
+ this.resizeObserver.disconnect();
866
+
867
+ // Remove resize listener
868
+ window.removeEventListener('resize', this.setRootPosition.bind(this));
869
+ if (this.root && this.root.parentNode) {
870
+ this.root.remove();
871
+ }
872
+
873
+ // Clean up animation monitoring data
874
+ Inspector.clearAnimationStats();
875
+ }
876
+
351
877
  destroyNode(id: number) {
352
878
  const div = document.getElementById(id.toString());
353
879
  div?.remove();
@@ -386,9 +912,11 @@ export class Inspector {
386
912
  if (property === 'text') {
387
913
  div.innerHTML = String(value);
388
914
 
389
- // hide text because we can't render SDF fonts
390
- // it would look weird and obstruct the WebGL rendering
391
- div.style.visibility = 'hidden';
915
+ // Keep DOM text invisible without breaking visibility checks
916
+ // Use very low opacity (0.001) instead of 0 so Playwright still detects it
917
+ div.style.opacity = '0.001';
918
+ div.style.pointerEvents = 'none';
919
+ div.style.userSelect = 'none';
392
920
  return;
393
921
  }
394
922
 
@@ -430,14 +958,14 @@ export class Inspector {
430
958
  let value = mappedStyleResponse.value;
431
959
  if (property === 'x') {
432
960
  const mount = props.mountX;
433
- const width = props.width;
961
+ const width = props.w;
434
962
 
435
963
  if (mount) {
436
964
  value = `${parseInt(value) - width * mount}px`;
437
965
  }
438
966
  } else if (property === 'y') {
439
967
  const mount = props.mountY;
440
- const height = props.height;
968
+ const height = props.h;
441
969
 
442
970
  if (mount) {
443
971
  value = `${parseInt(value) - height * mount}px`;
@@ -475,6 +1003,19 @@ export class Inspector {
475
1003
  }
476
1004
  }
477
1005
 
1006
+ updateViewport(
1007
+ width: number,
1008
+ height: number,
1009
+ deviceLogicalPixelRatio: number,
1010
+ ) {
1011
+ this.scaleX = deviceLogicalPixelRatio ?? 1;
1012
+ this.scaleY = deviceLogicalPixelRatio ?? 1;
1013
+
1014
+ this.width = width;
1015
+ this.height = height;
1016
+ this.setRootPosition();
1017
+ }
1018
+
478
1019
  // simple animation handler
479
1020
  animateNode(
480
1021
  div: HTMLElement,
@@ -493,8 +1034,8 @@ export class Inspector {
493
1034
  const {
494
1035
  x,
495
1036
  y,
496
- width,
497
- height,
1037
+ w,
1038
+ h,
498
1039
  alpha = 1,
499
1040
  rotation = 0,
500
1041
  scale = 1,
@@ -506,10 +1047,10 @@ export class Inspector {
506
1047
  // ignoring loops and repeats for now, as that might be a bit too much for the inspector
507
1048
  function animate() {
508
1049
  setTimeout(() => {
509
- div.style.top = `${y - height * mountY}px`;
510
- div.style.left = `${x - width * mountX}px`;
511
- div.style.width = `${width}px`;
512
- div.style.height = `${height}px`;
1050
+ div.style.top = `${y - h * mountY}px`;
1051
+ div.style.left = `${x - w * mountX}px`;
1052
+ div.style.width = `${w}px`;
1053
+ div.style.height = `${h}px`;
513
1054
  div.style.opacity = `${alpha}`;
514
1055
  div.style.rotate = `${rotation}rad`;
515
1056
  div.style.scale = `${scale}`;