@ohos-ports/html2canvas-pro 0.0.0-stage → 2.3.2-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (344) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +86 -2
  3. package/dist/html2canvas-pro.cjs +11191 -0
  4. package/dist/html2canvas-pro.cjs.map +1 -0
  5. package/dist/html2canvas-pro.esm.js +11182 -0
  6. package/dist/html2canvas-pro.esm.js.map +1 -0
  7. package/dist/html2canvas-pro.js +11196 -0
  8. package/dist/html2canvas-pro.js.map +1 -0
  9. package/dist/html2canvas-pro.min.js +10 -0
  10. package/dist/lib/config.js +49 -0
  11. package/dist/lib/core/abort-helper.js +20 -0
  12. package/dist/lib/core/background-parser.js +41 -0
  13. package/dist/lib/core/bitwise.js +5 -0
  14. package/dist/lib/core/cache-storage.js +268 -0
  15. package/dist/lib/core/config-assembler.js +88 -0
  16. package/dist/lib/core/constants.js +25 -0
  17. package/dist/lib/core/context.js +19 -0
  18. package/dist/lib/core/debugger.js +27 -0
  19. package/dist/lib/core/features.js +190 -0
  20. package/dist/lib/core/logger.js +56 -0
  21. package/dist/lib/core/lru-map.js +66 -0
  22. package/dist/lib/core/origin-checker.js +53 -0
  23. package/dist/lib/core/performance-monitor.js +185 -0
  24. package/dist/lib/core/render-element.js +132 -0
  25. package/dist/lib/core/util.js +4 -0
  26. package/dist/lib/core/validator.js +500 -0
  27. package/dist/lib/css/grouped/background-styles.js +36 -0
  28. package/dist/lib/css/grouped/border-styles.js +75 -0
  29. package/dist/lib/css/grouped/font-styles.js +93 -0
  30. package/dist/lib/css/grouped/layout-styles.js +127 -0
  31. package/dist/lib/css/index.js +330 -0
  32. package/dist/lib/css/layout/bounds.js +52 -0
  33. package/dist/lib/css/layout/text.js +133 -0
  34. package/dist/lib/css/property-descriptor.js +2 -0
  35. package/dist/lib/css/property-descriptors/background-blend-mode.js +41 -0
  36. package/dist/lib/css/property-descriptors/background-clip.js +23 -0
  37. package/dist/lib/css/property-descriptors/background-color.js +10 -0
  38. package/dist/lib/css/property-descriptors/background-image.js +24 -0
  39. package/dist/lib/css/property-descriptors/background-origin.js +23 -0
  40. package/dist/lib/css/property-descriptors/background-position.js +19 -0
  41. package/dist/lib/css/property-descriptors/background-repeat.js +33 -0
  42. package/dist/lib/css/property-descriptors/background-size.js +23 -0
  43. package/dist/lib/css/property-descriptors/border-color.js +14 -0
  44. package/dist/lib/css/property-descriptors/border-image-repeat.js +42 -0
  45. package/dist/lib/css/property-descriptors/border-image-slice.js +45 -0
  46. package/dist/lib/css/property-descriptors/border-image-source.js +22 -0
  47. package/dist/lib/css/property-descriptors/border-radius.js +15 -0
  48. package/dist/lib/css/property-descriptors/border-style.js +26 -0
  49. package/dist/lib/css/property-descriptors/border-width.js +20 -0
  50. package/dist/lib/css/property-descriptors/box-decoration-break.js +18 -0
  51. package/dist/lib/css/property-descriptors/box-shadow.js +54 -0
  52. package/dist/lib/css/property-descriptors/clip-path.js +189 -0
  53. package/dist/lib/css/property-descriptors/color.js +10 -0
  54. package/dist/lib/css/property-descriptors/content.js +19 -0
  55. package/dist/lib/css/property-descriptors/counter-increment.js +35 -0
  56. package/dist/lib/css/property-descriptors/counter-reset.js +18 -0
  57. package/dist/lib/css/property-descriptors/direction.js +18 -0
  58. package/dist/lib/css/property-descriptors/display.js +81 -0
  59. package/dist/lib/css/property-descriptors/duration.js +14 -0
  60. package/dist/lib/css/property-descriptors/filter.js +76 -0
  61. package/dist/lib/css/property-descriptors/float.js +22 -0
  62. package/dist/lib/css/property-descriptors/font-family.js +32 -0
  63. package/dist/lib/css/property-descriptors/font-size.js +10 -0
  64. package/dist/lib/css/property-descriptors/font-style.js +20 -0
  65. package/dist/lib/css/property-descriptors/font-variant-ligatures.js +34 -0
  66. package/dist/lib/css/property-descriptors/font-variant.js +13 -0
  67. package/dist/lib/css/property-descriptors/font-weight.js +25 -0
  68. package/dist/lib/css/property-descriptors/image-rendering.js +33 -0
  69. package/dist/lib/css/property-descriptors/letter-spacing.js +21 -0
  70. package/dist/lib/css/property-descriptors/line-break.js +23 -0
  71. package/dist/lib/css/property-descriptors/line-height.js +24 -0
  72. package/dist/lib/css/property-descriptors/list-style-image.js +17 -0
  73. package/dist/lib/css/property-descriptors/list-style-position.js +18 -0
  74. package/dist/lib/css/property-descriptors/list-style-type.js +122 -0
  75. package/dist/lib/css/property-descriptors/margin.js +13 -0
  76. package/dist/lib/css/property-descriptors/mix-blend-mode.js +31 -0
  77. package/dist/lib/css/property-descriptors/object-fit.js +28 -0
  78. package/dist/lib/css/property-descriptors/object-position.js +42 -0
  79. package/dist/lib/css/property-descriptors/opacity.js +16 -0
  80. package/dist/lib/css/property-descriptors/overflow-wrap.js +18 -0
  81. package/dist/lib/css/property-descriptors/overflow.js +27 -0
  82. package/dist/lib/css/property-descriptors/padding.js +14 -0
  83. package/dist/lib/css/property-descriptors/paint-order.js +33 -0
  84. package/dist/lib/css/property-descriptors/position.js +22 -0
  85. package/dist/lib/css/property-descriptors/quotes.js +41 -0
  86. package/dist/lib/css/property-descriptors/rotate.js +27 -0
  87. package/dist/lib/css/property-descriptors/text-align.js +21 -0
  88. package/dist/lib/css/property-descriptors/text-decoration-color.js +10 -0
  89. package/dist/lib/css/property-descriptors/text-decoration-line.js +28 -0
  90. package/dist/lib/css/property-descriptors/text-decoration-style.js +24 -0
  91. package/dist/lib/css/property-descriptors/text-decoration-thickness.js +26 -0
  92. package/dist/lib/css/property-descriptors/text-overflow.js +18 -0
  93. package/dist/lib/css/property-descriptors/text-shadow.js +46 -0
  94. package/dist/lib/css/property-descriptors/text-transform.js +20 -0
  95. package/dist/lib/css/property-descriptors/text-underline-offset.js +23 -0
  96. package/dist/lib/css/property-descriptors/transform-origin.js +24 -0
  97. package/dist/lib/css/property-descriptors/transform.js +57 -0
  98. package/dist/lib/css/property-descriptors/visibility.js +20 -0
  99. package/dist/lib/css/property-descriptors/webkit-line-clamp.js +26 -0
  100. package/dist/lib/css/property-descriptors/webkit-text-stroke-color.js +10 -0
  101. package/dist/lib/css/property-descriptors/webkit-text-stroke-width.js +16 -0
  102. package/dist/lib/css/property-descriptors/word-break.js +26 -0
  103. package/dist/lib/css/property-descriptors/writing-mode.js +28 -0
  104. package/dist/lib/css/property-descriptors/z-index.js +19 -0
  105. package/dist/lib/css/property-descriptors/zoom.js +18 -0
  106. package/dist/lib/css/syntax/parser.js +140 -0
  107. package/dist/lib/css/syntax/token-constants.js +214 -0
  108. package/dist/lib/css/syntax/token-singletons.js +36 -0
  109. package/dist/lib/css/syntax/token-types.js +10 -0
  110. package/dist/lib/css/syntax/tokenizer.js +502 -0
  111. package/dist/lib/css/type-descriptor.js +2 -0
  112. package/dist/lib/css/types/angle.js +80 -0
  113. package/dist/lib/css/types/color-math.js +25 -0
  114. package/dist/lib/css/types/color-spaces/a98.js +78 -0
  115. package/dist/lib/css/types/color-spaces/p3.js +86 -0
  116. package/dist/lib/css/types/color-spaces/pro-photo.js +83 -0
  117. package/dist/lib/css/types/color-spaces/rec2020.js +85 -0
  118. package/dist/lib/css/types/color-spaces/srgb.js +79 -0
  119. package/dist/lib/css/types/color-utilities.js +342 -0
  120. package/dist/lib/css/types/color.js +400 -0
  121. package/dist/lib/css/types/functions/-prefix-linear-gradient.js +32 -0
  122. package/dist/lib/css/types/functions/-prefix-radial-gradient.js +83 -0
  123. package/dist/lib/css/types/functions/-webkit-gradient.js +59 -0
  124. package/dist/lib/css/types/functions/counter.js +367 -0
  125. package/dist/lib/css/types/functions/gradient.js +163 -0
  126. package/dist/lib/css/types/functions/linear-gradient.js +27 -0
  127. package/dist/lib/css/types/functions/radial-gradient.js +90 -0
  128. package/dist/lib/css/types/functions/repeating-linear-gradient.js +9 -0
  129. package/dist/lib/css/types/image.js +62 -0
  130. package/dist/lib/css/types/index.js +2 -0
  131. package/dist/lib/css/types/length-percentage.js +197 -0
  132. package/dist/lib/css/types/length.js +5 -0
  133. package/dist/lib/css/types/safe-eval.js +80 -0
  134. package/dist/lib/css/types/time.js +17 -0
  135. package/dist/lib/dom/document-cloner.js +597 -0
  136. package/dist/lib/dom/dom-normalizer.js +115 -0
  137. package/dist/lib/dom/element-container.js +56 -0
  138. package/dist/lib/dom/elements/li-element-container.js +11 -0
  139. package/dist/lib/dom/elements/ol-element-container.js +12 -0
  140. package/dist/lib/dom/elements/select-element-container.js +12 -0
  141. package/dist/lib/dom/elements/textarea-element-container.js +11 -0
  142. package/dist/lib/dom/node-parser.js +112 -0
  143. package/dist/lib/dom/node-type-guards.js +81 -0
  144. package/dist/lib/dom/replaced-elements/canvas-element-container.js +13 -0
  145. package/dist/lib/dom/replaced-elements/iframe-element-container.js +38 -0
  146. package/dist/lib/dom/replaced-elements/image-element-container.js +14 -0
  147. package/dist/lib/dom/replaced-elements/index.js +2 -0
  148. package/dist/lib/dom/replaced-elements/input-element-container.js +89 -0
  149. package/dist/lib/dom/replaced-elements/svg-element-container.js +19 -0
  150. package/dist/lib/dom/slot-cloner.js +176 -0
  151. package/dist/lib/dom/text-container.js +35 -0
  152. package/dist/lib/index.js +49 -0
  153. package/dist/lib/options.js +2 -0
  154. package/dist/lib/render/background.js +188 -0
  155. package/dist/lib/render/bezier-curve.js +34 -0
  156. package/dist/lib/render/border.js +104 -0
  157. package/dist/lib/render/bound-curves.js +188 -0
  158. package/dist/lib/render/box-sizing.js +20 -0
  159. package/dist/lib/render/canvas/background-renderer.js +327 -0
  160. package/dist/lib/render/canvas/border-image-renderer.js +153 -0
  161. package/dist/lib/render/canvas/border-renderer.js +184 -0
  162. package/dist/lib/render/canvas/canvas-path.js +25 -0
  163. package/dist/lib/render/canvas/canvas-renderer.js +312 -0
  164. package/dist/lib/render/canvas/content-renderer.js +204 -0
  165. package/dist/lib/render/canvas/effects-renderer.js +171 -0
  166. package/dist/lib/render/canvas/font-utils.js +29 -0
  167. package/dist/lib/render/canvas/foreignobject-renderer.js +38 -0
  168. package/dist/lib/render/canvas/text/text-decoration-renderer.js +99 -0
  169. package/dist/lib/render/canvas/text-renderer.js +485 -0
  170. package/dist/lib/render/effects.js +231 -0
  171. package/dist/lib/render/font-metrics.js +53 -0
  172. package/dist/lib/render/object-fit.js +91 -0
  173. package/dist/lib/render/path.js +26 -0
  174. package/dist/lib/render/renderer-interface.js +2 -0
  175. package/dist/lib/render/stacking-context.js +340 -0
  176. package/dist/lib/render/vector.js +16 -0
  177. package/dist/types/config.d.ts +44 -0
  178. package/dist/types/core/abort-helper.d.ts +12 -0
  179. package/dist/types/core/background-parser.d.ts +16 -0
  180. package/dist/types/core/bitwise.d.ts +1 -0
  181. package/dist/types/core/cache-storage.d.ts +68 -0
  182. package/dist/types/core/config-assembler.d.ts +28 -0
  183. package/dist/types/core/constants.d.ts +22 -0
  184. package/dist/types/core/context.d.ts +22 -0
  185. package/dist/types/core/debugger.d.ts +8 -0
  186. package/dist/types/core/features.d.ts +12 -0
  187. package/dist/types/core/logger.d.ts +18 -0
  188. package/dist/types/core/lru-map.d.ts +37 -0
  189. package/dist/types/core/origin-checker.d.ts +33 -0
  190. package/dist/types/core/performance-monitor.d.ts +120 -0
  191. package/dist/types/core/render-element.d.ts +3 -0
  192. package/dist/types/core/util.d.ts +1 -0
  193. package/dist/types/core/validator.d.ts +130 -0
  194. package/dist/types/css/grouped/background-styles.d.ts +16 -0
  195. package/dist/types/css/grouped/border-styles.d.ts +31 -0
  196. package/dist/types/css/grouped/font-styles.d.ts +35 -0
  197. package/dist/types/css/grouped/layout-styles.d.ts +46 -0
  198. package/dist/types/css/index.d.ts +185 -0
  199. package/dist/types/css/layout/bounds.d.ts +14 -0
  200. package/dist/types/css/layout/text.d.ts +10 -0
  201. package/dist/types/css/property-descriptor.d.ts +40 -0
  202. package/dist/types/css/property-descriptors/background-blend-mode.d.ts +23 -0
  203. package/dist/types/css/property-descriptors/background-clip.d.ts +8 -0
  204. package/dist/types/css/property-descriptors/background-color.d.ts +2 -0
  205. package/dist/types/css/property-descriptors/background-image.d.ts +3 -0
  206. package/dist/types/css/property-descriptors/background-origin.d.ts +8 -0
  207. package/dist/types/css/property-descriptors/background-position.d.ts +5 -0
  208. package/dist/types/css/property-descriptors/background-repeat.d.ts +9 -0
  209. package/dist/types/css/property-descriptors/background-size.d.ts +11 -0
  210. package/dist/types/css/property-descriptors/border-color.d.ts +5 -0
  211. package/dist/types/css/property-descriptors/border-image-repeat.d.ts +12 -0
  212. package/dist/types/css/property-descriptors/border-image-slice.d.ts +10 -0
  213. package/dist/types/css/property-descriptors/border-image-source.d.ts +4 -0
  214. package/dist/types/css/property-descriptors/border-radius.d.ts +7 -0
  215. package/dist/types/css/property-descriptors/border-style.d.ts +12 -0
  216. package/dist/types/css/property-descriptors/border-width.d.ts +5 -0
  217. package/dist/types/css/property-descriptors/box-decoration-break.d.ts +6 -0
  218. package/dist/types/css/property-descriptors/box-shadow.d.ts +14 -0
  219. package/dist/types/css/property-descriptors/clip-path.d.ts +62 -0
  220. package/dist/types/css/property-descriptors/color.d.ts +2 -0
  221. package/dist/types/css/property-descriptors/content.d.ts +4 -0
  222. package/dist/types/css/property-descriptors/counter-increment.d.ts +10 -0
  223. package/dist/types/css/property-descriptors/counter-reset.d.ts +7 -0
  224. package/dist/types/css/property-descriptors/direction.d.ts +6 -0
  225. package/dist/types/css/property-descriptors/display.d.ts +35 -0
  226. package/dist/types/css/property-descriptors/duration.d.ts +2 -0
  227. package/dist/types/css/property-descriptors/filter.d.ts +3 -0
  228. package/dist/types/css/property-descriptors/float.d.ts +9 -0
  229. package/dist/types/css/property-descriptors/font-family.d.ts +4 -0
  230. package/dist/types/css/property-descriptors/font-size.d.ts +2 -0
  231. package/dist/types/css/property-descriptors/font-style.d.ts +7 -0
  232. package/dist/types/css/property-descriptors/font-variant-ligatures.d.ts +14 -0
  233. package/dist/types/css/property-descriptors/font-variant.d.ts +2 -0
  234. package/dist/types/css/property-descriptors/font-weight.d.ts +2 -0
  235. package/dist/types/css/property-descriptors/image-rendering.d.ts +8 -0
  236. package/dist/types/css/property-descriptors/letter-spacing.d.ts +2 -0
  237. package/dist/types/css/property-descriptors/line-break.d.ts +6 -0
  238. package/dist/types/css/property-descriptors/line-height.d.ts +4 -0
  239. package/dist/types/css/property-descriptors/list-style-image.d.ts +3 -0
  240. package/dist/types/css/property-descriptors/list-style-position.d.ts +6 -0
  241. package/dist/types/css/property-descriptors/list-style-type.d.ts +58 -0
  242. package/dist/types/css/property-descriptors/margin.d.ts +5 -0
  243. package/dist/types/css/property-descriptors/mix-blend-mode.d.ts +21 -0
  244. package/dist/types/css/property-descriptors/object-fit.d.ts +10 -0
  245. package/dist/types/css/property-descriptors/object-position.d.ts +4 -0
  246. package/dist/types/css/property-descriptors/opacity.d.ts +2 -0
  247. package/dist/types/css/property-descriptors/overflow-wrap.d.ts +6 -0
  248. package/dist/types/css/property-descriptors/overflow.d.ts +9 -0
  249. package/dist/types/css/property-descriptors/padding.d.ts +5 -0
  250. package/dist/types/css/property-descriptors/paint-order.d.ts +8 -0
  251. package/dist/types/css/property-descriptors/position.d.ts +9 -0
  252. package/dist/types/css/property-descriptors/quotes.d.ts +8 -0
  253. package/dist/types/css/property-descriptors/rotate.d.ts +3 -0
  254. package/dist/types/css/property-descriptors/text-align.d.ts +7 -0
  255. package/dist/types/css/property-descriptors/text-decoration-color.d.ts +2 -0
  256. package/dist/types/css/property-descriptors/text-decoration-line.d.ts +10 -0
  257. package/dist/types/css/property-descriptors/text-decoration-style.d.ts +9 -0
  258. package/dist/types/css/property-descriptors/text-decoration-thickness.d.ts +3 -0
  259. package/dist/types/css/property-descriptors/text-overflow.d.ts +6 -0
  260. package/dist/types/css/property-descriptors/text-shadow.d.ts +12 -0
  261. package/dist/types/css/property-descriptors/text-transform.d.ts +8 -0
  262. package/dist/types/css/property-descriptors/text-underline-offset.d.ts +3 -0
  263. package/dist/types/css/property-descriptors/transform-origin.d.ts +4 -0
  264. package/dist/types/css/property-descriptors/transform.d.ts +4 -0
  265. package/dist/types/css/property-descriptors/visibility.d.ts +7 -0
  266. package/dist/types/css/property-descriptors/webkit-line-clamp.d.ts +7 -0
  267. package/dist/types/css/property-descriptors/webkit-text-stroke-color.d.ts +2 -0
  268. package/dist/types/css/property-descriptors/webkit-text-stroke-width.d.ts +2 -0
  269. package/dist/types/css/property-descriptors/word-break.d.ts +7 -0
  270. package/dist/types/css/property-descriptors/writing-mode.d.ts +11 -0
  271. package/dist/types/css/property-descriptors/z-index.d.ts +7 -0
  272. package/dist/types/css/property-descriptors/zoom.d.ts +3 -0
  273. package/dist/types/css/syntax/parser.d.ts +34 -0
  274. package/dist/types/css/syntax/token-constants.d.ts +74 -0
  275. package/dist/types/css/syntax/token-singletons.d.ts +22 -0
  276. package/dist/types/css/syntax/token-types.d.ts +72 -0
  277. package/dist/types/css/syntax/tokenizer.d.ts +32 -0
  278. package/dist/types/css/type-descriptor.d.ts +6 -0
  279. package/dist/types/css/types/angle.d.ts +7 -0
  280. package/dist/types/css/types/color-math.d.ts +12 -0
  281. package/dist/types/css/types/color-spaces/a98.d.ts +39 -0
  282. package/dist/types/css/types/color-spaces/p3.d.ts +45 -0
  283. package/dist/types/css/types/color-spaces/pro-photo.d.ts +45 -0
  284. package/dist/types/css/types/color-spaces/rec2020.d.ts +45 -0
  285. package/dist/types/css/types/color-spaces/srgb.d.ts +38 -0
  286. package/dist/types/css/types/color-utilities.d.ts +107 -0
  287. package/dist/types/css/types/color.d.ts +8 -0
  288. package/dist/types/css/types/functions/-prefix-linear-gradient.d.ts +4 -0
  289. package/dist/types/css/types/functions/-prefix-radial-gradient.d.ts +4 -0
  290. package/dist/types/css/types/functions/-webkit-gradient.d.ts +4 -0
  291. package/dist/types/css/types/functions/counter.d.ts +10 -0
  292. package/dist/types/css/types/functions/gradient.d.ts +7 -0
  293. package/dist/types/css/types/functions/linear-gradient.d.ts +4 -0
  294. package/dist/types/css/types/functions/radial-gradient.d.ts +12 -0
  295. package/dist/types/css/types/functions/repeating-linear-gradient.d.ts +4 -0
  296. package/dist/types/css/types/image.d.ts +56 -0
  297. package/dist/types/css/types/index.d.ts +1 -0
  298. package/dist/types/css/types/length-percentage.d.ts +62 -0
  299. package/dist/types/css/types/length.d.ts +4 -0
  300. package/dist/types/css/types/safe-eval.d.ts +8 -0
  301. package/dist/types/css/types/time.d.ts +2 -0
  302. package/dist/types/dom/document-cloner.d.ts +57 -0
  303. package/dist/types/dom/dom-normalizer.d.ts +62 -0
  304. package/dist/types/dom/element-container.d.ts +31 -0
  305. package/dist/types/dom/elements/li-element-container.d.ts +6 -0
  306. package/dist/types/dom/elements/ol-element-container.d.ts +7 -0
  307. package/dist/types/dom/elements/select-element-container.d.ts +6 -0
  308. package/dist/types/dom/elements/textarea-element-container.d.ts +6 -0
  309. package/dist/types/dom/node-parser.d.ts +3 -0
  310. package/dist/types/dom/node-type-guards.d.ts +32 -0
  311. package/dist/types/dom/replaced-elements/canvas-element-container.d.ts +8 -0
  312. package/dist/types/dom/replaced-elements/iframe-element-container.d.ts +14 -0
  313. package/dist/types/dom/replaced-elements/image-element-container.d.ts +8 -0
  314. package/dist/types/dom/replaced-elements/index.d.ts +4 -0
  315. package/dist/types/dom/replaced-elements/input-element-container.d.ts +14 -0
  316. package/dist/types/dom/replaced-elements/svg-element-container.d.ts +8 -0
  317. package/dist/types/dom/slot-cloner.d.ts +66 -0
  318. package/dist/types/dom/text-container.d.ts +8 -0
  319. package/dist/types/index.d.ts +36 -0
  320. package/dist/types/options.d.ts +62 -0
  321. package/dist/types/render/background.d.ts +16 -0
  322. package/dist/types/render/bezier-curve.d.ts +14 -0
  323. package/dist/types/render/border.d.ts +6 -0
  324. package/dist/types/render/bound-curves.d.ts +32 -0
  325. package/dist/types/render/box-sizing.d.ts +4 -0
  326. package/dist/types/render/canvas/background-renderer.d.ts +94 -0
  327. package/dist/types/render/canvas/border-image-renderer.d.ts +18 -0
  328. package/dist/types/render/canvas/border-renderer.d.ts +67 -0
  329. package/dist/types/render/canvas/canvas-path.d.ts +3 -0
  330. package/dist/types/render/canvas/canvas-renderer.d.ts +60 -0
  331. package/dist/types/render/canvas/content-renderer.d.ts +43 -0
  332. package/dist/types/render/canvas/effects-renderer.d.ts +90 -0
  333. package/dist/types/render/canvas/font-utils.d.ts +19 -0
  334. package/dist/types/render/canvas/foreignobject-renderer.d.ts +10 -0
  335. package/dist/types/render/canvas/text/text-decoration-renderer.d.ts +18 -0
  336. package/dist/types/render/canvas/text-renderer.d.ts +103 -0
  337. package/dist/types/render/effects.d.ts +112 -0
  338. package/dist/types/render/font-metrics.d.ts +11 -0
  339. package/dist/types/render/object-fit.d.ts +19 -0
  340. package/dist/types/render/path.d.ts +13 -0
  341. package/dist/types/render/renderer-interface.d.ts +28 -0
  342. package/dist/types/render/stacking-context.d.ts +49 -0
  343. package/dist/types/render/vector.d.ts +9 -0
  344. package/package.json +139 -4
@@ -0,0 +1,107 @@
1
+ import { Context } from '../../core/context';
2
+ import { CSSValue } from '../syntax/parser';
3
+ import { clamp, multiplyMatrices } from './color-math';
4
+ type Color = number;
5
+ export declare const isTransparent: (color: Color) => boolean;
6
+ export declare const asString: (color: Color) => string;
7
+ export declare const pack: (r: number, g: number, b: number, a: number) => Color;
8
+ export declare const getTokenColorValue: (token: CSSValue, i: number) => number;
9
+ export declare const isRelativeTransform: (tokens: CSSValue[]) => boolean;
10
+ export { clamp, multiplyMatrices };
11
+ export declare const packSrgb: (args: number[]) => number;
12
+ export declare const packSrgbLinear: ([r, g, b, a]: [number, number, number, number]) => number;
13
+ export declare const packXYZ: (args: number[]) => number;
14
+ export declare const packLab: (_context: Context, args: CSSValue[]) => number;
15
+ export declare const packOkLab: (_context: Context, args: CSSValue[]) => number;
16
+ export declare const packOkLch: (_context: Context, args: CSSValue[]) => number;
17
+ export declare const packLch: (_context: Context, args: CSSValue[]) => number;
18
+ export declare const extractHslComponents: (context: Context, args: CSSValue[]) => [number, number, number, number];
19
+ export declare const packHSL: (context: Context, args: CSSValue[]) => number;
20
+ export declare const extractLchComponents: (args: CSSValue[]) => [number, number, number, number];
21
+ export declare const extractLabComponents: (args: CSSValue[]) => [number, number, number, number];
22
+ export declare const extractOkLchComponents: (args: CSSValue[]) => [number, number, number, number];
23
+ /**
24
+ * Convert D65 to D50
25
+ *
26
+ * @param xyz
27
+ */
28
+ export declare const d65toD50: (xyz: [number, number, number]) => [number, number, number];
29
+ /**
30
+ * Convert D50 to D65
31
+ *
32
+ * @param xyz
33
+ */
34
+ export declare const d50toD65: (xyz: [number, number, number]) => [number, number, number];
35
+ export declare const hue2rgb: (t1: number, t2: number, hue: number) => number;
36
+ /**
37
+ * Convert RGB to XYZ
38
+ *
39
+ * @param _context
40
+ * @param args
41
+ */
42
+ export declare const rgbToXyz: (_context: Context, args: CSSValue[]) => [number, number, number, number];
43
+ /**
44
+ * HSL to XYZ
45
+ *
46
+ * @param context
47
+ * @param args
48
+ */
49
+ export declare const hslToXyz: (context: Context, args: CSSValue[]) => [number, number, number, number];
50
+ /**
51
+ * LAB to XYZ
52
+ *
53
+ * @param _context
54
+ * @param args
55
+ */
56
+ export declare const labToXyz: (_context: Context, args: CSSValue[]) => [number, number, number, number];
57
+ /**
58
+ * LCH to XYZ
59
+ *
60
+ * @param _context
61
+ * @param args
62
+ */
63
+ export declare const lchToXyz: (_context: Context, args: CSSValue[]) => [number, number, number, number];
64
+ /**
65
+ * OKLch to XYZ
66
+ *
67
+ * @param _context
68
+ * @param args
69
+ */
70
+ export declare const oklchToXyz: (_context: Context, args: CSSValue[]) => [number, number, number, number];
71
+ /**
72
+ * OKLab to XYZ
73
+ *
74
+ * @param _context
75
+ * @param args
76
+ */
77
+ export declare const oklabToXyz: (_context: Context, args: CSSValue[]) => [number, number, number, number];
78
+ /**
79
+ * XYZ-50 to XYZ
80
+ *
81
+ * @param args
82
+ */
83
+ export declare const xyz50ToXYZ: (args: number[]) => [number, number, number];
84
+ /**
85
+ * Does nothing, required for SUPPORTED_COLOR_SPACES_FROM_XYZ in the _color() function
86
+ *
87
+ * @param args
88
+ */
89
+ export declare const xyzFromXYZ: (args: [number, number, number, number]) => [number, number, number, number];
90
+ /**
91
+ * XYZ-65 to XYZ-50
92
+ *
93
+ * @param args
94
+ */
95
+ export declare const xyz50FromXYZ: (args: [number, number, number, number]) => [number, number, number, number];
96
+ /**
97
+ * Convert XYZ to SRGB and Pack
98
+ *
99
+ * @param args
100
+ */
101
+ export declare const convertXyz: (args: number[]) => number;
102
+ /**
103
+ * Convert XYZ-50 to SRGB and Pack
104
+ *
105
+ * @param args
106
+ */
107
+ export declare const convertXyz50: (args: number[]) => number;
@@ -0,0 +1,8 @@
1
+ import { ITypeDescriptor } from '../type-descriptor';
2
+ import { Context } from '../../core/context';
3
+ export type Color = number;
4
+ export declare const color: ITypeDescriptor<Color>;
5
+ export declare const parseColor: (context: Context, value: string) => Color;
6
+ export declare const COLORS: {
7
+ [key: string]: Color;
8
+ };
@@ -0,0 +1,4 @@
1
+ import { CSSValue } from '../../syntax/parser';
2
+ import { CSSLinearGradientImage } from '../image';
3
+ import { Context } from '../../../core/context';
4
+ export declare const prefixLinearGradient: (context: Context, tokens: CSSValue[]) => CSSLinearGradientImage;
@@ -0,0 +1,4 @@
1
+ import { CSSValue } from '../../syntax/parser';
2
+ import { CSSRadialGradientImage } from '../image';
3
+ import { Context } from '../../../core/context';
4
+ export declare const prefixRadialGradient: (context: Context, tokens: CSSValue[]) => CSSRadialGradientImage;
@@ -0,0 +1,4 @@
1
+ import { CSSValue } from '../../syntax/parser';
2
+ import { CSSLinearGradientImage, CSSRadialGradientImage } from '../image';
3
+ import { Context } from '../../../core/context';
4
+ export declare const webkitGradient: (context: Context, tokens: CSSValue[]) => CSSLinearGradientImage | CSSRadialGradientImage;
@@ -0,0 +1,10 @@
1
+ import { LIST_STYLE_TYPE } from '../../property-descriptors/list-style-type';
2
+ import { CSSParsedCounterDeclaration } from '../../index';
3
+ export declare class CounterState {
4
+ private readonly counters;
5
+ getCounterValue(name: string): number;
6
+ getCounterValues(name: string): readonly number[];
7
+ pop(counters: string[]): void;
8
+ parse(style: CSSParsedCounterDeclaration): string[];
9
+ }
10
+ export declare const createCounterText: (value: number, type: LIST_STYLE_TYPE, appendSuffix: boolean) => string;
@@ -0,0 +1,7 @@
1
+ import { CSSValue } from '../../syntax/parser';
2
+ import { CSSRadialGradientImage, GradientColorStop, GradientCorner, UnprocessedGradientColorStop } from '../image';
3
+ import { Context } from '../../../core/context';
4
+ export declare const parseColorStop: (context: Context, args: CSSValue[]) => UnprocessedGradientColorStop;
5
+ export declare const processColorStops: (stops: UnprocessedGradientColorStop[], lineLength: number) => GradientColorStop[];
6
+ export declare const calculateGradientDirection: (angle: number | GradientCorner, width: number, height: number) => [number, number, number, number, number];
7
+ export declare const calculateRadius: (gradient: CSSRadialGradientImage, x: number, y: number, width: number, height: number) => [number, number];
@@ -0,0 +1,4 @@
1
+ import { CSSValue } from '../../syntax/parser';
2
+ import { CSSLinearGradientImage } from '../image';
3
+ import { Context } from '../../../core/context';
4
+ export declare const linearGradient: (context: Context, tokens: CSSValue[]) => CSSLinearGradientImage;
@@ -0,0 +1,12 @@
1
+ import { CSSValue } from '../../syntax/parser';
2
+ import { CSSRadialGradientImage } from '../image';
3
+ import { Context } from '../../../core/context';
4
+ export declare const CLOSEST_SIDE = "closest-side";
5
+ export declare const FARTHEST_SIDE = "farthest-side";
6
+ export declare const CLOSEST_CORNER = "closest-corner";
7
+ export declare const FARTHEST_CORNER = "farthest-corner";
8
+ export declare const CIRCLE = "circle";
9
+ export declare const ELLIPSE = "ellipse";
10
+ export declare const COVER = "cover";
11
+ export declare const CONTAIN = "contain";
12
+ export declare const radialGradient: (context: Context, tokens: CSSValue[]) => CSSRadialGradientImage;
@@ -0,0 +1,4 @@
1
+ import { CSSValue } from '../../syntax/parser';
2
+ import { CSSLinearGradientImage } from '../image';
3
+ import { Context } from '../../../core/context';
4
+ export declare const repeatingLinearGradient: (context: Context, tokens: CSSValue[]) => CSSLinearGradientImage;
@@ -0,0 +1,56 @@
1
+ import { CSSValue } from '../syntax/parser';
2
+ import { Color } from './color';
3
+ import { ITypeDescriptor } from '../type-descriptor';
4
+ import { LengthPercentage } from './length-percentage';
5
+ export declare const enum CSSImageType {
6
+ URL = 0,
7
+ LINEAR_GRADIENT = 1,
8
+ RADIAL_GRADIENT = 2,
9
+ REPEATING_LINEAR_GRADIENT = 3
10
+ }
11
+ export declare const isLinearGradient: (background: ICSSImage) => background is CSSLinearGradientImage;
12
+ export declare const isRadialGradient: (background: ICSSImage) => background is CSSRadialGradientImage;
13
+ export declare const isRepeatingLinearGradient: (background: ICSSImage) => background is CSSLinearGradientImage;
14
+ export interface UnprocessedGradientColorStop {
15
+ color: Color;
16
+ stop: LengthPercentage | null;
17
+ }
18
+ export interface GradientColorStop {
19
+ color: Color;
20
+ stop: number;
21
+ }
22
+ export interface ICSSImage {
23
+ type: CSSImageType;
24
+ }
25
+ export interface CSSURLImage extends ICSSImage {
26
+ url: string;
27
+ type: CSSImageType.URL;
28
+ }
29
+ export type GradientCorner = [LengthPercentage, LengthPercentage];
30
+ interface ICSSGradientImage extends ICSSImage {
31
+ stops: UnprocessedGradientColorStop[];
32
+ }
33
+ export interface CSSLinearGradientImage extends ICSSGradientImage {
34
+ angle: number | GradientCorner;
35
+ type: CSSImageType.LINEAR_GRADIENT | CSSImageType.REPEATING_LINEAR_GRADIENT;
36
+ }
37
+ export declare const enum CSSRadialShape {
38
+ CIRCLE = 0,
39
+ ELLIPSE = 1
40
+ }
41
+ export declare const enum CSSRadialExtent {
42
+ CLOSEST_SIDE = 0,
43
+ FARTHEST_SIDE = 1,
44
+ CLOSEST_CORNER = 2,
45
+ FARTHEST_CORNER = 3
46
+ }
47
+ export type CSSRadialSize = CSSRadialExtent | LengthPercentage[];
48
+ export interface CSSRadialGradientImage extends ICSSGradientImage {
49
+ type: CSSImageType.RADIAL_GRADIENT;
50
+ shape: CSSRadialShape;
51
+ size: CSSRadialSize;
52
+ position: LengthPercentage[];
53
+ }
54
+ export declare const image: ITypeDescriptor<ICSSImage>;
55
+ export declare function isSupportedImage(value: CSSValue): boolean;
56
+ export {};
@@ -0,0 +1 @@
1
+ export type CSSTypes = 'angle' | 'color' | 'image' | 'length' | 'length-percentage' | 'time';
@@ -0,0 +1,62 @@
1
+ import { DimensionToken, NumberValueToken, TokenType } from '../syntax/tokenizer';
2
+ import { CSSValue, CSSFunction } from '../syntax/parser';
3
+ /**
4
+ * Internal token representing a calc() expression that has both a percentage
5
+ * component and a pixel offset. Created at parse time and resolved at render
6
+ * time once the container size is known.
7
+ *
8
+ * Extends NumberValueToken so it is structurally assignable wherever
9
+ * LengthPercentage (DimensionToken | NumberValueToken) is expected,
10
+ * avoiding widespread type changes.
11
+ */
12
+ export interface CalcWithPercentage extends NumberValueToken {
13
+ type: TokenType.NUMBER_TOKEN;
14
+ /** The percentage coefficient (extracted from the calc expression). */
15
+ _calcPercentage: number;
16
+ /** The pixel offset (extracted from the calc expression). */
17
+ _calcPixelOffset: number;
18
+ }
19
+ export type LengthPercentage = DimensionToken | NumberValueToken;
20
+ export type LengthPercentageTuple = [LengthPercentage] | [LengthPercentage, LengthPercentage];
21
+ export declare const isLengthPercentage: (token: CSSValue) => token is LengthPercentage;
22
+ /**
23
+ * Check if a token is a CalcWithPercentage deferred token.
24
+ * Accepts CSSValue (structural duck-type check) for use in type guards.
25
+ */
26
+ export declare const isCalcWithPercentage: (token: CSSValue) => token is CalcWithPercentage;
27
+ /**
28
+ * Check if a token is a calc() function
29
+ */
30
+ export declare const isCalcFunction: (token: CSSValue) => token is CSSFunction;
31
+ /**
32
+ * Parse a calc() token and produce a LengthPercentage.
33
+ *
34
+ * Uses two-point evaluation to extract the percentage coefficient and pixel
35
+ * offset from a calc() expression so it can be resolved later at render time
36
+ * when the container size is known.
37
+ *
38
+ * evaluate(0) → pixelOffset
39
+ * evaluate(100) → percentage + pixelOffset → percentage = evaluate(100) - pixelOffset
40
+ *
41
+ * If the expression has no percentage component, returns a plain NUMBER_TOKEN
42
+ * for backwards compatibility.
43
+ */
44
+ export declare const parseCalcForLengthPercentage: (calcToken: CSSFunction) => LengthPercentage | null;
45
+ /**
46
+ * Convenience helper for parsing an optional calc() or length-percentage value.
47
+ * Used by property descriptors that accept both calc() and regular length-percentage tokens.
48
+ * Returns null if the value is neither a calc() function nor a length-percentage token.
49
+ */
50
+ export declare const parseOptionalCalcOrLength: (value: CSSValue) => LengthPercentage | null;
51
+ /**
52
+ * Evaluate a calc() expression and convert to LengthPercentage token
53
+ * Supports basic arithmetic: +, -, *, /
54
+ * Note: Percentages in calc() are converted based on a context value
55
+ */
56
+ export declare const evaluateCalcToLengthPercentage: (calcToken: CSSFunction, contextValue?: number) => LengthPercentage | null;
57
+ export declare const parseLengthPercentageTuple: (tokens: LengthPercentage[]) => LengthPercentageTuple;
58
+ export declare const ZERO_LENGTH: NumberValueToken;
59
+ export declare const FIFTY_PERCENT: NumberValueToken;
60
+ export declare const HUNDRED_PERCENT: NumberValueToken;
61
+ export declare const getAbsoluteValueForTuple: (tuple: LengthPercentageTuple, width: number, height: number) => [number, number];
62
+ export declare const getAbsoluteValue: (token: LengthPercentage, parent: number) => number;
@@ -0,0 +1,4 @@
1
+ import { CSSValue } from '../syntax/parser';
2
+ import { DimensionToken, NumberValueToken } from '../syntax/tokenizer';
3
+ export type Length = DimensionToken | NumberValueToken;
4
+ export declare const isLength: (token: CSSValue) => token is Length;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Safe arithmetic expression evaluator — replaces `new Function()`.
3
+ *
4
+ * Supports only: numbers, +, -, *, /, parentheses.
5
+ * Does NOT execute arbitrary code. Returns NaN on any illegal token.
6
+ */
7
+ declare const safeEvalArithmetic: (expr: string) => number;
8
+ export default safeEvalArithmetic;
@@ -0,0 +1,2 @@
1
+ import { ITypeDescriptor } from '../type-descriptor';
2
+ export declare const time: ITypeDescriptor<number>;
@@ -0,0 +1,57 @@
1
+ import { Bounds } from '../css/layout/bounds';
2
+ import { Context } from '../core/context';
3
+ export interface CloneOptions {
4
+ ignoreElements?: (element: Element) => boolean;
5
+ onclone?: (document: Document, element: HTMLElement) => void;
6
+ allowTaint?: boolean;
7
+ iframeContainer?: HTMLElement | ShadowRoot;
8
+ }
9
+ export interface WindowOptions {
10
+ scrollX: number;
11
+ scrollY: number;
12
+ windowWidth: number;
13
+ windowHeight: number;
14
+ }
15
+ export type CloneConfigurations = CloneOptions & {
16
+ inlineImages: boolean;
17
+ copyStyles: boolean;
18
+ cspNonce?: string;
19
+ };
20
+ export declare class DocumentCloner {
21
+ private readonly context;
22
+ private readonly options;
23
+ private readonly scrolledElements;
24
+ private readonly referenceElement;
25
+ clonedReferenceElement?: HTMLElement;
26
+ private readonly documentElement;
27
+ private readonly counters;
28
+ private readonly slotCloner;
29
+ private quoteDepth;
30
+ constructor(context: Context, element: HTMLElement, options: CloneConfigurations);
31
+ toIFrame(ownerDocument: Document, windowSize: Bounds): Promise<HTMLIFrameElement>;
32
+ createElementClone<T extends HTMLElement | SVGElement>(node: T): HTMLElement | SVGElement;
33
+ createCustomElementClone(node: HTMLElement): HTMLElement;
34
+ createStyleClone(node: HTMLStyleElement): HTMLStyleElement;
35
+ createCanvasClone(canvas: HTMLCanvasElement): HTMLImageElement | HTMLCanvasElement;
36
+ createVideoClone(video: HTMLVideoElement): HTMLCanvasElement;
37
+ appendChildNode(clone: HTMLElement | SVGElement, child: Node, copyStyles: boolean): void;
38
+ /**
39
+ * Clone child nodes from source element to clone element.
40
+ * Delegates to SlotCloner which handles shadow DOM, slots, and light DOM.
41
+ */
42
+ cloneChildNodes(node: Element, clone: HTMLElement | SVGElement, copyStyles: boolean): void;
43
+ cloneNode(node: Node, copyStyles: boolean): Node;
44
+ resolvePseudoContent(node: Element, clone: Element, style: CSSStyleDeclaration, pseudoElt: PseudoElementType): HTMLElement | void;
45
+ static destroy(container: HTMLIFrameElement): boolean;
46
+ }
47
+ declare enum PseudoElementType {
48
+ BEFORE = 0,
49
+ AFTER = 1
50
+ }
51
+ export declare const copyCSSStyles: <T extends HTMLElement | SVGElement>(style: CSSStyleDeclaration, target: T) => T;
52
+ /**
53
+ * Serialise a document type declaration to an HTML string.
54
+ * @internal – exported for testing only, not part of the public API.
55
+ */
56
+ export declare const serializeDoctype: (doctype?: DocumentType | null) => string;
57
+ export {};
@@ -0,0 +1,62 @@
1
+ /**
2
+ * DOM Normalizer
3
+ * Handles DOM side effects that need to happen before rendering
4
+ * Extracted from ElementContainer to follow SRP
5
+ */
6
+ import { CSSParsedDeclaration } from '../css';
7
+ /**
8
+ * Stored original styles for restoration
9
+ */
10
+ export interface OriginalStyles {
11
+ animationDuration?: string;
12
+ transform?: string;
13
+ rotate?: string;
14
+ }
15
+ /**
16
+ * Normalize element styles for accurate rendering
17
+ * This includes disabling animations and neutralizing transforms.
18
+ */
19
+ export declare class DOMNormalizer {
20
+ /**
21
+ * Normalize a single element and return original styles.
22
+ *
23
+ * ## Why we replace transforms with an identity value instead of "none"
24
+ *
25
+ * `getBoundingClientRect()` returns visual (post-transform) coordinates, so we
26
+ * must neutralize any active transform before measuring element bounds.
27
+ *
28
+ * The naive approach of setting `transform: none` (or `rotate: none`) has a
29
+ * critical side-effect: per **CSS Transforms Level 2**, an element whose
30
+ * `transform` is non-none automatically becomes the **containing block** for
31
+ * all of its `position: absolute` *and* `position: fixed` descendants.
32
+ * Setting it to `none` destroys that role, causing children to resolve their
33
+ * percentage dimensions and offsets against an unintended ancestor — which
34
+ * produces completely wrong bounds.
35
+ *
36
+ * Solution: instead of removing the transform, we replace it with a visually
37
+ * inert identity value:
38
+ *
39
+ * - `transform: scale(0.5)` → `transform: translate(0, 0)`
40
+ * - `translate(0, 0)` is an identity transform (no visual change, no layout shift).
41
+ * - `getBoundingClientRect()` returns the same layout-space coordinates as
42
+ * if there were no transform at all.
43
+ * - Because the value is still non-none, the element **remains a containing
44
+ * block** for both `position: absolute` and `position: fixed` descendants.
45
+ *
46
+ * - `rotate: 45deg` → `rotate: 0deg`
47
+ * - `0deg` is the identity rotation; `0deg ≠ none`, so the same containing-
48
+ * block guarantee holds.
49
+ *
50
+ * @param element - Element to normalize
51
+ * @param styles - Parsed CSS styles
52
+ * @returns Original styles map for restoration
53
+ */
54
+ static normalizeElement(element: Element, styles: CSSParsedDeclaration): OriginalStyles;
55
+ /**
56
+ * Restore element styles after rendering.
57
+ *
58
+ * @param element - Element to restore
59
+ * @param originalStyles - Original styles to restore
60
+ */
61
+ static restoreElement(element: Element, originalStyles: OriginalStyles): void;
62
+ }
@@ -0,0 +1,31 @@
1
+ import { CSSParsedDeclaration } from '../css/index';
2
+ import { TextContainer } from './text-container';
3
+ import { Bounds } from '../css/layout/bounds';
4
+ import { Context } from '../core/context';
5
+ export interface ElementContainerOptions {
6
+ normalizeDom?: boolean;
7
+ }
8
+ export declare class ElementContainer {
9
+ protected readonly context: Context;
10
+ readonly styles: CSSParsedDeclaration;
11
+ readonly textNodes: TextContainer[];
12
+ readonly elements: ElementContainer[];
13
+ bounds: Bounds;
14
+ createsStackingContext: boolean;
15
+ createsRealStackingContext: boolean;
16
+ isListOwner: boolean;
17
+ debugRender: boolean;
18
+ private originalStyles?;
19
+ private originalElement?;
20
+ constructor(context: Context, element: Element, options?: ElementContainerOptions);
21
+ /**
22
+ * Restore original element styles (if normalized)
23
+ * Call this after rendering is complete to clean up DOM state
24
+ */
25
+ restore(): void;
26
+ /**
27
+ * Recursively restore all elements in the tree
28
+ * Call this on the root container after rendering is complete
29
+ */
30
+ restoreTree(): void;
31
+ }
@@ -0,0 +1,6 @@
1
+ import { ElementContainer } from '../element-container';
2
+ import { Context } from '../../core/context';
3
+ export declare class LIElementContainer extends ElementContainer {
4
+ readonly value: number;
5
+ constructor(context: Context, element: HTMLLIElement);
6
+ }
@@ -0,0 +1,7 @@
1
+ import { ElementContainer } from '../element-container';
2
+ import { Context } from '../../core/context';
3
+ export declare class OLElementContainer extends ElementContainer {
4
+ readonly start: number;
5
+ readonly reversed: boolean;
6
+ constructor(context: Context, element: HTMLOListElement);
7
+ }
@@ -0,0 +1,6 @@
1
+ import { ElementContainer } from '../element-container';
2
+ import { Context } from '../../core/context';
3
+ export declare class SelectElementContainer extends ElementContainer {
4
+ readonly value: string;
5
+ constructor(context: Context, element: HTMLSelectElement);
6
+ }
@@ -0,0 +1,6 @@
1
+ import { ElementContainer } from '../element-container';
2
+ import { Context } from '../../core/context';
3
+ export declare class TextareaElementContainer extends ElementContainer {
4
+ readonly value: string;
5
+ constructor(context: Context, element: HTMLTextAreaElement);
6
+ }
@@ -0,0 +1,3 @@
1
+ import { ElementContainer } from './element-container';
2
+ import { Context } from '../core/context';
3
+ export declare const parseTree: (context: Context, element: HTMLElement) => ElementContainer;
@@ -0,0 +1,32 @@
1
+ /**
2
+ * DOM Node Type Guards
3
+ *
4
+ * All DOM node type guards consolidated here to eliminate duplication
5
+ * and provide a single source of truth for node type checking.
6
+ */
7
+ export declare const isElementNode: (node: Node) => node is Element;
8
+ export declare const isTextNode: (node: Node) => node is Text;
9
+ export declare const isSVGElementNode: (element: Element) => element is SVGElement;
10
+ export declare const isHTMLElementNode: (node: Node) => node is HTMLElement;
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
+ export declare const isLIElement: (node: Element) => node is HTMLLIElement;
25
+ export declare const isOLElement: (node: Element) => node is HTMLOListElement;
26
+ export declare const isCustomElement: (element: Element) => element is HTMLElement;
27
+ /**
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.
31
+ */
32
+ export declare const canHavePseudoElements: (element: Element) => boolean;
@@ -0,0 +1,8 @@
1
+ import { ElementContainer } from '../element-container';
2
+ import { Context } from '../../core/context';
3
+ export declare class CanvasElementContainer extends ElementContainer {
4
+ canvas: HTMLCanvasElement;
5
+ intrinsicWidth: number;
6
+ intrinsicHeight: number;
7
+ constructor(context: Context, canvas: HTMLCanvasElement);
8
+ }
@@ -0,0 +1,14 @@
1
+ import { ElementContainer } from '../element-container';
2
+ import { Color } from '../../css/types/color';
3
+ import { Context } from '../../core/context';
4
+ type ParseTreeFunction = (context: Context, node: Node) => ElementContainer;
5
+ export declare class IFrameElementContainer extends ElementContainer {
6
+ src: string;
7
+ width: number;
8
+ height: number;
9
+ tree?: ElementContainer;
10
+ backgroundColor: Color;
11
+ private parseTreeFn?;
12
+ constructor(context: Context, iframe: HTMLIFrameElement, parseTreeFn?: ParseTreeFunction);
13
+ }
14
+ export {};
@@ -0,0 +1,8 @@
1
+ import { ElementContainer } from '../element-container';
2
+ import { Context } from '../../core/context';
3
+ export declare class ImageElementContainer extends ElementContainer {
4
+ src: string;
5
+ intrinsicWidth: number;
6
+ intrinsicHeight: number;
7
+ constructor(context: Context, img: HTMLImageElement);
8
+ }
@@ -0,0 +1,4 @@
1
+ import { CanvasElementContainer } from './canvas-element-container';
2
+ import { ImageElementContainer } from './image-element-container';
3
+ import { SVGElementContainer } from './svg-element-container';
4
+ export type ReplacedElementContainer = CanvasElementContainer | ImageElementContainer | SVGElementContainer;
@@ -0,0 +1,14 @@
1
+ import { ElementContainer } from '../element-container';
2
+ import { Context } from '../../core/context';
3
+ export declare const CHECKBOX = "checkbox";
4
+ export declare const RADIO = "radio";
5
+ export declare const PASSWORD = "password";
6
+ export declare const INPUT_COLOR = 707406591;
7
+ export declare const PLACEHOLDER_COLOR = 1970632191;
8
+ export declare class InputElementContainer extends ElementContainer {
9
+ readonly type: string;
10
+ readonly checked: boolean;
11
+ readonly value: string;
12
+ readonly isPlaceholder: boolean;
13
+ constructor(context: Context, input: HTMLInputElement);
14
+ }
@@ -0,0 +1,8 @@
1
+ import { ElementContainer } from '../element-container';
2
+ import { Context } from '../../core/context';
3
+ export declare class SVGElementContainer extends ElementContainer {
4
+ svg: string;
5
+ intrinsicWidth: number;
6
+ intrinsicHeight: number;
7
+ constructor(context: Context, img: SVGSVGElement);
8
+ }