html2canvas-pro 2.0.4 → 2.1.1

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 (468) hide show
  1. package/README.md +8 -6
  2. package/dist/html2canvas-pro.esm.js +10103 -9993
  3. package/dist/html2canvas-pro.esm.js.map +1 -1
  4. package/dist/html2canvas-pro.js +10102 -9993
  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 +36 -50
  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 +2 -3
  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/options.js +2 -0
  128. package/dist/lib/render/background.js +0 -1
  129. package/dist/lib/render/bezier-curve.js +0 -1
  130. package/dist/lib/render/border.js +0 -1
  131. package/dist/lib/render/bound-curves.js +0 -1
  132. package/dist/lib/render/box-sizing.js +0 -1
  133. package/dist/lib/render/canvas/background-renderer.js +8 -24
  134. package/dist/lib/render/canvas/border-renderer.js +0 -1
  135. package/dist/lib/render/canvas/canvas-path.js +25 -0
  136. package/dist/lib/render/canvas/canvas-renderer.js +28 -97
  137. package/dist/lib/render/canvas/effects-renderer.js +3 -1
  138. package/dist/lib/render/canvas/foreignobject-renderer.js +13 -17
  139. package/dist/lib/render/canvas/text-renderer.js +61 -117
  140. package/dist/lib/render/effects.js +11 -2
  141. package/dist/lib/render/font-metrics.js +0 -1
  142. package/dist/lib/render/object-fit.js +87 -0
  143. package/dist/lib/render/path.js +0 -1
  144. package/dist/lib/render/renderer-interface.js +0 -1
  145. package/dist/lib/render/stacking-context.js +16 -8
  146. package/dist/lib/render/vector.js +0 -1
  147. package/dist/types/core/cache-storage.d.ts +5 -6
  148. package/dist/types/core/performance-monitor.d.ts +0 -11
  149. package/dist/types/core/render-element.d.ts +3 -0
  150. package/dist/types/css/index.d.ts +3 -0
  151. package/dist/types/css/property-descriptors/background-clip.d.ts +1 -1
  152. package/dist/types/css/property-descriptors/background-color.d.ts +1 -1
  153. package/dist/types/css/property-descriptors/background-image.d.ts +1 -1
  154. package/dist/types/css/property-descriptors/background-origin.d.ts +1 -1
  155. package/dist/types/css/property-descriptors/background-position.d.ts +1 -1
  156. package/dist/types/css/property-descriptors/background-repeat.d.ts +1 -1
  157. package/dist/types/css/property-descriptors/background-size.d.ts +1 -1
  158. package/dist/types/css/property-descriptors/border-color.d.ts +1 -1
  159. package/dist/types/css/property-descriptors/border-radius.d.ts +1 -1
  160. package/dist/types/css/property-descriptors/border-style.d.ts +1 -1
  161. package/dist/types/css/property-descriptors/border-width.d.ts +1 -1
  162. package/dist/types/css/property-descriptors/box-shadow.d.ts +1 -1
  163. package/dist/types/css/property-descriptors/clip-path.d.ts +1 -1
  164. package/dist/types/css/property-descriptors/color.d.ts +1 -1
  165. package/dist/types/css/property-descriptors/content.d.ts +1 -1
  166. package/dist/types/css/property-descriptors/counter-increment.d.ts +1 -1
  167. package/dist/types/css/property-descriptors/counter-reset.d.ts +1 -1
  168. package/dist/types/css/property-descriptors/direction.d.ts +1 -1
  169. package/dist/types/css/property-descriptors/display.d.ts +1 -1
  170. package/dist/types/css/property-descriptors/duration.d.ts +1 -1
  171. package/dist/types/css/property-descriptors/float.d.ts +1 -1
  172. package/dist/types/css/property-descriptors/font-family.d.ts +1 -1
  173. package/dist/types/css/property-descriptors/font-size.d.ts +1 -1
  174. package/dist/types/css/property-descriptors/font-style.d.ts +1 -1
  175. package/dist/types/css/property-descriptors/font-variant.d.ts +1 -1
  176. package/dist/types/css/property-descriptors/font-weight.d.ts +1 -1
  177. package/dist/types/css/property-descriptors/image-rendering.d.ts +1 -1
  178. package/dist/types/css/property-descriptors/letter-spacing.d.ts +1 -1
  179. package/dist/types/css/property-descriptors/line-break.d.ts +1 -1
  180. package/dist/types/css/property-descriptors/line-height.d.ts +1 -1
  181. package/dist/types/css/property-descriptors/list-style-image.d.ts +1 -1
  182. package/dist/types/css/property-descriptors/list-style-position.d.ts +1 -1
  183. package/dist/types/css/property-descriptors/list-style-type.d.ts +1 -1
  184. package/dist/types/css/property-descriptors/margin.d.ts +1 -1
  185. package/dist/types/css/property-descriptors/mix-blend-mode.d.ts +21 -0
  186. package/dist/types/css/property-descriptors/object-fit.d.ts +1 -1
  187. package/dist/types/css/property-descriptors/opacity.d.ts +1 -1
  188. package/dist/types/css/property-descriptors/overflow-wrap.d.ts +1 -1
  189. package/dist/types/css/property-descriptors/overflow.d.ts +1 -1
  190. package/dist/types/css/property-descriptors/padding.d.ts +1 -1
  191. package/dist/types/css/property-descriptors/paint-order.d.ts +1 -1
  192. package/dist/types/css/property-descriptors/position.d.ts +1 -1
  193. package/dist/types/css/property-descriptors/quotes.d.ts +1 -1
  194. package/dist/types/css/property-descriptors/rotate.d.ts +1 -1
  195. package/dist/types/css/property-descriptors/text-align.d.ts +1 -1
  196. package/dist/types/css/property-descriptors/text-decoration-color.d.ts +1 -1
  197. package/dist/types/css/property-descriptors/text-decoration-line.d.ts +1 -1
  198. package/dist/types/css/property-descriptors/text-decoration-style.d.ts +1 -1
  199. package/dist/types/css/property-descriptors/text-decoration-thickness.d.ts +1 -1
  200. package/dist/types/css/property-descriptors/text-overflow.d.ts +1 -1
  201. package/dist/types/css/property-descriptors/text-shadow.d.ts +1 -1
  202. package/dist/types/css/property-descriptors/text-transform.d.ts +1 -1
  203. package/dist/types/css/property-descriptors/text-underline-offset.d.ts +1 -1
  204. package/dist/types/css/property-descriptors/transform-origin.d.ts +1 -1
  205. package/dist/types/css/property-descriptors/transform.d.ts +1 -1
  206. package/dist/types/css/property-descriptors/visibility.d.ts +1 -1
  207. package/dist/types/css/property-descriptors/webkit-line-clamp.d.ts +1 -1
  208. package/dist/types/css/property-descriptors/webkit-text-stroke-color.d.ts +1 -1
  209. package/dist/types/css/property-descriptors/webkit-text-stroke-width.d.ts +1 -1
  210. package/dist/types/css/property-descriptors/word-break.d.ts +1 -1
  211. package/dist/types/css/property-descriptors/writing-mode.d.ts +1 -1
  212. package/dist/types/css/property-descriptors/z-index.d.ts +1 -1
  213. package/dist/types/css/syntax/tokenizer.d.ts +5 -0
  214. package/dist/types/css/types/angle.d.ts +1 -1
  215. package/dist/types/css/types/color.d.ts +1 -1
  216. package/dist/types/css/types/image.d.ts +1 -1
  217. package/dist/types/css/types/time.d.ts +1 -1
  218. package/dist/types/dom/element-container.d.ts +4 -11
  219. package/dist/types/dom/node-parser.d.ts +2 -15
  220. package/dist/types/dom/node-type-guards.d.ts +21 -22
  221. package/dist/types/index.d.ts +28 -48
  222. package/dist/types/options.d.ts +51 -0
  223. package/dist/types/render/canvas/background-renderer.d.ts +0 -6
  224. package/dist/types/render/canvas/canvas-path.d.ts +3 -0
  225. package/dist/types/render/canvas/canvas-renderer.d.ts +4 -2
  226. package/dist/types/render/canvas/foreignobject-renderer.d.ts +2 -3
  227. package/dist/types/render/canvas/text-renderer.d.ts +5 -0
  228. package/dist/types/render/effects.d.ts +9 -1
  229. package/dist/types/render/object-fit.d.ts +18 -0
  230. package/package.json +44 -44
  231. package/demo/image-smoothing-demo.html +0 -256
  232. package/demo/refactoring-test.html +0 -602
  233. package/dist/lib/__tests__/index.js +0 -85
  234. package/dist/lib/__tests__/index.js.map +0 -1
  235. package/dist/lib/config.js.map +0 -1
  236. package/dist/lib/core/__mocks__/cache-storage.js +0 -7
  237. package/dist/lib/core/__mocks__/cache-storage.js.map +0 -1
  238. package/dist/lib/core/__mocks__/context.js +0 -19
  239. package/dist/lib/core/__mocks__/context.js.map +0 -1
  240. package/dist/lib/core/__mocks__/features.js +0 -12
  241. package/dist/lib/core/__mocks__/features.js.map +0 -1
  242. package/dist/lib/core/__mocks__/logger.js +0 -16
  243. package/dist/lib/core/__mocks__/logger.js.map +0 -1
  244. package/dist/lib/core/__tests__/cache-storage.js +0 -225
  245. package/dist/lib/core/__tests__/cache-storage.js.map +0 -1
  246. package/dist/lib/core/__tests__/cache-storage.test.js +0 -158
  247. package/dist/lib/core/__tests__/cache-storage.test.js.map +0 -1
  248. package/dist/lib/core/__tests__/logger.js +0 -27
  249. package/dist/lib/core/__tests__/logger.js.map +0 -1
  250. package/dist/lib/core/__tests__/validator.js +0 -296
  251. package/dist/lib/core/__tests__/validator.js.map +0 -1
  252. package/dist/lib/core/bitwise.js.map +0 -1
  253. package/dist/lib/core/cache-storage.js.map +0 -1
  254. package/dist/lib/core/context.js.map +0 -1
  255. package/dist/lib/core/debugger.js.map +0 -1
  256. package/dist/lib/core/features.js.map +0 -1
  257. package/dist/lib/core/logger.js.map +0 -1
  258. package/dist/lib/core/origin-checker.js.map +0 -1
  259. package/dist/lib/core/performance-monitor.js.map +0 -1
  260. package/dist/lib/core/util.js.map +0 -1
  261. package/dist/lib/core/validator.js.map +0 -1
  262. package/dist/lib/css/IPropertyDescriptor.js.map +0 -1
  263. package/dist/lib/css/ITypeDescriptor.js.map +0 -1
  264. package/dist/lib/css/index.js.map +0 -1
  265. package/dist/lib/css/layout/__mocks__/bounds.js +0 -9
  266. package/dist/lib/css/layout/__mocks__/bounds.js.map +0 -1
  267. package/dist/lib/css/layout/bounds.js.map +0 -1
  268. package/dist/lib/css/layout/text.js.map +0 -1
  269. package/dist/lib/css/property-descriptors/__tests__/background-tests.js +0 -49
  270. package/dist/lib/css/property-descriptors/__tests__/background-tests.js.map +0 -1
  271. package/dist/lib/css/property-descriptors/__tests__/clip-path.test.js +0 -273
  272. package/dist/lib/css/property-descriptors/__tests__/clip-path.test.js.map +0 -1
  273. package/dist/lib/css/property-descriptors/__tests__/font-family.js +0 -19
  274. package/dist/lib/css/property-descriptors/__tests__/font-family.js.map +0 -1
  275. package/dist/lib/css/property-descriptors/__tests__/image-rendering-integration.test.js +0 -143
  276. package/dist/lib/css/property-descriptors/__tests__/image-rendering-integration.test.js.map +0 -1
  277. package/dist/lib/css/property-descriptors/__tests__/image-rendering-performance.test.js +0 -167
  278. package/dist/lib/css/property-descriptors/__tests__/image-rendering-performance.test.js.map +0 -1
  279. package/dist/lib/css/property-descriptors/__tests__/image-rendering.test.js +0 -61
  280. package/dist/lib/css/property-descriptors/__tests__/image-rendering.test.js.map +0 -1
  281. package/dist/lib/css/property-descriptors/__tests__/paint-order.js +0 -66
  282. package/dist/lib/css/property-descriptors/__tests__/paint-order.js.map +0 -1
  283. package/dist/lib/css/property-descriptors/__tests__/text-shadow.js +0 -82
  284. package/dist/lib/css/property-descriptors/__tests__/text-shadow.js.map +0 -1
  285. package/dist/lib/css/property-descriptors/__tests__/transform-tests.js +0 -14
  286. package/dist/lib/css/property-descriptors/__tests__/transform-tests.js.map +0 -1
  287. package/dist/lib/css/property-descriptors/background-clip.js.map +0 -1
  288. package/dist/lib/css/property-descriptors/background-color.js.map +0 -1
  289. package/dist/lib/css/property-descriptors/background-image.js.map +0 -1
  290. package/dist/lib/css/property-descriptors/background-origin.js.map +0 -1
  291. package/dist/lib/css/property-descriptors/background-position.js.map +0 -1
  292. package/dist/lib/css/property-descriptors/background-repeat.js.map +0 -1
  293. package/dist/lib/css/property-descriptors/background-size.js.map +0 -1
  294. package/dist/lib/css/property-descriptors/border-color.js.map +0 -1
  295. package/dist/lib/css/property-descriptors/border-radius.js.map +0 -1
  296. package/dist/lib/css/property-descriptors/border-style.js.map +0 -1
  297. package/dist/lib/css/property-descriptors/border-width.js.map +0 -1
  298. package/dist/lib/css/property-descriptors/box-shadow.js.map +0 -1
  299. package/dist/lib/css/property-descriptors/clip-path.js.map +0 -1
  300. package/dist/lib/css/property-descriptors/color.js.map +0 -1
  301. package/dist/lib/css/property-descriptors/content.js.map +0 -1
  302. package/dist/lib/css/property-descriptors/counter-increment.js.map +0 -1
  303. package/dist/lib/css/property-descriptors/counter-reset.js.map +0 -1
  304. package/dist/lib/css/property-descriptors/direction.js.map +0 -1
  305. package/dist/lib/css/property-descriptors/display.js.map +0 -1
  306. package/dist/lib/css/property-descriptors/duration.js.map +0 -1
  307. package/dist/lib/css/property-descriptors/float.js.map +0 -1
  308. package/dist/lib/css/property-descriptors/font-family.js.map +0 -1
  309. package/dist/lib/css/property-descriptors/font-size.js.map +0 -1
  310. package/dist/lib/css/property-descriptors/font-style.js.map +0 -1
  311. package/dist/lib/css/property-descriptors/font-variant.js.map +0 -1
  312. package/dist/lib/css/property-descriptors/font-weight.js.map +0 -1
  313. package/dist/lib/css/property-descriptors/image-rendering.js.map +0 -1
  314. package/dist/lib/css/property-descriptors/letter-spacing.js.map +0 -1
  315. package/dist/lib/css/property-descriptors/line-break.js.map +0 -1
  316. package/dist/lib/css/property-descriptors/line-height.js.map +0 -1
  317. package/dist/lib/css/property-descriptors/list-style-image.js.map +0 -1
  318. package/dist/lib/css/property-descriptors/list-style-position.js.map +0 -1
  319. package/dist/lib/css/property-descriptors/list-style-type.js.map +0 -1
  320. package/dist/lib/css/property-descriptors/margin.js.map +0 -1
  321. package/dist/lib/css/property-descriptors/object-fit.js.map +0 -1
  322. package/dist/lib/css/property-descriptors/opacity.js.map +0 -1
  323. package/dist/lib/css/property-descriptors/overflow-wrap.js.map +0 -1
  324. package/dist/lib/css/property-descriptors/overflow.js.map +0 -1
  325. package/dist/lib/css/property-descriptors/padding.js.map +0 -1
  326. package/dist/lib/css/property-descriptors/paint-order.js.map +0 -1
  327. package/dist/lib/css/property-descriptors/position.js.map +0 -1
  328. package/dist/lib/css/property-descriptors/quotes.js.map +0 -1
  329. package/dist/lib/css/property-descriptors/rotate.js.map +0 -1
  330. package/dist/lib/css/property-descriptors/text-align.js.map +0 -1
  331. package/dist/lib/css/property-descriptors/text-decoration-color.js.map +0 -1
  332. package/dist/lib/css/property-descriptors/text-decoration-line.js.map +0 -1
  333. package/dist/lib/css/property-descriptors/text-decoration-style.js.map +0 -1
  334. package/dist/lib/css/property-descriptors/text-decoration-thickness.js.map +0 -1
  335. package/dist/lib/css/property-descriptors/text-overflow.js.map +0 -1
  336. package/dist/lib/css/property-descriptors/text-shadow.js.map +0 -1
  337. package/dist/lib/css/property-descriptors/text-transform.js.map +0 -1
  338. package/dist/lib/css/property-descriptors/text-underline-offset.js.map +0 -1
  339. package/dist/lib/css/property-descriptors/transform-origin.js.map +0 -1
  340. package/dist/lib/css/property-descriptors/transform.js.map +0 -1
  341. package/dist/lib/css/property-descriptors/visibility.js.map +0 -1
  342. package/dist/lib/css/property-descriptors/webkit-line-clamp.js.map +0 -1
  343. package/dist/lib/css/property-descriptors/webkit-text-stroke-color.js.map +0 -1
  344. package/dist/lib/css/property-descriptors/webkit-text-stroke-width.js.map +0 -1
  345. package/dist/lib/css/property-descriptors/word-break.js.map +0 -1
  346. package/dist/lib/css/property-descriptors/writing-mode.js.map +0 -1
  347. package/dist/lib/css/property-descriptors/z-index.js.map +0 -1
  348. package/dist/lib/css/syntax/__tests__/tokernizer-tests.js +0 -26
  349. package/dist/lib/css/syntax/__tests__/tokernizer-tests.js.map +0 -1
  350. package/dist/lib/css/syntax/parser.js.map +0 -1
  351. package/dist/lib/css/syntax/tokenizer.js.map +0 -1
  352. package/dist/lib/css/types/__tests__/color-tests.js +0 -111
  353. package/dist/lib/css/types/__tests__/color-tests.js.map +0 -1
  354. package/dist/lib/css/types/__tests__/image-tests.js +0 -215
  355. package/dist/lib/css/types/__tests__/image-tests.js.map +0 -1
  356. package/dist/lib/css/types/angle.js.map +0 -1
  357. package/dist/lib/css/types/color-math.js.map +0 -1
  358. package/dist/lib/css/types/color-spaces/a98.js.map +0 -1
  359. package/dist/lib/css/types/color-spaces/p3.js.map +0 -1
  360. package/dist/lib/css/types/color-spaces/pro-photo.js.map +0 -1
  361. package/dist/lib/css/types/color-spaces/rec2020.js.map +0 -1
  362. package/dist/lib/css/types/color-spaces/srgb.js.map +0 -1
  363. package/dist/lib/css/types/color-utilities.js.map +0 -1
  364. package/dist/lib/css/types/color.js.map +0 -1
  365. package/dist/lib/css/types/functions/-prefix-linear-gradient.js.map +0 -1
  366. package/dist/lib/css/types/functions/-prefix-radial-gradient.js.map +0 -1
  367. package/dist/lib/css/types/functions/-webkit-gradient.js.map +0 -1
  368. package/dist/lib/css/types/functions/__tests__/radial-gradient.js +0 -63
  369. package/dist/lib/css/types/functions/__tests__/radial-gradient.js.map +0 -1
  370. package/dist/lib/css/types/functions/counter.js.map +0 -1
  371. package/dist/lib/css/types/functions/gradient.js.map +0 -1
  372. package/dist/lib/css/types/functions/linear-gradient.js.map +0 -1
  373. package/dist/lib/css/types/functions/radial-gradient.js.map +0 -1
  374. package/dist/lib/css/types/image.js.map +0 -1
  375. package/dist/lib/css/types/index.js.map +0 -1
  376. package/dist/lib/css/types/length-percentage.js.map +0 -1
  377. package/dist/lib/css/types/length.js.map +0 -1
  378. package/dist/lib/css/types/time.js.map +0 -1
  379. package/dist/lib/dom/__mocks__/document-cloner.js +0 -23
  380. package/dist/lib/dom/__mocks__/document-cloner.js.map +0 -1
  381. package/dist/lib/dom/__tests__/dom-normalizer.test.js +0 -113
  382. package/dist/lib/dom/__tests__/dom-normalizer.test.js.map +0 -1
  383. package/dist/lib/dom/__tests__/element-container.test.js +0 -109
  384. package/dist/lib/dom/__tests__/element-container.test.js.map +0 -1
  385. package/dist/lib/dom/document-cloner.js.map +0 -1
  386. package/dist/lib/dom/dom-normalizer.js.map +0 -1
  387. package/dist/lib/dom/element-container.js.map +0 -1
  388. package/dist/lib/dom/elements/li-element-container.js.map +0 -1
  389. package/dist/lib/dom/elements/ol-element-container.js.map +0 -1
  390. package/dist/lib/dom/elements/select-element-container.js.map +0 -1
  391. package/dist/lib/dom/elements/textarea-element-container.js.map +0 -1
  392. package/dist/lib/dom/node-parser.js.map +0 -1
  393. package/dist/lib/dom/node-type-guards.js.map +0 -1
  394. package/dist/lib/dom/replaced-elements/canvas-element-container.js.map +0 -1
  395. package/dist/lib/dom/replaced-elements/iframe-element-container.js.map +0 -1
  396. package/dist/lib/dom/replaced-elements/image-element-container.js.map +0 -1
  397. package/dist/lib/dom/replaced-elements/index.js.map +0 -1
  398. package/dist/lib/dom/replaced-elements/input-element-container.js.map +0 -1
  399. package/dist/lib/dom/replaced-elements/pseudo-elements.js.map +0 -1
  400. package/dist/lib/dom/replaced-elements/svg-element-container.js.map +0 -1
  401. package/dist/lib/dom/text-container.js.map +0 -1
  402. package/dist/lib/index.js.map +0 -1
  403. package/dist/lib/invariant.js +0 -10
  404. package/dist/lib/invariant.js.map +0 -1
  405. package/dist/lib/render/background.js.map +0 -1
  406. package/dist/lib/render/bezier-curve.js.map +0 -1
  407. package/dist/lib/render/border.js.map +0 -1
  408. package/dist/lib/render/bound-curves.js.map +0 -1
  409. package/dist/lib/render/box-sizing.js.map +0 -1
  410. package/dist/lib/render/canvas/__tests__/background-renderer.test.js +0 -65
  411. package/dist/lib/render/canvas/__tests__/background-renderer.test.js.map +0 -1
  412. package/dist/lib/render/canvas/__tests__/border-renderer.test.js +0 -23
  413. package/dist/lib/render/canvas/__tests__/border-renderer.test.js.map +0 -1
  414. package/dist/lib/render/canvas/__tests__/effects-renderer.test.js +0 -30
  415. package/dist/lib/render/canvas/__tests__/effects-renderer.test.js.map +0 -1
  416. package/dist/lib/render/canvas/__tests__/text-renderer.test.js +0 -402
  417. package/dist/lib/render/canvas/__tests__/text-renderer.test.js.map +0 -1
  418. package/dist/lib/render/canvas/background-renderer.js.map +0 -1
  419. package/dist/lib/render/canvas/border-renderer.js.map +0 -1
  420. package/dist/lib/render/canvas/canvas-renderer.js.map +0 -1
  421. package/dist/lib/render/canvas/effects-renderer.js.map +0 -1
  422. package/dist/lib/render/canvas/foreignobject-renderer.js.map +0 -1
  423. package/dist/lib/render/canvas/text-renderer.js.map +0 -1
  424. package/dist/lib/render/effects.js.map +0 -1
  425. package/dist/lib/render/font-metrics.js.map +0 -1
  426. package/dist/lib/render/path.js.map +0 -1
  427. package/dist/lib/render/renderer-interface.js.map +0 -1
  428. package/dist/lib/render/renderer.js +0 -11
  429. package/dist/lib/render/renderer.js.map +0 -1
  430. package/dist/lib/render/stacking-context.js.map +0 -1
  431. package/dist/lib/render/vector.js.map +0 -1
  432. package/dist/types/__tests__/index.d.ts +0 -1
  433. package/dist/types/core/__mocks__/cache-storage.d.ts +0 -2
  434. package/dist/types/core/__mocks__/context.d.ts +0 -9
  435. package/dist/types/core/__mocks__/features.d.ts +0 -8
  436. package/dist/types/core/__mocks__/logger.d.ts +0 -9
  437. package/dist/types/core/__tests__/cache-storage.d.ts +0 -1
  438. package/dist/types/core/__tests__/cache-storage.test.d.ts +0 -1
  439. package/dist/types/core/__tests__/logger.d.ts +0 -1
  440. package/dist/types/core/__tests__/validator.d.ts +0 -1
  441. package/dist/types/css/layout/__mocks__/bounds.d.ts +0 -2
  442. package/dist/types/css/property-descriptors/__tests__/background-tests.d.ts +0 -1
  443. package/dist/types/css/property-descriptors/__tests__/clip-path.test.d.ts +0 -1
  444. package/dist/types/css/property-descriptors/__tests__/font-family.d.ts +0 -1
  445. package/dist/types/css/property-descriptors/__tests__/image-rendering-integration.test.d.ts +0 -1
  446. package/dist/types/css/property-descriptors/__tests__/image-rendering-performance.test.d.ts +0 -1
  447. package/dist/types/css/property-descriptors/__tests__/image-rendering.test.d.ts +0 -1
  448. package/dist/types/css/property-descriptors/__tests__/paint-order.d.ts +0 -1
  449. package/dist/types/css/property-descriptors/__tests__/text-shadow.d.ts +0 -1
  450. package/dist/types/css/property-descriptors/__tests__/transform-tests.d.ts +0 -1
  451. package/dist/types/css/syntax/__tests__/tokernizer-tests.d.ts +0 -1
  452. package/dist/types/css/types/__tests__/color-tests.d.ts +0 -1
  453. package/dist/types/css/types/__tests__/image-tests.d.ts +0 -1
  454. package/dist/types/css/types/functions/__tests__/radial-gradient.d.ts +0 -1
  455. package/dist/types/dom/__mocks__/document-cloner.d.ts +0 -6
  456. package/dist/types/dom/__tests__/dom-normalizer.test.d.ts +0 -1
  457. package/dist/types/dom/__tests__/element-container.test.d.ts +0 -1
  458. package/dist/types/invariant.d.ts +0 -1
  459. package/dist/types/render/canvas/__tests__/background-renderer.test.d.ts +0 -1
  460. package/dist/types/render/canvas/__tests__/border-renderer.test.d.ts +0 -1
  461. package/dist/types/render/canvas/__tests__/effects-renderer.test.d.ts +0 -1
  462. package/dist/types/render/canvas/__tests__/text-renderer.test.d.ts +0 -1
  463. package/dist/types/render/renderer.d.ts +0 -7
  464. package/eslint.config.js +0 -35
  465. package/jest.config.cjs +0 -5
  466. package/karma.conf.cjs +0 -300
  467. /package/dist/types/css/{IPropertyDescriptor.d.ts → property-descriptor.d.ts} +0 -0
  468. /package/dist/types/css/{ITypeDescriptor.d.ts → type-descriptor.d.ts} +0 -0
@@ -71,8 +71,13 @@ export declare const FLAG_INTEGER: number;
71
71
  export declare const FLAG_NUMBER: number;
72
72
  export declare const EOF_TOKEN: Token;
73
73
  export declare class Tokenizer {
74
+ private static _pool;
75
+ private static readonly MAX_POOL_SIZE;
76
+ static get(): Tokenizer;
77
+ static release(tokenizer: Tokenizer): void;
74
78
  private _value;
75
79
  constructor();
80
+ private _reset;
76
81
  write(chunk: string): void;
77
82
  read(): CSSToken[];
78
83
  private consumeToken;
@@ -1,5 +1,5 @@
1
1
  import { CSSValue } from '../syntax/parser';
2
- import { ITypeDescriptor } from '../ITypeDescriptor';
2
+ import { ITypeDescriptor } from '../type-descriptor';
3
3
  import { GradientCorner } from './image';
4
4
  export declare const angle: ITypeDescriptor<number>;
5
5
  export declare const isAngle: (value: CSSValue) => boolean;
@@ -1,4 +1,4 @@
1
- import { ITypeDescriptor } from '../ITypeDescriptor';
1
+ import { ITypeDescriptor } from '../type-descriptor';
2
2
  import { Context } from '../../core/context';
3
3
  export type Color = number;
4
4
  export declare const color: ITypeDescriptor<Color>;
@@ -1,6 +1,6 @@
1
1
  import { CSSValue } from '../syntax/parser';
2
2
  import { Color } from './color';
3
- import { ITypeDescriptor } from '../ITypeDescriptor';
3
+ import { ITypeDescriptor } from '../type-descriptor';
4
4
  import { LengthPercentage } from './length-percentage';
5
5
  export declare const enum CSSImageType {
6
6
  URL = 0,
@@ -1,2 +1,2 @@
1
- import { ITypeDescriptor } from '../ITypeDescriptor';
1
+ import { ITypeDescriptor } from '../type-descriptor';
2
2
  export declare const time: ITypeDescriptor<number>;
@@ -2,17 +2,7 @@ import { CSSParsedDeclaration } from '../css/index';
2
2
  import { TextContainer } from './text-container';
3
3
  import { Bounds } from '../css/layout/bounds';
4
4
  import { Context } from '../core/context';
5
- export declare const enum FLAGS {
6
- CREATES_STACKING_CONTEXT = 2,
7
- CREATES_REAL_STACKING_CONTEXT = 4,
8
- IS_LIST_OWNER = 8,
9
- DEBUG_RENDER = 16
10
- }
11
5
  export interface ElementContainerOptions {
12
- /**
13
- * Whether to normalize DOM (disable animations, reset transforms)
14
- * Default: true for backward compatibility
15
- */
16
6
  normalizeDom?: boolean;
17
7
  }
18
8
  export declare class ElementContainer {
@@ -21,7 +11,10 @@ export declare class ElementContainer {
21
11
  readonly textNodes: TextContainer[];
22
12
  readonly elements: ElementContainer[];
23
13
  bounds: Bounds;
24
- flags: number;
14
+ createsStackingContext: boolean;
15
+ createsRealStackingContext: boolean;
16
+ isListOwner: boolean;
17
+ debugRender: boolean;
25
18
  private originalStyles?;
26
19
  private originalElement?;
27
20
  constructor(context: Context, element: Element, options?: ElementContainerOptions);
@@ -1,18 +1,5 @@
1
1
  import { ElementContainer } from './element-container';
2
2
  import { Context } from '../core/context';
3
- import { isElementNode, isTextNode, isSVGElementNode, isHTMLElementNode, isLIElement, isOLElement, isCustomElement } from './node-type-guards';
4
- export { isElementNode, isTextNode, isSVGElementNode, isHTMLElementNode, isLIElement, isOLElement, isCustomElement };
3
+ import { isBodyElement, isCanvasElement, isCustomElement, isElementNode, isHTMLElement, isHTMLElementNode, isIFrameElement, isImageElement, isInputElement, isLIElement, isOLElement, isScriptElement, isSelectElement, isSlotElement, isStyleElement, isSVGElement, isSVGElementNode, isTextareaElement, isTextNode, isVideoElement } from './node-type-guards';
4
+ export { isBodyElement, isCanvasElement, isCustomElement, isElementNode, isHTMLElement, isHTMLElementNode, isIFrameElement, isImageElement, isInputElement, isLIElement, isOLElement, isScriptElement, isSelectElement, isSlotElement, isStyleElement, isSVGElement, isSVGElementNode, isTextareaElement, isTextNode, isVideoElement };
5
5
  export declare const parseTree: (context: Context, element: HTMLElement) => ElementContainer;
6
- export declare const isInputElement: (node: Element) => node is HTMLInputElement;
7
- export declare const isHTMLElement: (node: Element) => node is HTMLHtmlElement;
8
- export declare const isSVGElement: (node: Element) => node is SVGSVGElement;
9
- export declare const isBodyElement: (node: Element) => node is HTMLBodyElement;
10
- export declare const isCanvasElement: (node: Element) => node is HTMLCanvasElement;
11
- export declare const isVideoElement: (node: Element) => node is HTMLVideoElement;
12
- export declare const isImageElement: (node: Element) => node is HTMLImageElement;
13
- export declare const isIFrameElement: (node: Element) => node is HTMLIFrameElement;
14
- export declare const isStyleElement: (node: Element) => node is HTMLStyleElement;
15
- export declare const isScriptElement: (node: Element) => node is HTMLScriptElement;
16
- export declare const isTextareaElement: (node: Element) => node is HTMLTextAreaElement;
17
- export declare const isSelectElement: (node: Element) => node is HTMLSelectElement;
18
- export declare const isSlotElement: (node: Element) => node is HTMLSlotElement;
@@ -1,33 +1,32 @@
1
1
  /**
2
2
  * DOM Node Type Guards
3
- * Extracted to break circular dependencies
4
- */
5
- /**
6
- * Check if node is an Element
3
+ *
4
+ * All DOM node type guards consolidated here to eliminate duplication
5
+ * and provide a single source of truth for node type checking.
7
6
  */
8
7
  export declare const isElementNode: (node: Node) => node is Element;
9
- /**
10
- * Check if node is a Text node
11
- */
12
8
  export declare const isTextNode: (node: Node) => node is Text;
13
- /**
14
- * Check if element is an SVG element
15
- */
16
9
  export declare const isSVGElementNode: (element: Element) => element is SVGElement;
17
- /**
18
- * Check if node is an HTML element
19
- */
20
10
  export declare const isHTMLElementNode: (node: Node) => node is HTMLElement;
21
- /**
22
- * Check if node is an LI element
23
- */
11
+ export declare const isInputElement: (node: Element) => node is HTMLInputElement;
12
+ export declare const isHTMLElement: (node: Element) => node is HTMLHtmlElement;
13
+ export declare const isSVGElement: (node: Element) => node is SVGSVGElement;
14
+ export declare const isBodyElement: (node: Element) => node is HTMLBodyElement;
15
+ export declare const isCanvasElement: (node: Element) => node is HTMLCanvasElement;
16
+ export declare const isVideoElement: (node: Element) => node is HTMLVideoElement;
17
+ export declare const isImageElement: (node: Element) => node is HTMLImageElement;
18
+ export declare const isIFrameElement: (node: Element) => node is HTMLIFrameElement;
19
+ export declare const isStyleElement: (node: Element) => node is HTMLStyleElement;
20
+ export declare const isScriptElement: (node: Element) => node is HTMLScriptElement;
21
+ export declare const isTextareaElement: (node: Element) => node is HTMLTextAreaElement;
22
+ export declare const isSelectElement: (node: Element) => node is HTMLSelectElement;
23
+ export declare const isSlotElement: (node: Element) => node is HTMLSlotElement;
24
24
  export declare const isLIElement: (node: Element) => node is HTMLLIElement;
25
- /**
26
- * Check if node is an OL element
27
- */
28
25
  export declare const isOLElement: (node: Element) => node is HTMLOListElement;
26
+ export declare const isCustomElement: (element: Element) => element is HTMLElement;
29
27
  /**
30
- * Check if element is a custom element
31
- * Custom elements must have a hyphen and cannot be SVG elements
28
+ * Check if an element can have ::before / ::after pseudo-elements.
29
+ * Per the CSS spec, replaced elements and void elements cannot have pseudo-elements.
30
+ * SVG elements also do not support pseudo-elements.
32
31
  */
33
- export declare const isCustomElement: (element: Element) => element is HTMLElement;
32
+ export declare const canHavePseudoElements: (element: Element) => boolean;
@@ -1,60 +1,40 @@
1
- import { CloneOptions, WindowOptions } from './dom/document-cloner';
2
- import { RenderOptions } from './render/canvas/canvas-renderer';
3
- import { ContextOptions } from './core/context';
4
1
  import { Html2CanvasConfig, ConfigOptions } from './config';
5
2
  import { createDefaultValidator, Validator, ValidationResult } from './core/validator';
6
3
  import { PerformanceMonitor } from './core/performance-monitor';
7
- export type Options = CloneOptions & WindowOptions & RenderOptions & ContextOptions & {
8
- backgroundColor: string | null;
9
- foreignObjectRendering: boolean;
10
- removeContainer?: boolean;
11
- cspNonce?: string;
12
- validator?: Validator;
13
- skipValidation?: boolean;
14
- enablePerformanceMonitoring?: boolean;
15
- /**
16
- * Enable/disable image smoothing (anti-aliasing) globally.
17
- * - `false`: Pixel-perfect rendering for pixel art, sprites, and retro graphics
18
- * - `true`: Smooth rendering for photos and high-quality images
19
- * - CSS `image-rendering` property on individual elements takes precedence
20
- * @default true (browser default)
21
- * @example
22
- * // Pixel art game screenshot
23
- * html2canvas(element, { imageSmoothing: false, scale: 2 });
24
- *
25
- * // High-quality photo
26
- * html2canvas(element, { imageSmoothing: true, imageSmoothingQuality: 'high' });
27
- */
28
- imageSmoothing?: boolean;
29
- /**
30
- * Image smoothing quality level when imageSmoothing is enabled.
31
- * - `'low'`: Faster, lower quality (good for preview)
32
- * - `'medium'`: Balanced (default in most browsers)
33
- * - `'high'`: Slower, best quality (good for final export)
34
- *
35
- * Browser support: Chrome 54+, Firefox 94+, Safari 17+
36
- * Falls back gracefully in older browsers.
37
- * @default browser default (usually 'low' or 'medium')
38
- */
39
- imageSmoothingQuality?: 'low' | 'medium' | 'high';
40
- };
4
+ import type { Options } from './options';
5
+ export type { Options };
41
6
  /**
42
- * Main html2canvas function with improved configuration management
7
+ * Renders an HTML element to a `<canvas>` element.
8
+ *
9
+ * The function clones the target element and its subtree into a hidden iframe,
10
+ * resolves all computed styles, and paints the result onto a canvas —
11
+ * producing a visual snapshot of the DOM as it appears in the browser.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * import html2canvas from 'html2canvas-pro';
16
+ *
17
+ * const canvas = await html2canvas(document.body, {
18
+ * backgroundColor: '#ffffff',
19
+ * scale: 2,
20
+ * useCORS: true
21
+ * });
22
+ * document.body.appendChild(canvas);
23
+ * ```
43
24
  *
44
- * @param element - Element to render
45
- * @param options - Rendering options
46
- * @param config - Optional configuration (for advanced use cases)
47
- * @returns Promise resolving to rendered canvas
25
+ * @param element - The root HTMLElement to render.
26
+ * @param options - Rendering options.
27
+ * @param config - Advanced configuration. In most cases this is auto-created;
28
+ * only pass it if you need to share a cache across multiple calls.
29
+ * @returns A promise that resolves to the rendered HTMLCanvasElement.
30
+ *
31
+ * @throws {Error} If the element is not attached to a document.
32
+ * @throws {DOMException} If an {@link Options.signal|AbortSignal} was provided and the operation was aborted.
48
33
  */
49
34
  declare const html2canvas: {
50
35
  (element: HTMLElement, options?: Partial<Options>, config?: Html2CanvasConfig): Promise<HTMLCanvasElement>;
51
36
  setCspNonce: (nonce: string) => void;
52
37
  };
53
- /**
54
- * Set CSP nonce for inline styles
55
- * @deprecated Use options.cspNonce instead
56
- */
57
- declare const setCspNonce: (nonce: string) => void;
58
38
  export default html2canvas;
59
- export { html2canvas, setCspNonce, Html2CanvasConfig, ConfigOptions, Validator, ValidationResult, createDefaultValidator, PerformanceMonitor };
39
+ export { html2canvas, Html2CanvasConfig, ConfigOptions, Validator, ValidationResult, createDefaultValidator, PerformanceMonitor };
60
40
  export { IMAGE_RENDERING } from './css/property-descriptors/image-rendering';
@@ -0,0 +1,51 @@
1
+ import { CloneOptions, WindowOptions } from './dom/document-cloner';
2
+ import { RenderOptions } from './render/canvas/canvas-renderer';
3
+ import { ContextOptions } from './core/context';
4
+ import { Validator } from './core/validator';
5
+ /**
6
+ * Options passed to {@link html2canvas}.
7
+ *
8
+ * Combines clone, window, render, and context configuration into a single
9
+ * options object. All properties are optional.
10
+ */
11
+ export type Options = CloneOptions & WindowOptions & RenderOptions & ContextOptions & {
12
+ /** Background color for the resulting canvas. Use `null` for transparent. */
13
+ backgroundColor: string | null;
14
+ /** Use foreignObject rendering (SVG-based) instead of the default Canvas 2D pipeline. */
15
+ foreignObjectRendering: boolean;
16
+ /** Whether to remove the cloned iframe after rendering. @default true */
17
+ removeContainer?: boolean;
18
+ /** CSP nonce for inline style elements. */
19
+ cspNonce?: string;
20
+ /** Custom input validator. */
21
+ validator?: Validator;
22
+ /** Skip pre-render validation of element and options. */
23
+ skipValidation?: boolean;
24
+ /** Enable performance monitoring and log a timing summary. */
25
+ enablePerformanceMonitoring?: boolean;
26
+ /**
27
+ * An AbortSignal that can be used to cancel an in-progress render.
28
+ * When the signal is aborted, the returned promise rejects with an
29
+ * `AbortError` DOMException.
30
+ */
31
+ signal?: AbortSignal;
32
+ /**
33
+ * Enable/disable image smoothing (anti-aliasing) globally.
34
+ * - `false`: Pixel-perfect rendering for pixel art, sprites, and retro graphics
35
+ * - `true`: Smooth rendering for photos and high-quality images
36
+ * - CSS `image-rendering` property on individual elements takes precedence
37
+ * @default true (browser default)
38
+ */
39
+ imageSmoothing?: boolean;
40
+ /**
41
+ * Image smoothing quality level when imageSmoothing is enabled.
42
+ * - `'low'`: Faster, lower quality (good for preview)
43
+ * - `'medium'`: Balanced (default in most browsers)
44
+ * - `'high'`: Slower, best quality (good for final export)
45
+ *
46
+ * Browser support: Chrome 54+, Firefox 94+, Safari 17+
47
+ * Falls back gracefully in older browsers.
48
+ * @default browser default (usually 'low' or 'medium')
49
+ */
50
+ imageSmoothingQuality?: 'low' | 'medium' | 'high';
51
+ };
@@ -78,10 +78,4 @@ export declare class BackgroundRenderer {
78
78
  * @param paths - Array of path points
79
79
  */
80
80
  private path;
81
- /**
82
- * Format path points into canvas path
83
- *
84
- * @param paths - Array of path points
85
- */
86
- private formatPath;
87
81
  }
@@ -0,0 +1,3 @@
1
+ import { Path } from '../path';
2
+ export declare const formatCanvasPath: (ctx: CanvasRenderingContext2D, paths: Path[]) => void;
3
+ export declare const createCanvasPath: (ctx: CanvasRenderingContext2D, paths: Path[]) => void;
@@ -4,10 +4,10 @@ import { ElementContainer } from '../../dom/element-container';
4
4
  import { Path } from '../path';
5
5
  import { BoundCurves } from '../bound-curves';
6
6
  import { ReplacedElementContainer } from '../../dom/replaced-elements';
7
- import { Renderer } from '../renderer';
8
7
  import { Context } from '../../core/context';
9
8
  export type RenderConfigurations = RenderOptions & {
10
9
  backgroundColor: Color | null;
10
+ signal?: AbortSignal;
11
11
  /**
12
12
  * Enable/disable image smoothing (anti-aliasing).
13
13
  * When disabled, images are rendered with pixel-perfect sharpness (no interpolation).
@@ -32,9 +32,11 @@ export interface RenderOptions {
32
32
  width: number;
33
33
  height: number;
34
34
  }
35
- export declare class CanvasRenderer extends Renderer {
35
+ export declare class CanvasRenderer {
36
36
  canvas: HTMLCanvasElement;
37
37
  ctx: CanvasRenderingContext2D;
38
+ private readonly context;
39
+ private readonly options;
38
40
  private readonly fontMetrics;
39
41
  private readonly backgroundRenderer;
40
42
  private readonly borderRenderer;
@@ -1,11 +1,10 @@
1
1
  import { RenderConfigurations } from './canvas-renderer';
2
- import { Renderer } from '../renderer';
3
2
  import { Context } from '../../core/context';
4
- export declare class ForeignObjectRenderer extends Renderer {
3
+ export declare class ForeignObjectRenderer {
5
4
  canvas: HTMLCanvasElement;
6
5
  ctx: CanvasRenderingContext2D;
7
6
  options: RenderConfigurations;
7
+ private readonly context;
8
8
  constructor(context: Context, options: RenderConfigurations);
9
9
  render(element: HTMLElement): Promise<HTMLCanvasElement>;
10
10
  }
11
- export declare const loadSerializedSVG: (svg: Node) => Promise<HTMLImageElement>;
@@ -60,6 +60,11 @@ export declare class TextRenderer {
60
60
  * grapheme is drawn individually so spacing and CJK baseline are applied correctly.
61
61
  */
62
62
  renderTextWithLetterSpacing(text: TextBounds, letterSpacing: number, baseline: number, writingMode?: WRITING_MODE): void;
63
+ private canRenderWholeText;
64
+ private renderFillText;
65
+ private renderStrokeText;
66
+ private renderTextStrokeWithStyle;
67
+ private renderTextFillWithShadows;
63
68
  /**
64
69
  * Helper method to render text with paint order support
65
70
  * Reduces code duplication in line-clamp and normal rendering
@@ -4,7 +4,8 @@ export declare const enum EffectType {
4
4
  TRANSFORM = 0,
5
5
  CLIP = 1,
6
6
  OPACITY = 2,
7
- CLIP_PATH = 3
7
+ CLIP_PATH = 3,
8
+ BLEND = 4
8
9
  }
9
10
  export declare const enum EffectTarget {
10
11
  BACKGROUND_BORDERS = 2,
@@ -46,7 +47,14 @@ export declare class ClipPathEffect implements IElementEffect {
46
47
  readonly target: number;
47
48
  constructor(applyClip: (ctx: CanvasRenderingContext2D) => void);
48
49
  }
50
+ export declare class BlendEffect implements IElementEffect {
51
+ readonly compositeOperation: GlobalCompositeOperation;
52
+ readonly type: EffectType;
53
+ readonly target: number;
54
+ constructor(compositeOperation: GlobalCompositeOperation);
55
+ }
49
56
  export declare const isTransformEffect: (effect: IElementEffect) => effect is TransformEffect;
50
57
  export declare const isClipEffect: (effect: IElementEffect) => effect is ClipEffect;
51
58
  export declare const isOpacityEffect: (effect: IElementEffect) => effect is OpacityEffect;
52
59
  export declare const isClipPathEffect: (effect: IElementEffect) => effect is ClipPathEffect;
60
+ export declare const isBlendEffect: (effect: IElementEffect) => effect is BlendEffect;
@@ -0,0 +1,18 @@
1
+ import { ObjectFit } from '../css/property-descriptors/object-fit';
2
+ export interface ObjectFitBox {
3
+ left: number;
4
+ top: number;
5
+ width: number;
6
+ height: number;
7
+ }
8
+ export interface ObjectFitRendering {
9
+ sx: number;
10
+ sy: number;
11
+ sw: number;
12
+ sh: number;
13
+ dx: number;
14
+ dy: number;
15
+ dw: number;
16
+ dh: number;
17
+ }
18
+ export declare const calculateObjectFitRendering: (intrinsicWidth: number, intrinsicHeight: number, box: ObjectFitBox, objectFit: ObjectFit) => ObjectFitRendering;
package/package.json CHANGED
@@ -5,7 +5,12 @@
5
5
  "main": "dist/html2canvas-pro.js",
6
6
  "module": "dist/html2canvas-pro.esm.js",
7
7
  "typings": "dist/types/index.d.ts",
8
- "browser": "dist/html2canvas-pro.js",
8
+ "browser": "dist/html2canvas-pro.esm.js",
9
+ "sideEffects": false,
10
+ "files": [
11
+ "dist/",
12
+ "LICENSE"
13
+ ],
9
14
  "exports": {
10
15
  ".": {
11
16
  "types": "./dist/types/index.d.ts",
@@ -14,7 +19,7 @@
14
19
  "default": "./dist/html2canvas-pro.esm.js"
15
20
  }
16
21
  },
17
- "version": "2.0.4",
22
+ "version": "2.1.1",
18
23
  "author": {
19
24
  "name": "yorickshan",
20
25
  "email": "yorickshan@gmail.com",
@@ -42,28 +47,24 @@
42
47
  "@rollup/plugin-typescript": "^12.3.0",
43
48
  "@types/chai": "^5.2.3",
44
49
  "@types/express": "^5.0.6",
45
- "@types/filenamify-url": "^2.0.1",
46
- "@types/glob": "^9.0.0",
47
- "@types/jest": "^29.5.12",
48
- "@types/jest-image-snapshot": "^6.4.0",
49
50
  "@types/karma": "^6.3.0",
50
- "@types/mkdirp": "^2.0.0",
51
51
  "@types/mocha": "^10.0.7",
52
52
  "@types/node": "^25.0.3",
53
53
  "@types/platform": "^1.3.4",
54
- "@types/promise-polyfill": "^6.0.3",
54
+ "@types/pngjs": "^6.0.5",
55
55
  "@types/serve-index": "^1.9.4",
56
56
  "@typescript-eslint/eslint-plugin": "^8.50.0",
57
57
  "@typescript-eslint/parser": "^8.50.0",
58
+ "@vitest/coverage-v8": "^3.2.6",
58
59
  "appium-ios-simulator": "^8.0.9",
59
60
  "base64-arraybuffer": "1.0.2",
60
61
  "body-parser": "^2.2.1",
61
62
  "chai": "6.2.2",
62
63
  "change-case": "^5.4.4",
63
- "conventional-changelog-cli": "^5.0.0",
64
+ "conventional-changelog": "^7.2.1",
65
+ "conventional-changelog-conventionalcommits": "^9.3.1",
64
66
  "cors": "^2.8.5",
65
67
  "cz-conventional-changelog": "^3.3.0",
66
- "es6-promise": "^4.2.8",
67
68
  "eslint": "^9.13.0",
68
69
  "eslint-config-prettier": "^10.1.8",
69
70
  "eslint-plugin-prettier": "^5.5.4",
@@ -71,11 +72,7 @@
71
72
  "filenamify-url": "4.0.0",
72
73
  "glob": "^13.0.0",
73
74
  "husky": "^9.1.7",
74
- "jest": "^29.7.0",
75
- "jest-environment-jsdom": "^30.2.0",
76
- "jest-image-snapshot": "^6.4.0",
77
- "jquery": "^3.5.1",
78
- "js-polyfills": "^0.1.42",
75
+ "jsdom": "^29.1.1",
79
76
  "karma": "^6.3.2",
80
77
  "karma-chrome-launcher": "^3.1.0",
81
78
  "karma-edge-launcher": "^0.4.2",
@@ -84,11 +81,12 @@
84
81
  "karma-junit-reporter": "^2.0.1",
85
82
  "karma-mocha": "^2.0.1",
86
83
  "karma-safarinative-launcher": "^1.1.0",
87
- "karma-sauce-launcher": "^4.3.6",
88
84
  "lint-staged": "^16.2.7",
89
85
  "mocha": "^11.7.5",
90
86
  "node-simctl": "^8.1.2",
87
+ "pixelmatch": "^7.2.0",
91
88
  "platform": "^1.3.6",
89
+ "pngjs": "^7.0.0",
92
90
  "prettier": "^3.3.3",
93
91
  "puppeteer": "^24.34.0",
94
92
  "replace-in-file": "^8.4.0",
@@ -97,48 +95,50 @@
97
95
  "rollup-plugin-sourcemaps": "^0.6.3",
98
96
  "serve-index": "^1.9.1",
99
97
  "slash": "5.1.0",
100
- "standard-version": "^9.5.0",
101
- "ts-jest": "^29.1.5",
102
98
  "ts-node": "^10.9.2",
103
99
  "tsx": "^4.22.3",
100
+ "typedoc": "^0.28.19",
104
101
  "typescript": "^5.5.4",
105
102
  "uglify-js": "^3.13.10",
106
- "vitepress": "^1.3.0",
103
+ "vitepress": "^1.6.4",
104
+ "vitest": "^3.2.6",
107
105
  "yargs": "^18.0.0"
108
106
  },
107
+ "dependencies": {
108
+ "css-line-break": "^2.1.0",
109
+ "text-segmentation": "^1.0.3"
110
+ },
111
+ "lint-staged": {
112
+ "{src,tests}/**/*.ts": [
113
+ "prettier --write",
114
+ "eslint --fix"
115
+ ]
116
+ },
109
117
  "scripts": {
110
- "prebuild": "rimraf dist/ && rimraf build/ && mkdirp dist && mkdirp build",
111
- "build": "tsc --module commonjs && npx tsx --tsconfig tsconfig.json ./node_modules/.bin/rollup -c rollup.config.ts && npm run build:create-reftest-list && npx tsx --tsconfig tests/tsconfig.json ./node_modules/.bin/rollup -c tests/rollup.config.ts && npm run build:minify",
112
- "build:testrunner": "npx tsx --tsconfig tests/tsconfig.json ./node_modules/.bin/rollup -c tests/rollup.config.ts",
118
+ "prebuild": "rimraf dist/ && rimraf build/ && mkdir -p dist && mkdir -p build",
119
+ "build": "tsc --module commonjs -p tsconfig.build.json && rollup --configPlugin typescript -c rollup.config.ts && pnpm build:create-reftest-list && rollup --configPlugin typescript -c tests/rollup.config.ts && pnpm build:minify",
120
+ "build:testrunner": "rollup --configPlugin typescript -c tests/rollup.config.ts",
113
121
  "build:minify": "uglifyjs --compress --comments /^!/ -o dist/html2canvas-pro.min.js --mangle -- dist/html2canvas-pro.js",
114
- "build:reftest-result-list": "npx tsx scripts/create-reftest-result-list.ts",
115
- "build:create-reftest-list": "npx tsx scripts/create-reftest-list.ts tests/reftests/ignore.txt build/reftests.js",
122
+ "build:reftest-result-list": "tsx scripts/create-reftest-result-list.ts",
123
+ "build:create-reftest-list": "tsx scripts/create-reftest-list.ts tests/reftests/ignore.txt build/reftests.js",
116
124
  "release": "sh scripts/version-upgrade.sh",
117
125
  "format": "prettier --write \"{src,tests,scripts}/**/*.ts\"",
118
126
  "lint": "eslint src/**/*.ts --max-warnings 0",
119
- "test": "npm run lint && npm run unittest && npm run karma",
120
- "unittest": "jest",
121
- "reftests-diff": "mkdirp tmp/snapshots && jest --roots=tests --testMatch=**/reftest-diff.ts",
127
+ "test": "pnpm lint && pnpm unittest && pnpm karma",
128
+ "unittest": "vitest run",
129
+ "unittest:coverage": "vitest run --coverage",
130
+ "bench:css-parse": "tsx scripts/benchmarks/css-parse.bench.ts",
131
+ "reftests-diff": "mkdir -p tmp/snapshots && vitest run --config vitest.reftest.config.ts",
122
132
  "prekarma": "node scripts/ensure-karma-prereqs.mjs",
123
133
  "karma": "tsx tests/karma",
124
- "watch": "rollup -c rollup.config.ts -w",
125
- "watch:unittest": "mocha --require tsx/register --watch-extensions ts -w src/**/__tests__/*.ts",
126
- "start": "npx tsx tests/server --port=8080 --cors=8081",
134
+ "watch": "rollup --configPlugin typescript -c rollup.config.ts -w",
135
+ "watch:unittest": "vitest",
136
+ "start": "tsx tests/server --port=8080 --cors=8081",
127
137
  "commitlint": "commitlint --config .commitlintrc.json -e -V",
128
- "tag": "sh scripts/create-tag.sh",
129
- "prepare": "if [ \"$SKIP_PREPARE\" != \"true\" ]; then husky install; fi",
130
138
  "docs:dev": "vitepress dev docs",
131
139
  "docs:build": "vitepress build docs",
132
- "docs:preview": "vitepress preview docs"
133
- },
134
- "dependencies": {
135
- "css-line-break": "^2.1.0",
136
- "text-segmentation": "^1.0.3"
137
- },
138
- "lint-staged": {
139
- "{src,tests}/**/*.ts": [
140
- "prettier --write",
141
- "eslint --fix"
142
- ]
140
+ "docs:preview": "vitepress preview docs",
141
+ "docs:api": "typedoc",
142
+ "docs:api:watch": "typedoc --watch"
143
143
  }
144
- }
144
+ }