html2canvas-pro 2.0.4 → 2.1.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 (632) hide show
  1. package/README.md +8 -6
  2. package/dist/html2canvas-pro.esm.js +10018 -9922
  3. package/dist/html2canvas-pro.esm.js.map +1 -1
  4. package/dist/html2canvas-pro.js +10017 -9922
  5. package/dist/html2canvas-pro.js.map +1 -1
  6. package/dist/html2canvas-pro.min.js +5 -5
  7. package/dist/lib/config.js +3 -4
  8. package/dist/lib/core/bitwise.js +0 -1
  9. package/dist/lib/core/cache-storage.js +34 -48
  10. package/dist/lib/core/context.js +0 -1
  11. package/dist/lib/core/debugger.js +0 -1
  12. package/dist/lib/core/features.js +0 -1
  13. package/dist/lib/core/logger.js +0 -1
  14. package/dist/lib/core/origin-checker.js +0 -1
  15. package/dist/lib/core/performance-monitor.js +1 -24
  16. package/dist/lib/core/render-element.js +210 -0
  17. package/dist/lib/core/util.js +0 -1
  18. package/dist/lib/core/validator.js +0 -1
  19. package/dist/lib/css/index.js +149 -90
  20. package/dist/lib/css/layout/bounds.js +0 -1
  21. package/dist/lib/css/layout/text.js +0 -1
  22. package/dist/lib/css/{ITypeDescriptor.js → property-descriptor.js} +0 -1
  23. package/dist/lib/css/property-descriptors/background-clip.js +0 -1
  24. package/dist/lib/css/property-descriptors/background-color.js +0 -1
  25. package/dist/lib/css/property-descriptors/background-image.js +0 -1
  26. package/dist/lib/css/property-descriptors/background-origin.js +0 -1
  27. package/dist/lib/css/property-descriptors/background-position.js +0 -1
  28. package/dist/lib/css/property-descriptors/background-repeat.js +0 -1
  29. package/dist/lib/css/property-descriptors/background-size.js +0 -1
  30. package/dist/lib/css/property-descriptors/border-color.js +0 -1
  31. package/dist/lib/css/property-descriptors/border-radius.js +0 -1
  32. package/dist/lib/css/property-descriptors/border-style.js +0 -1
  33. package/dist/lib/css/property-descriptors/border-width.js +0 -1
  34. package/dist/lib/css/property-descriptors/box-shadow.js +0 -1
  35. package/dist/lib/css/property-descriptors/clip-path.js +0 -1
  36. package/dist/lib/css/property-descriptors/color.js +0 -1
  37. package/dist/lib/css/property-descriptors/content.js +0 -1
  38. package/dist/lib/css/property-descriptors/counter-increment.js +0 -1
  39. package/dist/lib/css/property-descriptors/counter-reset.js +0 -1
  40. package/dist/lib/css/property-descriptors/direction.js +0 -1
  41. package/dist/lib/css/property-descriptors/display.js +0 -1
  42. package/dist/lib/css/property-descriptors/duration.js +0 -1
  43. package/dist/lib/css/property-descriptors/float.js +0 -1
  44. package/dist/lib/css/property-descriptors/font-family.js +0 -1
  45. package/dist/lib/css/property-descriptors/font-size.js +0 -1
  46. package/dist/lib/css/property-descriptors/font-style.js +0 -1
  47. package/dist/lib/css/property-descriptors/font-variant.js +0 -1
  48. package/dist/lib/css/property-descriptors/font-weight.js +0 -1
  49. package/dist/lib/css/property-descriptors/image-rendering.js +0 -1
  50. package/dist/lib/css/property-descriptors/letter-spacing.js +0 -1
  51. package/dist/lib/css/property-descriptors/line-break.js +0 -1
  52. package/dist/lib/css/property-descriptors/line-height.js +0 -1
  53. package/dist/lib/css/property-descriptors/list-style-image.js +0 -1
  54. package/dist/lib/css/property-descriptors/list-style-position.js +0 -1
  55. package/dist/lib/css/property-descriptors/list-style-type.js +0 -1
  56. package/dist/lib/css/property-descriptors/margin.js +0 -1
  57. package/dist/lib/css/property-descriptors/mix-blend-mode.js +31 -0
  58. package/dist/lib/css/property-descriptors/object-fit.js +0 -1
  59. package/dist/lib/css/property-descriptors/opacity.js +0 -1
  60. package/dist/lib/css/property-descriptors/overflow-wrap.js +0 -1
  61. package/dist/lib/css/property-descriptors/overflow.js +0 -1
  62. package/dist/lib/css/property-descriptors/padding.js +0 -1
  63. package/dist/lib/css/property-descriptors/paint-order.js +0 -1
  64. package/dist/lib/css/property-descriptors/position.js +0 -1
  65. package/dist/lib/css/property-descriptors/quotes.js +0 -1
  66. package/dist/lib/css/property-descriptors/rotate.js +0 -1
  67. package/dist/lib/css/property-descriptors/text-align.js +0 -1
  68. package/dist/lib/css/property-descriptors/text-decoration-color.js +0 -1
  69. package/dist/lib/css/property-descriptors/text-decoration-line.js +0 -1
  70. package/dist/lib/css/property-descriptors/text-decoration-style.js +0 -1
  71. package/dist/lib/css/property-descriptors/text-decoration-thickness.js +0 -1
  72. package/dist/lib/css/property-descriptors/text-overflow.js +0 -1
  73. package/dist/lib/css/property-descriptors/text-shadow.js +0 -1
  74. package/dist/lib/css/property-descriptors/text-transform.js +0 -1
  75. package/dist/lib/css/property-descriptors/text-underline-offset.js +0 -1
  76. package/dist/lib/css/property-descriptors/transform-origin.js +0 -1
  77. package/dist/lib/css/property-descriptors/transform.js +0 -1
  78. package/dist/lib/css/property-descriptors/visibility.js +0 -1
  79. package/dist/lib/css/property-descriptors/webkit-line-clamp.js +0 -1
  80. package/dist/lib/css/property-descriptors/webkit-text-stroke-color.js +0 -1
  81. package/dist/lib/css/property-descriptors/webkit-text-stroke-width.js +0 -1
  82. package/dist/lib/css/property-descriptors/word-break.js +0 -1
  83. package/dist/lib/css/property-descriptors/writing-mode.js +0 -1
  84. package/dist/lib/css/property-descriptors/z-index.js +0 -1
  85. package/dist/lib/css/syntax/parser.js +0 -1
  86. package/dist/lib/css/syntax/tokenizer.js +14 -1
  87. package/dist/lib/css/{IPropertyDescriptor.js → type-descriptor.js} +0 -1
  88. package/dist/lib/css/types/angle.js +0 -1
  89. package/dist/lib/css/types/color-math.js +0 -1
  90. package/dist/lib/css/types/color-spaces/a98.js +0 -1
  91. package/dist/lib/css/types/color-spaces/p3.js +0 -1
  92. package/dist/lib/css/types/color-spaces/pro-photo.js +0 -1
  93. package/dist/lib/css/types/color-spaces/rec2020.js +0 -1
  94. package/dist/lib/css/types/color-spaces/srgb.js +0 -1
  95. package/dist/lib/css/types/color-utilities.js +0 -1
  96. package/dist/lib/css/types/color.js +0 -1
  97. package/dist/lib/css/types/functions/-prefix-linear-gradient.js +0 -1
  98. package/dist/lib/css/types/functions/-prefix-radial-gradient.js +0 -1
  99. package/dist/lib/css/types/functions/-webkit-gradient.js +0 -1
  100. package/dist/lib/css/types/functions/counter.js +0 -1
  101. package/dist/lib/css/types/functions/gradient.js +0 -1
  102. package/dist/lib/css/types/functions/linear-gradient.js +0 -1
  103. package/dist/lib/css/types/functions/radial-gradient.js +0 -1
  104. package/dist/lib/css/types/image.js +0 -1
  105. package/dist/lib/css/types/index.js +0 -1
  106. package/dist/lib/css/types/length-percentage.js +0 -1
  107. package/dist/lib/css/types/length.js +0 -1
  108. package/dist/lib/css/types/time.js +0 -1
  109. package/dist/lib/dom/document-cloner.js +27 -22
  110. package/dist/lib/dom/dom-normalizer.js +0 -1
  111. package/dist/lib/dom/element-container.js +7 -6
  112. package/dist/lib/dom/elements/li-element-container.js +0 -1
  113. package/dist/lib/dom/elements/ol-element-container.js +0 -1
  114. package/dist/lib/dom/elements/select-element-container.js +0 -1
  115. package/dist/lib/dom/elements/textarea-element-container.js +0 -1
  116. package/dist/lib/dom/node-parser.js +37 -53
  117. package/dist/lib/dom/node-type-guards.js +62 -25
  118. package/dist/lib/dom/replaced-elements/canvas-element-container.js +0 -1
  119. package/dist/lib/dom/replaced-elements/iframe-element-container.js +0 -1
  120. package/dist/lib/dom/replaced-elements/image-element-container.js +0 -1
  121. package/dist/lib/dom/replaced-elements/index.js +0 -1
  122. package/dist/lib/dom/replaced-elements/input-element-container.js +0 -1
  123. package/dist/lib/dom/replaced-elements/pseudo-elements.js +0 -1
  124. package/dist/lib/dom/replaced-elements/svg-element-container.js +0 -1
  125. package/dist/lib/dom/text-container.js +0 -1
  126. package/dist/lib/index.js +32 -210
  127. package/dist/lib/invariant.js +0 -1
  128. package/dist/lib/options.js +2 -0
  129. package/dist/lib/render/background.js +0 -1
  130. package/dist/lib/render/bezier-curve.js +0 -1
  131. package/dist/lib/render/border.js +0 -1
  132. package/dist/lib/render/bound-curves.js +0 -1
  133. package/dist/lib/render/box-sizing.js +0 -1
  134. package/dist/lib/render/canvas/background-renderer.js +2 -24
  135. package/dist/lib/render/canvas/border-renderer.js +0 -1
  136. package/dist/lib/render/canvas/canvas-path.js +25 -0
  137. package/dist/lib/render/canvas/canvas-renderer.js +23 -96
  138. package/dist/lib/render/canvas/effects-renderer.js +3 -1
  139. package/dist/lib/render/canvas/foreignobject-renderer.js +8 -16
  140. package/dist/lib/render/canvas/text-renderer.js +61 -117
  141. package/dist/lib/render/effects.js +11 -2
  142. package/dist/lib/render/font-metrics.js +0 -1
  143. package/dist/lib/render/object-fit.js +87 -0
  144. package/dist/lib/render/path.js +0 -1
  145. package/dist/lib/render/renderer-interface.js +0 -1
  146. package/dist/lib/render/stacking-context.js +16 -8
  147. package/dist/lib/render/vector.js +0 -1
  148. package/dist/types/core/cache-storage.d.ts +5 -6
  149. package/dist/types/core/performance-monitor.d.ts +0 -11
  150. package/dist/types/core/render-element.d.ts +3 -0
  151. package/dist/types/css/index.d.ts +3 -0
  152. package/dist/types/css/property-descriptors/background-clip.d.ts +1 -1
  153. package/dist/types/css/property-descriptors/background-color.d.ts +1 -1
  154. package/dist/types/css/property-descriptors/background-image.d.ts +1 -1
  155. package/dist/types/css/property-descriptors/background-origin.d.ts +1 -1
  156. package/dist/types/css/property-descriptors/background-position.d.ts +1 -1
  157. package/dist/types/css/property-descriptors/background-repeat.d.ts +1 -1
  158. package/dist/types/css/property-descriptors/background-size.d.ts +1 -1
  159. package/dist/types/css/property-descriptors/border-color.d.ts +1 -1
  160. package/dist/types/css/property-descriptors/border-radius.d.ts +1 -1
  161. package/dist/types/css/property-descriptors/border-style.d.ts +1 -1
  162. package/dist/types/css/property-descriptors/border-width.d.ts +1 -1
  163. package/dist/types/css/property-descriptors/box-shadow.d.ts +1 -1
  164. package/dist/types/css/property-descriptors/clip-path.d.ts +1 -1
  165. package/dist/types/css/property-descriptors/color.d.ts +1 -1
  166. package/dist/types/css/property-descriptors/content.d.ts +1 -1
  167. package/dist/types/css/property-descriptors/counter-increment.d.ts +1 -1
  168. package/dist/types/css/property-descriptors/counter-reset.d.ts +1 -1
  169. package/dist/types/css/property-descriptors/direction.d.ts +1 -1
  170. package/dist/types/css/property-descriptors/display.d.ts +1 -1
  171. package/dist/types/css/property-descriptors/duration.d.ts +1 -1
  172. package/dist/types/css/property-descriptors/float.d.ts +1 -1
  173. package/dist/types/css/property-descriptors/font-family.d.ts +1 -1
  174. package/dist/types/css/property-descriptors/font-size.d.ts +1 -1
  175. package/dist/types/css/property-descriptors/font-style.d.ts +1 -1
  176. package/dist/types/css/property-descriptors/font-variant.d.ts +1 -1
  177. package/dist/types/css/property-descriptors/font-weight.d.ts +1 -1
  178. package/dist/types/css/property-descriptors/image-rendering.d.ts +1 -1
  179. package/dist/types/css/property-descriptors/letter-spacing.d.ts +1 -1
  180. package/dist/types/css/property-descriptors/line-break.d.ts +1 -1
  181. package/dist/types/css/property-descriptors/line-height.d.ts +1 -1
  182. package/dist/types/css/property-descriptors/list-style-image.d.ts +1 -1
  183. package/dist/types/css/property-descriptors/list-style-position.d.ts +1 -1
  184. package/dist/types/css/property-descriptors/list-style-type.d.ts +1 -1
  185. package/dist/types/css/property-descriptors/margin.d.ts +1 -1
  186. package/dist/types/css/property-descriptors/mix-blend-mode.d.ts +21 -0
  187. package/dist/types/css/property-descriptors/object-fit.d.ts +1 -1
  188. package/dist/types/css/property-descriptors/opacity.d.ts +1 -1
  189. package/dist/types/css/property-descriptors/overflow-wrap.d.ts +1 -1
  190. package/dist/types/css/property-descriptors/overflow.d.ts +1 -1
  191. package/dist/types/css/property-descriptors/padding.d.ts +1 -1
  192. package/dist/types/css/property-descriptors/paint-order.d.ts +1 -1
  193. package/dist/types/css/property-descriptors/position.d.ts +1 -1
  194. package/dist/types/css/property-descriptors/quotes.d.ts +1 -1
  195. package/dist/types/css/property-descriptors/rotate.d.ts +1 -1
  196. package/dist/types/css/property-descriptors/text-align.d.ts +1 -1
  197. package/dist/types/css/property-descriptors/text-decoration-color.d.ts +1 -1
  198. package/dist/types/css/property-descriptors/text-decoration-line.d.ts +1 -1
  199. package/dist/types/css/property-descriptors/text-decoration-style.d.ts +1 -1
  200. package/dist/types/css/property-descriptors/text-decoration-thickness.d.ts +1 -1
  201. package/dist/types/css/property-descriptors/text-overflow.d.ts +1 -1
  202. package/dist/types/css/property-descriptors/text-shadow.d.ts +1 -1
  203. package/dist/types/css/property-descriptors/text-transform.d.ts +1 -1
  204. package/dist/types/css/property-descriptors/text-underline-offset.d.ts +1 -1
  205. package/dist/types/css/property-descriptors/transform-origin.d.ts +1 -1
  206. package/dist/types/css/property-descriptors/transform.d.ts +1 -1
  207. package/dist/types/css/property-descriptors/visibility.d.ts +1 -1
  208. package/dist/types/css/property-descriptors/webkit-line-clamp.d.ts +1 -1
  209. package/dist/types/css/property-descriptors/webkit-text-stroke-color.d.ts +1 -1
  210. package/dist/types/css/property-descriptors/webkit-text-stroke-width.d.ts +1 -1
  211. package/dist/types/css/property-descriptors/word-break.d.ts +1 -1
  212. package/dist/types/css/property-descriptors/writing-mode.d.ts +1 -1
  213. package/dist/types/css/property-descriptors/z-index.d.ts +1 -1
  214. package/dist/types/css/syntax/tokenizer.d.ts +5 -0
  215. package/dist/types/css/types/angle.d.ts +1 -1
  216. package/dist/types/css/types/color.d.ts +1 -1
  217. package/dist/types/css/types/image.d.ts +1 -1
  218. package/dist/types/css/types/time.d.ts +1 -1
  219. package/dist/types/dom/element-container.d.ts +4 -11
  220. package/dist/types/dom/node-parser.d.ts +2 -15
  221. package/dist/types/dom/node-type-guards.d.ts +21 -22
  222. package/dist/types/index.d.ts +28 -48
  223. package/dist/types/options.d.ts +51 -0
  224. package/dist/types/render/canvas/background-renderer.d.ts +0 -6
  225. package/dist/types/render/canvas/canvas-path.d.ts +3 -0
  226. package/dist/types/render/canvas/canvas-renderer.d.ts +4 -2
  227. package/dist/types/render/canvas/foreignobject-renderer.d.ts +2 -3
  228. package/dist/types/render/canvas/text-renderer.d.ts +5 -0
  229. package/dist/types/render/effects.d.ts +9 -1
  230. package/dist/types/render/object-fit.d.ts +18 -0
  231. package/package.json +43 -35
  232. package/src/__tests__/index.ts +99 -0
  233. package/src/config.ts +107 -0
  234. package/src/core/__mocks__/cache-storage.ts +1 -0
  235. package/src/core/__mocks__/context.ts +19 -0
  236. package/{dist/lib/core/__mocks__/features.js → src/core/__mocks__/features.ts} +1 -5
  237. package/src/core/__mocks__/logger.ts +17 -0
  238. package/{dist/lib/core/__tests__/cache-storage.test.js → src/core/__tests__/cache-storage.test.ts} +95 -48
  239. package/{dist/lib/core/__tests__/cache-storage.js → src/core/__tests__/cache-storage.ts} +117 -64
  240. package/{dist/lib/core/__tests__/logger.js → src/core/__tests__/logger.ts} +10 -8
  241. package/{dist/lib/core/__tests__/validator.js → src/core/__tests__/validator.ts} +161 -98
  242. package/src/core/bitwise.ts +1 -0
  243. package/src/core/cache-storage.ts +315 -0
  244. package/src/core/context.ts +31 -0
  245. package/src/core/debugger.ts +32 -0
  246. package/src/core/features.ts +222 -0
  247. package/src/core/logger.ts +64 -0
  248. package/src/core/origin-checker.ts +57 -0
  249. package/src/core/performance-monitor.ts +241 -0
  250. package/src/core/render-element.ts +272 -0
  251. package/src/core/util.ts +1 -0
  252. package/src/core/validator.ts +593 -0
  253. package/src/css/index.ts +427 -0
  254. package/src/css/layout/__mocks__/bounds.ts +6 -0
  255. package/src/css/layout/bounds.ts +79 -0
  256. package/src/css/layout/text.ts +161 -0
  257. package/src/css/property-descriptor.ts +49 -0
  258. package/src/css/property-descriptors/__tests__/background-tests.ts +65 -0
  259. package/src/css/property-descriptors/__tests__/clip-path.test.ts +280 -0
  260. package/src/css/property-descriptors/__tests__/font-family.ts +25 -0
  261. package/src/css/property-descriptors/__tests__/image-rendering-integration.test.ts +153 -0
  262. package/{dist/lib/css/property-descriptors/__tests__/image-rendering-performance.test.js → src/css/property-descriptors/__tests__/image-rendering-performance.test.ts} +74 -66
  263. package/src/css/property-descriptors/__tests__/image-rendering.test.ts +72 -0
  264. package/src/css/property-descriptors/__tests__/paint-order.ts +87 -0
  265. package/src/css/property-descriptors/__tests__/text-shadow.ts +94 -0
  266. package/src/css/property-descriptors/__tests__/transform-tests.ts +18 -0
  267. package/src/css/property-descriptors/background-clip.ts +30 -0
  268. package/src/css/property-descriptors/background-color.ts +9 -0
  269. package/src/css/property-descriptors/background-image.ts +27 -0
  270. package/src/css/property-descriptors/background-origin.ts +31 -0
  271. package/src/css/property-descriptors/background-position.ts +38 -0
  272. package/src/css/property-descriptors/background-repeat.ts +44 -0
  273. package/src/css/property-descriptors/background-size.ts +27 -0
  274. package/src/css/property-descriptors/border-color.ts +13 -0
  275. package/src/css/property-descriptors/border-radius.ts +19 -0
  276. package/src/css/property-descriptors/border-style.ts +34 -0
  277. package/src/css/property-descriptors/border-width.ts +20 -0
  278. package/src/css/property-descriptors/box-shadow.ts +60 -0
  279. package/src/css/property-descriptors/clip-path.ts +271 -0
  280. package/src/css/property-descriptors/color.ts +9 -0
  281. package/src/css/property-descriptors/content.ts +26 -0
  282. package/src/css/property-descriptors/counter-increment.ts +43 -0
  283. package/src/css/property-descriptors/counter-reset.ts +36 -0
  284. package/src/css/property-descriptors/direction.ts +23 -0
  285. package/src/css/property-descriptors/display.ts +117 -0
  286. package/src/css/property-descriptors/duration.ts +14 -0
  287. package/src/css/property-descriptors/float.ts +29 -0
  288. package/src/css/property-descriptors/font-family.ts +38 -0
  289. package/src/css/property-descriptors/font-size.ts +9 -0
  290. package/src/css/property-descriptors/font-style.ts +25 -0
  291. package/src/css/property-descriptors/font-variant.ts +12 -0
  292. package/src/css/property-descriptors/font-weight.ts +26 -0
  293. package/src/css/property-descriptors/image-rendering.ts +33 -0
  294. package/src/css/property-descriptors/letter-spacing.ts +25 -0
  295. package/src/css/property-descriptors/line-break.ts +22 -0
  296. package/src/css/property-descriptors/line-height.ts +22 -0
  297. package/src/css/property-descriptors/list-style-image.ts +19 -0
  298. package/src/css/property-descriptors/list-style-position.ts +22 -0
  299. package/src/css/property-descriptors/list-style-type.ts +179 -0
  300. package/src/css/property-descriptors/margin.ts +13 -0
  301. package/src/css/property-descriptors/mix-blend-mode.ts +35 -0
  302. package/src/css/property-descriptors/object-fit.ts +39 -0
  303. package/src/css/property-descriptors/opacity.ts +15 -0
  304. package/src/css/property-descriptors/overflow-wrap.ts +22 -0
  305. package/src/css/property-descriptors/overflow.ts +34 -0
  306. package/src/css/property-descriptors/padding.ts +14 -0
  307. package/src/css/property-descriptors/paint-order.ts +42 -0
  308. package/src/css/property-descriptors/position.ts +30 -0
  309. package/src/css/property-descriptors/quotes.ts +57 -0
  310. package/src/css/property-descriptors/rotate.ts +34 -0
  311. package/src/css/property-descriptors/text-align.ts +26 -0
  312. package/src/css/property-descriptors/text-decoration-color.ts +9 -0
  313. package/src/css/property-descriptors/text-decoration-line.ts +38 -0
  314. package/src/css/property-descriptors/text-decoration-style.ts +32 -0
  315. package/src/css/property-descriptors/text-decoration-thickness.ts +30 -0
  316. package/src/css/property-descriptors/text-overflow.ts +23 -0
  317. package/src/css/property-descriptors/text-shadow.ts +52 -0
  318. package/src/css/property-descriptors/text-transform.ts +27 -0
  319. package/src/css/property-descriptors/text-underline-offset.ts +27 -0
  320. package/src/css/property-descriptors/transform-origin.ts +29 -0
  321. package/src/css/property-descriptors/transform.ts +74 -0
  322. package/src/css/property-descriptors/visibility.ts +25 -0
  323. package/src/css/property-descriptors/webkit-line-clamp.ts +30 -0
  324. package/src/css/property-descriptors/webkit-text-stroke-color.ts +8 -0
  325. package/src/css/property-descriptors/webkit-text-stroke-width.ts +15 -0
  326. package/src/css/property-descriptors/word-break.ts +25 -0
  327. package/src/css/property-descriptors/writing-mode.ts +37 -0
  328. package/src/css/property-descriptors/z-index.ts +27 -0
  329. package/src/css/syntax/__tests__/tokernizer-tests.ts +29 -0
  330. package/src/css/syntax/parser.ts +188 -0
  331. package/src/css/syntax/tokenizer.ts +822 -0
  332. package/src/css/type-descriptor.ts +7 -0
  333. package/src/css/types/__tests__/color-tests.ts +147 -0
  334. package/src/css/types/__tests__/image-tests.ts +239 -0
  335. package/src/css/types/angle.ts +86 -0
  336. package/src/css/types/color-math.ts +22 -0
  337. package/src/css/types/color-spaces/a98.ts +86 -0
  338. package/src/css/types/color-spaces/p3.ts +92 -0
  339. package/src/css/types/color-spaces/pro-photo.ts +87 -0
  340. package/src/css/types/color-spaces/rec2020.ts +90 -0
  341. package/src/css/types/color-spaces/srgb.ts +87 -0
  342. package/src/css/types/color-utilities.ts +452 -0
  343. package/src/css/types/color.ts +485 -0
  344. package/src/css/types/functions/-prefix-linear-gradient.ts +35 -0
  345. package/src/css/types/functions/-prefix-radial-gradient.ts +106 -0
  346. package/src/css/types/functions/-webkit-gradient.ts +69 -0
  347. package/src/css/types/functions/__tests__/radial-gradient.ts +69 -0
  348. package/src/css/types/functions/counter.ts +511 -0
  349. package/src/css/types/functions/gradient.ts +206 -0
  350. package/src/css/types/functions/linear-gradient.ts +28 -0
  351. package/src/css/types/functions/radial-gradient.ts +101 -0
  352. package/src/css/types/image.ts +120 -0
  353. package/src/css/types/index.ts +1 -0
  354. package/src/css/types/length-percentage.ts +137 -0
  355. package/src/css/types/length.ts +7 -0
  356. package/src/css/types/time.ts +20 -0
  357. package/src/dom/__mocks__/document-cloner.ts +22 -0
  358. package/{dist/lib/dom/__tests__/dom-normalizer.test.js → src/dom/__tests__/dom-normalizer.test.ts} +64 -44
  359. package/src/dom/__tests__/element-container.test.ts +129 -0
  360. package/src/dom/document-cloner.ts +929 -0
  361. package/src/dom/dom-normalizer.ts +133 -0
  362. package/src/dom/element-container.ts +75 -0
  363. package/src/dom/elements/li-element-container.ts +10 -0
  364. package/src/dom/elements/ol-element-container.ts +12 -0
  365. package/src/dom/elements/select-element-container.ts +10 -0
  366. package/src/dom/elements/textarea-element-container.ts +9 -0
  367. package/src/dom/node-parser.ts +177 -0
  368. package/src/dom/node-type-guards.ts +70 -0
  369. package/src/dom/replaced-elements/canvas-element-container.ts +15 -0
  370. package/src/dom/replaced-elements/iframe-element-container.ts +55 -0
  371. package/src/dom/replaced-elements/image-element-container.ts +16 -0
  372. package/src/dom/replaced-elements/index.ts +5 -0
  373. package/src/dom/replaced-elements/input-element-container.ts +105 -0
  374. package/src/dom/replaced-elements/pseudo-elements.ts +0 -0
  375. package/src/dom/replaced-elements/svg-element-container.ts +23 -0
  376. package/src/dom/text-container.ts +42 -0
  377. package/src/global.d.ts +19 -0
  378. package/src/index.ts +82 -0
  379. package/src/invariant.ts +5 -0
  380. package/src/options.ts +55 -0
  381. package/src/render/__tests__/object-fit.test.ts +85 -0
  382. package/src/render/background.ts +298 -0
  383. package/src/render/bezier-curve.ts +47 -0
  384. package/src/render/border.ts +165 -0
  385. package/src/render/bound-curves.ts +388 -0
  386. package/src/render/box-sizing.ts +31 -0
  387. package/{dist/lib/render/canvas/__tests__/background-renderer.test.js → src/render/canvas/__tests__/background-renderer.test.ts} +32 -25
  388. package/src/render/canvas/__tests__/border-renderer.test.ts +24 -0
  389. package/src/render/canvas/__tests__/effects-renderer.test.ts +32 -0
  390. package/src/render/canvas/__tests__/text-renderer.test.ts +471 -0
  391. package/src/render/canvas/background-renderer.ts +271 -0
  392. package/src/render/canvas/border-renderer.ts +224 -0
  393. package/src/render/canvas/canvas-path.ts +31 -0
  394. package/src/render/canvas/canvas-renderer.ts +641 -0
  395. package/src/render/canvas/effects-renderer.ts +130 -0
  396. package/src/render/canvas/foreignobject-renderer.ts +53 -0
  397. package/src/render/canvas/text-renderer.ts +700 -0
  398. package/src/render/effects.ts +75 -0
  399. package/src/render/font-metrics.ts +72 -0
  400. package/src/render/object-fit.ts +100 -0
  401. package/src/render/path.ts +37 -0
  402. package/src/render/renderer-interface.ts +28 -0
  403. package/src/render/stacking-context.ts +386 -0
  404. package/src/render/vector.ts +19 -0
  405. package/demo/image-smoothing-demo.html +0 -256
  406. package/demo/refactoring-test.html +0 -602
  407. package/dist/lib/__tests__/index.js +0 -85
  408. package/dist/lib/__tests__/index.js.map +0 -1
  409. package/dist/lib/config.js.map +0 -1
  410. package/dist/lib/core/__mocks__/cache-storage.js +0 -7
  411. package/dist/lib/core/__mocks__/cache-storage.js.map +0 -1
  412. package/dist/lib/core/__mocks__/context.js +0 -19
  413. package/dist/lib/core/__mocks__/context.js.map +0 -1
  414. package/dist/lib/core/__mocks__/features.js.map +0 -1
  415. package/dist/lib/core/__mocks__/logger.js +0 -16
  416. package/dist/lib/core/__mocks__/logger.js.map +0 -1
  417. package/dist/lib/core/__tests__/cache-storage.js.map +0 -1
  418. package/dist/lib/core/__tests__/cache-storage.test.js.map +0 -1
  419. package/dist/lib/core/__tests__/logger.js.map +0 -1
  420. package/dist/lib/core/__tests__/validator.js.map +0 -1
  421. package/dist/lib/core/bitwise.js.map +0 -1
  422. package/dist/lib/core/cache-storage.js.map +0 -1
  423. package/dist/lib/core/context.js.map +0 -1
  424. package/dist/lib/core/debugger.js.map +0 -1
  425. package/dist/lib/core/features.js.map +0 -1
  426. package/dist/lib/core/logger.js.map +0 -1
  427. package/dist/lib/core/origin-checker.js.map +0 -1
  428. package/dist/lib/core/performance-monitor.js.map +0 -1
  429. package/dist/lib/core/util.js.map +0 -1
  430. package/dist/lib/core/validator.js.map +0 -1
  431. package/dist/lib/css/IPropertyDescriptor.js.map +0 -1
  432. package/dist/lib/css/ITypeDescriptor.js.map +0 -1
  433. package/dist/lib/css/index.js.map +0 -1
  434. package/dist/lib/css/layout/__mocks__/bounds.js +0 -9
  435. package/dist/lib/css/layout/__mocks__/bounds.js.map +0 -1
  436. package/dist/lib/css/layout/bounds.js.map +0 -1
  437. package/dist/lib/css/layout/text.js.map +0 -1
  438. package/dist/lib/css/property-descriptors/__tests__/background-tests.js +0 -49
  439. package/dist/lib/css/property-descriptors/__tests__/background-tests.js.map +0 -1
  440. package/dist/lib/css/property-descriptors/__tests__/clip-path.test.js +0 -273
  441. package/dist/lib/css/property-descriptors/__tests__/clip-path.test.js.map +0 -1
  442. package/dist/lib/css/property-descriptors/__tests__/font-family.js +0 -19
  443. package/dist/lib/css/property-descriptors/__tests__/font-family.js.map +0 -1
  444. package/dist/lib/css/property-descriptors/__tests__/image-rendering-integration.test.js +0 -143
  445. package/dist/lib/css/property-descriptors/__tests__/image-rendering-integration.test.js.map +0 -1
  446. package/dist/lib/css/property-descriptors/__tests__/image-rendering-performance.test.js.map +0 -1
  447. package/dist/lib/css/property-descriptors/__tests__/image-rendering.test.js +0 -61
  448. package/dist/lib/css/property-descriptors/__tests__/image-rendering.test.js.map +0 -1
  449. package/dist/lib/css/property-descriptors/__tests__/paint-order.js +0 -66
  450. package/dist/lib/css/property-descriptors/__tests__/paint-order.js.map +0 -1
  451. package/dist/lib/css/property-descriptors/__tests__/text-shadow.js +0 -82
  452. package/dist/lib/css/property-descriptors/__tests__/text-shadow.js.map +0 -1
  453. package/dist/lib/css/property-descriptors/__tests__/transform-tests.js +0 -14
  454. package/dist/lib/css/property-descriptors/__tests__/transform-tests.js.map +0 -1
  455. package/dist/lib/css/property-descriptors/background-clip.js.map +0 -1
  456. package/dist/lib/css/property-descriptors/background-color.js.map +0 -1
  457. package/dist/lib/css/property-descriptors/background-image.js.map +0 -1
  458. package/dist/lib/css/property-descriptors/background-origin.js.map +0 -1
  459. package/dist/lib/css/property-descriptors/background-position.js.map +0 -1
  460. package/dist/lib/css/property-descriptors/background-repeat.js.map +0 -1
  461. package/dist/lib/css/property-descriptors/background-size.js.map +0 -1
  462. package/dist/lib/css/property-descriptors/border-color.js.map +0 -1
  463. package/dist/lib/css/property-descriptors/border-radius.js.map +0 -1
  464. package/dist/lib/css/property-descriptors/border-style.js.map +0 -1
  465. package/dist/lib/css/property-descriptors/border-width.js.map +0 -1
  466. package/dist/lib/css/property-descriptors/box-shadow.js.map +0 -1
  467. package/dist/lib/css/property-descriptors/clip-path.js.map +0 -1
  468. package/dist/lib/css/property-descriptors/color.js.map +0 -1
  469. package/dist/lib/css/property-descriptors/content.js.map +0 -1
  470. package/dist/lib/css/property-descriptors/counter-increment.js.map +0 -1
  471. package/dist/lib/css/property-descriptors/counter-reset.js.map +0 -1
  472. package/dist/lib/css/property-descriptors/direction.js.map +0 -1
  473. package/dist/lib/css/property-descriptors/display.js.map +0 -1
  474. package/dist/lib/css/property-descriptors/duration.js.map +0 -1
  475. package/dist/lib/css/property-descriptors/float.js.map +0 -1
  476. package/dist/lib/css/property-descriptors/font-family.js.map +0 -1
  477. package/dist/lib/css/property-descriptors/font-size.js.map +0 -1
  478. package/dist/lib/css/property-descriptors/font-style.js.map +0 -1
  479. package/dist/lib/css/property-descriptors/font-variant.js.map +0 -1
  480. package/dist/lib/css/property-descriptors/font-weight.js.map +0 -1
  481. package/dist/lib/css/property-descriptors/image-rendering.js.map +0 -1
  482. package/dist/lib/css/property-descriptors/letter-spacing.js.map +0 -1
  483. package/dist/lib/css/property-descriptors/line-break.js.map +0 -1
  484. package/dist/lib/css/property-descriptors/line-height.js.map +0 -1
  485. package/dist/lib/css/property-descriptors/list-style-image.js.map +0 -1
  486. package/dist/lib/css/property-descriptors/list-style-position.js.map +0 -1
  487. package/dist/lib/css/property-descriptors/list-style-type.js.map +0 -1
  488. package/dist/lib/css/property-descriptors/margin.js.map +0 -1
  489. package/dist/lib/css/property-descriptors/object-fit.js.map +0 -1
  490. package/dist/lib/css/property-descriptors/opacity.js.map +0 -1
  491. package/dist/lib/css/property-descriptors/overflow-wrap.js.map +0 -1
  492. package/dist/lib/css/property-descriptors/overflow.js.map +0 -1
  493. package/dist/lib/css/property-descriptors/padding.js.map +0 -1
  494. package/dist/lib/css/property-descriptors/paint-order.js.map +0 -1
  495. package/dist/lib/css/property-descriptors/position.js.map +0 -1
  496. package/dist/lib/css/property-descriptors/quotes.js.map +0 -1
  497. package/dist/lib/css/property-descriptors/rotate.js.map +0 -1
  498. package/dist/lib/css/property-descriptors/text-align.js.map +0 -1
  499. package/dist/lib/css/property-descriptors/text-decoration-color.js.map +0 -1
  500. package/dist/lib/css/property-descriptors/text-decoration-line.js.map +0 -1
  501. package/dist/lib/css/property-descriptors/text-decoration-style.js.map +0 -1
  502. package/dist/lib/css/property-descriptors/text-decoration-thickness.js.map +0 -1
  503. package/dist/lib/css/property-descriptors/text-overflow.js.map +0 -1
  504. package/dist/lib/css/property-descriptors/text-shadow.js.map +0 -1
  505. package/dist/lib/css/property-descriptors/text-transform.js.map +0 -1
  506. package/dist/lib/css/property-descriptors/text-underline-offset.js.map +0 -1
  507. package/dist/lib/css/property-descriptors/transform-origin.js.map +0 -1
  508. package/dist/lib/css/property-descriptors/transform.js.map +0 -1
  509. package/dist/lib/css/property-descriptors/visibility.js.map +0 -1
  510. package/dist/lib/css/property-descriptors/webkit-line-clamp.js.map +0 -1
  511. package/dist/lib/css/property-descriptors/webkit-text-stroke-color.js.map +0 -1
  512. package/dist/lib/css/property-descriptors/webkit-text-stroke-width.js.map +0 -1
  513. package/dist/lib/css/property-descriptors/word-break.js.map +0 -1
  514. package/dist/lib/css/property-descriptors/writing-mode.js.map +0 -1
  515. package/dist/lib/css/property-descriptors/z-index.js.map +0 -1
  516. package/dist/lib/css/syntax/__tests__/tokernizer-tests.js +0 -26
  517. package/dist/lib/css/syntax/__tests__/tokernizer-tests.js.map +0 -1
  518. package/dist/lib/css/syntax/parser.js.map +0 -1
  519. package/dist/lib/css/syntax/tokenizer.js.map +0 -1
  520. package/dist/lib/css/types/__tests__/color-tests.js +0 -111
  521. package/dist/lib/css/types/__tests__/color-tests.js.map +0 -1
  522. package/dist/lib/css/types/__tests__/image-tests.js +0 -215
  523. package/dist/lib/css/types/__tests__/image-tests.js.map +0 -1
  524. package/dist/lib/css/types/angle.js.map +0 -1
  525. package/dist/lib/css/types/color-math.js.map +0 -1
  526. package/dist/lib/css/types/color-spaces/a98.js.map +0 -1
  527. package/dist/lib/css/types/color-spaces/p3.js.map +0 -1
  528. package/dist/lib/css/types/color-spaces/pro-photo.js.map +0 -1
  529. package/dist/lib/css/types/color-spaces/rec2020.js.map +0 -1
  530. package/dist/lib/css/types/color-spaces/srgb.js.map +0 -1
  531. package/dist/lib/css/types/color-utilities.js.map +0 -1
  532. package/dist/lib/css/types/color.js.map +0 -1
  533. package/dist/lib/css/types/functions/-prefix-linear-gradient.js.map +0 -1
  534. package/dist/lib/css/types/functions/-prefix-radial-gradient.js.map +0 -1
  535. package/dist/lib/css/types/functions/-webkit-gradient.js.map +0 -1
  536. package/dist/lib/css/types/functions/__tests__/radial-gradient.js +0 -63
  537. package/dist/lib/css/types/functions/__tests__/radial-gradient.js.map +0 -1
  538. package/dist/lib/css/types/functions/counter.js.map +0 -1
  539. package/dist/lib/css/types/functions/gradient.js.map +0 -1
  540. package/dist/lib/css/types/functions/linear-gradient.js.map +0 -1
  541. package/dist/lib/css/types/functions/radial-gradient.js.map +0 -1
  542. package/dist/lib/css/types/image.js.map +0 -1
  543. package/dist/lib/css/types/index.js.map +0 -1
  544. package/dist/lib/css/types/length-percentage.js.map +0 -1
  545. package/dist/lib/css/types/length.js.map +0 -1
  546. package/dist/lib/css/types/time.js.map +0 -1
  547. package/dist/lib/dom/__mocks__/document-cloner.js +0 -23
  548. package/dist/lib/dom/__mocks__/document-cloner.js.map +0 -1
  549. package/dist/lib/dom/__tests__/dom-normalizer.test.js.map +0 -1
  550. package/dist/lib/dom/__tests__/element-container.test.js +0 -109
  551. package/dist/lib/dom/__tests__/element-container.test.js.map +0 -1
  552. package/dist/lib/dom/document-cloner.js.map +0 -1
  553. package/dist/lib/dom/dom-normalizer.js.map +0 -1
  554. package/dist/lib/dom/element-container.js.map +0 -1
  555. package/dist/lib/dom/elements/li-element-container.js.map +0 -1
  556. package/dist/lib/dom/elements/ol-element-container.js.map +0 -1
  557. package/dist/lib/dom/elements/select-element-container.js.map +0 -1
  558. package/dist/lib/dom/elements/textarea-element-container.js.map +0 -1
  559. package/dist/lib/dom/node-parser.js.map +0 -1
  560. package/dist/lib/dom/node-type-guards.js.map +0 -1
  561. package/dist/lib/dom/replaced-elements/canvas-element-container.js.map +0 -1
  562. package/dist/lib/dom/replaced-elements/iframe-element-container.js.map +0 -1
  563. package/dist/lib/dom/replaced-elements/image-element-container.js.map +0 -1
  564. package/dist/lib/dom/replaced-elements/index.js.map +0 -1
  565. package/dist/lib/dom/replaced-elements/input-element-container.js.map +0 -1
  566. package/dist/lib/dom/replaced-elements/pseudo-elements.js.map +0 -1
  567. package/dist/lib/dom/replaced-elements/svg-element-container.js.map +0 -1
  568. package/dist/lib/dom/text-container.js.map +0 -1
  569. package/dist/lib/index.js.map +0 -1
  570. package/dist/lib/invariant.js.map +0 -1
  571. package/dist/lib/render/background.js.map +0 -1
  572. package/dist/lib/render/bezier-curve.js.map +0 -1
  573. package/dist/lib/render/border.js.map +0 -1
  574. package/dist/lib/render/bound-curves.js.map +0 -1
  575. package/dist/lib/render/box-sizing.js.map +0 -1
  576. package/dist/lib/render/canvas/__tests__/background-renderer.test.js.map +0 -1
  577. package/dist/lib/render/canvas/__tests__/border-renderer.test.js +0 -23
  578. package/dist/lib/render/canvas/__tests__/border-renderer.test.js.map +0 -1
  579. package/dist/lib/render/canvas/__tests__/effects-renderer.test.js +0 -30
  580. package/dist/lib/render/canvas/__tests__/effects-renderer.test.js.map +0 -1
  581. package/dist/lib/render/canvas/__tests__/text-renderer.test.js +0 -402
  582. package/dist/lib/render/canvas/__tests__/text-renderer.test.js.map +0 -1
  583. package/dist/lib/render/canvas/background-renderer.js.map +0 -1
  584. package/dist/lib/render/canvas/border-renderer.js.map +0 -1
  585. package/dist/lib/render/canvas/canvas-renderer.js.map +0 -1
  586. package/dist/lib/render/canvas/effects-renderer.js.map +0 -1
  587. package/dist/lib/render/canvas/foreignobject-renderer.js.map +0 -1
  588. package/dist/lib/render/canvas/text-renderer.js.map +0 -1
  589. package/dist/lib/render/effects.js.map +0 -1
  590. package/dist/lib/render/font-metrics.js.map +0 -1
  591. package/dist/lib/render/path.js.map +0 -1
  592. package/dist/lib/render/renderer-interface.js.map +0 -1
  593. package/dist/lib/render/renderer.js +0 -11
  594. package/dist/lib/render/renderer.js.map +0 -1
  595. package/dist/lib/render/stacking-context.js.map +0 -1
  596. package/dist/lib/render/vector.js.map +0 -1
  597. package/dist/types/__tests__/index.d.ts +0 -1
  598. package/dist/types/core/__mocks__/cache-storage.d.ts +0 -2
  599. package/dist/types/core/__mocks__/context.d.ts +0 -9
  600. package/dist/types/core/__mocks__/features.d.ts +0 -8
  601. package/dist/types/core/__mocks__/logger.d.ts +0 -9
  602. package/dist/types/core/__tests__/cache-storage.d.ts +0 -1
  603. package/dist/types/core/__tests__/cache-storage.test.d.ts +0 -1
  604. package/dist/types/core/__tests__/logger.d.ts +0 -1
  605. package/dist/types/core/__tests__/validator.d.ts +0 -1
  606. package/dist/types/css/layout/__mocks__/bounds.d.ts +0 -2
  607. package/dist/types/css/property-descriptors/__tests__/background-tests.d.ts +0 -1
  608. package/dist/types/css/property-descriptors/__tests__/clip-path.test.d.ts +0 -1
  609. package/dist/types/css/property-descriptors/__tests__/font-family.d.ts +0 -1
  610. package/dist/types/css/property-descriptors/__tests__/image-rendering-integration.test.d.ts +0 -1
  611. package/dist/types/css/property-descriptors/__tests__/image-rendering-performance.test.d.ts +0 -1
  612. package/dist/types/css/property-descriptors/__tests__/image-rendering.test.d.ts +0 -1
  613. package/dist/types/css/property-descriptors/__tests__/paint-order.d.ts +0 -1
  614. package/dist/types/css/property-descriptors/__tests__/text-shadow.d.ts +0 -1
  615. package/dist/types/css/property-descriptors/__tests__/transform-tests.d.ts +0 -1
  616. package/dist/types/css/syntax/__tests__/tokernizer-tests.d.ts +0 -1
  617. package/dist/types/css/types/__tests__/color-tests.d.ts +0 -1
  618. package/dist/types/css/types/__tests__/image-tests.d.ts +0 -1
  619. package/dist/types/css/types/functions/__tests__/radial-gradient.d.ts +0 -1
  620. package/dist/types/dom/__mocks__/document-cloner.d.ts +0 -6
  621. package/dist/types/dom/__tests__/dom-normalizer.test.d.ts +0 -1
  622. package/dist/types/dom/__tests__/element-container.test.d.ts +0 -1
  623. package/dist/types/render/canvas/__tests__/background-renderer.test.d.ts +0 -1
  624. package/dist/types/render/canvas/__tests__/border-renderer.test.d.ts +0 -1
  625. package/dist/types/render/canvas/__tests__/effects-renderer.test.d.ts +0 -1
  626. package/dist/types/render/canvas/__tests__/text-renderer.test.d.ts +0 -1
  627. package/dist/types/render/renderer.d.ts +0 -7
  628. package/eslint.config.js +0 -35
  629. package/jest.config.cjs +0 -5
  630. package/karma.conf.cjs +0 -300
  631. /package/dist/types/css/{IPropertyDescriptor.d.ts → property-descriptor.d.ts} +0 -0
  632. /package/dist/types/css/{ITypeDescriptor.d.ts → type-descriptor.d.ts} +0 -0
@@ -0,0 +1,69 @@
1
+ import { deepStrictEqual } from 'assert';
2
+ import { CSSFunction, Parser } from '../../../syntax/parser';
3
+ import { radialGradient } from '../radial-gradient';
4
+ import { CSSImageType, CSSRadialExtent, CSSRadialShape } from '../../image';
5
+ import { color } from '../../color';
6
+ import { TokenType } from '../../../syntax/tokenizer';
7
+ import { FIFTY_PERCENT, HUNDRED_PERCENT } from '../../length-percentage';
8
+ import { Context } from '../../../../core/context';
9
+
10
+ const parse = (value: string) => radialGradient({} as Context, (Parser.parseValues(value)[0] as CSSFunction).values);
11
+ const colorParse = (value: string) => color.parse({} as Context, Parser.parseValue(value));
12
+
13
+ describe('functions', () => {
14
+ describe('radial-gradient', () => {
15
+ describe('parsing', () => {
16
+ it('radial-gradient(circle closest-side, #3f87a6, #ebf8e1, #f69d3c)', () =>
17
+ deepStrictEqual(parse('radial-gradient(ellipse closest-side, #3f87a6, #ebf8e1, #f69d3c)'), {
18
+ type: CSSImageType.RADIAL_GRADIENT,
19
+ shape: CSSRadialShape.ELLIPSE,
20
+ size: CSSRadialExtent.CLOSEST_SIDE,
21
+ position: [],
22
+ stops: [
23
+ { color: colorParse('#3f87a6'), stop: null },
24
+ { color: colorParse('#ebf8e1'), stop: null },
25
+ { color: colorParse('#f69d3c'), stop: null }
26
+ ]
27
+ }));
28
+ it('radial-gradient(circle at center, red 0, blue, green 100%)', () =>
29
+ deepStrictEqual(parse('radial-gradient(circle at center, red 0, blue, green 100%)'), {
30
+ type: CSSImageType.RADIAL_GRADIENT,
31
+ shape: CSSRadialShape.CIRCLE,
32
+ size: CSSRadialExtent.FARTHEST_CORNER,
33
+ position: [FIFTY_PERCENT],
34
+ stops: [
35
+ { color: colorParse('red'), stop: { type: TokenType.NUMBER_TOKEN, number: 0, flags: 4 } },
36
+ { color: colorParse('blue'), stop: null },
37
+ {
38
+ color: colorParse('green'),
39
+ stop: { type: TokenType.PERCENTAGE_TOKEN, number: 100, flags: 4 }
40
+ }
41
+ ]
42
+ }));
43
+ it('radial-gradient(circle at 100%, #333, #333 50%, #eee 75%, #333 75%)', () =>
44
+ deepStrictEqual(parse('radial-gradient(circle at 100%, #333, #333 50%, #eee 75%, #333 75%)'), {
45
+ type: CSSImageType.RADIAL_GRADIENT,
46
+ shape: CSSRadialShape.CIRCLE,
47
+ size: CSSRadialExtent.FARTHEST_CORNER,
48
+ position: [HUNDRED_PERCENT],
49
+ stops: [
50
+ { color: colorParse('#333'), stop: null },
51
+ { color: colorParse('#333'), stop: { type: TokenType.PERCENTAGE_TOKEN, number: 50, flags: 4 } },
52
+ { color: colorParse('#eee'), stop: { type: TokenType.PERCENTAGE_TOKEN, number: 75, flags: 4 } },
53
+ { color: colorParse('#333'), stop: { type: TokenType.PERCENTAGE_TOKEN, number: 75, flags: 4 } }
54
+ ]
55
+ }));
56
+ it('radial-gradient(20px, red, blue)', () =>
57
+ deepStrictEqual(parse('radial-gradient(20px, red, blue)'), {
58
+ type: CSSImageType.RADIAL_GRADIENT,
59
+ shape: CSSRadialShape.CIRCLE,
60
+ size: [{ type: TokenType.DIMENSION_TOKEN, number: 20, flags: 4, unit: 'px' }],
61
+ position: [],
62
+ stops: [
63
+ { color: colorParse('red'), stop: null },
64
+ { color: colorParse('blue'), stop: null }
65
+ ]
66
+ }));
67
+ });
68
+ });
69
+ });
@@ -0,0 +1,511 @@
1
+ import { LIST_STYLE_TYPE } from '../../property-descriptors/list-style-type';
2
+ import { fromCodePoint } from 'css-line-break';
3
+ import { contains } from '../../../core/bitwise';
4
+ import { CSSParsedCounterDeclaration } from '../../index';
5
+
6
+ export class CounterState {
7
+ private readonly counters: { [key: string]: number[] } = {};
8
+
9
+ getCounterValue(name: string): number {
10
+ const counter = this.counters[name];
11
+
12
+ if (counter && counter.length) {
13
+ return counter[counter.length - 1];
14
+ }
15
+ return 1;
16
+ }
17
+
18
+ getCounterValues(name: string): readonly number[] {
19
+ const counter = this.counters[name];
20
+ return counter ? counter : [];
21
+ }
22
+
23
+ pop(counters: string[]): void {
24
+ counters.forEach((counter) => this.counters[counter].pop());
25
+ }
26
+
27
+ parse(style: CSSParsedCounterDeclaration): string[] {
28
+ const counterIncrement = style.counterIncrement;
29
+ const counterReset = style.counterReset;
30
+ let canReset = true;
31
+
32
+ if (counterIncrement !== null) {
33
+ counterIncrement.forEach((entry) => {
34
+ const counter = this.counters[entry.counter];
35
+ if (counter && entry.increment !== 0) {
36
+ canReset = false;
37
+ if (!counter.length) {
38
+ counter.push(1);
39
+ }
40
+ counter[Math.max(0, counter.length - 1)] += entry.increment;
41
+ }
42
+ });
43
+ }
44
+
45
+ const counterNames: string[] = [];
46
+ if (canReset) {
47
+ counterReset.forEach((entry) => {
48
+ let counter = this.counters[entry.counter];
49
+ counterNames.push(entry.counter);
50
+ if (!counter) {
51
+ counter = this.counters[entry.counter] = [];
52
+ }
53
+ counter.push(entry.reset);
54
+ });
55
+ }
56
+
57
+ return counterNames;
58
+ }
59
+ }
60
+
61
+ interface CounterSymbols {
62
+ integers: number[];
63
+ values: string[];
64
+ }
65
+
66
+ const ROMAN_UPPER: CounterSymbols = {
67
+ integers: [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],
68
+ values: ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']
69
+ };
70
+
71
+ const ARMENIAN: CounterSymbols = {
72
+ integers: [
73
+ 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70,
74
+ 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
75
+ ],
76
+ values: [
77
+ 'Ք',
78
+ 'Փ',
79
+ 'Ւ',
80
+ 'Ց',
81
+ 'Ր',
82
+ 'Տ',
83
+ 'Վ',
84
+ 'Ս',
85
+ 'Ռ',
86
+ 'Ջ',
87
+ 'Պ',
88
+ 'Չ',
89
+ 'Ո',
90
+ 'Շ',
91
+ 'Ն',
92
+ 'Յ',
93
+ 'Մ',
94
+ 'Ճ',
95
+ 'Ղ',
96
+ 'Ձ',
97
+ 'Հ',
98
+ 'Կ',
99
+ 'Ծ',
100
+ 'Խ',
101
+ 'Լ',
102
+ 'Ի',
103
+ 'Ժ',
104
+ 'Թ',
105
+ 'Ը',
106
+ 'Է',
107
+ 'Զ',
108
+ 'Ե',
109
+ 'Դ',
110
+ 'Գ',
111
+ 'Բ',
112
+ 'Ա'
113
+ ]
114
+ };
115
+
116
+ const HEBREW: CounterSymbols = {
117
+ integers: [
118
+ 10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20,
119
+ 19, 18, 17, 16, 15, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
120
+ ],
121
+ values: [
122
+ 'י׳',
123
+ 'ט׳',
124
+ 'ח׳',
125
+ 'ז׳',
126
+ 'ו׳',
127
+ 'ה׳',
128
+ 'ד׳',
129
+ 'ג׳',
130
+ 'ב׳',
131
+ 'א׳',
132
+ 'ת',
133
+ 'ש',
134
+ 'ר',
135
+ 'ק',
136
+ 'צ',
137
+ 'פ',
138
+ 'ע',
139
+ 'ס',
140
+ 'נ',
141
+ 'מ',
142
+ 'ל',
143
+ 'כ',
144
+ 'יט',
145
+ 'יח',
146
+ 'יז',
147
+ 'טז',
148
+ 'טו',
149
+ 'י',
150
+ 'ט',
151
+ 'ח',
152
+ 'ז',
153
+ 'ו',
154
+ 'ה',
155
+ 'ד',
156
+ 'ג',
157
+ 'ב',
158
+ 'א'
159
+ ]
160
+ };
161
+
162
+ const GEORGIAN: CounterSymbols = {
163
+ integers: [
164
+ 10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90,
165
+ 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
166
+ ],
167
+ values: [
168
+ 'ჵ',
169
+ 'ჰ',
170
+ 'ჯ',
171
+ 'ჴ',
172
+ 'ხ',
173
+ 'ჭ',
174
+ 'წ',
175
+ 'ძ',
176
+ 'ც',
177
+ 'ჩ',
178
+ 'შ',
179
+ 'ყ',
180
+ 'ღ',
181
+ 'ქ',
182
+ 'ფ',
183
+ 'ჳ',
184
+ 'ტ',
185
+ 'ს',
186
+ 'რ',
187
+ 'ჟ',
188
+ 'პ',
189
+ 'ო',
190
+ 'ჲ',
191
+ 'ნ',
192
+ 'მ',
193
+ 'ლ',
194
+ 'კ',
195
+ 'ი',
196
+ 'თ',
197
+ 'ჱ',
198
+ 'ზ',
199
+ 'ვ',
200
+ 'ე',
201
+ 'დ',
202
+ 'გ',
203
+ 'ბ',
204
+ 'ა'
205
+ ]
206
+ };
207
+
208
+ const createAdditiveCounter = (
209
+ value: number,
210
+ min: number,
211
+ max: number,
212
+ symbols: CounterSymbols,
213
+ fallback: LIST_STYLE_TYPE,
214
+ suffix: string
215
+ ) => {
216
+ if (value < min || value > max) {
217
+ return createCounterText(value, fallback, suffix.length > 0);
218
+ }
219
+
220
+ return (
221
+ symbols.integers.reduce((string, integer, index) => {
222
+ while (value >= integer) {
223
+ value -= integer;
224
+ string += symbols.values[index];
225
+ }
226
+ return string;
227
+ }, '') + suffix
228
+ );
229
+ };
230
+
231
+ const createCounterStyleWithSymbolResolver = (
232
+ value: number,
233
+ codePointRangeLength: number,
234
+ isNumeric: boolean,
235
+ resolver: (codePoint: number) => string
236
+ ): string => {
237
+ let string = '';
238
+
239
+ do {
240
+ if (!isNumeric) {
241
+ value--;
242
+ }
243
+ string = resolver(value) + string;
244
+ value /= codePointRangeLength;
245
+ } while (value * codePointRangeLength >= codePointRangeLength);
246
+
247
+ return string;
248
+ };
249
+
250
+ const createCounterStyleFromRange = (
251
+ value: number,
252
+ codePointRangeStart: number,
253
+ codePointRangeEnd: number,
254
+ isNumeric: boolean,
255
+ suffix: string
256
+ ): string => {
257
+ const codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1;
258
+
259
+ return (
260
+ (value < 0 ? '-' : '') +
261
+ (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric, (codePoint) =>
262
+ fromCodePoint(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart)
263
+ ) +
264
+ suffix)
265
+ );
266
+ };
267
+
268
+ const createCounterStyleFromSymbols = (value: number, symbols: string, suffix = '. '): string => {
269
+ const codePointRangeLength = symbols.length;
270
+ return (
271
+ createCounterStyleWithSymbolResolver(
272
+ Math.abs(value),
273
+ codePointRangeLength,
274
+ false,
275
+ (codePoint) => symbols[Math.floor(codePoint % codePointRangeLength)]
276
+ ) + suffix
277
+ );
278
+ };
279
+
280
+ const CJK_ZEROS = 1 << 0;
281
+ const CJK_TEN_COEFFICIENTS = 1 << 1;
282
+ const CJK_TEN_HIGH_COEFFICIENTS = 1 << 2;
283
+ const CJK_HUNDRED_COEFFICIENTS = 1 << 3;
284
+
285
+ const createCJKCounter = (
286
+ value: number,
287
+ numbers: string,
288
+ multipliers: string,
289
+ negativeSign: string,
290
+ suffix: string,
291
+ flags: number
292
+ ): string => {
293
+ if (value < -9999 || value > 9999) {
294
+ return createCounterText(value, LIST_STYLE_TYPE.CJK_DECIMAL, suffix.length > 0);
295
+ }
296
+ let tmp = Math.abs(value);
297
+ let string = suffix;
298
+
299
+ if (tmp === 0) {
300
+ return numbers[0] + string;
301
+ }
302
+
303
+ for (let digit = 0; tmp > 0 && digit <= 4; digit++) {
304
+ const coefficient = tmp % 10;
305
+
306
+ if (coefficient === 0 && contains(flags, CJK_ZEROS) && string !== '') {
307
+ string = numbers[coefficient] + string;
308
+ } else if (
309
+ coefficient > 1 ||
310
+ (coefficient === 1 && digit === 0) ||
311
+ (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_COEFFICIENTS)) ||
312
+ (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_HIGH_COEFFICIENTS) && value > 100) ||
313
+ (coefficient === 1 && digit > 1 && contains(flags, CJK_HUNDRED_COEFFICIENTS))
314
+ ) {
315
+ string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : '') + string;
316
+ } else if (coefficient === 1 && digit > 0) {
317
+ string = multipliers[digit - 1] + string;
318
+ }
319
+ tmp = Math.floor(tmp / 10);
320
+ }
321
+
322
+ return (value < 0 ? negativeSign : '') + string;
323
+ };
324
+
325
+ const CHINESE_INFORMAL_MULTIPLIERS = '十百千萬';
326
+ const CHINESE_FORMAL_MULTIPLIERS = '拾佰仟萬';
327
+ const JAPANESE_NEGATIVE = 'マイナス';
328
+ const KOREAN_NEGATIVE = '마이너스';
329
+
330
+ export const createCounterText = (value: number, type: LIST_STYLE_TYPE, appendSuffix: boolean): string => {
331
+ const defaultSuffix = appendSuffix ? '. ' : '';
332
+ const cjkSuffix = appendSuffix ? '、' : '';
333
+ const koreanSuffix = appendSuffix ? ', ' : '';
334
+ const spaceSuffix = appendSuffix ? ' ' : '';
335
+ switch (type) {
336
+ case LIST_STYLE_TYPE.DISC:
337
+ return '•' + spaceSuffix;
338
+ case LIST_STYLE_TYPE.CIRCLE:
339
+ return '◦' + spaceSuffix;
340
+ case LIST_STYLE_TYPE.SQUARE:
341
+ return '◾' + spaceSuffix;
342
+ case LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO:
343
+ const string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);
344
+ return string.length < 4 ? `0${string}` : string;
345
+ case LIST_STYLE_TYPE.CJK_DECIMAL:
346
+ return createCounterStyleFromSymbols(value, '〇一二三四五六七八九', cjkSuffix);
347
+ case LIST_STYLE_TYPE.LOWER_ROMAN:
348
+ return createAdditiveCounter(
349
+ value,
350
+ 1,
351
+ 3999,
352
+ ROMAN_UPPER,
353
+ LIST_STYLE_TYPE.DECIMAL,
354
+ defaultSuffix
355
+ ).toLowerCase();
356
+ case LIST_STYLE_TYPE.UPPER_ROMAN:
357
+ return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);
358
+ case LIST_STYLE_TYPE.LOWER_GREEK:
359
+ return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix);
360
+ case LIST_STYLE_TYPE.LOWER_ALPHA:
361
+ return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix);
362
+ case LIST_STYLE_TYPE.UPPER_ALPHA:
363
+ return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix);
364
+ case LIST_STYLE_TYPE.ARABIC_INDIC:
365
+ return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix);
366
+ case LIST_STYLE_TYPE.ARMENIAN:
367
+ case LIST_STYLE_TYPE.UPPER_ARMENIAN:
368
+ return createAdditiveCounter(value, 1, 9999, ARMENIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);
369
+ case LIST_STYLE_TYPE.LOWER_ARMENIAN:
370
+ return createAdditiveCounter(
371
+ value,
372
+ 1,
373
+ 9999,
374
+ ARMENIAN,
375
+ LIST_STYLE_TYPE.DECIMAL,
376
+ defaultSuffix
377
+ ).toLowerCase();
378
+ case LIST_STYLE_TYPE.BENGALI:
379
+ return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix);
380
+ case LIST_STYLE_TYPE.CAMBODIAN:
381
+ case LIST_STYLE_TYPE.KHMER:
382
+ return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix);
383
+ case LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH:
384
+ return createCounterStyleFromSymbols(value, '子丑寅卯辰巳午未申酉戌亥', cjkSuffix);
385
+ case LIST_STYLE_TYPE.CJK_HEAVENLY_STEM:
386
+ return createCounterStyleFromSymbols(value, '甲乙丙丁戊己庚辛壬癸', cjkSuffix);
387
+ case LIST_STYLE_TYPE.CJK_IDEOGRAPHIC:
388
+ case LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL:
389
+ return createCJKCounter(
390
+ value,
391
+ '零一二三四五六七八九',
392
+ CHINESE_INFORMAL_MULTIPLIERS,
393
+ '負',
394
+ cjkSuffix,
395
+ CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS
396
+ );
397
+ case LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL:
398
+ return createCJKCounter(
399
+ value,
400
+ '零壹貳參肆伍陸柒捌玖',
401
+ CHINESE_FORMAL_MULTIPLIERS,
402
+ '負',
403
+ cjkSuffix,
404
+ CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS
405
+ );
406
+ case LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL:
407
+ return createCJKCounter(
408
+ value,
409
+ '零一二三四五六七八九',
410
+ CHINESE_INFORMAL_MULTIPLIERS,
411
+ '负',
412
+ cjkSuffix,
413
+ CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS
414
+ );
415
+ case LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL:
416
+ return createCJKCounter(
417
+ value,
418
+ '零壹贰叁肆伍陆柒捌玖',
419
+ CHINESE_FORMAL_MULTIPLIERS,
420
+ '负',
421
+ cjkSuffix,
422
+ CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS
423
+ );
424
+ case LIST_STYLE_TYPE.JAPANESE_INFORMAL:
425
+ return createCJKCounter(value, '〇一二三四五六七八九', '十百千万', JAPANESE_NEGATIVE, cjkSuffix, 0);
426
+ case LIST_STYLE_TYPE.JAPANESE_FORMAL:
427
+ return createCJKCounter(
428
+ value,
429
+ '零壱弐参四伍六七八九',
430
+ '拾百千万',
431
+ JAPANESE_NEGATIVE,
432
+ cjkSuffix,
433
+ CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS
434
+ );
435
+ case LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL:
436
+ return createCJKCounter(
437
+ value,
438
+ '영일이삼사오육칠팔구',
439
+ '십백천만',
440
+ KOREAN_NEGATIVE,
441
+ koreanSuffix,
442
+ CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS
443
+ );
444
+ case LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL:
445
+ return createCJKCounter(value, '零一二三四五六七八九', '十百千萬', KOREAN_NEGATIVE, koreanSuffix, 0);
446
+ case LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL:
447
+ return createCJKCounter(
448
+ value,
449
+ '零壹貳參四五六七八九',
450
+ '拾百千',
451
+ KOREAN_NEGATIVE,
452
+ koreanSuffix,
453
+ CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS
454
+ );
455
+ case LIST_STYLE_TYPE.DEVANAGARI:
456
+ return createCounterStyleFromRange(value, 0x966, 0x96f, true, defaultSuffix);
457
+ case LIST_STYLE_TYPE.GEORGIAN:
458
+ return createAdditiveCounter(value, 1, 19999, GEORGIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);
459
+ case LIST_STYLE_TYPE.GUJARATI:
460
+ return createCounterStyleFromRange(value, 0xae6, 0xaef, true, defaultSuffix);
461
+ case LIST_STYLE_TYPE.GURMUKHI:
462
+ return createCounterStyleFromRange(value, 0xa66, 0xa6f, true, defaultSuffix);
463
+ case LIST_STYLE_TYPE.HEBREW:
464
+ return createAdditiveCounter(value, 1, 10999, HEBREW, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);
465
+ case LIST_STYLE_TYPE.HIRAGANA:
466
+ return createCounterStyleFromSymbols(
467
+ value,
468
+ 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん'
469
+ );
470
+ case LIST_STYLE_TYPE.HIRAGANA_IROHA:
471
+ return createCounterStyleFromSymbols(
472
+ value,
473
+ 'いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす'
474
+ );
475
+ case LIST_STYLE_TYPE.KANNADA:
476
+ return createCounterStyleFromRange(value, 0xce6, 0xcef, true, defaultSuffix);
477
+ case LIST_STYLE_TYPE.KATAKANA:
478
+ return createCounterStyleFromSymbols(
479
+ value,
480
+ 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン',
481
+ cjkSuffix
482
+ );
483
+ case LIST_STYLE_TYPE.KATAKANA_IROHA:
484
+ return createCounterStyleFromSymbols(
485
+ value,
486
+ 'イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス',
487
+ cjkSuffix
488
+ );
489
+ case LIST_STYLE_TYPE.LAO:
490
+ return createCounterStyleFromRange(value, 0xed0, 0xed9, true, defaultSuffix);
491
+ case LIST_STYLE_TYPE.MONGOLIAN:
492
+ return createCounterStyleFromRange(value, 0x1810, 0x1819, true, defaultSuffix);
493
+ case LIST_STYLE_TYPE.MYANMAR:
494
+ return createCounterStyleFromRange(value, 0x1040, 0x1049, true, defaultSuffix);
495
+ case LIST_STYLE_TYPE.ORIYA:
496
+ return createCounterStyleFromRange(value, 0xb66, 0xb6f, true, defaultSuffix);
497
+ case LIST_STYLE_TYPE.PERSIAN:
498
+ return createCounterStyleFromRange(value, 0x6f0, 0x6f9, true, defaultSuffix);
499
+ case LIST_STYLE_TYPE.TAMIL:
500
+ return createCounterStyleFromRange(value, 0xbe6, 0xbef, true, defaultSuffix);
501
+ case LIST_STYLE_TYPE.TELUGU:
502
+ return createCounterStyleFromRange(value, 0xc66, 0xc6f, true, defaultSuffix);
503
+ case LIST_STYLE_TYPE.THAI:
504
+ return createCounterStyleFromRange(value, 0xe50, 0xe59, true, defaultSuffix);
505
+ case LIST_STYLE_TYPE.TIBETAN:
506
+ return createCounterStyleFromRange(value, 0xf20, 0xf29, true, defaultSuffix);
507
+ case LIST_STYLE_TYPE.DECIMAL:
508
+ default:
509
+ return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);
510
+ }
511
+ };