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
@@ -22,4 +22,3 @@ exports.textDecorationStyle = {
22
22
  }
23
23
  }
24
24
  };
25
- //# sourceMappingURL=text-decoration-style.js.map
@@ -24,4 +24,3 @@ exports.textDecorationThickness = {
24
24
  return 'auto';
25
25
  }
26
26
  };
27
- //# sourceMappingURL=text-decoration-thickness.js.map
@@ -16,4 +16,3 @@ exports.textOverflow = {
16
16
  }
17
17
  }
18
18
  };
19
- //# sourceMappingURL=text-overflow.js.map
@@ -44,4 +44,3 @@ exports.textShadow = {
44
44
  });
45
45
  }
46
46
  };
47
- //# sourceMappingURL=text-shadow.js.map
@@ -18,4 +18,3 @@ exports.textTransform = {
18
18
  return 0 /* TEXT_TRANSFORM.NONE */;
19
19
  }
20
20
  };
21
- //# sourceMappingURL=text-transform.js.map
@@ -21,4 +21,3 @@ exports.textUnderlineOffset = {
21
21
  return 'auto';
22
22
  }
23
23
  };
24
- //# sourceMappingURL=text-underline-offset.js.map
@@ -22,4 +22,3 @@ exports.transformOrigin = {
22
22
  return [origins[0], origins[1]];
23
23
  }
24
24
  };
25
- //# sourceMappingURL=transform-origin.js.map
@@ -55,4 +55,3 @@ const SUPPORTED_TRANSFORM_FUNCTIONS = {
55
55
  matrix3d: matrix3d,
56
56
  rotate: rotate
57
57
  };
58
- //# sourceMappingURL=transform.js.map
@@ -18,4 +18,3 @@ exports.visibility = {
18
18
  }
19
19
  }
20
20
  };
21
- //# sourceMappingURL=visibility.js.map
@@ -24,4 +24,3 @@ exports.webkitLineClamp = {
24
24
  return 0;
25
25
  }
26
26
  };
27
- //# sourceMappingURL=webkit-line-clamp.js.map
@@ -8,4 +8,3 @@ exports.webkitTextStrokeColor = {
8
8
  type: 3 /* PropertyDescriptorParsingType.TYPE_VALUE */,
9
9
  format: 'color'
10
10
  };
11
- //# sourceMappingURL=webkit-text-stroke-color.js.map
@@ -14,4 +14,3 @@ exports.webkitTextStrokeWidth = {
14
14
  return 0;
15
15
  }
16
16
  };
17
- //# sourceMappingURL=webkit-text-stroke-width.js.map
@@ -24,4 +24,3 @@ exports.wordBreak = {
24
24
  }
25
25
  }
26
26
  };
27
- //# sourceMappingURL=word-break.js.map
@@ -26,4 +26,3 @@ exports.writingMode = {
26
26
  }
27
27
  }
28
28
  };
29
- //# sourceMappingURL=writing-mode.js.map
@@ -17,4 +17,3 @@ exports.zIndex = {
17
17
  throw new Error(`Invalid z-index number parsed`);
18
18
  }
19
19
  };
20
- //# sourceMappingURL=z-index.js.map
@@ -139,4 +139,3 @@ const isEndingTokenFor = (token, type) => {
139
139
  }
140
140
  return type === 2 /* TokenType.LEFT_PARENTHESIS_TOKEN */ && token.type === 3 /* TokenType.RIGHT_PARENTHESIS_TOKEN */;
141
141
  };
142
- //# sourceMappingURL=parser.js.map
@@ -180,9 +180,21 @@ const RIGHT_SQUARE_BRACKET_TOKEN = {
180
180
  const WHITESPACE_TOKEN = { type: 31 /* TokenType.WHITESPACE_TOKEN */ };
181
181
  exports.EOF_TOKEN = { type: 32 /* TokenType.EOF_TOKEN */ };
182
182
  class Tokenizer {
183
+ static get() {
184
+ return Tokenizer._pool.pop() || new Tokenizer();
185
+ }
186
+ static release(tokenizer) {
187
+ if (Tokenizer._pool.length < Tokenizer.MAX_POOL_SIZE) {
188
+ tokenizer._reset();
189
+ Tokenizer._pool.push(tokenizer);
190
+ }
191
+ }
183
192
  constructor() {
184
193
  this._value = [];
185
194
  }
195
+ _reset() {
196
+ this._value = [];
197
+ }
186
198
  write(chunk) {
187
199
  this._value = this._value.concat((0, css_line_break_1.toCodePoints)(chunk));
188
200
  }
@@ -618,4 +630,5 @@ class Tokenizer {
618
630
  }
619
631
  }
620
632
  exports.Tokenizer = Tokenizer;
621
- //# sourceMappingURL=tokenizer.js.map
633
+ Tokenizer._pool = [];
634
+ Tokenizer.MAX_POOL_SIZE = 40;
@@ -1,3 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=IPropertyDescriptor.js.map
@@ -78,4 +78,3 @@ const parseNamedSide = (tokens) => {
78
78
  exports.parseNamedSide = parseNamedSide;
79
79
  const deg = (deg) => (Math.PI * deg) / 180;
80
80
  exports.deg = deg;
81
- //# sourceMappingURL=angle.js.map
@@ -23,4 +23,3 @@ const multiplyMatrices = (A, B) => {
23
23
  ];
24
24
  };
25
25
  exports.multiplyMatrices = multiplyMatrices;
26
- //# sourceMappingURL=color-math.js.map
@@ -76,4 +76,3 @@ const convertA98rgb = (args) => {
76
76
  return (0, color_utilities_1.packSrgbLinear)([srgb_linear[0], srgb_linear[1], srgb_linear[2], args[3]]);
77
77
  };
78
78
  exports.convertA98rgb = convertA98rgb;
79
- //# sourceMappingURL=a98.js.map
@@ -84,4 +84,3 @@ const convertP3 = (args) => {
84
84
  return (0, color_utilities_1.packXYZ)([xyz[0], xyz[1], xyz[2], args[3]]);
85
85
  };
86
86
  exports.convertP3 = convertP3;
87
- //# sourceMappingURL=p3.js.map
@@ -81,4 +81,3 @@ const convertProPhoto = (args) => {
81
81
  return (0, color_utilities_1.packXYZ)([xyz[0], xyz[1], xyz[2], args[3]]);
82
82
  };
83
83
  exports.convertProPhoto = convertProPhoto;
84
- //# sourceMappingURL=pro-photo.js.map
@@ -83,4 +83,3 @@ const convertRec2020 = (args) => {
83
83
  return (0, color_utilities_1.packXYZ)([xyz[0], xyz[1], xyz[2], args[3]]);
84
84
  };
85
85
  exports.convertRec2020 = convertRec2020;
86
- //# sourceMappingURL=rec2020.js.map
@@ -77,4 +77,3 @@ const srgbLinearFromXYZ = (args) => {
77
77
  ];
78
78
  };
79
79
  exports.srgbLinearFromXYZ = srgbLinearFromXYZ;
80
- //# sourceMappingURL=srgb.js.map
@@ -340,4 +340,3 @@ const convertXyz50 = (args) => {
340
340
  return (0, exports.packXYZ)([xyz[0], xyz[1], xyz[2], args[3]]);
341
341
  };
342
342
  exports.convertXyz50 = convertXyz50;
343
- //# sourceMappingURL=color-utilities.js.map
@@ -394,4 +394,3 @@ exports.COLORS = {
394
394
  YELLOW: 0xffff00ff,
395
395
  YELLOWGREEN: 0x9acd32ff
396
396
  };
397
- //# sourceMappingURL=color.js.map
@@ -30,4 +30,3 @@ const prefixLinearGradient = (context, tokens) => {
30
30
  };
31
31
  };
32
32
  exports.prefixLinearGradient = prefixLinearGradient;
33
- //# sourceMappingURL=-prefix-linear-gradient.js.map
@@ -81,4 +81,3 @@ const prefixRadialGradient = (context, tokens) => {
81
81
  return { size, shape, stops, position, type: 2 /* CSSImageType.RADIAL_GRADIENT */ };
82
82
  };
83
83
  exports.prefixRadialGradient = prefixRadialGradient;
84
- //# sourceMappingURL=-prefix-radial-gradient.js.map
@@ -57,4 +57,3 @@ const webkitGradient = (context, tokens) => {
57
57
  : { size, shape, stops, position, type };
58
58
  };
59
59
  exports.webkitGradient = webkitGradient;
60
- //# sourceMappingURL=-webkit-gradient.js.map
@@ -365,4 +365,3 @@ const createCounterText = (value, type, appendSuffix) => {
365
365
  }
366
366
  };
367
367
  exports.createCounterText = createCounterText;
368
- //# sourceMappingURL=counter.js.map
@@ -161,4 +161,3 @@ const calculateRadius = (gradient, x, y, width, height) => {
161
161
  return [rx, ry];
162
162
  };
163
163
  exports.calculateRadius = calculateRadius;
164
- //# sourceMappingURL=gradient.js.map
@@ -25,4 +25,3 @@ const linearGradient = (context, tokens) => {
25
25
  return { angle, stops, type: 1 /* CSSImageType.LINEAR_GRADIENT */ };
26
26
  };
27
27
  exports.linearGradient = linearGradient;
28
- //# sourceMappingURL=linear-gradient.js.map
@@ -88,4 +88,3 @@ const radialGradient = (context, tokens) => {
88
88
  return { size, shape, stops, position, type: 2 /* CSSImageType.RADIAL_GRADIENT */ };
89
89
  };
90
90
  exports.radialGradient = radialGradient;
91
- //# sourceMappingURL=radial-gradient.js.map
@@ -50,4 +50,3 @@ const SUPPORTED_IMAGE_FUNCTIONS = {
50
50
  '-webkit-radial-gradient': _prefix_radial_gradient_1.prefixRadialGradient,
51
51
  '-webkit-gradient': _webkit_gradient_1.webkitGradient
52
52
  };
53
- //# sourceMappingURL=image.js.map
@@ -1,3 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=index.js.map
@@ -131,4 +131,3 @@ const getAbsoluteValue = (token, parent) => {
131
131
  return token.number;
132
132
  };
133
133
  exports.getAbsoluteValue = getAbsoluteValue;
134
- //# sourceMappingURL=length-percentage.js.map
@@ -3,4 +3,3 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isLength = void 0;
4
4
  const isLength = (token) => token.type === 17 /* TokenType.NUMBER_TOKEN */ || token.type === 15 /* TokenType.DIMENSION_TOKEN */;
5
5
  exports.isLength = isLength;
6
- //# sourceMappingURL=length.js.map
@@ -15,4 +15,3 @@ exports.time = {
15
15
  throw new Error(`Unsupported time type`);
16
16
  }
17
17
  };
18
- //# sourceMappingURL=time.js.map
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.copyCSSStyles = exports.DocumentCloner = void 0;
4
4
  const node_parser_1 = require("./node-parser");
5
+ const node_type_guards_1 = require("./node-type-guards");
5
6
  const parser_1 = require("../css/syntax/parser");
6
7
  const counter_1 = require("../css/types/functions/counter");
7
8
  const list_style_type_1 = require("../css/property-descriptors/list-style-type");
@@ -66,7 +67,7 @@ class DocumentCloner {
66
67
  this.scrolledElements.forEach(restoreNodeScroll);
67
68
  if (cloneWindow) {
68
69
  cloneWindow.scrollTo(windowSize.left, windowSize.top);
69
- if (/(iPad|iPhone|iPod)/g.test(navigator.userAgent) &&
70
+ if (/AppleWebKit/g.test(navigator.userAgent) &&
70
71
  (cloneWindow.scrollY !== windowSize.top || cloneWindow.scrollX !== windowSize.left)) {
71
72
  this.context.logger.warn('Unable to restore scroll position for cloned document');
72
73
  this.context.windowBounds = this.context.windowBounds.add(cloneWindow.scrollX - windowSize.left, cloneWindow.scrollY - windowSize.top, 0, 0);
@@ -283,14 +284,7 @@ class DocumentCloner {
283
284
  return blankCanvas;
284
285
  }
285
286
  appendChildNode(clone, child, copyStyles) {
286
- if (!(0, node_parser_1.isElementNode)(child) ||
287
- (!(0, node_parser_1.isScriptElement)(child) &&
288
- !child.hasAttribute(IGNORE_ATTRIBUTE) &&
289
- (typeof this.options.ignoreElements !== 'function' || !this.options.ignoreElements(child)))) {
290
- if (!this.options.copyStyles || !(0, node_parser_1.isElementNode)(child) || !(0, node_parser_1.isStyleElement)(child)) {
291
- clone.appendChild(this.cloneNode(child, copyStyles));
292
- }
293
- }
287
+ this.safeAppendClonedChild(clone, child, copyStyles);
294
288
  }
295
289
  /**
296
290
  * Check if a child node should be cloned based on filtering rules
@@ -459,8 +453,9 @@ class DocumentCloner {
459
453
  const clone = this.createElementClone(node);
460
454
  clone.style.transitionProperty = 'none';
461
455
  const style = window.getComputedStyle(node);
462
- const styleBefore = window.getComputedStyle(node, ':before');
463
- const styleAfter = window.getComputedStyle(node, ':after');
456
+ // Per CSS spec, replaced elements, void elements, and SVG elements
457
+ // cannot have ::before / ::after pseudo-elements — skip these queries.
458
+ const checkPseudoElements = (0, node_type_guards_1.canHavePseudoElements)(node);
464
459
  if (this.referenceElement === node && (0, node_parser_1.isHTMLElementNode)(clone)) {
465
460
  this.clonedReferenceElement = clone;
466
461
  }
@@ -468,20 +463,24 @@ class DocumentCloner {
468
463
  createPseudoHideStyles(clone, this.options.cspNonce);
469
464
  }
470
465
  const counters = this.counters.parse(new index_1.CSSParsedCounterDeclaration(this.context, style));
471
- const before = this.resolvePseudoContent(node, clone, styleBefore, PseudoElementType.BEFORE);
466
+ if (checkPseudoElements) {
467
+ const styleBefore = window.getComputedStyle(node, ':before');
468
+ const before = this.resolvePseudoContent(node, clone, styleBefore, PseudoElementType.BEFORE);
469
+ if (before) {
470
+ clone.insertBefore(before, clone.firstChild);
471
+ }
472
+ const styleAfter = window.getComputedStyle(node, ':after');
473
+ const after = this.resolvePseudoContent(node, clone, styleAfter, PseudoElementType.AFTER);
474
+ if (after) {
475
+ clone.appendChild(after);
476
+ }
477
+ }
472
478
  if ((0, node_parser_1.isCustomElement)(node)) {
473
479
  copyStyles = true;
474
480
  }
475
481
  if (!(0, node_parser_1.isVideoElement)(node)) {
476
482
  this.cloneChildNodes(node, clone, copyStyles);
477
483
  }
478
- if (before) {
479
- clone.insertBefore(before, clone.firstChild);
480
- }
481
- const after = this.resolvePseudoContent(node, clone, styleAfter, PseudoElementType.AFTER);
482
- if (after) {
483
- clone.appendChild(after);
484
- }
485
484
  this.counters.pop(counters);
486
485
  if ((style && (this.options.copyStyles || (0, node_parser_1.isSVGElementNode)(node)) && !(0, node_parser_1.isIFrameElement)(node)) ||
487
486
  copyStyles) {
@@ -654,14 +653,21 @@ const ignoredStyleProperties = [
654
653
  'content' // Safari shows pseudoelements if content is set
655
654
  ];
656
655
  const copyCSSStyles = (style, target) => {
657
- // Edge does not provide value for cssText
656
+ const parts = [];
658
657
  for (let i = style.length - 1; i >= 0; i--) {
659
658
  const property = style.item(i);
660
659
  // fix: Chrome_138 ignore custom properties
661
660
  if (ignoredStyleProperties.indexOf(property) === -1 && !property.startsWith('--')) {
662
- target.style.setProperty(property, style.getPropertyValue(property));
661
+ const value = style.getPropertyValue(property);
662
+ if (value) {
663
+ const priority = style.getPropertyPriority(property);
664
+ parts.push(priority ? `${property}:${value} !${priority}` : `${property}:${value}`);
665
+ }
663
666
  }
664
667
  }
668
+ if (parts.length > 0) {
669
+ target.style.cssText = parts.join(';') + ';';
670
+ }
665
671
  return target;
666
672
  };
667
673
  exports.copyCSSStyles = copyCSSStyles;
@@ -728,4 +734,3 @@ const addBase = (targetELement, baseUri) => {
728
734
  const headEle = targetELement.getElementsByTagName('head').item(0);
729
735
  headEle?.insertBefore(baseNode, headEle?.firstChild ?? null);
730
736
  };
731
- //# sourceMappingURL=document-cloner.js.map
@@ -113,4 +113,3 @@ class DOMNormalizer {
113
113
  }
114
114
  }
115
115
  exports.DOMNormalizer = DOMNormalizer;
116
- //# sourceMappingURL=dom-normalizer.js.map
@@ -11,20 +11,22 @@ class ElementContainer {
11
11
  this.context = context;
12
12
  this.textNodes = [];
13
13
  this.elements = [];
14
- this.flags = 0;
14
+ this.createsStackingContext = false;
15
+ this.createsRealStackingContext = false;
16
+ this.isListOwner = false;
17
+ this.debugRender = false;
15
18
  if ((0, debugger_1.isDebugging)(element, 3 /* DebuggerType.PARSE */)) {
16
19
  debugger;
17
20
  }
18
21
  this.styles = new index_1.CSSParsedDeclaration(context, context.config.window.getComputedStyle(element, null));
19
- // Side effects moved to DOMNormalizer (can be disabled via options)
20
- const shouldNormalize = options.normalizeDom !== false; // Default: true
22
+ const shouldNormalize = options.normalizeDom !== false;
21
23
  if (shouldNormalize && (0, node_type_guards_1.isHTMLElementNode)(element)) {
22
24
  this.originalStyles = dom_normalizer_1.DOMNormalizer.normalizeElement(element, this.styles);
23
- this.originalElement = element; // Save reference for restoration
25
+ this.originalElement = element;
24
26
  }
25
27
  this.bounds = (0, bounds_1.parseBounds)(this.context, element);
26
28
  if ((0, debugger_1.isDebugging)(element, 4 /* DebuggerType.RENDER */)) {
27
- this.flags |= 16 /* FLAGS.DEBUG_RENDER */;
29
+ this.debugRender = true;
28
30
  }
29
31
  }
30
32
  /**
@@ -52,4 +54,3 @@ class ElementContainer {
52
54
  }
53
55
  }
54
56
  exports.ElementContainer = ElementContainer;
55
- //# sourceMappingURL=element-container.js.map
@@ -9,4 +9,3 @@ class LIElementContainer extends element_container_1.ElementContainer {
9
9
  }
10
10
  }
11
11
  exports.LIElementContainer = LIElementContainer;
12
- //# sourceMappingURL=li-element-container.js.map
@@ -10,4 +10,3 @@ class OLElementContainer extends element_container_1.ElementContainer {
10
10
  }
11
11
  }
12
12
  exports.OLElementContainer = OLElementContainer;
13
- //# sourceMappingURL=ol-element-container.js.map
@@ -10,4 +10,3 @@ class SelectElementContainer extends element_container_1.ElementContainer {
10
10
  }
11
11
  }
12
12
  exports.SelectElementContainer = SelectElementContainer;
13
- //# sourceMappingURL=select-element-container.js.map
@@ -9,4 +9,3 @@ class TextareaElementContainer extends element_container_1.ElementContainer {
9
9
  }
10
10
  }
11
11
  exports.TextareaElementContainer = TextareaElementContainer;
12
- //# sourceMappingURL=textarea-element-container.js.map
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isSlotElement = exports.isSelectElement = exports.isTextareaElement = exports.isScriptElement = exports.isStyleElement = exports.isIFrameElement = exports.isImageElement = exports.isVideoElement = exports.isCanvasElement = exports.isBodyElement = exports.isSVGElement = exports.isHTMLElement = exports.isInputElement = exports.parseTree = exports.isCustomElement = exports.isOLElement = exports.isLIElement = exports.isHTMLElementNode = exports.isSVGElementNode = exports.isTextNode = exports.isElementNode = void 0;
3
+ exports.parseTree = exports.isVideoElement = exports.isTextNode = exports.isTextareaElement = exports.isSVGElementNode = exports.isSVGElement = exports.isStyleElement = exports.isSlotElement = exports.isSelectElement = exports.isScriptElement = exports.isOLElement = exports.isLIElement = exports.isInputElement = exports.isImageElement = exports.isIFrameElement = exports.isHTMLElementNode = exports.isHTMLElement = exports.isElementNode = exports.isCustomElement = exports.isCanvasElement = exports.isBodyElement = void 0;
4
4
  const element_container_1 = require("./element-container");
5
5
  const text_container_1 = require("./text-container");
6
6
  const image_element_container_1 = require("./replaced-elements/image-element-container");
@@ -12,15 +12,28 @@ const input_element_container_1 = require("./replaced-elements/input-element-con
12
12
  const select_element_container_1 = require("./elements/select-element-container");
13
13
  const textarea_element_container_1 = require("./elements/textarea-element-container");
14
14
  const iframe_element_container_1 = require("./replaced-elements/iframe-element-container");
15
- const bitwise_1 = require("../core/bitwise");
16
15
  const node_type_guards_1 = require("./node-type-guards");
16
+ Object.defineProperty(exports, "isBodyElement", { enumerable: true, get: function () { return node_type_guards_1.isBodyElement; } });
17
+ Object.defineProperty(exports, "isCanvasElement", { enumerable: true, get: function () { return node_type_guards_1.isCanvasElement; } });
18
+ Object.defineProperty(exports, "isCustomElement", { enumerable: true, get: function () { return node_type_guards_1.isCustomElement; } });
17
19
  Object.defineProperty(exports, "isElementNode", { enumerable: true, get: function () { return node_type_guards_1.isElementNode; } });
18
- Object.defineProperty(exports, "isTextNode", { enumerable: true, get: function () { return node_type_guards_1.isTextNode; } });
19
- Object.defineProperty(exports, "isSVGElementNode", { enumerable: true, get: function () { return node_type_guards_1.isSVGElementNode; } });
20
+ Object.defineProperty(exports, "isHTMLElement", { enumerable: true, get: function () { return node_type_guards_1.isHTMLElement; } });
20
21
  Object.defineProperty(exports, "isHTMLElementNode", { enumerable: true, get: function () { return node_type_guards_1.isHTMLElementNode; } });
22
+ Object.defineProperty(exports, "isIFrameElement", { enumerable: true, get: function () { return node_type_guards_1.isIFrameElement; } });
23
+ Object.defineProperty(exports, "isImageElement", { enumerable: true, get: function () { return node_type_guards_1.isImageElement; } });
24
+ Object.defineProperty(exports, "isInputElement", { enumerable: true, get: function () { return node_type_guards_1.isInputElement; } });
21
25
  Object.defineProperty(exports, "isLIElement", { enumerable: true, get: function () { return node_type_guards_1.isLIElement; } });
22
26
  Object.defineProperty(exports, "isOLElement", { enumerable: true, get: function () { return node_type_guards_1.isOLElement; } });
23
- Object.defineProperty(exports, "isCustomElement", { enumerable: true, get: function () { return node_type_guards_1.isCustomElement; } });
27
+ Object.defineProperty(exports, "isScriptElement", { enumerable: true, get: function () { return node_type_guards_1.isScriptElement; } });
28
+ Object.defineProperty(exports, "isSelectElement", { enumerable: true, get: function () { return node_type_guards_1.isSelectElement; } });
29
+ Object.defineProperty(exports, "isSlotElement", { enumerable: true, get: function () { return node_type_guards_1.isSlotElement; } });
30
+ Object.defineProperty(exports, "isStyleElement", { enumerable: true, get: function () { return node_type_guards_1.isStyleElement; } });
31
+ Object.defineProperty(exports, "isSVGElement", { enumerable: true, get: function () { return node_type_guards_1.isSVGElement; } });
32
+ Object.defineProperty(exports, "isSVGElementNode", { enumerable: true, get: function () { return node_type_guards_1.isSVGElementNode; } });
33
+ Object.defineProperty(exports, "isTextareaElement", { enumerable: true, get: function () { return node_type_guards_1.isTextareaElement; } });
34
+ Object.defineProperty(exports, "isTextNode", { enumerable: true, get: function () { return node_type_guards_1.isTextNode; } });
35
+ Object.defineProperty(exports, "isVideoElement", { enumerable: true, get: function () { return node_type_guards_1.isVideoElement; } });
36
+ const bitwise_1 = require("../core/bitwise");
24
37
  const LIST_OWNERS = ['OL', 'UL', 'MENU'];
25
38
  const parseNodeTree = (context, node, parent, root) => {
26
39
  for (let childNode = node.firstChild, nextNode; childNode; childNode = nextNode) {
@@ -30,29 +43,30 @@ const parseNodeTree = (context, node, parent, root) => {
30
43
  parent.textNodes.push(new text_container_1.TextContainer(context, childNode, parent.styles));
31
44
  }
32
45
  else if ((0, node_type_guards_1.isElementNode)(childNode)) {
33
- if ((0, exports.isSlotElement)(childNode) && childNode.assignedNodes) {
34
- childNode.assignedNodes().forEach((childNode) => parseNodeTree(context, childNode, parent, root));
46
+ if ((0, node_type_guards_1.isSlotElement)(childNode) && childNode.assignedNodes) {
47
+ childNode
48
+ .assignedNodes()
49
+ .forEach((assignedNode) => parseNodeTree(context, assignedNode, parent, root));
35
50
  }
36
51
  else {
37
52
  const container = createContainer(context, childNode);
38
53
  if (container.styles.isVisible()) {
39
54
  if (createsRealStackingContext(childNode, container, root)) {
40
- container.flags |= 4 /* FLAGS.CREATES_REAL_STACKING_CONTEXT */;
55
+ container.createsRealStackingContext = true;
41
56
  }
42
57
  else if (createsStackingContext(container.styles)) {
43
- container.flags |= 2 /* FLAGS.CREATES_STACKING_CONTEXT */;
58
+ container.createsStackingContext = true;
44
59
  }
45
60
  if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) {
46
- container.flags |= 8 /* FLAGS.IS_LIST_OWNER */;
61
+ container.isListOwner = true;
47
62
  }
48
63
  parent.elements.push(container);
49
- childNode.slot;
50
64
  if (childNode.shadowRoot) {
51
65
  parseNodeTree(context, childNode.shadowRoot, container, root);
52
66
  }
53
- else if (!(0, exports.isTextareaElement)(childNode) &&
54
- !(0, exports.isSVGElement)(childNode) &&
55
- !(0, exports.isSelectElement)(childNode)) {
67
+ else if (!(0, node_type_guards_1.isTextareaElement)(childNode) &&
68
+ !(0, node_type_guards_1.isSVGElement)(childNode) &&
69
+ !(0, node_type_guards_1.isSelectElement)(childNode)) {
56
70
  parseNodeTree(context, childNode, container, root);
57
71
  }
58
72
  }
@@ -61,13 +75,13 @@ const parseNodeTree = (context, node, parent, root) => {
61
75
  }
62
76
  };
63
77
  const createContainer = (context, element) => {
64
- if ((0, exports.isImageElement)(element)) {
78
+ if ((0, node_type_guards_1.isImageElement)(element)) {
65
79
  return new image_element_container_1.ImageElementContainer(context, element);
66
80
  }
67
- if ((0, exports.isCanvasElement)(element)) {
81
+ if ((0, node_type_guards_1.isCanvasElement)(element)) {
68
82
  return new canvas_element_container_1.CanvasElementContainer(context, element);
69
83
  }
70
- if ((0, exports.isSVGElement)(element)) {
84
+ if ((0, node_type_guards_1.isSVGElement)(element)) {
71
85
  return new svg_element_container_1.SVGElementContainer(context, element);
72
86
  }
73
87
  if ((0, node_type_guards_1.isLIElement)(element)) {
@@ -76,23 +90,23 @@ const createContainer = (context, element) => {
76
90
  if ((0, node_type_guards_1.isOLElement)(element)) {
77
91
  return new ol_element_container_1.OLElementContainer(context, element);
78
92
  }
79
- if ((0, exports.isInputElement)(element)) {
93
+ if ((0, node_type_guards_1.isInputElement)(element)) {
80
94
  return new input_element_container_1.InputElementContainer(context, element);
81
95
  }
82
- if ((0, exports.isSelectElement)(element)) {
96
+ if ((0, node_type_guards_1.isSelectElement)(element)) {
83
97
  return new select_element_container_1.SelectElementContainer(context, element);
84
98
  }
85
- if ((0, exports.isTextareaElement)(element)) {
99
+ if ((0, node_type_guards_1.isTextareaElement)(element)) {
86
100
  return new textarea_element_container_1.TextareaElementContainer(context, element);
87
101
  }
88
- if ((0, exports.isIFrameElement)(element)) {
102
+ if ((0, node_type_guards_1.isIFrameElement)(element)) {
89
103
  return new iframe_element_container_1.IFrameElementContainer(context, element, exports.parseTree);
90
104
  }
91
105
  return new element_container_1.ElementContainer(context, element);
92
106
  };
93
107
  const parseTree = (context, element) => {
94
108
  const container = createContainer(context, element);
95
- container.flags |= 4 /* FLAGS.CREATES_REAL_STACKING_CONTEXT */;
109
+ container.createsRealStackingContext = true;
96
110
  parseNodeTree(context, element, container, container);
97
111
  return container;
98
112
  };
@@ -101,7 +115,7 @@ const createsRealStackingContext = (node, container, root) => {
101
115
  return (container.styles.isPositionedWithZIndex() ||
102
116
  container.styles.opacity < 1 ||
103
117
  container.styles.isTransformed() ||
104
- ((0, exports.isBodyElement)(node) && root.styles.isTransparent()));
118
+ ((0, node_type_guards_1.isBodyElement)(node) && root.styles.isTransparent()));
105
119
  };
106
120
  const createsStackingContext = (styles) => {
107
121
  // Positioned and floating elements create stacking contexts
@@ -116,33 +130,3 @@ const createsStackingContext = (styles) => {
116
130
  (0, bitwise_1.contains)(styles.display, 536870912 /* DISPLAY.INLINE_GRID */) ||
117
131
  (0, bitwise_1.contains)(styles.display, 134217728 /* DISPLAY.INLINE_TABLE */));
118
132
  };
119
- // Type guards moved to node-type-guards.ts and re-exported above
120
- const isInputElement = (node) => node.tagName === 'INPUT';
121
- exports.isInputElement = isInputElement;
122
- const isHTMLElement = (node) => node.tagName === 'HTML';
123
- exports.isHTMLElement = isHTMLElement;
124
- const isSVGElement = (node) => node.tagName === 'svg';
125
- exports.isSVGElement = isSVGElement;
126
- const isBodyElement = (node) => node.tagName === 'BODY';
127
- exports.isBodyElement = isBodyElement;
128
- const isCanvasElement = (node) => node.tagName === 'CANVAS';
129
- exports.isCanvasElement = isCanvasElement;
130
- const isVideoElement = (node) => node.tagName === 'VIDEO';
131
- exports.isVideoElement = isVideoElement;
132
- const isImageElement = (node) => node.tagName === 'IMG';
133
- exports.isImageElement = isImageElement;
134
- const isIFrameElement = (node) => node.tagName === 'IFRAME';
135
- exports.isIFrameElement = isIFrameElement;
136
- const isStyleElement = (node) => node.tagName === 'STYLE';
137
- exports.isStyleElement = isStyleElement;
138
- const isScriptElement = (node) => node.tagName === 'SCRIPT';
139
- exports.isScriptElement = isScriptElement;
140
- const isTextareaElement = (node) => node.tagName === 'TEXTAREA';
141
- exports.isTextareaElement = isTextareaElement;
142
- const isSelectElement = (node) => node.tagName === 'SELECT';
143
- exports.isSelectElement = isSelectElement;
144
- const isSlotElement = (node) => node.tagName === 'SLOT';
145
- exports.isSlotElement = isSlotElement;
146
- // https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name
147
- // isCustomElement moved to node-type-guards.ts and re-exported above
148
- //# sourceMappingURL=node-parser.js.map