@lightningtv/renderer 2.16.1 → 3.2.3

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 (625) hide show
  1. package/NOTICE +4 -0
  2. package/README.md +22 -28
  3. package/dist/exports/canvas-shaders.js +0 -16
  4. package/dist/exports/canvas-shaders.js.map +1 -1
  5. package/dist/exports/canvas.d.ts +8 -2
  6. package/dist/exports/canvas.js +8 -20
  7. package/dist/exports/canvas.js.map +1 -1
  8. package/dist/exports/index.d.ts +18 -13
  9. package/dist/exports/index.js +9 -27
  10. package/dist/exports/index.js.map +1 -1
  11. package/dist/exports/inspector.js +0 -18
  12. package/dist/exports/inspector.js.map +1 -1
  13. package/dist/exports/utils.d.ts +2 -1
  14. package/dist/exports/utils.js +2 -19
  15. package/dist/exports/utils.js.map +1 -1
  16. package/dist/exports/webgl-shaders.js +0 -16
  17. package/dist/exports/webgl-shaders.js.map +1 -1
  18. package/dist/exports/webgl.d.ts +11 -2
  19. package/dist/exports/webgl.js +11 -20
  20. package/dist/exports/webgl.js.map +1 -1
  21. package/dist/src/common/CommonTypes.d.ts +15 -3
  22. package/dist/src/common/CommonTypes.js +0 -18
  23. package/dist/src/common/CommonTypes.js.map +1 -1
  24. package/dist/src/common/EventEmitter.js +0 -18
  25. package/dist/src/common/EventEmitter.js.map +1 -1
  26. package/dist/src/common/IEventEmitter.js +0 -16
  27. package/dist/src/common/IEventEmitter.js.map +1 -1
  28. package/dist/src/core/Autosizer.d.ts +35 -0
  29. package/dist/src/core/Autosizer.js +178 -0
  30. package/dist/src/core/Autosizer.js.map +1 -0
  31. package/dist/src/core/CoreNode.d.ts +138 -105
  32. package/dist/src/core/CoreNode.js +805 -526
  33. package/dist/src/core/CoreNode.js.map +1 -1
  34. package/dist/src/core/CoreShaderManager.d.ts +29 -73
  35. package/dist/src/core/CoreShaderManager.js +92 -97
  36. package/dist/src/core/CoreShaderManager.js.map +1 -1
  37. package/dist/src/core/CoreTextNode.d.ts +75 -87
  38. package/dist/src/core/CoreTextNode.js +380 -258
  39. package/dist/src/core/CoreTextNode.js.map +1 -1
  40. package/dist/src/core/CoreTextureManager.d.ts +18 -3
  41. package/dist/src/core/CoreTextureManager.js +63 -107
  42. package/dist/src/core/CoreTextureManager.js.map +1 -1
  43. package/dist/src/core/Stage.d.ts +82 -55
  44. package/dist/src/core/Stage.js +410 -247
  45. package/dist/src/core/Stage.js.map +1 -1
  46. package/dist/src/core/TextureError.d.ts +11 -0
  47. package/dist/src/core/TextureError.js +37 -0
  48. package/dist/src/core/TextureError.js.map +1 -0
  49. package/dist/src/core/TextureMemoryManager.d.ts +4 -3
  50. package/dist/src/core/TextureMemoryManager.js +103 -135
  51. package/dist/src/core/TextureMemoryManager.js.map +1 -1
  52. package/dist/src/core/animations/AnimationManager.js +0 -18
  53. package/dist/src/core/animations/AnimationManager.js.map +1 -1
  54. package/dist/src/core/animations/CoreAnimation.d.ts +3 -4
  55. package/dist/src/core/animations/CoreAnimation.js +9 -76
  56. package/dist/src/core/animations/CoreAnimation.js.map +1 -1
  57. package/dist/src/core/animations/CoreAnimationController.js +0 -18
  58. package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
  59. package/dist/src/core/lib/ContextSpy.js +0 -18
  60. package/dist/src/core/lib/ContextSpy.js.map +1 -1
  61. package/dist/src/core/lib/ImageWorker.d.ts +2 -2
  62. package/dist/src/core/lib/ImageWorker.js +31 -30
  63. package/dist/src/core/lib/ImageWorker.js.map +1 -1
  64. package/dist/src/core/lib/Matrix3d.d.ts +1 -0
  65. package/dist/src/core/lib/Matrix3d.js +7 -19
  66. package/dist/src/core/lib/Matrix3d.js.map +1 -1
  67. package/dist/src/core/lib/RenderCoords.d.ts +9 -10
  68. package/dist/src/core/lib/RenderCoords.js +27 -55
  69. package/dist/src/core/lib/RenderCoords.js.map +1 -1
  70. package/dist/src/core/lib/WebGlContextWrapper.d.ts +147 -59
  71. package/dist/src/core/lib/WebGlContextWrapper.js +252 -158
  72. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
  73. package/dist/src/core/lib/collectionUtils.d.ts +5 -0
  74. package/dist/src/core/lib/collectionUtils.js +82 -0
  75. package/dist/src/core/lib/collectionUtils.js.map +1 -0
  76. package/dist/src/core/lib/colorCache.d.ts +1 -0
  77. package/dist/src/core/lib/colorCache.js +19 -0
  78. package/dist/src/core/lib/colorCache.js.map +1 -0
  79. package/dist/src/core/{renderers/canvas/internal/ColorUtils.d.ts → lib/colorParser.d.ts} +2 -0
  80. package/dist/src/core/{renderers/canvas/internal/ColorUtils.js → lib/colorParser.js} +15 -19
  81. package/dist/src/core/lib/colorParser.js.map +1 -0
  82. package/dist/src/core/lib/textureCompression.d.ts +14 -2
  83. package/dist/src/core/lib/textureCompression.js +320 -86
  84. package/dist/src/core/lib/textureCompression.js.map +1 -1
  85. package/dist/src/core/lib/textureSvg.js +0 -18
  86. package/dist/src/core/lib/textureSvg.js.map +1 -1
  87. package/dist/src/core/lib/utils.d.ts +8 -2
  88. package/dist/src/core/lib/utils.js +21 -20
  89. package/dist/src/core/lib/utils.js.map +1 -1
  90. package/dist/src/core/lib/validateImageBitmap.d.ts +2 -1
  91. package/dist/src/core/lib/validateImageBitmap.js +4 -4
  92. package/dist/src/core/lib/validateImageBitmap.js.map +1 -1
  93. package/dist/src/core/platforms/Platform.d.ts +5 -0
  94. package/dist/src/core/platforms/Platform.js +0 -18
  95. package/dist/src/core/platforms/Platform.js.map +1 -1
  96. package/dist/src/core/platforms/web/WebPlatform.d.ts +1 -0
  97. package/dist/src/core/platforms/web/WebPlatform.js +39 -7
  98. package/dist/src/core/platforms/web/WebPlatform.js.map +1 -1
  99. package/dist/src/core/renderers/CoreContextTexture.d.ts +1 -0
  100. package/dist/src/core/renderers/CoreContextTexture.js +0 -18
  101. package/dist/src/core/renderers/CoreContextTexture.js.map +1 -1
  102. package/dist/src/core/renderers/CoreRenderOp.js +0 -18
  103. package/dist/src/core/renderers/CoreRenderOp.js.map +1 -1
  104. package/dist/src/core/renderers/CoreRenderer.d.ts +25 -23
  105. package/dist/src/core/renderers/CoreRenderer.js +1 -24
  106. package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
  107. package/dist/src/core/renderers/CoreShaderNode.d.ts +10 -0
  108. package/dist/src/core/renderers/CoreShaderNode.js +19 -2
  109. package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
  110. package/dist/src/core/renderers/CoreShaderProgram.js +0 -18
  111. package/dist/src/core/renderers/CoreShaderProgram.js.map +1 -1
  112. package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +3 -5
  113. package/dist/src/core/renderers/canvas/CanvasRenderer.js +86 -83
  114. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
  115. package/dist/src/core/renderers/canvas/CanvasShaderNode.js +2 -17
  116. package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -1
  117. package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +3 -2
  118. package/dist/src/core/renderers/canvas/CanvasTexture.js +17 -31
  119. package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
  120. package/dist/src/core/renderers/webgl/SdfRenderOp.d.ts +33 -0
  121. package/dist/src/core/renderers/webgl/SdfRenderOp.js +80 -0
  122. package/dist/src/core/renderers/webgl/SdfRenderOp.js.map +1 -0
  123. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +2 -0
  124. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +14 -24
  125. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -1
  126. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +13 -0
  127. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +34 -23
  128. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +1 -1
  129. package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +16 -6
  130. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +102 -67
  131. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
  132. package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +31 -19
  133. package/dist/src/core/renderers/webgl/WebGlRenderer.js +297 -200
  134. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
  135. package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +2 -4
  136. package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -1
  137. package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +5 -5
  138. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +61 -34
  139. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
  140. package/dist/src/core/renderers/webgl/internal/BufferCollection.d.ts +1 -0
  141. package/dist/src/core/renderers/webgl/internal/BufferCollection.js +12 -21
  142. package/dist/src/core/renderers/webgl/internal/BufferCollection.js.map +1 -1
  143. package/dist/src/core/renderers/webgl/internal/RendererUtils.js +0 -18
  144. package/dist/src/core/renderers/webgl/internal/RendererUtils.js.map +1 -1
  145. package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +32 -5
  146. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +50 -18
  147. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -1
  148. package/dist/src/core/renderers/webgl/internal/WebGlUtils.js +0 -18
  149. package/dist/src/core/renderers/webgl/internal/WebGlUtils.js.map +1 -1
  150. package/dist/src/core/shaders/canvas/Border.d.ts +8 -2
  151. package/dist/src/core/shaders/canvas/Border.js +67 -41
  152. package/dist/src/core/shaders/canvas/Border.js.map +1 -1
  153. package/dist/src/core/shaders/canvas/HolePunch.js +3 -19
  154. package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -1
  155. package/dist/src/core/shaders/canvas/LinearGradient.js +2 -18
  156. package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
  157. package/dist/src/core/shaders/canvas/RadialGradient.js +5 -21
  158. package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -1
  159. package/dist/src/core/shaders/canvas/Rounded.js +1 -17
  160. package/dist/src/core/shaders/canvas/Rounded.js.map +1 -1
  161. package/dist/src/core/shaders/canvas/RoundedWithBorder.d.ts +6 -3
  162. package/dist/src/core/shaders/canvas/RoundedWithBorder.js +40 -26
  163. package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
  164. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.d.ts +2 -3
  165. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +43 -23
  166. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
  167. package/dist/src/core/shaders/canvas/RoundedWithShadow.js +4 -18
  168. package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -1
  169. package/dist/src/core/shaders/canvas/Shadow.js +0 -16
  170. package/dist/src/core/shaders/canvas/Shadow.js.map +1 -1
  171. package/dist/src/core/shaders/canvas/utils/render.d.ts +1 -1
  172. package/dist/src/core/shaders/canvas/utils/render.js +31 -34
  173. package/dist/src/core/shaders/canvas/utils/render.js.map +1 -1
  174. package/dist/src/core/shaders/templates/BorderTemplate.d.ts +11 -2
  175. package/dist/src/core/shaders/templates/BorderTemplate.js +30 -26
  176. package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -1
  177. package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +2 -2
  178. package/dist/src/core/shaders/templates/HolePunchTemplate.js +2 -18
  179. package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -1
  180. package/dist/src/core/shaders/templates/LinearGradientTemplate.js +0 -16
  181. package/dist/src/core/shaders/templates/LinearGradientTemplate.js.map +1 -1
  182. package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +8 -6
  183. package/dist/src/core/shaders/templates/RadialGradientTemplate.js +2 -18
  184. package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -1
  185. package/dist/src/core/shaders/templates/RoundedTemplate.js +0 -16
  186. package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -1
  187. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js +0 -16
  188. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js.map +1 -1
  189. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +1 -2
  190. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js +3 -17
  191. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js.map +1 -1
  192. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js +0 -16
  193. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js.map +1 -1
  194. package/dist/src/core/shaders/templates/ShadowTemplate.js +0 -16
  195. package/dist/src/core/shaders/templates/ShadowTemplate.js.map +1 -1
  196. package/dist/src/core/shaders/utils.js +0 -16
  197. package/dist/src/core/shaders/utils.js.map +1 -1
  198. package/dist/src/core/shaders/webgl/Border.js +75 -31
  199. package/dist/src/core/shaders/webgl/Border.js.map +1 -1
  200. package/dist/src/core/shaders/webgl/Default.js +6 -41
  201. package/dist/src/core/shaders/webgl/Default.js.map +1 -1
  202. package/dist/src/core/shaders/webgl/HolePunch.js +2 -18
  203. package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
  204. package/dist/src/core/shaders/webgl/LinearGradient.js +68 -30
  205. package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
  206. package/dist/src/core/shaders/webgl/RadialGradient.js +52 -45
  207. package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
  208. package/dist/src/core/shaders/webgl/Rounded.js +25 -23
  209. package/dist/src/core/shaders/webgl/Rounded.js.map +1 -1
  210. package/dist/src/core/shaders/webgl/RoundedWithBorder.js +110 -48
  211. package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
  212. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +114 -54
  213. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
  214. package/dist/src/core/shaders/webgl/RoundedWithShadow.js +73 -34
  215. package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -1
  216. package/dist/src/core/shaders/webgl/SdfShader.d.ts +0 -2
  217. package/dist/src/core/shaders/webgl/SdfShader.js +7 -35
  218. package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -1
  219. package/dist/src/core/shaders/webgl/Shadow.js +39 -34
  220. package/dist/src/core/shaders/webgl/Shadow.js.map +1 -1
  221. package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +59 -0
  222. package/dist/src/core/text-rendering/CanvasFontHandler.js +206 -0
  223. package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -0
  224. package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +17 -0
  225. package/dist/src/core/text-rendering/CanvasTextRenderer.js +139 -0
  226. package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -0
  227. package/dist/src/core/text-rendering/SdfFontHandler.d.ts +167 -0
  228. package/dist/src/core/text-rendering/SdfFontHandler.js +371 -0
  229. package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -0
  230. package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +18 -0
  231. package/dist/src/core/text-rendering/SdfTextRenderer.js +301 -0
  232. package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -0
  233. package/dist/src/core/text-rendering/TextLayoutEngine.d.ts +18 -0
  234. package/dist/src/core/text-rendering/TextLayoutEngine.js +380 -0
  235. package/dist/src/core/text-rendering/TextLayoutEngine.js.map +1 -0
  236. package/dist/src/core/text-rendering/TextRenderer.d.ts +384 -0
  237. package/dist/src/core/text-rendering/TextRenderer.js +2 -0
  238. package/dist/src/core/text-rendering/TextRenderer.js.map +1 -0
  239. package/dist/src/core/text-rendering/Utils.d.ts +30 -0
  240. package/dist/src/core/text-rendering/Utils.js +66 -0
  241. package/dist/src/core/text-rendering/Utils.js.map +1 -0
  242. package/dist/src/core/textures/ColorTexture.d.ts +1 -1
  243. package/dist/src/core/textures/ColorTexture.js +3 -22
  244. package/dist/src/core/textures/ColorTexture.js.map +1 -1
  245. package/dist/src/core/textures/ImageTexture.d.ts +10 -3
  246. package/dist/src/core/textures/ImageTexture.js +33 -62
  247. package/dist/src/core/textures/ImageTexture.js.map +1 -1
  248. package/dist/src/core/textures/NoiseTexture.d.ts +3 -3
  249. package/dist/src/core/textures/NoiseTexture.js +8 -26
  250. package/dist/src/core/textures/NoiseTexture.js.map +1 -1
  251. package/dist/src/core/textures/RenderTexture.d.ts +7 -7
  252. package/dist/src/core/textures/RenderTexture.js +12 -30
  253. package/dist/src/core/textures/RenderTexture.js.map +1 -1
  254. package/dist/src/core/textures/SubTexture.d.ts +6 -8
  255. package/dist/src/core/textures/SubTexture.js +19 -55
  256. package/dist/src/core/textures/SubTexture.js.map +1 -1
  257. package/dist/src/core/textures/Texture.d.ts +80 -16
  258. package/dist/src/core/textures/Texture.js +131 -37
  259. package/dist/src/core/textures/Texture.js.map +1 -1
  260. package/dist/src/core/utils.d.ts +2 -1
  261. package/dist/src/core/utils.js +1 -19
  262. package/dist/src/core/utils.js.map +1 -1
  263. package/dist/src/main-api/INode.d.ts +9 -9
  264. package/dist/src/main-api/INode.js.map +1 -1
  265. package/dist/src/main-api/Inspector.d.ts +135 -2
  266. package/dist/src/main-api/Inspector.js +507 -30
  267. package/dist/src/main-api/Inspector.js.map +1 -1
  268. package/dist/src/main-api/Renderer.d.ts +246 -162
  269. package/dist/src/main-api/Renderer.js +192 -152
  270. package/dist/src/main-api/Renderer.js.map +1 -1
  271. package/dist/src/utils.d.ts +23 -4
  272. package/dist/src/utils.js +50 -27
  273. package/dist/src/utils.js.map +1 -1
  274. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  275. package/dist/tsconfig.tsbuildinfo +1 -1
  276. package/exports/canvas-shaders.ts +11 -0
  277. package/exports/canvas.ts +8 -20
  278. package/exports/index.ts +24 -44
  279. package/exports/inspector.ts +0 -19
  280. package/exports/utils.ts +7 -19
  281. package/exports/webgl-shaders.ts +12 -0
  282. package/exports/webgl.ts +15 -20
  283. package/package.json +23 -20
  284. package/src/common/CommonTypes.ts +20 -22
  285. package/src/common/EventEmitter.ts +0 -19
  286. package/src/common/IAnimationController.ts +0 -18
  287. package/src/common/IEventEmitter.ts +0 -17
  288. package/src/core/Autosizer.ts +205 -0
  289. package/src/core/CoreNode.test.ts +378 -46
  290. package/src/core/CoreNode.ts +1007 -659
  291. package/src/core/CoreShaderManager.ts +128 -250
  292. package/src/core/CoreTextNode.ts +457 -321
  293. package/src/core/CoreTextureManager.ts +94 -115
  294. package/src/core/Stage.ts +516 -312
  295. package/src/core/TextureError.ts +46 -0
  296. package/src/core/TextureMemoryManager.ts +139 -175
  297. package/src/core/animations/AnimationManager.ts +0 -19
  298. package/src/core/animations/CoreAnimation.ts +16 -96
  299. package/src/core/animations/CoreAnimationController.ts +0 -19
  300. package/src/core/lib/ContextSpy.ts +0 -19
  301. package/src/core/lib/ImageWorker.ts +43 -31
  302. package/src/core/lib/Matrix3d.ts +7 -20
  303. package/src/core/lib/RenderCoords.ts +36 -67
  304. package/src/core/lib/WebGlContextWrapper.ts +353 -237
  305. package/src/core/lib/collectionUtils.ts +99 -0
  306. package/src/core/lib/colorCache.ts +20 -0
  307. package/src/core/{renderers/canvas/internal/ColorUtils.ts → lib/colorParser.ts} +16 -19
  308. package/src/core/lib/textureCompression.ts +434 -94
  309. package/src/core/lib/textureSvg.ts +0 -19
  310. package/src/core/lib/utils.ts +31 -19
  311. package/src/core/lib/validateImageBitmap.ts +17 -6
  312. package/src/core/platforms/Platform.ts +64 -0
  313. package/src/core/platforms/web/WebPlatform.ts +132 -0
  314. package/src/core/renderers/CoreContextTexture.ts +1 -19
  315. package/src/core/renderers/CoreRenderOp.ts +0 -19
  316. package/src/core/renderers/CoreRenderer.ts +34 -49
  317. package/src/core/renderers/CoreShaderNode.ts +202 -0
  318. package/src/core/renderers/CoreShaderProgram.ts +4 -0
  319. package/src/core/renderers/canvas/CanvasRenderer.ts +270 -0
  320. package/src/core/renderers/canvas/CanvasShaderNode.ts +79 -0
  321. package/src/core/renderers/canvas/{CanvasCoreTexture.ts → CanvasTexture.ts} +15 -27
  322. package/src/core/renderers/webgl/SdfRenderOp.ts +88 -0
  323. package/src/core/renderers/webgl/{WebGlCoreCtxRenderTexture.ts → WebGlCtxRenderTexture.ts} +15 -36
  324. package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +76 -0
  325. package/src/core/renderers/webgl/{WebGlCoreCtxTexture.ts → WebGlCtxTexture.ts} +89 -70
  326. package/src/core/renderers/webgl/WebGlRenderer.ts +850 -0
  327. package/src/core/renderers/webgl/WebGlShaderNode.ts +430 -0
  328. package/src/core/renderers/webgl/WebGlShaderProgram.ts +356 -0
  329. package/src/core/renderers/webgl/internal/BufferCollection.ts +15 -23
  330. package/src/core/renderers/webgl/internal/RendererUtils.ts +0 -19
  331. package/src/core/renderers/webgl/internal/ShaderUtils.ts +143 -24
  332. package/src/core/renderers/webgl/internal/WebGlUtils.ts +0 -19
  333. package/src/core/shaders/canvas/Border.ts +119 -0
  334. package/src/core/shaders/canvas/HolePunch.ts +38 -0
  335. package/src/core/shaders/canvas/LinearGradient.ts +54 -0
  336. package/src/core/shaders/canvas/RadialGradient.ts +82 -0
  337. package/src/core/shaders/canvas/Rounded.ts +38 -0
  338. package/src/core/shaders/canvas/RoundedWithBorder.ts +105 -0
  339. package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +118 -0
  340. package/src/core/shaders/canvas/RoundedWithShadow.ts +56 -0
  341. package/src/core/shaders/canvas/Shadow.ts +35 -0
  342. package/src/core/shaders/canvas/utils/render.ts +143 -0
  343. package/src/core/shaders/templates/BorderTemplate.ts +128 -0
  344. package/src/core/shaders/templates/HolePunchTemplate.ts +65 -0
  345. package/src/core/shaders/templates/LinearGradientTemplate.ts +54 -0
  346. package/src/core/shaders/templates/RadialGradientTemplate.ts +66 -0
  347. package/src/core/shaders/templates/RoundedTemplate.ts +81 -0
  348. package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +21 -0
  349. package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +23 -0
  350. package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +18 -0
  351. package/src/core/shaders/templates/ShadowTemplate.ts +89 -0
  352. package/src/core/shaders/utils.ts +30 -0
  353. package/src/core/shaders/webgl/Border.ts +159 -0
  354. package/src/core/shaders/webgl/Default.ts +52 -0
  355. package/src/core/shaders/webgl/HolePunch.ts +58 -0
  356. package/src/core/shaders/webgl/LinearGradient.ts +119 -0
  357. package/src/core/shaders/webgl/RadialGradient.ts +91 -0
  358. package/src/core/shaders/webgl/Rounded.ts +97 -0
  359. package/src/core/shaders/webgl/RoundedWithBorder.ts +212 -0
  360. package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +234 -0
  361. package/src/core/shaders/webgl/RoundedWithShadow.ts +132 -0
  362. package/src/core/shaders/webgl/SdfShader.ts +104 -0
  363. package/src/core/shaders/webgl/Shadow.ts +119 -0
  364. package/src/core/text-rendering/CanvasFontHandler.ts +285 -0
  365. package/src/core/text-rendering/CanvasTextRenderer.ts +236 -0
  366. package/src/core/text-rendering/SdfFontHandler.ts +566 -0
  367. package/src/core/text-rendering/SdfTextRenderer.ts +406 -0
  368. package/src/core/text-rendering/TextLayoutEngine.ts +672 -0
  369. package/src/core/text-rendering/TextRenderer.ts +426 -0
  370. package/src/core/text-rendering/Utils.ts +80 -0
  371. package/src/core/text-rendering/tests/TextLayoutEngine.test.ts +434 -0
  372. package/src/core/textures/ColorTexture.ts +7 -24
  373. package/src/core/textures/ImageTexture.ts +72 -78
  374. package/src/core/textures/NoiseTexture.ts +14 -31
  375. package/src/core/textures/RenderTexture.ts +18 -35
  376. package/src/core/textures/SubTexture.ts +25 -65
  377. package/src/core/textures/Texture.ts +182 -53
  378. package/src/core/utils.ts +9 -26
  379. package/src/main-api/INode.ts +10 -29
  380. package/src/main-api/Inspector.ts +794 -38
  381. package/src/main-api/Renderer.ts +476 -274
  382. package/src/utils.ts +83 -29
  383. package/dist/src/core/animations/SimpleAnimation.d.ts +0 -28
  384. package/dist/src/core/animations/SimpleAnimation.js +0 -96
  385. package/dist/src/core/animations/SimpleAnimation.js.map +0 -1
  386. package/dist/src/core/platform.d.ts +0 -10
  387. package/dist/src/core/platform.js +0 -81
  388. package/dist/src/core/platform.js.map +0 -1
  389. package/dist/src/core/renderers/CoreShader.d.ts +0 -9
  390. package/dist/src/core/renderers/CoreShader.js +0 -28
  391. package/dist/src/core/renderers/CoreShader.js.map +0 -1
  392. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +0 -33
  393. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +0 -250
  394. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +0 -1
  395. package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +0 -16
  396. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +0 -124
  397. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +0 -1
  398. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +0 -14
  399. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +0 -138
  400. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +0 -1
  401. package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +0 -1
  402. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.d.ts +0 -10
  403. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js +0 -43
  404. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +0 -1
  405. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +0 -12
  406. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +0 -58
  407. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +0 -1
  408. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +0 -9
  409. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +0 -38
  410. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +0 -1
  411. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +0 -56
  412. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +0 -239
  413. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +0 -1
  414. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +0 -34
  415. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +0 -114
  416. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +0 -1
  417. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +0 -133
  418. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +0 -616
  419. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +0 -1
  420. package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +0 -83
  421. package/dist/src/core/renderers/webgl/WebGlCoreShader.js +0 -233
  422. package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +0 -1
  423. package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +0 -44
  424. package/dist/src/core/renderers/webgl/WebGlRenderOp.js +0 -118
  425. package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +0 -1
  426. package/dist/src/core/renderers/webgl/shaders/DefaultShader.d.ts +0 -9
  427. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +0 -87
  428. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +0 -1
  429. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +0 -10
  430. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +0 -119
  431. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +0 -1
  432. package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +0 -29
  433. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +0 -413
  434. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +0 -1
  435. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +0 -28
  436. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +0 -131
  437. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +0 -1
  438. package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +0 -47
  439. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +0 -160
  440. package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +0 -1
  441. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +0 -31
  442. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +0 -71
  443. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +0 -1
  444. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +0 -30
  445. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +0 -58
  446. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +0 -1
  447. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +0 -31
  448. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +0 -71
  449. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +0 -1
  450. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +0 -31
  451. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +0 -71
  452. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +0 -1
  453. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +0 -31
  454. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +0 -71
  455. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +0 -1
  456. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +0 -9
  457. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +0 -136
  458. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +0 -1
  459. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.d.ts +0 -36
  460. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +0 -85
  461. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +0 -1
  462. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +0 -45
  463. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +0 -104
  464. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +0 -1
  465. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +0 -22
  466. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +0 -45
  467. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +0 -1
  468. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.d.ts +0 -58
  469. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +0 -80
  470. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +0 -1
  471. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +0 -35
  472. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +0 -129
  473. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +0 -1
  474. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +0 -39
  475. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +0 -116
  476. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +0 -1
  477. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.d.ts +0 -61
  478. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +0 -127
  479. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js.map +0 -1
  480. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +0 -40
  481. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +0 -71
  482. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +0 -1
  483. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +0 -115
  484. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +0 -61
  485. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +0 -1
  486. package/dist/src/core/shaders/templates/shaderUtils.d.ts +0 -5
  487. package/dist/src/core/shaders/templates/shaderUtils.js +0 -41
  488. package/dist/src/core/shaders/templates/shaderUtils.js.map +0 -1
  489. package/dist/src/core/shaders/webgl/Magnifier.d.ts +0 -46
  490. package/dist/src/core/shaders/webgl/Magnifier.js +0 -107
  491. package/dist/src/core/shaders/webgl/Magnifier.js.map +0 -1
  492. package/dist/src/core/shaders/webgl/RoundedWithBorder copy.d.ts +0 -3
  493. package/dist/src/core/shaders/webgl/RoundedWithBorder copy.js +0 -218
  494. package/dist/src/core/shaders/webgl/RoundedWithBorder copy.js.map +0 -1
  495. package/dist/src/core/text-rendering/TextRenderingUtils.d.ts +0 -12
  496. package/dist/src/core/text-rendering/TextRenderingUtils.js +0 -14
  497. package/dist/src/core/text-rendering/TextRenderingUtils.js.map +0 -1
  498. package/dist/src/core/text-rendering/TextTextureRendererUtils.d.ts +0 -72
  499. package/dist/src/core/text-rendering/TextTextureRendererUtils.js +0 -217
  500. package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +0 -1
  501. package/dist/src/core/text-rendering/TrFontManager.d.ts +0 -26
  502. package/dist/src/core/text-rendering/TrFontManager.js +0 -131
  503. package/dist/src/core/text-rendering/TrFontManager.js.map +0 -1
  504. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.d.ts +0 -39
  505. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +0 -125
  506. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +0 -1
  507. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.d.ts +0 -103
  508. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js +0 -21
  509. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js.map +0 -1
  510. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.d.ts +0 -62
  511. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js +0 -88
  512. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js.map +0 -1
  513. package/dist/src/core/text-rendering/font-face-types/TrFontFace.d.ts +0 -118
  514. package/dist/src/core/text-rendering/font-face-types/TrFontFace.js +0 -63
  515. package/dist/src/core/text-rendering/font-face-types/TrFontFace.js.map +0 -1
  516. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.d.ts +0 -14
  517. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js +0 -66
  518. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js.map +0 -1
  519. package/dist/src/core/text-rendering/font-face-types/utils.d.ts +0 -1
  520. package/dist/src/core/text-rendering/font-face-types/utils.js +0 -38
  521. package/dist/src/core/text-rendering/font-face-types/utils.js.map +0 -1
  522. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +0 -59
  523. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +0 -397
  524. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +0 -1
  525. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +0 -120
  526. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +0 -551
  527. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +0 -1
  528. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +0 -92
  529. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +0 -607
  530. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +0 -1
  531. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.d.ts +0 -12
  532. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js +0 -61
  533. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js.map +0 -1
  534. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.d.ts +0 -33
  535. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js +0 -52
  536. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js.map +0 -1
  537. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.d.ts +0 -13
  538. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js +0 -32
  539. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js.map +0 -1
  540. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.d.ts +0 -23
  541. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js +0 -84
  542. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js.map +0 -1
  543. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.d.ts +0 -4
  544. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js +0 -34
  545. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js.map +0 -1
  546. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +0 -20
  547. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +0 -308
  548. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +0 -1
  549. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.d.ts +0 -10
  550. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js +0 -40
  551. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js.map +0 -1
  552. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.d.ts +0 -26
  553. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js +0 -70
  554. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js.map +0 -1
  555. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.d.ts +0 -16
  556. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js +0 -39
  557. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js.map +0 -1
  558. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +0 -373
  559. package/dist/src/core/text-rendering/renderers/TextRenderer.js +0 -178
  560. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +0 -1
  561. package/dist/src/main-api/DynamicShaderController.d.ts +0 -29
  562. package/dist/src/main-api/DynamicShaderController.js +0 -58
  563. package/dist/src/main-api/DynamicShaderController.js.map +0 -1
  564. package/dist/src/main-api/ShaderController.d.ts +0 -31
  565. package/dist/src/main-api/ShaderController.js +0 -37
  566. package/dist/src/main-api/ShaderController.js.map +0 -1
  567. package/scripts/please-use-pnpm.js +0 -13
  568. package/src/core/platform.ts +0 -100
  569. package/src/core/renderers/CoreShader.ts +0 -41
  570. package/src/core/renderers/canvas/CanvasCoreRenderer.ts +0 -375
  571. package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +0 -231
  572. package/src/core/renderers/canvas/shaders/UnsupportedShader.ts +0 -48
  573. package/src/core/renderers/webgl/WebGlCoreCtxSubTexture.ts +0 -50
  574. package/src/core/renderers/webgl/WebGlCoreRenderOp.ts +0 -125
  575. package/src/core/renderers/webgl/WebGlCoreRenderer.ts +0 -821
  576. package/src/core/renderers/webgl/WebGlCoreShader.ts +0 -365
  577. package/src/core/renderers/webgl/shaders/DefaultShader.ts +0 -93
  578. package/src/core/renderers/webgl/shaders/DefaultShaderBatched.ts +0 -132
  579. package/src/core/renderers/webgl/shaders/DynamicShader.ts +0 -580
  580. package/src/core/renderers/webgl/shaders/RoundedRectangle.ts +0 -167
  581. package/src/core/renderers/webgl/shaders/SdfShader.ts +0 -204
  582. package/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.ts +0 -101
  583. package/src/core/renderers/webgl/shaders/effects/BorderEffect.ts +0 -87
  584. package/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.ts +0 -101
  585. package/src/core/renderers/webgl/shaders/effects/BorderRightEffect.ts +0 -101
  586. package/src/core/renderers/webgl/shaders/effects/BorderTopEffect.ts +0 -101
  587. package/src/core/renderers/webgl/shaders/effects/EffectUtils.ts +0 -159
  588. package/src/core/renderers/webgl/shaders/effects/FadeOutEffect.ts +0 -127
  589. package/src/core/renderers/webgl/shaders/effects/GlitchEffect.ts +0 -148
  590. package/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.ts +0 -67
  591. package/src/core/renderers/webgl/shaders/effects/HolePunchEffect.ts +0 -157
  592. package/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.ts +0 -171
  593. package/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.ts +0 -168
  594. package/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.ts +0 -187
  595. package/src/core/renderers/webgl/shaders/effects/RadiusEffect.ts +0 -110
  596. package/src/core/renderers/webgl/shaders/effects/ShaderEffect.ts +0 -196
  597. package/src/core/text-rendering/TextRenderingUtils.ts +0 -36
  598. package/src/core/text-rendering/TextTextureRendererUtils.ts +0 -263
  599. package/src/core/text-rendering/TrFontManager.ts +0 -183
  600. package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +0 -176
  601. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +0 -139
  602. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +0 -173
  603. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +0 -171
  604. package/src/core/text-rendering/font-face-types/TrFontFace.ts +0 -187
  605. package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +0 -94
  606. package/src/core/text-rendering/font-face-types/utils.ts +0 -39
  607. package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +0 -509
  608. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +0 -808
  609. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +0 -853
  610. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +0 -48
  611. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +0 -66
  612. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +0 -52
  613. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +0 -32
  614. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +0 -117
  615. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +0 -133
  616. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +0 -38
  617. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +0 -408
  618. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +0 -49
  619. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +0 -52
  620. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +0 -205
  621. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +0 -93
  622. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +0 -40
  623. package/src/core/text-rendering/renderers/TextRenderer.ts +0 -557
  624. package/src/main-api/DynamicShaderController.ts +0 -104
  625. package/src/main-api/ShaderController.ts +0 -80
@@ -0,0 +1,46 @@
1
+ export enum TextureErrorCode {
2
+ MEMORY_THRESHOLD_EXCEEDED = 'MEMORY_THRESHOLD_EXCEEDED',
3
+ TEXTURE_DATA_NULL = 'TEXTURE_DATA_NULL',
4
+ TEXTURE_TYPE_NOT_REGISTERED = 'TEXTURE_TYPE_NOT_REGISTERED',
5
+ }
6
+
7
+ const defaultMessages: Record<TextureErrorCode, string> = {
8
+ [TextureErrorCode.MEMORY_THRESHOLD_EXCEEDED]: 'Memory threshold exceeded',
9
+ [TextureErrorCode.TEXTURE_DATA_NULL]: 'Texture data is null',
10
+ [TextureErrorCode.TEXTURE_TYPE_NOT_REGISTERED]:
11
+ 'Texture type is not registered',
12
+ };
13
+
14
+ export class TextureError extends Error {
15
+ code?: TextureErrorCode;
16
+
17
+ constructor(message: string);
18
+ constructor(code: TextureErrorCode, message?: string);
19
+ constructor(codeOrMessage: TextureErrorCode | string, maybeMessage?: string) {
20
+ const isCode = Object.values(TextureErrorCode).includes(
21
+ codeOrMessage as TextureErrorCode,
22
+ );
23
+
24
+ const code = isCode ? (codeOrMessage as TextureErrorCode) : undefined;
25
+ let message: string;
26
+ if (isCode && code) {
27
+ message = maybeMessage ?? defaultMessages[code];
28
+ } else {
29
+ message = String(codeOrMessage);
30
+ }
31
+
32
+ super(message);
33
+ this.name = new.target.name;
34
+ if (code) this.code = code;
35
+ }
36
+ }
37
+
38
+ export function isTextureError(err: unknown): err is TextureError {
39
+ return (
40
+ err instanceof TextureError ||
41
+ (typeof err === 'object' &&
42
+ err !== null &&
43
+ (err as { name?: unknown }).name === 'TextureError' &&
44
+ typeof (err as { code?: unknown }).code === 'string')
45
+ );
46
+ }
@@ -1,25 +1,6 @@
1
- /*
2
- * If not stated otherwise in this file or this component's LICENSE file the
3
- * following copyright and licenses apply:
4
- *
5
- * Copyright 2024 Comcast Cable Communications Management, LLC.
6
- *
7
- * Licensed under the Apache License, Version 2.0 (the License);
8
- * you may not use this file except in compliance with the License.
9
- * You may obtain a copy of the License at
10
- *
11
- * http://www.apache.org/licenses/LICENSE-2.0
12
- *
13
- * Unless required by applicable law or agreed to in writing, software
14
- * distributed under the License is distributed on an "AS IS" BASIS,
15
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- * See the License for the specific language governing permissions and
17
- * limitations under the License.
18
- */
19
1
  import { isProductionEnvironment } from '../utils.js';
20
- import { getTimeStamp } from './platform.js';
21
2
  import type { Stage } from './Stage.js';
22
- import { Texture, TextureType, type TextureState } from './textures/Texture.js';
3
+ import { Texture, TextureType } from './textures/Texture.js';
23
4
  import { bytesToMb } from './utils.js';
24
5
 
25
6
  export interface TextureMemoryManagerSettings {
@@ -116,17 +97,21 @@ export interface MemoryInfo {
116
97
  */
117
98
  export class TextureMemoryManager {
118
99
  private memUsed = 0;
119
- private loadedTextures: Map<Texture, number> = new Map();
120
- private orphanedTextures: Texture[] = [];
121
- private criticalThreshold: number;
122
- private targetThreshold: number;
123
- private cleanupInterval: number;
124
- private debugLogging: boolean;
100
+ private loadedTextures: Set<Texture> = new Set();
101
+ private orphanedTextures: Set<Texture> = new Set();
102
+ private criticalThreshold: number = 124e6;
103
+ private targetThreshold: number = 0.5;
104
+ private cleanupInterval: number = 5000;
105
+ private debugLogging: boolean = false;
106
+ private loggingID: ReturnType<typeof setInterval> =
107
+ 0 as unknown as ReturnType<typeof setInterval>;
125
108
  private lastCleanupTime = 0;
126
- private baselineMemoryAllocation: number;
109
+ private baselineMemoryAllocation: number = 26e6;
110
+
111
+ private hasWarnedAboveCritical = false;
127
112
 
128
113
  public criticalCleanupRequested = false;
129
- public doNotExceedCriticalThreshold: boolean;
114
+ public doNotExceedCriticalThreshold: boolean = false;
130
115
 
131
116
  /**
132
117
  * The current frame time in milliseconds
@@ -139,46 +124,7 @@ export class TextureMemoryManager {
139
124
  public frameTime = 0;
140
125
 
141
126
  constructor(private stage: Stage, settings: TextureMemoryManagerSettings) {
142
- const { criticalThreshold, doNotExceedCriticalThreshold } = settings;
143
- this.doNotExceedCriticalThreshold = doNotExceedCriticalThreshold || false;
144
- this.criticalThreshold = Math.round(criticalThreshold);
145
- const targetFraction = Math.max(
146
- 0,
147
- Math.min(1, settings.targetThresholdLevel),
148
- );
149
- this.cleanupInterval = settings.cleanupInterval;
150
- this.debugLogging = settings.debugLogging;
151
- this.baselineMemoryAllocation = Math.round(
152
- settings.baselineMemoryAllocation,
153
- );
154
- this.targetThreshold = Math.max(
155
- Math.round(criticalThreshold * targetFraction),
156
- this.baselineMemoryAllocation,
157
- );
158
- this.memUsed = Math.round(settings.baselineMemoryAllocation);
159
-
160
- if (settings.debugLogging) {
161
- let lastMemUse = 0;
162
- setInterval(() => {
163
- if (lastMemUse !== this.memUsed) {
164
- lastMemUse = this.memUsed;
165
- console.log(
166
- `[TextureMemoryManager] Memory used: ${bytesToMb(
167
- this.memUsed,
168
- )} mb / ${bytesToMb(this.criticalThreshold)} mb (${(
169
- (this.memUsed / this.criticalThreshold) *
170
- 100
171
- ).toFixed(1)}%)`,
172
- );
173
- }
174
- }, 1000);
175
- }
176
-
177
- // If the threshold is 0, we disable the memory manager by replacing the
178
- // setTextureMemUse method with a no-op function.
179
- if (criticalThreshold === 0) {
180
- this.setTextureMemUse = () => {};
181
- }
127
+ this.updateSettings(settings);
182
128
  }
183
129
 
184
130
  /**
@@ -188,13 +134,13 @@ export class TextureMemoryManager {
188
134
  */
189
135
  addToOrphanedTextures(texture: Texture) {
190
136
  // if the texture is already in the orphaned textures list add it at the end
191
- if (this.orphanedTextures.includes(texture)) {
192
- this.removeFromOrphanedTextures(texture);
137
+ if (this.orphanedTextures.has(texture)) {
138
+ this.orphanedTextures.delete(texture);
193
139
  }
194
140
 
195
141
  // If the texture can be cleaned up, add it to the orphaned textures list
196
142
  if (texture.preventCleanup === false) {
197
- this.orphanedTextures.push(texture);
143
+ this.orphanedTextures.add(texture);
198
144
  }
199
145
  }
200
146
 
@@ -204,10 +150,7 @@ export class TextureMemoryManager {
204
150
  * @param texture - The texture to remove from the orphaned textures list
205
151
  */
206
152
  removeFromOrphanedTextures(texture: Texture) {
207
- const index = this.orphanedTextures.indexOf(texture);
208
- if (index !== -1) {
209
- this.orphanedTextures.splice(index, 1);
210
- }
153
+ this.orphanedTextures.delete(texture);
211
154
  }
212
155
 
213
156
  /**
@@ -217,17 +160,19 @@ export class TextureMemoryManager {
217
160
  * @param byteSize - The size of the texture in bytes
218
161
  */
219
162
  setTextureMemUse(texture: Texture, byteSize: number) {
220
- if (this.loadedTextures.has(texture)) {
221
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
222
- this.memUsed -= this.loadedTextures.get(texture)!;
223
- }
163
+ // Update global memory counter by subtracting old value
164
+ this.memUsed -= texture.memUsed;
224
165
 
225
166
  if (byteSize === 0) {
167
+ // PERFORMANCE: Mark for deletion, slot will be reused later
226
168
  this.loadedTextures.delete(texture);
169
+ texture.memUsed = 0;
227
170
  return;
228
171
  } else {
172
+ // Update texture memory and add to tracking if not already present
173
+ texture.memUsed = byteSize;
229
174
  this.memUsed += byteSize;
230
- this.loadedTextures.set(texture, byteSize);
175
+ this.loadedTextures.add(texture);
231
176
  }
232
177
 
233
178
  if (this.memUsed > this.criticalThreshold) {
@@ -247,40 +192,6 @@ export class TextureMemoryManager {
247
192
  return this.memUsed > this.criticalThreshold;
248
193
  }
249
194
 
250
- cleanupQuick(critical: boolean) {
251
- // Free non-renderable textures until we reach the target threshold
252
- const memTarget = this.targetThreshold;
253
- const timestamp = getTimeStamp();
254
-
255
- while (
256
- this.memUsed >= memTarget &&
257
- this.orphanedTextures.length > 0 &&
258
- (critical || getTimeStamp() - timestamp < 10)
259
- ) {
260
- const texture = this.orphanedTextures.shift();
261
-
262
- if (texture === undefined) {
263
- continue;
264
- }
265
-
266
- if (texture.renderable === true) {
267
- // If the texture is renderable, we can't free it up
268
- continue;
269
- }
270
-
271
- // Skip textures that are in transitional states - we only want to clean up
272
- // textures that are in a stable state (loaded, failed, or freed)
273
- if (
274
- texture.state === 'initial' ||
275
- Texture.TRANSITIONAL_TEXTURE_STATES.includes(texture.state)
276
- ) {
277
- continue;
278
- }
279
-
280
- this.destroyTexture(texture);
281
- }
282
- }
283
-
284
195
  /**
285
196
  * Destroy a texture and remove it from the memory manager
286
197
  *
@@ -293,46 +204,21 @@ export class TextureMemoryManager {
293
204
  );
294
205
  }
295
206
 
207
+ // PERFORMANCE: Null out array position, slot will be reused later
208
+ this.loadedTextures.delete(texture);
209
+
210
+ // Destroy texture and update memory counters
296
211
  const txManager = this.stage.txManager;
297
- txManager.removeTextureFromQueue(texture);
298
212
  txManager.removeTextureFromCache(texture);
299
213
 
300
214
  texture.destroy();
301
215
 
302
- this.removeFromOrphanedTextures(texture);
303
- this.loadedTextures.delete(texture);
216
+ // Update memory counters
217
+ this.memUsed -= texture.memUsed;
218
+ texture.memUsed = 0;
304
219
  }
305
- cleanupDeep(critical: boolean) {
306
- // Free non-renderable textures until we reach the target threshold
307
- const memTarget = critical ? this.criticalThreshold : this.targetThreshold;
308
-
309
- // Filter for textures that are candidates for cleanup
310
- // note: This is an expensive operation, so we only do it in deep cleanup
311
- const cleanupCandidates = [...this.loadedTextures.keys()].filter(
312
- (texture) => {
313
- return (
314
- (texture.type === TextureType.image ||
315
- texture.type === TextureType.noise ||
316
- texture.type === TextureType.renderToTexture) &&
317
- texture.renderable === false &&
318
- texture.preventCleanup === false &&
319
- texture.state !== 'initial' &&
320
- !Texture.TRANSITIONAL_TEXTURE_STATES.includes(texture.state)
321
- );
322
- },
323
- );
324
-
325
- while (this.memUsed >= memTarget && cleanupCandidates.length > 0) {
326
- const texture = cleanupCandidates.shift();
327
- if (texture === undefined) {
328
- continue;
329
- }
330
220
 
331
- this.destroyTexture(texture);
332
- }
333
- }
334
-
335
- cleanup(aggressive: boolean = false) {
221
+ cleanup(full: boolean = false) {
336
222
  const critical = this.criticalCleanupRequested;
337
223
  this.lastCleanupTime = this.frameTime;
338
224
 
@@ -345,25 +231,38 @@ export class TextureMemoryManager {
345
231
 
346
232
  if (this.debugLogging === true) {
347
233
  console.log(
348
- `[TextureMemoryManager] Cleaning up textures. Critical: ${critical}. Aggressive: ${aggressive}`,
234
+ `[TextureMemoryManager] Cleaning up textures. Critical: ${critical}. Full: ${full}`,
349
235
  );
350
236
  }
351
237
 
352
- // Note: We skip textures in transitional states during cleanup:
353
- // - 'initial': These textures haven't started loading yet
354
- // - 'fetching': These textures are in the process of being fetched
355
- // - 'fetched': These textures have been fetched but not yet uploaded to GPU
356
- // - 'loading': These textures are being uploaded to the GPU
357
- //
358
- // For 'failed' and 'freed' states, we only remove them from the tracking
359
- // arrays without trying to free GPU resources that don't exist.
360
-
361
- // try a quick cleanup first
362
- this.cleanupQuick(critical);
363
-
364
- // if we're still above the target threshold, do a deep cleanup
365
- if (aggressive === true && this.memUsed >= this.criticalThreshold) {
366
- this.cleanupDeep(critical);
238
+ // Free non-renderable textures until we reach the target threshold
239
+ const memTarget = critical ? this.criticalThreshold : this.targetThreshold;
240
+
241
+ // PERFORMANCE: Zero-overhead cleanup with null marking
242
+ // Skip null entries, mark cleaned textures as null for later defrag
243
+ let currentMemUsed = this.memUsed;
244
+
245
+ for (const texture of this.loadedTextures) {
246
+ // Early exit: target memory reached
247
+ if (full === false && currentMemUsed < memTarget) {
248
+ break;
249
+ }
250
+
251
+ // Fast type check for cleanable textures
252
+ const isCleanableType =
253
+ texture.type === TextureType.image ||
254
+ texture.type === TextureType.noise ||
255
+ texture.type === TextureType.renderToTexture;
256
+
257
+ // Immediate cleanup if eligible
258
+ if (isCleanableType && texture.canBeCleanedUp() === true) {
259
+ // Get memory before destroying
260
+ const textureMemory = texture.memUsed;
261
+
262
+ // Destroy texture (which will null out the array position)
263
+ this.destroyTexture(texture);
264
+ currentMemUsed -= textureMemory;
265
+ }
367
266
  }
368
267
 
369
268
  if (this.memUsed >= this.criticalThreshold) {
@@ -371,14 +270,20 @@ export class TextureMemoryManager {
371
270
  memUsed: this.memUsed,
372
271
  criticalThreshold: this.criticalThreshold,
373
272
  });
374
-
375
- if (this.debugLogging === true || isProductionEnvironment() === false) {
273
+ // Only emit the warning once per over-threshold period
274
+ if (
275
+ !this.hasWarnedAboveCritical &&
276
+ (this.debugLogging === true || isProductionEnvironment === false)
277
+ ) {
376
278
  console.warn(
377
279
  `[TextureMemoryManager] Memory usage above critical threshold after cleanup: ${this.memUsed}`,
378
280
  );
281
+
282
+ this.hasWarnedAboveCritical = true;
379
283
  }
380
284
  } else {
381
285
  this.criticalCleanupRequested = false;
286
+ this.hasWarnedAboveCritical = false;
382
287
  }
383
288
  }
384
289
 
@@ -391,15 +296,17 @@ export class TextureMemoryManager {
391
296
  */
392
297
  getMemoryInfo(): MemoryInfo {
393
298
  let renderableTexturesLoaded = 0;
394
- const renderableMemUsed = [...this.loadedTextures.keys()].reduce(
395
- (acc, texture) => {
396
- renderableTexturesLoaded += texture.renderable ? 1 : 0;
397
- // Get the memory used by the texture, defaulting to 0 if not found
398
- const textureMemory = this.loadedTextures.get(texture) ?? 0;
399
- return acc + (texture.renderable ? textureMemory : 0);
400
- },
401
- this.baselineMemoryAllocation,
402
- );
299
+ let renderableMemUsed = this.baselineMemoryAllocation;
300
+
301
+ for (const texture of this.loadedTextures) {
302
+ if (texture && texture.renderable) {
303
+ renderableTexturesLoaded += 1;
304
+ renderableMemUsed += texture.memUsed;
305
+ }
306
+ }
307
+
308
+ // Count non-null entries for accurate loaded texture count
309
+ const actualLoadedTextures = this.loadedTextures.size;
403
310
 
404
311
  return {
405
312
  criticalThreshold: this.criticalThreshold,
@@ -407,8 +314,65 @@ export class TextureMemoryManager {
407
314
  renderableMemUsed,
408
315
  memUsed: this.memUsed,
409
316
  renderableTexturesLoaded,
410
- loadedTextures: this.loadedTextures.size,
317
+ loadedTextures: actualLoadedTextures,
411
318
  baselineMemoryAllocation: this.baselineMemoryAllocation,
412
319
  };
413
320
  }
321
+
322
+ public updateSettings(settings: TextureMemoryManagerSettings): void {
323
+ const { criticalThreshold, doNotExceedCriticalThreshold } = settings;
324
+
325
+ this.doNotExceedCriticalThreshold = doNotExceedCriticalThreshold || false;
326
+ this.criticalThreshold = Math.round(criticalThreshold);
327
+
328
+ if (this.memUsed === 0) {
329
+ this.memUsed = Math.round(settings.baselineMemoryAllocation);
330
+ } else {
331
+ const memUsedExBaseline = this.memUsed - this.baselineMemoryAllocation;
332
+ this.memUsed = Math.round(
333
+ settings.baselineMemoryAllocation + memUsedExBaseline,
334
+ );
335
+ }
336
+ this.baselineMemoryAllocation = Math.round(
337
+ settings.baselineMemoryAllocation,
338
+ );
339
+ const targetFraction = Math.max(
340
+ 0,
341
+ Math.min(1, settings.targetThresholdLevel),
342
+ );
343
+ this.targetThreshold = Math.max(
344
+ Math.round(criticalThreshold * targetFraction),
345
+ this.baselineMemoryAllocation,
346
+ );
347
+
348
+ this.cleanupInterval = settings.cleanupInterval;
349
+ this.debugLogging = settings.debugLogging;
350
+
351
+ if (this.loggingID && !settings.debugLogging) {
352
+ clearInterval(this.loggingID);
353
+ this.loggingID = 0 as unknown as ReturnType<typeof setInterval>;
354
+ }
355
+ if (settings.debugLogging && !this.loggingID) {
356
+ let lastMemUse = 0;
357
+ this.loggingID = setInterval(() => {
358
+ if (lastMemUse !== this.memUsed) {
359
+ lastMemUse = this.memUsed;
360
+ console.log(
361
+ `[TextureMemoryManager] Memory used: ${bytesToMb(
362
+ this.memUsed,
363
+ )} mb / ${bytesToMb(this.criticalThreshold)} mb (${(
364
+ (this.memUsed / this.criticalThreshold) *
365
+ 100
366
+ ).toFixed(1)}%)`,
367
+ );
368
+ }
369
+ }, 1000);
370
+ }
371
+
372
+ // If the threshold is 0, we disable the memory manager by replacing the
373
+ // setTextureMemUse method with a no-op function.
374
+ if (criticalThreshold === 0) {
375
+ this.setTextureMemUse = () => {};
376
+ }
377
+ }
414
378
  }
@@ -1,22 +1,3 @@
1
- /*
2
- * If not stated otherwise in this file or this component's LICENSE file the
3
- * following copyright and licenses apply:
4
- *
5
- * Copyright 2023 Comcast Cable Communications Management, LLC.
6
- *
7
- * Licensed under the Apache License, Version 2.0 (the License);
8
- * you may not use this file except in compliance with the License.
9
- * You may obtain a copy of the License at
10
- *
11
- * http://www.apache.org/licenses/LICENSE-2.0
12
- *
13
- * Unless required by applicable law or agreed to in writing, software
14
- * distributed under the License is distributed on an "AS IS" BASIS,
15
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- * See the License for the specific language governing permissions and
17
- * limitations under the License.
18
- */
19
-
20
1
  import { CoreAnimation } from './CoreAnimation.js';
21
2
 
22
3
  export class AnimationManager {
@@ -1,34 +1,14 @@
1
- /*
2
- * If not stated otherwise in this file or this component's LICENSE file the
3
- * following copyright and licenses apply:
4
- *
5
- * Copyright 2023 Comcast Cable Communications Management, LLC.
6
- *
7
- * Licensed under the Apache License, Version 2.0 (the License);
8
- * you may not use this file except in compliance with the License.
9
- * You may obtain a copy of the License at
10
- *
11
- * http://www.apache.org/licenses/LICENSE-2.0
12
- *
13
- * Unless required by applicable law or agreed to in writing, software
14
- * distributed under the License is distributed on an "AS IS" BASIS,
15
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- * See the License for the specific language governing permissions and
17
- * limitations under the License.
18
- */
19
-
20
1
  import { type CoreNode, type CoreNodeAnimateProps } from '../CoreNode.js';
21
- import { getTimingFunction } from '../utils.js';
2
+ import { getTimingFunction, type TimingFunction } from '../utils.js';
22
3
  import { mergeColorProgress } from '../../utils.js';
23
4
  import { EventEmitter } from '../../common/EventEmitter.js';
24
5
 
25
6
  export interface AnimationSettings {
26
7
  duration: number;
27
8
  delay: number;
28
- easing: string;
9
+ easing: string | TimingFunction;
29
10
  loop: boolean;
30
11
  repeat: number;
31
- repeatDelay: number;
32
12
  stopMethod: 'reverse' | 'reset' | false;
33
13
  }
34
14
 
@@ -43,10 +23,9 @@ export class CoreAnimation extends EventEmitter {
43
23
  private progress = 0;
44
24
  private delayFor = 0;
45
25
  private delay = 0;
46
- private timingFunction: (t: number) => number | undefined;
26
+ private timingFunction: TimingFunction;
47
27
 
48
28
  propValuesMap: PropValuesMap = {};
49
- dynPropValuesMap: PropValuesMap | undefined = undefined;
50
29
 
51
30
  constructor(
52
31
  private node: CoreNode,
@@ -67,33 +46,18 @@ export class CoreAnimation extends EventEmitter {
67
46
  key as keyof Omit<CoreNodeAnimateProps, 'shaderProps'>
68
47
  ] as number,
69
48
  };
70
- } else if (node.shader.type !== 'DynamicShader') {
49
+ } else if (key === 'shaderProps' && node.shader !== null) {
71
50
  this.propValuesMap['shaderProps'] = {};
72
51
  for (const key in props.shaderProps) {
52
+ let start = node.shader.props![key];
53
+ if (Array.isArray(start) === true) {
54
+ start = start[0];
55
+ }
73
56
  this.propValuesMap['shaderProps'][key] = {
74
- start: node.shader.props[key] as number,
57
+ start,
75
58
  target: props.shaderProps[key] as number,
76
59
  };
77
60
  }
78
- } else {
79
- const shaderPropKeys = Object.keys(props.shaderProps!);
80
- const spLength = shaderPropKeys.length;
81
- this.dynPropValuesMap = {};
82
- for (let j = 0; j < spLength; j++) {
83
- const effectName = shaderPropKeys[j]!;
84
- const effect = props.shaderProps![effectName]!;
85
- this.dynPropValuesMap[effectName] = {};
86
- const effectProps = Object.entries(effect);
87
- const eLength = effectProps.length;
88
-
89
- for (let k = 0; k < eLength; k++) {
90
- const [key, value] = effectProps[k]!;
91
- this.dynPropValuesMap[effectName]![key] = {
92
- start: node.shader.props[effectName][key],
93
- target: value,
94
- };
95
- }
96
- }
97
61
  }
98
62
  }
99
63
 
@@ -105,10 +69,10 @@ export class CoreAnimation extends EventEmitter {
105
69
  easing,
106
70
  loop: settings.loop ?? false,
107
71
  repeat: settings.repeat ?? 0,
108
- repeatDelay: settings.repeatDelay ?? 0,
109
72
  stopMethod: settings.stopMethod ?? false,
110
73
  };
111
- this.timingFunction = getTimingFunction(easing);
74
+ this.timingFunction =
75
+ typeof easing === 'string' ? getTimingFunction(easing) : easing;
112
76
  this.delayFor = delay;
113
77
  this.delay = delay;
114
78
  }
@@ -142,24 +106,10 @@ export class CoreAnimation extends EventEmitter {
142
106
  }
143
107
  if (this.propValuesMap['shaderProps'] !== undefined) {
144
108
  this.restoreValues(
145
- this.node.shader.props as Record<string, number>,
109
+ this.node.shader!.props as Record<string, number>,
146
110
  this.propValuesMap['shaderProps'],
147
111
  );
148
112
  }
149
-
150
- if (this.dynPropValuesMap !== undefined) {
151
- const dynEntries = Object.keys(this.dynPropValuesMap);
152
- const dynEntriesL = dynEntries.length;
153
- if (dynEntriesL > 0) {
154
- for (let i = 0; i < dynEntriesL; i++) {
155
- const key = dynEntries[i]!;
156
- this.restoreValues(
157
- this.node.shader.props[key],
158
- this.dynPropValuesMap[key]!,
159
- );
160
- }
161
- }
162
- }
163
113
  }
164
114
 
165
115
  private reverseValues(valueMap: Record<string, PropValues>) {
@@ -185,17 +135,6 @@ export class CoreAnimation extends EventEmitter {
185
135
  this.reverseValues(this.propValuesMap['shaderProps']);
186
136
  }
187
137
 
188
- if (this.dynPropValuesMap !== undefined) {
189
- const dynEntries = Object.keys(this.dynPropValuesMap);
190
- const dynEntriesL = dynEntries.length;
191
- if (dynEntriesL > 0) {
192
- for (let i = 0; i < dynEntriesL; i++) {
193
- const key = dynEntries[i]!;
194
- this.reverseValues(this.dynPropValuesMap[key]!);
195
- }
196
- }
197
- }
198
-
199
138
  // restore stop method if we are not looping
200
139
  if (!this.settings.loop) {
201
140
  this.settings.stopMethod = false;
@@ -203,14 +142,14 @@ export class CoreAnimation extends EventEmitter {
203
142
  }
204
143
 
205
144
  private applyEasing(p: number, s: number, e: number): number {
206
- return (this.timingFunction(p) || p) * (e - s) + s;
145
+ return this.timingFunction(p) * (e - s) + s;
207
146
  }
208
147
 
209
148
  updateValue(
210
149
  propName: string,
211
150
  propValue: number,
212
151
  startValue: number,
213
- easing: string | undefined,
152
+ easing: string | TimingFunction | undefined,
214
153
  ): number {
215
154
  if (this.progress === 1) {
216
155
  return propValue;
@@ -242,7 +181,7 @@ export class CoreAnimation extends EventEmitter {
242
181
  private updateValues(
243
182
  target: Record<string, number>,
244
183
  valueMap: Record<string, PropValues>,
245
- easing: string | undefined,
184
+ easing: string | TimingFunction | undefined,
246
185
  ) {
247
186
  const entries = Object.entries(valueMap);
248
187
  const eLength = entries.length;
@@ -315,31 +254,12 @@ export class CoreAnimation extends EventEmitter {
315
254
  }
316
255
  if (this.propValuesMap['shaderProps'] !== undefined) {
317
256
  this.updateValues(
318
- this.node.shader.props as Record<string, number>,
257
+ this.node.shader!.props as Record<string, number>,
319
258
  this.propValuesMap['shaderProps'],
320
259
  easing,
321
260
  );
322
261
  }
323
262
 
324
- if (this.dynPropValuesMap !== undefined) {
325
- const dynEntries = Object.keys(this.dynPropValuesMap);
326
- const dynEntriesL = dynEntries.length;
327
- if (dynEntriesL > 0) {
328
- for (let i = 0; i < dynEntriesL; i++) {
329
- const key = dynEntries[i]!;
330
- this.updateValues(
331
- this.node.shader.props[key],
332
- this.dynPropValuesMap[key]!,
333
- easing,
334
- );
335
- }
336
- }
337
- }
338
-
339
- if (this.progress < 1) {
340
- this.emit('tick', { progress: this.progress });
341
- }
342
-
343
263
  if (this.progress === 1) {
344
264
  this.emit('finished', {});
345
265
  }