@solidtv/renderer 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (424) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +7 -0
  3. package/README.md +137 -0
  4. package/dist/exports/canvas-shaders.d.ts +10 -0
  5. package/dist/exports/canvas-shaders.js +11 -0
  6. package/dist/exports/canvas-shaders.js.map +1 -0
  7. package/dist/exports/canvas.d.ts +26 -0
  8. package/dist/exports/canvas.js +27 -0
  9. package/dist/exports/canvas.js.map +1 -0
  10. package/dist/exports/index.d.ts +50 -0
  11. package/dist/exports/index.js +40 -0
  12. package/dist/exports/index.js.map +1 -0
  13. package/dist/exports/inspector.d.ts +4 -0
  14. package/dist/exports/inspector.js +5 -0
  15. package/dist/exports/inspector.js.map +1 -0
  16. package/dist/exports/utils.d.ts +27 -0
  17. package/dist/exports/utils.js +28 -0
  18. package/dist/exports/utils.js.map +1 -0
  19. package/dist/exports/webgl-shaders.d.ts +11 -0
  20. package/dist/exports/webgl-shaders.js +12 -0
  21. package/dist/exports/webgl-shaders.js.map +1 -0
  22. package/dist/exports/webgl.d.ts +28 -0
  23. package/dist/exports/webgl.js +29 -0
  24. package/dist/exports/webgl.js.map +1 -0
  25. package/dist/src/common/CommonTypes.d.ts +110 -0
  26. package/dist/src/common/CommonTypes.js +2 -0
  27. package/dist/src/common/CommonTypes.js.map +1 -0
  28. package/dist/src/common/EventEmitter.d.ts +12 -0
  29. package/dist/src/common/EventEmitter.js +48 -0
  30. package/dist/src/common/EventEmitter.js.map +1 -0
  31. package/dist/src/common/IAnimationController.d.ts +58 -0
  32. package/dist/src/common/IAnimationController.js +2 -0
  33. package/dist/src/common/IAnimationController.js.map +1 -0
  34. package/dist/src/common/IEventEmitter.d.ts +8 -0
  35. package/dist/src/common/IEventEmitter.js +2 -0
  36. package/dist/src/common/IEventEmitter.js.map +1 -0
  37. package/dist/src/core/Autosizer.d.ts +35 -0
  38. package/dist/src/core/Autosizer.js +178 -0
  39. package/dist/src/core/Autosizer.js.map +1 -0
  40. package/dist/src/core/CoreNode.d.ts +908 -0
  41. package/dist/src/core/CoreNode.js +1837 -0
  42. package/dist/src/core/CoreNode.js.map +1 -0
  43. package/dist/src/core/CoreShaderManager.d.ts +38 -0
  44. package/dist/src/core/CoreShaderManager.js +123 -0
  45. package/dist/src/core/CoreShaderManager.js.map +1 -0
  46. package/dist/src/core/CoreTextNode.d.ts +91 -0
  47. package/dist/src/core/CoreTextNode.js +440 -0
  48. package/dist/src/core/CoreTextNode.js.map +1 -0
  49. package/dist/src/core/CoreTextureManager.d.ts +264 -0
  50. package/dist/src/core/CoreTextureManager.js +318 -0
  51. package/dist/src/core/CoreTextureManager.js.map +1 -0
  52. package/dist/src/core/Stage.d.ts +238 -0
  53. package/dist/src/core/Stage.js +804 -0
  54. package/dist/src/core/Stage.js.map +1 -0
  55. package/dist/src/core/TextureError.d.ts +11 -0
  56. package/dist/src/core/TextureError.js +37 -0
  57. package/dist/src/core/TextureError.js.map +1 -0
  58. package/dist/src/core/TextureMemoryManager.d.ts +150 -0
  59. package/dist/src/core/TextureMemoryManager.js +239 -0
  60. package/dist/src/core/TextureMemoryManager.js.map +1 -0
  61. package/dist/src/core/animations/AnimationManager.d.ts +33 -0
  62. package/dist/src/core/animations/AnimationManager.js +137 -0
  63. package/dist/src/core/animations/AnimationManager.js.map +1 -0
  64. package/dist/src/core/animations/CoreAnimation.d.ts +12 -0
  65. package/dist/src/core/animations/CoreAnimation.js +107 -0
  66. package/dist/src/core/animations/CoreAnimation.js.map +1 -0
  67. package/dist/src/core/lib/ContextSpy.d.ts +12 -0
  68. package/dist/src/core/lib/ContextSpy.js +20 -0
  69. package/dist/src/core/lib/ContextSpy.js.map +1 -0
  70. package/dist/src/core/lib/ImageWorker.d.ts +16 -0
  71. package/dist/src/core/lib/ImageWorker.js +202 -0
  72. package/dist/src/core/lib/ImageWorker.js.map +1 -0
  73. package/dist/src/core/lib/Matrix3d.d.ts +74 -0
  74. package/dist/src/core/lib/Matrix3d.js +218 -0
  75. package/dist/src/core/lib/Matrix3d.js.map +1 -0
  76. package/dist/src/core/lib/RenderCoords.d.ts +12 -0
  77. package/dist/src/core/lib/RenderCoords.js +35 -0
  78. package/dist/src/core/lib/RenderCoords.js.map +1 -0
  79. package/dist/src/core/lib/WebGlContextWrapper.d.ts +782 -0
  80. package/dist/src/core/lib/WebGlContextWrapper.js +1143 -0
  81. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -0
  82. package/dist/src/core/lib/collectionUtils.d.ts +5 -0
  83. package/dist/src/core/lib/collectionUtils.js +82 -0
  84. package/dist/src/core/lib/collectionUtils.js.map +1 -0
  85. package/dist/src/core/lib/colorCache.d.ts +1 -0
  86. package/dist/src/core/lib/colorCache.js +19 -0
  87. package/dist/src/core/lib/colorCache.js.map +1 -0
  88. package/dist/src/core/lib/colorParser.d.ts +21 -0
  89. package/dist/src/core/lib/colorParser.js +54 -0
  90. package/dist/src/core/lib/colorParser.js.map +1 -0
  91. package/dist/src/core/lib/textureCompression.d.ts +28 -0
  92. package/dist/src/core/lib/textureCompression.js +363 -0
  93. package/dist/src/core/lib/textureCompression.js.map +1 -0
  94. package/dist/src/core/lib/textureSvg.d.ts +16 -0
  95. package/dist/src/core/lib/textureSvg.js +45 -0
  96. package/dist/src/core/lib/textureSvg.js.map +1 -0
  97. package/dist/src/core/lib/utils.d.ts +66 -0
  98. package/dist/src/core/lib/utils.js +268 -0
  99. package/dist/src/core/lib/utils.js.map +1 -0
  100. package/dist/src/core/lib/validateImageBitmap.d.ts +7 -0
  101. package/dist/src/core/lib/validateImageBitmap.js +68 -0
  102. package/dist/src/core/lib/validateImageBitmap.js.map +1 -0
  103. package/dist/src/core/platforms/Platform.d.ts +42 -0
  104. package/dist/src/core/platforms/Platform.js +4 -0
  105. package/dist/src/core/platforms/Platform.js.map +1 -0
  106. package/dist/src/core/platforms/web/WebPlatform.d.ts +10 -0
  107. package/dist/src/core/platforms/web/WebPlatform.js +90 -0
  108. package/dist/src/core/platforms/web/WebPlatform.js.map +1 -0
  109. package/dist/src/core/renderers/CoreContextTexture.d.ts +13 -0
  110. package/dist/src/core/renderers/CoreContextTexture.js +16 -0
  111. package/dist/src/core/renderers/CoreContextTexture.js.map +1 -0
  112. package/dist/src/core/renderers/CoreRenderOp.d.ts +3 -0
  113. package/dist/src/core/renderers/CoreRenderOp.js +3 -0
  114. package/dist/src/core/renderers/CoreRenderOp.js.map +1 -0
  115. package/dist/src/core/renderers/CoreRenderer.d.ts +81 -0
  116. package/dist/src/core/renderers/CoreRenderer.js +14 -0
  117. package/dist/src/core/renderers/CoreRenderer.js.map +1 -0
  118. package/dist/src/core/renderers/CoreShaderNode.d.ts +69 -0
  119. package/dist/src/core/renderers/CoreShaderNode.js +130 -0
  120. package/dist/src/core/renderers/CoreShaderNode.js.map +1 -0
  121. package/dist/src/core/renderers/CoreShaderProgram.d.ts +4 -0
  122. package/dist/src/core/renderers/CoreShaderProgram.js +2 -0
  123. package/dist/src/core/renderers/CoreShaderProgram.js.map +1 -0
  124. package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +36 -0
  125. package/dist/src/core/renderers/canvas/CanvasRenderer.js +221 -0
  126. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -0
  127. package/dist/src/core/renderers/canvas/CanvasShaderNode.d.ts +21 -0
  128. package/dist/src/core/renderers/canvas/CanvasShaderNode.js +42 -0
  129. package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -0
  130. package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +17 -0
  131. package/dist/src/core/renderers/canvas/CanvasTexture.js +110 -0
  132. package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -0
  133. package/dist/src/core/renderers/webgl/SdfRenderOp.d.ts +41 -0
  134. package/dist/src/core/renderers/webgl/SdfRenderOp.js +88 -0
  135. package/dist/src/core/renderers/webgl/SdfRenderOp.js.map +1 -0
  136. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +14 -0
  137. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +45 -0
  138. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -0
  139. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +22 -0
  140. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +49 -0
  141. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +1 -0
  142. package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +67 -0
  143. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +259 -0
  144. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -0
  145. package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +221 -0
  146. package/dist/src/core/renderers/webgl/WebGlRenderer.js +1015 -0
  147. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -0
  148. package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +213 -0
  149. package/dist/src/core/renderers/webgl/WebGlShaderNode.js +331 -0
  150. package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -0
  151. package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +37 -0
  152. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +240 -0
  153. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -0
  154. package/dist/src/core/renderers/webgl/internal/BufferCollection.d.ts +28 -0
  155. package/dist/src/core/renderers/webgl/internal/BufferCollection.js +39 -0
  156. package/dist/src/core/renderers/webgl/internal/BufferCollection.js.map +1 -0
  157. package/dist/src/core/renderers/webgl/internal/RendererUtils.d.ts +55 -0
  158. package/dist/src/core/renderers/webgl/internal/RendererUtils.js +88 -0
  159. package/dist/src/core/renderers/webgl/internal/RendererUtils.js.map +1 -0
  160. package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +74 -0
  161. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +83 -0
  162. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -0
  163. package/dist/src/core/renderers/webgl/internal/WebGlUtils.d.ts +10 -0
  164. package/dist/src/core/renderers/webgl/internal/WebGlUtils.js +13 -0
  165. package/dist/src/core/renderers/webgl/internal/WebGlUtils.js.map +1 -0
  166. package/dist/src/core/shaders/canvas/Border.d.ts +15 -0
  167. package/dist/src/core/shaders/canvas/Border.js +83 -0
  168. package/dist/src/core/shaders/canvas/Border.js.map +1 -0
  169. package/dist/src/core/shaders/canvas/HolePunch.d.ts +7 -0
  170. package/dist/src/core/shaders/canvas/HolePunch.js +22 -0
  171. package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -0
  172. package/dist/src/core/shaders/canvas/LinearGradient.d.ts +10 -0
  173. package/dist/src/core/shaders/canvas/LinearGradient.js +32 -0
  174. package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -0
  175. package/dist/src/core/shaders/canvas/RadialGradient.d.ts +11 -0
  176. package/dist/src/core/shaders/canvas/RadialGradient.js +54 -0
  177. package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -0
  178. package/dist/src/core/shaders/canvas/Rounded.d.ts +7 -0
  179. package/dist/src/core/shaders/canvas/Rounded.js +17 -0
  180. package/dist/src/core/shaders/canvas/Rounded.js.map +1 -0
  181. package/dist/src/core/shaders/canvas/RoundedWithBorder.d.ts +10 -0
  182. package/dist/src/core/shaders/canvas/RoundedWithBorder.js +57 -0
  183. package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -0
  184. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.d.ts +7 -0
  185. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +61 -0
  186. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -0
  187. package/dist/src/core/shaders/canvas/RoundedWithShadow.d.ts +7 -0
  188. package/dist/src/core/shaders/canvas/RoundedWithShadow.js +26 -0
  189. package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -0
  190. package/dist/src/core/shaders/canvas/Shadow.d.ts +8 -0
  191. package/dist/src/core/shaders/canvas/Shadow.js +15 -0
  192. package/dist/src/core/shaders/canvas/Shadow.js.map +1 -0
  193. package/dist/src/core/shaders/canvas/utils/render.d.ts +5 -0
  194. package/dist/src/core/shaders/canvas/utils/render.js +81 -0
  195. package/dist/src/core/shaders/canvas/utils/render.js.map +1 -0
  196. package/dist/src/core/shaders/templates/BorderTemplate.d.ts +47 -0
  197. package/dist/src/core/shaders/templates/BorderTemplate.js +77 -0
  198. package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -0
  199. package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +46 -0
  200. package/dist/src/core/shaders/templates/HolePunchTemplate.js +19 -0
  201. package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -0
  202. package/dist/src/core/shaders/templates/LinearGradientTemplate.d.ts +23 -0
  203. package/dist/src/core/shaders/templates/LinearGradientTemplate.js +31 -0
  204. package/dist/src/core/shaders/templates/LinearGradientTemplate.js.map +1 -0
  205. package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +33 -0
  206. package/dist/src/core/shaders/templates/RadialGradientTemplate.js +33 -0
  207. package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -0
  208. package/dist/src/core/shaders/templates/RoundedTemplate.d.ts +29 -0
  209. package/dist/src/core/shaders/templates/RoundedTemplate.js +51 -0
  210. package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -0
  211. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +7 -0
  212. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js +8 -0
  213. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js.map +1 -0
  214. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +8 -0
  215. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js +9 -0
  216. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js.map +1 -0
  217. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +6 -0
  218. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js +7 -0
  219. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js.map +1 -0
  220. package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +34 -0
  221. package/dist/src/core/shaders/templates/ShadowTemplate.js +50 -0
  222. package/dist/src/core/shaders/templates/ShadowTemplate.js.map +1 -0
  223. package/dist/src/core/shaders/utils.d.ts +5 -0
  224. package/dist/src/core/shaders/utils.js +25 -0
  225. package/dist/src/core/shaders/utils.js.map +1 -0
  226. package/dist/src/core/shaders/webgl/Border.d.ts +3 -0
  227. package/dist/src/core/shaders/webgl/Border.js +153 -0
  228. package/dist/src/core/shaders/webgl/Border.js.map +1 -0
  229. package/dist/src/core/shaders/webgl/Default.d.ts +2 -0
  230. package/dist/src/core/shaders/webgl/Default.js +51 -0
  231. package/dist/src/core/shaders/webgl/Default.js.map +1 -0
  232. package/dist/src/core/shaders/webgl/HolePunch.d.ts +3 -0
  233. package/dist/src/core/shaders/webgl/HolePunch.js +49 -0
  234. package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -0
  235. package/dist/src/core/shaders/webgl/LinearGradient.d.ts +3 -0
  236. package/dist/src/core/shaders/webgl/LinearGradient.js +114 -0
  237. package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -0
  238. package/dist/src/core/shaders/webgl/RadialGradient.d.ts +3 -0
  239. package/dist/src/core/shaders/webgl/RadialGradient.js +81 -0
  240. package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -0
  241. package/dist/src/core/shaders/webgl/Rounded.d.ts +7 -0
  242. package/dist/src/core/shaders/webgl/Rounded.js +88 -0
  243. package/dist/src/core/shaders/webgl/Rounded.js.map +1 -0
  244. package/dist/src/core/shaders/webgl/RoundedWithBorder.d.ts +3 -0
  245. package/dist/src/core/shaders/webgl/RoundedWithBorder.js +202 -0
  246. package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -0
  247. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.d.ts +3 -0
  248. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +223 -0
  249. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -0
  250. package/dist/src/core/shaders/webgl/RoundedWithShadow.d.ts +3 -0
  251. package/dist/src/core/shaders/webgl/RoundedWithShadow.js +123 -0
  252. package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -0
  253. package/dist/src/core/shaders/webgl/SdfShader.d.ts +13 -0
  254. package/dist/src/core/shaders/webgl/SdfShader.js +72 -0
  255. package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -0
  256. package/dist/src/core/shaders/webgl/Shadow.d.ts +3 -0
  257. package/dist/src/core/shaders/webgl/Shadow.js +115 -0
  258. package/dist/src/core/shaders/webgl/Shadow.js.map +1 -0
  259. package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +59 -0
  260. package/dist/src/core/text-rendering/CanvasFontHandler.js +206 -0
  261. package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -0
  262. package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +17 -0
  263. package/dist/src/core/text-rendering/CanvasTextRenderer.js +139 -0
  264. package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -0
  265. package/dist/src/core/text-rendering/SdfFontHandler.d.ts +167 -0
  266. package/dist/src/core/text-rendering/SdfFontHandler.js +371 -0
  267. package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -0
  268. package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +17 -0
  269. package/dist/src/core/text-rendering/SdfTextRenderer.js +249 -0
  270. package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -0
  271. package/dist/src/core/text-rendering/TextLayoutEngine.d.ts +18 -0
  272. package/dist/src/core/text-rendering/TextLayoutEngine.js +380 -0
  273. package/dist/src/core/text-rendering/TextLayoutEngine.js.map +1 -0
  274. package/dist/src/core/text-rendering/TextRenderer.d.ts +406 -0
  275. package/dist/src/core/text-rendering/TextRenderer.js +2 -0
  276. package/dist/src/core/text-rendering/TextRenderer.js.map +1 -0
  277. package/dist/src/core/text-rendering/Utils.d.ts +30 -0
  278. package/dist/src/core/text-rendering/Utils.js +66 -0
  279. package/dist/src/core/text-rendering/Utils.js.map +1 -0
  280. package/dist/src/core/textures/ColorTexture.d.ts +36 -0
  281. package/dist/src/core/textures/ColorTexture.js +57 -0
  282. package/dist/src/core/textures/ColorTexture.js.map +1 -0
  283. package/dist/src/core/textures/ImageTexture.d.ts +131 -0
  284. package/dist/src/core/textures/ImageTexture.js +211 -0
  285. package/dist/src/core/textures/ImageTexture.js.map +1 -0
  286. package/dist/src/core/textures/NoiseTexture.d.ts +43 -0
  287. package/dist/src/core/textures/NoiseTexture.js +50 -0
  288. package/dist/src/core/textures/NoiseTexture.js.map +1 -0
  289. package/dist/src/core/textures/RenderTexture.d.ts +29 -0
  290. package/dist/src/core/textures/RenderTexture.js +36 -0
  291. package/dist/src/core/textures/RenderTexture.js.map +1 -0
  292. package/dist/src/core/textures/SubTexture.d.ts +61 -0
  293. package/dist/src/core/textures/SubTexture.js +99 -0
  294. package/dist/src/core/textures/SubTexture.js.map +1 -0
  295. package/dist/src/core/textures/Texture.d.ts +275 -0
  296. package/dist/src/core/textures/Texture.js +326 -0
  297. package/dist/src/core/textures/Texture.js.map +1 -0
  298. package/dist/src/core/utils.d.ts +23 -0
  299. package/dist/src/core/utils.js +155 -0
  300. package/dist/src/core/utils.js.map +1 -0
  301. package/dist/src/main-api/INode.d.ts +65 -0
  302. package/dist/src/main-api/INode.js +2 -0
  303. package/dist/src/main-api/INode.js.map +1 -0
  304. package/dist/src/main-api/Inspector.d.ts +154 -0
  305. package/dist/src/main-api/Inspector.js +844 -0
  306. package/dist/src/main-api/Inspector.js.map +1 -0
  307. package/dist/src/main-api/Renderer.d.ts +629 -0
  308. package/dist/src/main-api/Renderer.js +471 -0
  309. package/dist/src/main-api/Renderer.js.map +1 -0
  310. package/dist/src/main-api/utils.d.ts +2 -0
  311. package/dist/src/main-api/utils.js +34 -0
  312. package/dist/src/main-api/utils.js.map +1 -0
  313. package/dist/src/utils.d.ts +123 -0
  314. package/dist/src/utils.js +234 -0
  315. package/dist/src/utils.js.map +1 -0
  316. package/dist/tsconfig.dist.tsbuildinfo +1 -0
  317. package/exports/canvas-shaders.ts +11 -0
  318. package/exports/canvas.ts +27 -0
  319. package/exports/index.ts +69 -0
  320. package/exports/inspector.ts +5 -0
  321. package/exports/utils.ts +32 -0
  322. package/exports/webgl-shaders.ts +12 -0
  323. package/exports/webgl.ts +33 -0
  324. package/package.json +99 -0
  325. package/src/common/CommonTypes.ts +145 -0
  326. package/src/common/EventEmitter.ts +58 -0
  327. package/src/common/IAnimationController.ts +65 -0
  328. package/src/common/IEventEmitter.ts +11 -0
  329. package/src/core/Autosizer.ts +205 -0
  330. package/src/core/CoreNode.test.ts +535 -0
  331. package/src/core/CoreNode.ts +2883 -0
  332. package/src/core/CoreShaderManager.ts +170 -0
  333. package/src/core/CoreTextNode.ts +573 -0
  334. package/src/core/CoreTextureManager.ts +552 -0
  335. package/src/core/Stage.ts +1037 -0
  336. package/src/core/TextureError.ts +46 -0
  337. package/src/core/TextureMemoryManager.ts +378 -0
  338. package/src/core/animations/AnimationManager.ts +178 -0
  339. package/src/core/animations/CoreAnimation.ts +138 -0
  340. package/src/core/lib/ContextSpy.ts +22 -0
  341. package/src/core/lib/ImageWorker.ts +292 -0
  342. package/src/core/lib/Matrix3d.ts +231 -0
  343. package/src/core/lib/RenderCoords.ts +55 -0
  344. package/src/core/lib/WebGlContextWrapper.ts +1448 -0
  345. package/src/core/lib/collectionUtils.ts +99 -0
  346. package/src/core/lib/colorCache.ts +20 -0
  347. package/src/core/lib/colorParser.ts +66 -0
  348. package/src/core/lib/textureCompression.ts +492 -0
  349. package/src/core/lib/textureSvg.ts +59 -0
  350. package/src/core/lib/utils.ts +400 -0
  351. package/src/core/lib/validateImageBitmap.ts +87 -0
  352. package/src/core/platforms/Platform.ts +64 -0
  353. package/src/core/platforms/web/WebPlatform.ts +132 -0
  354. package/src/core/renderers/CoreContextTexture.ts +25 -0
  355. package/src/core/renderers/CoreRenderOp.ts +3 -0
  356. package/src/core/renderers/CoreRenderer.ts +101 -0
  357. package/src/core/renderers/CoreShaderNode.ts +202 -0
  358. package/src/core/renderers/CoreShaderProgram.ts +4 -0
  359. package/src/core/renderers/canvas/CanvasRenderer.ts +274 -0
  360. package/src/core/renderers/canvas/CanvasShaderNode.ts +79 -0
  361. package/src/core/renderers/canvas/CanvasTexture.ts +141 -0
  362. package/src/core/renderers/webgl/SdfRenderOp.ts +103 -0
  363. package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +70 -0
  364. package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +76 -0
  365. package/src/core/renderers/webgl/WebGlCtxTexture.ts +332 -0
  366. package/src/core/renderers/webgl/WebGlRenderer.ts +1323 -0
  367. package/src/core/renderers/webgl/WebGlShaderNode.ts +423 -0
  368. package/src/core/renderers/webgl/WebGlShaderProgram.ts +346 -0
  369. package/src/core/renderers/webgl/internal/BufferCollection.ts +46 -0
  370. package/src/core/renderers/webgl/internal/RendererUtils.ts +136 -0
  371. package/src/core/renderers/webgl/internal/ShaderUtils.ts +262 -0
  372. package/src/core/renderers/webgl/internal/WebGlUtils.ts +16 -0
  373. package/src/core/shaders/canvas/Border.ts +119 -0
  374. package/src/core/shaders/canvas/HolePunch.ts +38 -0
  375. package/src/core/shaders/canvas/LinearGradient.ts +54 -0
  376. package/src/core/shaders/canvas/RadialGradient.ts +82 -0
  377. package/src/core/shaders/canvas/Rounded.ts +38 -0
  378. package/src/core/shaders/canvas/RoundedWithBorder.ts +105 -0
  379. package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +118 -0
  380. package/src/core/shaders/canvas/RoundedWithShadow.ts +56 -0
  381. package/src/core/shaders/canvas/Shadow.ts +35 -0
  382. package/src/core/shaders/canvas/utils/render.ts +143 -0
  383. package/src/core/shaders/templates/BorderTemplate.ts +128 -0
  384. package/src/core/shaders/templates/HolePunchTemplate.ts +65 -0
  385. package/src/core/shaders/templates/LinearGradientTemplate.ts +54 -0
  386. package/src/core/shaders/templates/RadialGradientTemplate.ts +66 -0
  387. package/src/core/shaders/templates/RoundedTemplate.ts +81 -0
  388. package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +21 -0
  389. package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +23 -0
  390. package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +18 -0
  391. package/src/core/shaders/templates/ShadowTemplate.ts +89 -0
  392. package/src/core/shaders/utils.ts +30 -0
  393. package/src/core/shaders/webgl/Border.ts +158 -0
  394. package/src/core/shaders/webgl/Default.ts +52 -0
  395. package/src/core/shaders/webgl/HolePunch.ts +58 -0
  396. package/src/core/shaders/webgl/LinearGradient.ts +119 -0
  397. package/src/core/shaders/webgl/RadialGradient.ts +91 -0
  398. package/src/core/shaders/webgl/Rounded.ts +97 -0
  399. package/src/core/shaders/webgl/RoundedWithBorder.ts +212 -0
  400. package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +235 -0
  401. package/src/core/shaders/webgl/RoundedWithShadow.ts +132 -0
  402. package/src/core/shaders/webgl/SdfShader.ts +73 -0
  403. package/src/core/shaders/webgl/Shadow.ts +119 -0
  404. package/src/core/text-rendering/CanvasFontHandler.ts +285 -0
  405. package/src/core/text-rendering/CanvasTextRenderer.ts +236 -0
  406. package/src/core/text-rendering/SdfFontHandler.ts +566 -0
  407. package/src/core/text-rendering/SdfTextRenderer.ts +352 -0
  408. package/src/core/text-rendering/TextLayoutEngine.ts +672 -0
  409. package/src/core/text-rendering/TextRenderer.ts +449 -0
  410. package/src/core/text-rendering/Utils.ts +80 -0
  411. package/src/core/text-rendering/tests/TextLayoutEngine.test.ts +434 -0
  412. package/src/core/textures/ColorTexture.ts +85 -0
  413. package/src/core/textures/ImageTexture.ts +394 -0
  414. package/src/core/textures/NoiseTexture.ts +87 -0
  415. package/src/core/textures/RenderTexture.ts +68 -0
  416. package/src/core/textures/SubTexture.ts +165 -0
  417. package/src/core/textures/Texture.ts +505 -0
  418. package/src/core/utils.ts +210 -0
  419. package/src/env.d.ts +7 -0
  420. package/src/main-api/INode.ts +92 -0
  421. package/src/main-api/Inspector.ts +1267 -0
  422. package/src/main-api/Renderer.ts +1011 -0
  423. package/src/main-api/utils.ts +45 -0
  424. package/src/utils.ts +302 -0
@@ -0,0 +1,449 @@
1
+ import type { CoreTextNodeProps } from '../CoreTextNode.js';
2
+ import type { CoreRenderer } from '../renderers/CoreRenderer.js';
3
+ import type { SdfRenderOp } from '../renderers/webgl/SdfRenderOp.js';
4
+ import type { Stage } from '../Stage.js';
5
+
6
+ // Text baseline and vertical align types
7
+ export type TextBaseline =
8
+ | 'alphabetic'
9
+ | 'hanging'
10
+ | 'middle'
11
+ | 'ideographic'
12
+ | 'bottom';
13
+ export type TextVerticalAlign = 'top' | 'middle' | 'bottom';
14
+ export type TextRenderers = 'canvas' | 'sdf';
15
+ /**
16
+ * Structure mapping font family names to a set of font faces.
17
+ */
18
+ export interface FontFamilyMap {
19
+ [familyName: string]: FontFace;
20
+ }
21
+
22
+ /**
23
+ * Font metrics used for layout and default line height calculations.
24
+ */
25
+ export interface FontMetrics {
26
+ /**
27
+ * The distance, in font units, from the baseline to the highest point of the font.
28
+ */
29
+ ascender: number;
30
+ /**
31
+ * The distance, in font units, from the baseline to the lowest point of the font.
32
+ */
33
+ descender: number;
34
+ /**
35
+ * The additional space used in the calculation of the default line height in font units.
36
+ */
37
+ lineGap: number;
38
+ /**
39
+ * The number of font units per 1 EM.
40
+ */
41
+ unitsPerEm: number;
42
+ }
43
+
44
+ /**
45
+ * Normalized font metrics where values are expressed as a fraction of 1 EM.
46
+ */
47
+ export interface NormalizedFontMetrics {
48
+ /**
49
+ * The distance, as a fraction of 1 EM, from the baseline to the highest point of the font.
50
+ */
51
+ ascender: number;
52
+ /**
53
+ * The distance, as a fraction of 1 EM, from the baseline to the lowest point of the font.
54
+ */
55
+ descender: number;
56
+ /**
57
+ * The additional space used in the calculation of the default line height as a fraction of 1 EM
58
+ */
59
+ lineGap: number;
60
+ }
61
+
62
+ /**
63
+ * Text renderer properties that are used in resolving appropriate font faces
64
+ *
65
+ * @remarks
66
+ * Extended by {@link TrProps}
67
+ */
68
+ export interface TrFontProps {
69
+ /**
70
+ * Font Family
71
+ *
72
+ * @internalRemarks
73
+ * `fontFamily` is defined currently as single string, but in the future we may want to
74
+ * support multiple font family fallbacks, as this is supported by CSS / Canvas2d. We can
75
+ * do this in a backwards compatible way by unioning an array of strings to the
76
+ * `fontFamily` property.
77
+ */
78
+ fontFamily: string;
79
+ /**
80
+ * Font Style
81
+ *
82
+ * @remarks
83
+ * The font style to use when looking up the font face. This can be one of the
84
+ * following strings:
85
+ * - `'normal'`
86
+ * - `'italic'`
87
+ * - `'oblique'`
88
+ */
89
+ fontStyle: 'normal' | 'italic' | 'oblique';
90
+ /**
91
+ * Font Size
92
+ *
93
+ * @remarks
94
+ * The font size to use when looking up the font face.
95
+ *
96
+ * The font size is specified in pixels and is the height of the font's
97
+ * em-square. The em-square is essentially the height of the capital letters
98
+ * for the font. The actual height of the text can be larger than the
99
+ * specified font size, as the font may have ascenders and descenders that
100
+ * extend beyond the em-square.
101
+ *
102
+ * @default 16
103
+ */
104
+ fontSize: number;
105
+ }
106
+
107
+ export interface TrProps extends TrFontProps {
108
+ /**
109
+ * Text to display
110
+ *
111
+ * @default ''
112
+ */
113
+ text: string;
114
+ /**
115
+ * Text alignment
116
+ *
117
+ * @remarks
118
+ * Alignment of the text relative to it's contained bounds. For best results,
119
+ * use {@link contain} mode `'width'` or `'both'` and a set an explicit
120
+ * {@link width} for the text to be aligned within.
121
+ *
122
+ * @default 'left'
123
+ */
124
+ textAlign: 'left' | 'center' | 'right';
125
+ /**
126
+ * Color of text
127
+ *
128
+ * @remarks
129
+ * The color value is a number in the format 0xRRGGBBAA, where RR is the red
130
+ * component, GG is the green component, BB is the blue component, and AA is
131
+ * the alpha component.
132
+ *
133
+ * @default 0xffffffff (opaque white)
134
+ */
135
+ color: number;
136
+ x: number;
137
+ y: number;
138
+
139
+ maxWidth: number;
140
+ maxHeight: number;
141
+ /**
142
+ * Vertical offset for text
143
+ *
144
+ * @remarks
145
+ * The vertical offset of the text.
146
+ *
147
+ * @default 0
148
+ */
149
+ offsetY: number;
150
+ /**
151
+ * Letter spacing for text (in pixels)
152
+ *
153
+ * @remarks
154
+ * This property sets additional (or reduced, if value is negative) spacing
155
+ * between characters in the text.
156
+ *
157
+ * @default 0
158
+ */
159
+ letterSpacing: number;
160
+ /**
161
+ * Line height for text (in pixels)
162
+ *
163
+ * @remarks
164
+ * This property sets the height of each line. If set to `undefined`, the
165
+ * line height will be calculated based on the font and font size to be the
166
+ * minimal height required to completely contain a line of text.
167
+ *
168
+ * See: https://github.com/lightning-js/renderer/issues/170
169
+ *
170
+ * @default `undefined`
171
+ */
172
+ lineHeight: number;
173
+ /**
174
+ * Max lines for text
175
+ *
176
+ * @remarks
177
+ * This property sets max number of lines of a text paragraph.
178
+ * Not yet implemented in the SDF renderer.
179
+ *
180
+ * @default 0
181
+ */
182
+ maxLines: number;
183
+ /**
184
+ * Vertical Align for text when lineHeight > fontSize
185
+ *
186
+ * @remarks
187
+ * This property sets the vertical align of the text.
188
+ * Not yet implemented in the SDF renderer.
189
+ *
190
+ * @default middle
191
+ */
192
+ verticalAlign: TextVerticalAlign;
193
+ /**
194
+ * Overflow Suffix for text
195
+ *
196
+ * @remarks
197
+ * The suffix to be added when text is cropped due to overflow.
198
+ * Not yet implemented in the SDF renderer.
199
+ *
200
+ * @default "..."
201
+ */
202
+ overflowSuffix: string;
203
+
204
+ /**
205
+ * Word Break for text
206
+ *
207
+ * @remarks
208
+ * This property sets how words should break when reaching the end of a line.
209
+ *
210
+ * - `'overflow'`: Uses the Css/HTML normal word-break behavior, generally not used in app development.
211
+ * - `'break-all'`: To prevent overflow, word breaks should happen between any two characters.
212
+ * - `'break-word'`: To prevent overflow, word breaks should happen between words. If words are too long word breaks happen between any two characters.
213
+ *
214
+ * @default "break-word"
215
+ */
216
+ wordBreak: 'overflow' | 'break-all' | 'break-word';
217
+
218
+ /**
219
+ * contain mode for text
220
+ *
221
+ * @remarks
222
+ *
223
+ * This property sets how the text should be contained within its bounding box.
224
+ *
225
+ * - 'width': The text is contained within the specified maxWidth, horizontal position of text will adjust according to {@link textAlign}.
226
+ * - 'height': The text is contained within the specified maxHeight, vertical position of text will adjust according to {@link verticalAlign}.
227
+ * - 'both': The text is contained within both the specified maxWidth and maxHeight.
228
+ * - 'none': The text is not contained within any bounding box.
229
+ *
230
+ * @default 'none'
231
+ */
232
+ contain: 'width' | 'height' | 'both' | 'none';
233
+ }
234
+
235
+ /**
236
+ * Glyph layout information for WebGL rendering
237
+ */
238
+ export interface GlyphLayout {
239
+ /**
240
+ * Unicode codepoint
241
+ */
242
+ codepoint: number;
243
+ /**
244
+ * Glyph ID in the font atlas
245
+ */
246
+ glyphId: number;
247
+ /**
248
+ * X position relative to text origin
249
+ */
250
+ x: number;
251
+ /**
252
+ * Y position relative to text origin
253
+ */
254
+ y: number;
255
+ /**
256
+ * Width of glyph in font units
257
+ */
258
+ width: number;
259
+ /**
260
+ * Height of glyph in font units
261
+ */
262
+ height: number;
263
+ /**
264
+ * X offset for glyph positioning
265
+ */
266
+ xOffset: number;
267
+ /**
268
+ * Y offset for glyph positioning
269
+ */
270
+ yOffset: number;
271
+ /**
272
+ * Atlas texture coordinates (normalized 0-1)
273
+ */
274
+ atlasX: number;
275
+ atlasY: number;
276
+ atlasWidth: number;
277
+ atlasHeight: number;
278
+ }
279
+
280
+ /**
281
+ * Complete text layout information for caching
282
+ */
283
+ export interface TextLayout {
284
+ /**
285
+ * Individual glyph layouts
286
+ */
287
+ glyphs: GlyphLayout[];
288
+ /**
289
+ * Total text width
290
+ */
291
+ width: number;
292
+ /**
293
+ * Total text height
294
+ */
295
+ height: number;
296
+ /**
297
+ * Font scale factor
298
+ */
299
+ fontScale: number;
300
+ /**
301
+ * Line height
302
+ */
303
+ lineHeight: number;
304
+ /**
305
+ * Font family used
306
+ */
307
+ fontFamily: string;
308
+ /**
309
+ * distanceRange used
310
+ */
311
+ distanceRange: number;
312
+ }
313
+
314
+ export interface FontLoadOptions {
315
+ fontFamily: string;
316
+ metrics?: FontMetrics;
317
+ // For Canvas/traditional font loading
318
+ fontUrl?: string;
319
+ // For SDF/atlas-based font loading
320
+ atlasUrl?: string;
321
+ atlasDataUrl?: string;
322
+ }
323
+
324
+ /**
325
+ * Measure Width of Text function to be defined in font handlers, used in TextLayoutEngine
326
+ */
327
+ export type MeasureTextFn = (
328
+ text: string,
329
+ fontFamily: string,
330
+ letterSpacing: number,
331
+ ) => number;
332
+
333
+ export interface FontHandler {
334
+ init: (
335
+ c: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D,
336
+ ) => void;
337
+ type: 'canvas' | 'sdf';
338
+ isFontLoaded: (fontFamily: string) => boolean;
339
+ loadFont: (stage: Stage, options: FontLoadOptions) => Promise<void>;
340
+ waitingForFont: (fontFamily: string, CoreTextNode) => void;
341
+ stopWaitingForFont: (fontFamily: string, CoreTextNode) => void;
342
+ getFontFamilies: () => FontFamilyMap;
343
+ canRenderFont: (trProps: TrProps) => boolean;
344
+ getFontMetrics: (
345
+ fontFamily: string,
346
+ fontSize: number,
347
+ ) => NormalizedFontMetrics;
348
+ measureText: MeasureTextFn;
349
+ }
350
+
351
+ /**
352
+ * Cached SDF vertex data for a single text node.
353
+ * When nothing changes (layout, transform, color, alpha), the pre-transformed
354
+ * vertex Float32Array can be mem-copied into the shared SDF buffer instead of
355
+ * re-computing per-glyph matrix transforms each frame.
356
+ */
357
+ export interface SdfVertexCache {
358
+ /** Pre-transformed vertex Float32Array (null = cache miss). */
359
+ vertices: Float32Array | null;
360
+ /** Number of glyphs in the cached data. */
361
+ glyphCount: number;
362
+ /** RGBA color at the time the cache was built. */
363
+ color: number;
364
+ /** worldAlpha at the time the cache was built. */
365
+ alpha: number;
366
+ /** The 6 relevant transform matrix components [m0,m1,m3,m4,m6,m7]. */
367
+ transform: Float32Array;
368
+ /** Reference to the TextLayout the cache was built from. */
369
+ layoutRef: TextLayout | null;
370
+ }
371
+
372
+ export interface TextRenderProps {
373
+ fontFamily: string;
374
+ fontSize: number;
375
+ color: number;
376
+ offsetY: number;
377
+ worldAlpha: number;
378
+ globalTransform: Float32Array;
379
+ clippingRect: unknown;
380
+ width: number;
381
+ height: number;
382
+ parentHasRenderTexture: boolean;
383
+ framebufferDimensions: unknown;
384
+ stage: Stage;
385
+ /** Optional SDF vertex cache — passed by CoreTextNode for cache-hit fast path. */
386
+ sdfCache?: SdfVertexCache;
387
+ }
388
+
389
+ export interface TextRenderInfo {
390
+ width: number;
391
+ height: number;
392
+ hasRemainingText?: boolean;
393
+ remainingLines?: number;
394
+ imageData?: ImageData | null; // Image data for Canvas Text Renderer
395
+ layout?: TextLayout; // Layout data for SDF renderer caching
396
+ }
397
+
398
+ export interface TextRenderer {
399
+ type: 'canvas' | 'sdf';
400
+ font: FontHandler;
401
+ renderText: (props: CoreTextNodeProps) => TextRenderInfo;
402
+ // Updated to accept layout data and return vertex buffer for performance
403
+ addQuads: (layout?: TextLayout) => Float32Array | null;
404
+ renderQuads: (
405
+ renderer: CoreRenderer,
406
+ layout: TextLayout,
407
+ vertexBuffer: Float32Array,
408
+ renderProps: TextRenderProps,
409
+ ) => void | SdfRenderOp | null;
410
+ init: (stage: Stage) => void;
411
+ }
412
+
413
+ /**
414
+ * Text line struct for text mapping
415
+ * 0 - text
416
+ * 1 - width
417
+ * 2 - truncated
418
+ * 3 - line offset x
419
+ * 4 - line offset y
420
+ */
421
+ export type TextLineStruct = [string, number, boolean, number, number];
422
+
423
+ /**
424
+ * Wrapped lines struct for text mapping
425
+ * 0 - line structs
426
+ * 1 - remaining lines
427
+ * 2 - remaining text
428
+ */
429
+ export type WrappedLinesStruct = [TextLineStruct[], number, boolean];
430
+
431
+ /**
432
+ * Wrapped lines struct for text mapping
433
+ * 0 - line structs
434
+ * 1 - remaining lines
435
+ * 2 - remaining text
436
+ * 3 - bare line height
437
+ * 4 - line height pixels
438
+ * 5 - effective width
439
+ * 6 - effective height
440
+ */
441
+ export type TextLayoutStruct = [
442
+ TextLineStruct[],
443
+ number,
444
+ boolean,
445
+ number,
446
+ number,
447
+ number,
448
+ number,
449
+ ];
@@ -0,0 +1,80 @@
1
+ import type { NormalizedFontMetrics } from './TextRenderer.js';
2
+
3
+ const invisibleChars = /[\u200B\u200C\u200D\uFEFF\u00AD\u2060]/g;
4
+
5
+ /**
6
+ * Returns CSS font setting string for use in canvas context.
7
+ *
8
+ * @param fontFace
9
+ * @param fontStyle
10
+ * @param fontSize
11
+ * @param precision
12
+ * @param defaultFontFace
13
+ * @returns
14
+ */
15
+ export function getFontSetting(
16
+ fontFace: string | string[],
17
+ fontStyle: string,
18
+ fontSize: number,
19
+ precision: number,
20
+ defaultFontFace: string,
21
+ ): string {
22
+ let ff = fontFace;
23
+
24
+ if (!Array.isArray(ff)) {
25
+ ff = [ff];
26
+ }
27
+
28
+ const ffs: string[] = [];
29
+ for (let i = 0, n = ff.length; i < n; i++) {
30
+ let curFf = ff[i];
31
+ // Replace the default font face `null` with the actual default font face set
32
+ // on the stage.
33
+ if (curFf === null || curFf === undefined) {
34
+ curFf = defaultFontFace;
35
+ }
36
+ if (curFf === 'serif' || curFf === 'sans-serif') {
37
+ ffs.push(curFf);
38
+ } else {
39
+ ffs.push(`"${curFf}"`);
40
+ }
41
+ }
42
+
43
+ return `${fontStyle} ${fontSize * precision}px ${ffs.join(',')}`;
44
+ }
45
+
46
+ /**
47
+ * Returns true if the given character is a zero-width space.
48
+ *
49
+ * @param space
50
+ */
51
+ export function hasZeroWidthSpace(space: string): boolean {
52
+ return invisibleChars.test(space) === true;
53
+ }
54
+
55
+ /**
56
+ * Returns true if the given character is a zero-width space or a regular space.
57
+ *
58
+ * @param space
59
+ */
60
+ export function isSpace(space: string): boolean {
61
+ return hasZeroWidthSpace(space) || space === ' ';
62
+ }
63
+
64
+ /**
65
+ * Converts a string into an array of tokens and the words between them.
66
+ *
67
+ * @param tokenRegex
68
+ * @param text
69
+ */
70
+ export function tokenizeString(tokenRegex: RegExp, text: string): string[] {
71
+ const delimeters = text.match(tokenRegex) || [];
72
+ const words = text.split(tokenRegex) || [];
73
+
74
+ const final: string[] = [];
75
+ for (let i = 0; i < words.length; i++) {
76
+ final.push(words[i]!, delimeters[i]!);
77
+ }
78
+ final.pop();
79
+ return final.filter((word) => word != '');
80
+ }