blitz-pdf 0.0.0-stage → 0.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 (370) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +391 -2
  3. package/THIRD_PARTY_NOTICES.md +25 -0
  4. package/assets/icon.svg +4 -0
  5. package/dist/api.d.ts +7 -0
  6. package/dist/api.d.ts.map +1 -0
  7. package/dist/api.js +46 -0
  8. package/dist/api.js.map +1 -0
  9. package/dist/assets.d.ts +7 -0
  10. package/dist/assets.d.ts.map +1 -0
  11. package/dist/assets.js +52 -0
  12. package/dist/assets.js.map +1 -0
  13. package/dist/browser.d.ts +3 -0
  14. package/dist/browser.d.ts.map +1 -0
  15. package/dist/browser.js +3 -0
  16. package/dist/browser.js.map +1 -0
  17. package/dist/node.d.ts +3 -0
  18. package/dist/node.d.ts.map +1 -0
  19. package/dist/node.js +10 -0
  20. package/dist/node.js.map +1 -0
  21. package/dist/options.d.ts +24 -0
  22. package/dist/options.d.ts.map +1 -0
  23. package/dist/options.js +135 -0
  24. package/dist/options.js.map +1 -0
  25. package/dist/types.d.ts +51 -0
  26. package/dist/types.d.ts.map +1 -0
  27. package/dist/types.js +2 -0
  28. package/dist/types.js.map +1 -0
  29. package/examples/bun.ts +8 -0
  30. package/examples/german-invoice/README.md +70 -0
  31. package/examples/german-invoice/data.mjs +83 -0
  32. package/examples/german-invoice/invoice.css +59 -0
  33. package/examples/german-invoice/template.mjs +49 -0
  34. package/examples/german-invoice.mjs +20 -0
  35. package/examples/invoice.html +29 -0
  36. package/examples/node.mjs +8 -0
  37. package/examples/pagination.html +40 -0
  38. package/examples/pagination.mjs +8 -0
  39. package/licenses/DejaVu.txt +187 -0
  40. package/licenses/RUST_DEPENDENCIES.txt +11577 -0
  41. package/package.json +89 -4
  42. package/src/api.ts +44 -0
  43. package/src/assets.ts +43 -0
  44. package/src/browser.ts +6 -0
  45. package/src/node.ts +12 -0
  46. package/src/options.ts +101 -0
  47. package/src/types.ts +49 -0
  48. package/vendor/README.md +17 -0
  49. package/vendor/stylo/.cargo-ok +1 -0
  50. package/vendor/stylo/.cargo_vcs_info.json +6 -0
  51. package/vendor/stylo/Cargo.lock +1485 -0
  52. package/vendor/stylo/Cargo.toml +274 -0
  53. package/vendor/stylo/LICENSE +373 -0
  54. package/vendor/stylo/README.md +6 -0
  55. package/vendor/stylo/applicable_declarations.rs +328 -0
  56. package/vendor/stylo/author_styles.rs +79 -0
  57. package/vendor/stylo/bezier.rs +176 -0
  58. package/vendor/stylo/bloom.rs +414 -0
  59. package/vendor/stylo/build.rs +91 -0
  60. package/vendor/stylo/build_gecko.rs +393 -0
  61. package/vendor/stylo/color/color_function.rs +601 -0
  62. package/vendor/stylo/color/component.rs +207 -0
  63. package/vendor/stylo/color/convert.rs +935 -0
  64. package/vendor/stylo/color/gamut/raytrace.rs +265 -0
  65. package/vendor/stylo/color/gamut.rs +227 -0
  66. package/vendor/stylo/color/mix.rs +645 -0
  67. package/vendor/stylo/color/mod.rs +750 -0
  68. package/vendor/stylo/color/parsing.rs +770 -0
  69. package/vendor/stylo/color/to_css.rs +297 -0
  70. package/vendor/stylo/context.rs +716 -0
  71. package/vendor/stylo/counter_style/mod.rs +754 -0
  72. package/vendor/stylo/counter_style/predefined.rs +61 -0
  73. package/vendor/stylo/counter_style/update_predefined.py +35 -0
  74. package/vendor/stylo/custom_properties.rs +2023 -0
  75. package/vendor/stylo/custom_properties_map.rs +220 -0
  76. package/vendor/stylo/data.rs +693 -0
  77. package/vendor/stylo/device/gecko.rs +486 -0
  78. package/vendor/stylo/device/mod.rs +304 -0
  79. package/vendor/stylo/device/servo.rs +507 -0
  80. package/vendor/stylo/dom.rs +1164 -0
  81. package/vendor/stylo/dom_apis.rs +937 -0
  82. package/vendor/stylo/driver.rs +172 -0
  83. package/vendor/stylo/error_reporting.rs +484 -0
  84. package/vendor/stylo/font_face.rs +558 -0
  85. package/vendor/stylo/font_metrics.rs +124 -0
  86. package/vendor/stylo/gecko/anon_boxes.toml +113 -0
  87. package/vendor/stylo/gecko/arc_types.rs +211 -0
  88. package/vendor/stylo/gecko/conversions.rs +59 -0
  89. package/vendor/stylo/gecko/data.rs +222 -0
  90. package/vendor/stylo/gecko/media_features.rs +971 -0
  91. package/vendor/stylo/gecko/mod.rs +20 -0
  92. package/vendor/stylo/gecko/non_ts_pseudo_class_list.rs +119 -0
  93. package/vendor/stylo/gecko/pseudo_element.rs +640 -0
  94. package/vendor/stylo/gecko/pseudo_element_definition.mako.rs +298 -0
  95. package/vendor/stylo/gecko/pseudo_elements.py +137 -0
  96. package/vendor/stylo/gecko/pseudo_elements.toml +197 -0
  97. package/vendor/stylo/gecko/regen_pseudo_elements.py +33 -0
  98. package/vendor/stylo/gecko/restyle_damage.rs +127 -0
  99. package/vendor/stylo/gecko/selector_parser.rs +627 -0
  100. package/vendor/stylo/gecko/snapshot.rs +202 -0
  101. package/vendor/stylo/gecko/snapshot_helpers.rs +334 -0
  102. package/vendor/stylo/gecko/traversal.rs +52 -0
  103. package/vendor/stylo/gecko/wrapper.rs +2258 -0
  104. package/vendor/stylo/gecko_bindings/mod.rs +34 -0
  105. package/vendor/stylo/gecko_bindings/sugar/mod.rs +12 -0
  106. package/vendor/stylo/gecko_bindings/sugar/ns_com_ptr.rs +15 -0
  107. package/vendor/stylo/gecko_bindings/sugar/ns_compatibility.rs +19 -0
  108. package/vendor/stylo/gecko_bindings/sugar/ns_style_auto_array.rs +111 -0
  109. package/vendor/stylo/gecko_bindings/sugar/origin_flags.rs +31 -0
  110. package/vendor/stylo/gecko_bindings/sugar/ownership.rs +70 -0
  111. package/vendor/stylo/gecko_bindings/sugar/refptr.rs +299 -0
  112. package/vendor/stylo/gecko_string_cache/mod.rs +543 -0
  113. package/vendor/stylo/gecko_string_cache/namespace.rs +106 -0
  114. package/vendor/stylo/global_style_data.rs +224 -0
  115. package/vendor/stylo/invalidation/element/document_state.rs +156 -0
  116. package/vendor/stylo/invalidation/element/element_wrapper.rs +432 -0
  117. package/vendor/stylo/invalidation/element/invalidation_map.rs +1631 -0
  118. package/vendor/stylo/invalidation/element/invalidator.rs +1470 -0
  119. package/vendor/stylo/invalidation/element/mod.rs +13 -0
  120. package/vendor/stylo/invalidation/element/relative_selector.rs +1399 -0
  121. package/vendor/stylo/invalidation/element/restyle_hints.rs +226 -0
  122. package/vendor/stylo/invalidation/element/state_and_attributes.rs +756 -0
  123. package/vendor/stylo/invalidation/media_queries.rs +144 -0
  124. package/vendor/stylo/invalidation/mod.rs +10 -0
  125. package/vendor/stylo/invalidation/stylesheets.rs +745 -0
  126. package/vendor/stylo/invalidation/viewport_units.rs +71 -0
  127. package/vendor/stylo/lib.rs +336 -0
  128. package/vendor/stylo/logical_geometry.rs +1684 -0
  129. package/vendor/stylo/macros.rs +70 -0
  130. package/vendor/stylo/matching.rs +1226 -0
  131. package/vendor/stylo/media_queries/media_list.rs +168 -0
  132. package/vendor/stylo/media_queries/media_query.rs +190 -0
  133. package/vendor/stylo/media_queries/mod.rs +13 -0
  134. package/vendor/stylo/parallel.rs +205 -0
  135. package/vendor/stylo/parser.rs +276 -0
  136. package/vendor/stylo/piecewise_linear.rs +282 -0
  137. package/vendor/stylo/prefs.rs +33 -0
  138. package/vendor/stylo/properties/build.py +119 -0
  139. package/vendor/stylo/properties/cascade.rs +2704 -0
  140. package/vendor/stylo/properties/computed_value_flags.rs +206 -0
  141. package/vendor/stylo/properties/counted_unknown_properties.py +104 -0
  142. package/vendor/stylo/properties/counter_style_descriptors.toml +45 -0
  143. package/vendor/stylo/properties/data.py +1375 -0
  144. package/vendor/stylo/properties/declaration_block.rs +1788 -0
  145. package/vendor/stylo/properties/font_face_descriptors.toml +50 -0
  146. package/vendor/stylo/properties/gecko.mako.rs +1555 -0
  147. package/vendor/stylo/properties/helpers/animated_properties.mako.rs +800 -0
  148. package/vendor/stylo/properties/helpers.mako.rs +812 -0
  149. package/vendor/stylo/properties/longhands.toml +4305 -0
  150. package/vendor/stylo/properties/mod.rs +1857 -0
  151. package/vendor/stylo/properties/properties.html.mako +31 -0
  152. package/vendor/stylo/properties/properties.mako.rs +3103 -0
  153. package/vendor/stylo/properties/property_descriptors.toml +18 -0
  154. package/vendor/stylo/properties/shorthands.rs +4241 -0
  155. package/vendor/stylo/properties/shorthands.toml +575 -0
  156. package/vendor/stylo/properties/vendored_python/mako-1.3.10-py3-none-any.whl +0 -0
  157. package/vendor/stylo/properties/vendored_python/markupsafe/LICENSE.txt +28 -0
  158. package/vendor/stylo/properties/vendored_python/markupsafe/__init__.py +384 -0
  159. package/vendor/stylo/properties/vendored_python/toml-0.10.2-py2.py3-none-any.whl +0 -0
  160. package/vendor/stylo/properties/view_transition_descriptors.toml +11 -0
  161. package/vendor/stylo/properties_and_values/mod.rs +12 -0
  162. package/vendor/stylo/properties_and_values/registry.rs +65 -0
  163. package/vendor/stylo/properties_and_values/rule.rs +331 -0
  164. package/vendor/stylo/properties_and_values/syntax/ascii.rs +60 -0
  165. package/vendor/stylo/properties_and_values/syntax/data_type.rs +146 -0
  166. package/vendor/stylo/properties_and_values/syntax/mod.rs +437 -0
  167. package/vendor/stylo/properties_and_values/value.rs +758 -0
  168. package/vendor/stylo/queries/condition.rs +996 -0
  169. package/vendor/stylo/queries/feature.rs +199 -0
  170. package/vendor/stylo/queries/feature_expression.rs +1170 -0
  171. package/vendor/stylo/queries/mod.rs +19 -0
  172. package/vendor/stylo/queries/values.rs +46 -0
  173. package/vendor/stylo/rule_cache.rs +267 -0
  174. package/vendor/stylo/rule_collector.rs +554 -0
  175. package/vendor/stylo/rule_tree/core.rs +787 -0
  176. package/vendor/stylo/rule_tree/level.rs +396 -0
  177. package/vendor/stylo/rule_tree/map.rs +201 -0
  178. package/vendor/stylo/rule_tree/mod.rs +427 -0
  179. package/vendor/stylo/rule_tree/source.rs +80 -0
  180. package/vendor/stylo/rule_tree/unsafe_box.rs +78 -0
  181. package/vendor/stylo/scoped_tls.rs +80 -0
  182. package/vendor/stylo/selector_map.rs +1050 -0
  183. package/vendor/stylo/selector_parser.rs +305 -0
  184. package/vendor/stylo/servo/animation.rs +1922 -0
  185. package/vendor/stylo/servo/attr.rs +714 -0
  186. package/vendor/stylo/servo/encoding_support.rs +81 -0
  187. package/vendor/stylo/servo/media_features.rs +254 -0
  188. package/vendor/stylo/servo/mod.rs +16 -0
  189. package/vendor/stylo/servo/restyle_damage.rs +215 -0
  190. package/vendor/stylo/servo/selector_parser.rs +1036 -0
  191. package/vendor/stylo/servo/shadow_parts.rs +207 -0
  192. package/vendor/stylo/shared_lock.rs +271 -0
  193. package/vendor/stylo/sharing/checks.rs +281 -0
  194. package/vendor/stylo/sharing/mod.rs +1000 -0
  195. package/vendor/stylo/simple_buckets_map.rs +52 -0
  196. package/vendor/stylo/str.rs +168 -0
  197. package/vendor/stylo/style_adjuster.rs +1086 -0
  198. package/vendor/stylo/style_resolver.rs +658 -0
  199. package/vendor/stylo/stylesheet_set.rs +658 -0
  200. package/vendor/stylo/stylesheets/appearance_base_rule.rs +51 -0
  201. package/vendor/stylo/stylesheets/container_rule.rs +769 -0
  202. package/vendor/stylo/stylesheets/counter_style_rule.rs +7 -0
  203. package/vendor/stylo/stylesheets/document_rule.rs +272 -0
  204. package/vendor/stylo/stylesheets/font_face_rule.rs +7 -0
  205. package/vendor/stylo/stylesheets/font_feature_values_rule.rs +481 -0
  206. package/vendor/stylo/stylesheets/font_palette_values_rule.rs +304 -0
  207. package/vendor/stylo/stylesheets/import_rule.rs +259 -0
  208. package/vendor/stylo/stylesheets/keyframes_rule.rs +733 -0
  209. package/vendor/stylo/stylesheets/layer_rule.rs +221 -0
  210. package/vendor/stylo/stylesheets/loader.rs +29 -0
  211. package/vendor/stylo/stylesheets/margin_rule.rs +190 -0
  212. package/vendor/stylo/stylesheets/media_rule.rs +191 -0
  213. package/vendor/stylo/stylesheets/mod.rs +918 -0
  214. package/vendor/stylo/stylesheets/namespace_rule.rs +43 -0
  215. package/vendor/stylo/stylesheets/nested_declarations_rule.rs +51 -0
  216. package/vendor/stylo/stylesheets/origin.rs +249 -0
  217. package/vendor/stylo/stylesheets/page_rule.rs +354 -0
  218. package/vendor/stylo/stylesheets/position_try_rule.rs +68 -0
  219. package/vendor/stylo/stylesheets/property_rule.rs +5 -0
  220. package/vendor/stylo/stylesheets/rule_list.rs +167 -0
  221. package/vendor/stylo/stylesheets/rule_parser.rs +1189 -0
  222. package/vendor/stylo/stylesheets/rules_iterator.rs +397 -0
  223. package/vendor/stylo/stylesheets/scope_rule.rs +511 -0
  224. package/vendor/stylo/stylesheets/starting_style_rule.rs +54 -0
  225. package/vendor/stylo/stylesheets/style_rule.rs +80 -0
  226. package/vendor/stylo/stylesheets/stylesheet.rs +570 -0
  227. package/vendor/stylo/stylesheets/supports_rule.rs +486 -0
  228. package/vendor/stylo/stylesheets/view_transition_rule.rs +81 -0
  229. package/vendor/stylo/stylist.rs +5076 -0
  230. package/vendor/stylo/thread_state.rs +87 -0
  231. package/vendor/stylo/traversal.rs +765 -0
  232. package/vendor/stylo/traversal_flags.rs +68 -0
  233. package/vendor/stylo/typed_om/mod.rs +981 -0
  234. package/vendor/stylo/typed_om/numeric.rs +128 -0
  235. package/vendor/stylo/typed_om/numeric_declaration.rs +93 -0
  236. package/vendor/stylo/typed_om/numeric_type.rs +640 -0
  237. package/vendor/stylo/typed_om/sum_value.rs +426 -0
  238. package/vendor/stylo/url/gecko.rs +367 -0
  239. package/vendor/stylo/url/mod.rs +71 -0
  240. package/vendor/stylo/url/servo.rs +239 -0
  241. package/vendor/stylo/use_counters/mod.rs +137 -0
  242. package/vendor/stylo/values/animated/color.rs +103 -0
  243. package/vendor/stylo/values/animated/effects.rs +26 -0
  244. package/vendor/stylo/values/animated/font.rs +37 -0
  245. package/vendor/stylo/values/animated/grid.rs +161 -0
  246. package/vendor/stylo/values/animated/lists.rs +141 -0
  247. package/vendor/stylo/values/animated/mod.rs +550 -0
  248. package/vendor/stylo/values/animated/svg.rs +46 -0
  249. package/vendor/stylo/values/animated/text.rs +58 -0
  250. package/vendor/stylo/values/animated/transform.rs +1592 -0
  251. package/vendor/stylo/values/computed/align.rs +90 -0
  252. package/vendor/stylo/values/computed/angle.rs +130 -0
  253. package/vendor/stylo/values/computed/animation.rs +124 -0
  254. package/vendor/stylo/values/computed/background.rs +13 -0
  255. package/vendor/stylo/values/computed/basic_shape.rs +267 -0
  256. package/vendor/stylo/values/computed/border.rs +163 -0
  257. package/vendor/stylo/values/computed/box.rs +267 -0
  258. package/vendor/stylo/values/computed/calc.rs +334 -0
  259. package/vendor/stylo/values/computed/color.rs +161 -0
  260. package/vendor/stylo/values/computed/column.rs +11 -0
  261. package/vendor/stylo/values/computed/corner_shape.rs +155 -0
  262. package/vendor/stylo/values/computed/counters.rs +26 -0
  263. package/vendor/stylo/values/computed/easing.rs +109 -0
  264. package/vendor/stylo/values/computed/effects.rs +30 -0
  265. package/vendor/stylo/values/computed/flex.rs +19 -0
  266. package/vendor/stylo/values/computed/font.rs +1517 -0
  267. package/vendor/stylo/values/computed/image.rs +273 -0
  268. package/vendor/stylo/values/computed/length.rs +576 -0
  269. package/vendor/stylo/values/computed/length_percentage.rs +1055 -0
  270. package/vendor/stylo/values/computed/list.rs +16 -0
  271. package/vendor/stylo/values/computed/mod.rs +1141 -0
  272. package/vendor/stylo/values/computed/motion.rs +73 -0
  273. package/vendor/stylo/values/computed/outline.rs +7 -0
  274. package/vendor/stylo/values/computed/page.rs +77 -0
  275. package/vendor/stylo/values/computed/param.rs +9 -0
  276. package/vendor/stylo/values/computed/percentage.rs +143 -0
  277. package/vendor/stylo/values/computed/position.rs +273 -0
  278. package/vendor/stylo/values/computed/ratio.rs +88 -0
  279. package/vendor/stylo/values/computed/rect.rs +19 -0
  280. package/vendor/stylo/values/computed/resolution.rs +76 -0
  281. package/vendor/stylo/values/computed/svg.rs +66 -0
  282. package/vendor/stylo/values/computed/table.rs +7 -0
  283. package/vendor/stylo/values/computed/text.rs +199 -0
  284. package/vendor/stylo/values/computed/time.rs +83 -0
  285. package/vendor/stylo/values/computed/transform.rs +559 -0
  286. package/vendor/stylo/values/computed/tree_counting.rs +30 -0
  287. package/vendor/stylo/values/computed/ui.rs +23 -0
  288. package/vendor/stylo/values/computed/url.rs +12 -0
  289. package/vendor/stylo/values/distance.rs +139 -0
  290. package/vendor/stylo/values/generics/animation.rs +363 -0
  291. package/vendor/stylo/values/generics/background.rs +65 -0
  292. package/vendor/stylo/values/generics/basic_shape.rs +1389 -0
  293. package/vendor/stylo/values/generics/border.rs +303 -0
  294. package/vendor/stylo/values/generics/box.rs +552 -0
  295. package/vendor/stylo/values/generics/calc.rs +2986 -0
  296. package/vendor/stylo/values/generics/color.rs +318 -0
  297. package/vendor/stylo/values/generics/column.rs +44 -0
  298. package/vendor/stylo/values/generics/counters.rs +320 -0
  299. package/vendor/stylo/values/generics/easing.rs +132 -0
  300. package/vendor/stylo/values/generics/effects.rs +131 -0
  301. package/vendor/stylo/values/generics/flex.rs +34 -0
  302. package/vendor/stylo/values/generics/font.rs +376 -0
  303. package/vendor/stylo/values/generics/grid.rs +962 -0
  304. package/vendor/stylo/values/generics/image.rs +653 -0
  305. package/vendor/stylo/values/generics/length.rs +656 -0
  306. package/vendor/stylo/values/generics/mod.rs +303 -0
  307. package/vendor/stylo/values/generics/motion.rs +274 -0
  308. package/vendor/stylo/values/generics/page.rs +167 -0
  309. package/vendor/stylo/values/generics/position.rs +669 -0
  310. package/vendor/stylo/values/generics/ratio.rs +88 -0
  311. package/vendor/stylo/values/generics/rect.rs +147 -0
  312. package/vendor/stylo/values/generics/size.rs +102 -0
  313. package/vendor/stylo/values/generics/svg.rs +226 -0
  314. package/vendor/stylo/values/generics/text.rs +268 -0
  315. package/vendor/stylo/values/generics/transform.rs +1157 -0
  316. package/vendor/stylo/values/generics/ui.rs +147 -0
  317. package/vendor/stylo/values/generics/url.rs +51 -0
  318. package/vendor/stylo/values/mod.rs +820 -0
  319. package/vendor/stylo/values/resolved/animation.rs +33 -0
  320. package/vendor/stylo/values/resolved/color.rs +53 -0
  321. package/vendor/stylo/values/resolved/counters.rs +45 -0
  322. package/vendor/stylo/values/resolved/mod.rs +316 -0
  323. package/vendor/stylo/values/specified/align.rs +711 -0
  324. package/vendor/stylo/values/specified/angle.rs +407 -0
  325. package/vendor/stylo/values/specified/animation.rs +921 -0
  326. package/vendor/stylo/values/specified/background.rs +270 -0
  327. package/vendor/stylo/values/specified/basic_shape.rs +986 -0
  328. package/vendor/stylo/values/specified/border.rs +430 -0
  329. package/vendor/stylo/values/specified/box.rs +2231 -0
  330. package/vendor/stylo/values/specified/calc.rs +1657 -0
  331. package/vendor/stylo/values/specified/color.rs +1210 -0
  332. package/vendor/stylo/values/specified/column.rs +11 -0
  333. package/vendor/stylo/values/specified/corner_shape.rs +152 -0
  334. package/vendor/stylo/values/specified/counters.rs +242 -0
  335. package/vendor/stylo/values/specified/easing.rs +225 -0
  336. package/vendor/stylo/values/specified/effects.rs +421 -0
  337. package/vendor/stylo/values/specified/flex.rs +42 -0
  338. package/vendor/stylo/values/specified/font.rs +2103 -0
  339. package/vendor/stylo/values/specified/frequency.rs +39 -0
  340. package/vendor/stylo/values/specified/grid.rs +407 -0
  341. package/vendor/stylo/values/specified/image.rs +1385 -0
  342. package/vendor/stylo/values/specified/intersection_observer.rs +80 -0
  343. package/vendor/stylo/values/specified/length.rs +2024 -0
  344. package/vendor/stylo/values/specified/list.rs +190 -0
  345. package/vendor/stylo/values/specified/mod.rs +531 -0
  346. package/vendor/stylo/values/specified/motion.rs +316 -0
  347. package/vendor/stylo/values/specified/number.rs +603 -0
  348. package/vendor/stylo/values/specified/outline.rs +69 -0
  349. package/vendor/stylo/values/specified/page.rs +94 -0
  350. package/vendor/stylo/values/specified/param.rs +121 -0
  351. package/vendor/stylo/values/specified/percentage.rs +364 -0
  352. package/vendor/stylo/values/specified/position.rs +2247 -0
  353. package/vendor/stylo/values/specified/ratio.rs +29 -0
  354. package/vendor/stylo/values/specified/rect.rs +28 -0
  355. package/vendor/stylo/values/specified/resolution.rs +237 -0
  356. package/vendor/stylo/values/specified/source_size_list.rs +135 -0
  357. package/vendor/stylo/values/specified/svg.rs +427 -0
  358. package/vendor/stylo/values/specified/svg_path.rs +1115 -0
  359. package/vendor/stylo/values/specified/table.rs +38 -0
  360. package/vendor/stylo/values/specified/text.rs +1561 -0
  361. package/vendor/stylo/values/specified/time.rs +313 -0
  362. package/vendor/stylo/values/specified/transform.rs +599 -0
  363. package/vendor/stylo/values/specified/tree_counting.rs +32 -0
  364. package/vendor/stylo/values/specified/ui.rs +344 -0
  365. package/vendor/stylo/values/specified/url.rs +12 -0
  366. package/vendor/stylo/values/tagged_numeric.rs +253 -0
  367. package/wasm/blitz_pdf.d.ts +67 -0
  368. package/wasm/blitz_pdf.js +699 -0
  369. package/wasm/blitz_pdf_bg.wasm +0 -0
  370. package/wasm/blitz_pdf_bg.wasm.d.ts +20 -0
@@ -0,0 +1,396 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+
5
+ #![forbid(unsafe_code)]
6
+
7
+ //! The cascade level and shadow cascade order for tracking shadow tree rules.
8
+
9
+ use crate::derives::*;
10
+ use crate::dom::{TElement, TNode, TShadowRoot};
11
+ use crate::properties::Importance;
12
+ use crate::shared_lock::{SharedRwLockReadGuard, StylesheetGuards};
13
+ use crate::stylesheets::Origin;
14
+
15
+ use std::cmp::{Ord, Ordering, PartialOrd};
16
+
17
+ /// The cascade level these rules are relevant at, as per[1][2][3].
18
+ ///
19
+ /// We store them as a bitfield with:
20
+ ///
21
+ /// * Shadow cascade order (4 bits). See ShadowCascadeOrder for details.
22
+ /// * Importance bit. Whether the declaration was !important or not.
23
+ /// * The CascadeOrigin of the declaration as per [1].
24
+ ///
25
+ /// Presentational hints for SVG and HTML are in the "author-level zero-specificity" level, that
26
+ /// is, right after user rules, and before author rules.
27
+ ///
28
+ /// See also [4] for the Shadow DOM bits. We rely on the invariant that rules
29
+ /// from outside the tree the element is in can't affect the element.
30
+ ///
31
+ /// The opposite is not true (i.e., :host and ::slotted) from an "inner" shadow tree may affect an
32
+ /// element connected to the document or an "outer" shadow tree.
33
+ ///
34
+ /// [1]: https://drafts.csswg.org/css-cascade/#cascade-origin
35
+ /// [2]: https://drafts.csswg.org/css-cascade/#preshint
36
+ /// [3]: https://html.spec.whatwg.org/multipage/#presentational-hints
37
+ /// [4]: https://drafts.csswg.org/css-scoping/#shadow-cascading
38
+ #[repr(C)]
39
+ #[derive(
40
+ Clone,
41
+ Copy,
42
+ Debug,
43
+ Eq,
44
+ Hash,
45
+ PartialEq,
46
+ Serialize,
47
+ Deserialize,
48
+ ToAnimatedValue,
49
+ ToResolvedValue,
50
+ ToShmem,
51
+ )]
52
+ pub struct CascadeLevel(u8);
53
+ bitflags! {
54
+ impl CascadeLevel: u8 {
55
+ /// The three bits that represent the CascadeOrigin.
56
+ const ORIGIN_BITS = 0b00000111;
57
+ /// Whether the declarations are `!important` or not.
58
+ const IMPORTANT = 1 << 3;
59
+ /// The three bits for cascade order absolute value. If you change this, please change
60
+ /// CASCADE_ORDER_SHIFT accordingly.
61
+ const CASCADE_ORDER_BITS = 0b01110000;
62
+ /// The bit for the sign.
63
+ const CASCADE_ORDER_SIGN = 1 << 7;
64
+ }
65
+ }
66
+
67
+ malloc_size_of::malloc_size_of_is_0!(CascadeLevel);
68
+
69
+ /// The cascade origin of rules.
70
+ ///
71
+ /// Presentational hints for SVG and HTML are in the "author-level zero-specificity" level, that
72
+ /// is, right after user rules, and before author rules.
73
+ ///
74
+ /// The order of variants declared here is significant, and must be in _ascending_ order of
75
+ /// precedence.
76
+ ///
77
+ /// [1]: https://drafts.csswg.org/css-cascade/#cascade-origin
78
+ /// [2]: https://drafts.csswg.org/css-cascade/#cascade-origin
79
+ #[derive(
80
+ Clone,
81
+ Copy,
82
+ Debug,
83
+ Deserialize,
84
+ Eq,
85
+ FromPrimitive,
86
+ Hash,
87
+ MallocSizeOf,
88
+ Ord,
89
+ PartialEq,
90
+ PartialOrd,
91
+ Serialize,
92
+ ToAnimatedValue,
93
+ ToResolvedValue,
94
+ ToShmem,
95
+ )]
96
+ #[repr(u8)]
97
+ pub enum CascadeOrigin {
98
+ /// Normal User-Agent rules.
99
+ UA = 0,
100
+ /// User normal rules.
101
+ User,
102
+ /// Presentational hints.
103
+ PresHints,
104
+ /// Styles from author styles.
105
+ Author,
106
+ /// https://drafts.csswg.org/css-anchor-position-1/#position-fallback-origin
107
+ PositionFallback,
108
+ /// SVG SMIL animations.
109
+ SMILOverride,
110
+ /// CSS animations and script-generated animations.
111
+ Animations,
112
+ /// CSS Transitions
113
+ Transitions,
114
+ }
115
+
116
+ impl CascadeOrigin {
117
+ /// Returns the "simplified" origin.
118
+ #[inline]
119
+ pub fn origin(self) -> Origin {
120
+ match self {
121
+ Self::UA => Origin::UserAgent,
122
+ Self::User => Origin::User,
123
+ _ => Origin::Author,
124
+ }
125
+ }
126
+
127
+ /// Returns whether this is an "author" origin (in the "simplified" sense of the word).
128
+ #[inline]
129
+ pub fn is_author_origin(self) -> bool {
130
+ self > Self::User
131
+ }
132
+
133
+ /// Select a lock guard for this origin.
134
+ #[inline]
135
+ pub fn guard<'a>(&self, guards: &'a StylesheetGuards<'a>) -> &'a SharedRwLockReadGuard<'a> {
136
+ match *self {
137
+ Self::UA | Self::User => guards.ua_or_user,
138
+ _ => guards.author,
139
+ }
140
+ }
141
+ }
142
+
143
+ impl Ord for CascadeLevel {
144
+ fn cmp(&self, other: &Self) -> Ordering {
145
+ let self_important = self.is_important();
146
+ if self_important != other.is_important() {
147
+ return if self_important {
148
+ if other.origin() == CascadeOrigin::Transitions {
149
+ // Transitions override all important rules.
150
+ return Ordering::Less;
151
+ }
152
+ Ordering::Greater
153
+ } else {
154
+ if self.origin() == CascadeOrigin::Transitions {
155
+ return Ordering::Greater;
156
+ }
157
+ Ordering::Less
158
+ };
159
+ }
160
+ let origin_cmp = self
161
+ .origin()
162
+ .cmp(&other.origin())
163
+ .then_with(|| self.shadow_order().cmp(&other.shadow_order()));
164
+ if self_important {
165
+ origin_cmp.reverse()
166
+ } else {
167
+ origin_cmp
168
+ }
169
+ }
170
+ }
171
+
172
+ impl PartialOrd for CascadeLevel {
173
+ fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
174
+ Some(self.cmp(other))
175
+ }
176
+ }
177
+
178
+ impl CascadeLevel {
179
+ /// The shift that we apply to the cascade order.
180
+ pub const CASCADE_ORDER_SHIFT: usize = 4;
181
+ /// The author level at the same tree. Here for convenience to avoid duplicating it from C++.
182
+ pub const SAME_TREE_AUTHOR_NORMAL: Self = Self(CascadeOrigin::Author as u8);
183
+
184
+ /// Returns a cascade level with a given origin.
185
+ pub fn new(origin: CascadeOrigin) -> Self {
186
+ let bits = origin as u8;
187
+ debug_assert_eq!(bits & Self::ORIGIN_BITS.bits(), bits);
188
+ Self(bits)
189
+ }
190
+
191
+ /// Returns the cascade origin.
192
+ #[inline]
193
+ pub fn origin(self) -> CascadeOrigin {
194
+ use num_traits::FromPrimitive;
195
+ let origin = (self & Self::ORIGIN_BITS).bits();
196
+ CascadeOrigin::from_u8(origin).unwrap()
197
+ }
198
+
199
+ /// Convert this level from "unimportant" to "important".
200
+ pub fn important(self) -> Self {
201
+ debug_assert!(
202
+ matches!(
203
+ self.origin(),
204
+ CascadeOrigin::UA | CascadeOrigin::User | CascadeOrigin::Author
205
+ ),
206
+ "{self:?}"
207
+ );
208
+ let mut result = self;
209
+ result.insert(Self::IMPORTANT);
210
+ result
211
+ }
212
+
213
+ /// Convert this level from "important" to "non-important".
214
+ pub fn unimportant(self) -> Self {
215
+ let mut result = self;
216
+ result.remove(Self::IMPORTANT);
217
+ result
218
+ }
219
+
220
+ /// Select a lock guard for this level
221
+ #[inline]
222
+ pub fn guard<'a>(&self, guards: &'a StylesheetGuards<'a>) -> &'a SharedRwLockReadGuard<'a> {
223
+ self.origin().guard(guards)
224
+ }
225
+
226
+ /// Returns the cascade level for author important declarations from the
227
+ /// same tree as the element.
228
+ #[inline]
229
+ pub fn same_tree_author_important() -> Self {
230
+ Self::new(CascadeOrigin::Author).important()
231
+ }
232
+
233
+ /// Returns the cascade level for author normal declarations from the same
234
+ /// tree as the element.
235
+ #[inline]
236
+ pub fn same_tree_author_normal() -> Self {
237
+ Self::new(CascadeOrigin::Author)
238
+ }
239
+
240
+ /// Returns whether this cascade level represents important rules of some
241
+ /// sort.
242
+ #[inline]
243
+ pub fn is_important(&self) -> bool {
244
+ self.intersects(Self::IMPORTANT)
245
+ }
246
+
247
+ /// Returns the importance relevant for this rule. Pretty similar to
248
+ /// `is_important`.
249
+ #[inline]
250
+ pub fn importance(&self) -> Importance {
251
+ if self.is_important() {
252
+ Importance::Important
253
+ } else {
254
+ Importance::Normal
255
+ }
256
+ }
257
+
258
+ /// Returns whether this cascade level represents an animation rules.
259
+ #[inline]
260
+ pub fn is_animation(&self) -> bool {
261
+ match self.origin() {
262
+ CascadeOrigin::SMILOverride
263
+ | CascadeOrigin::Animations
264
+ | CascadeOrigin::Transitions => true,
265
+ _ => false,
266
+ }
267
+ }
268
+
269
+ /// Returns whether this cascade level is tree.
270
+ #[inline]
271
+ pub fn is_tree(self) -> bool {
272
+ self.origin() == CascadeOrigin::Author
273
+ }
274
+
275
+ /// Returns the shadow tree order.
276
+ #[inline]
277
+ pub fn shadow_order(self) -> ShadowCascadeOrder {
278
+ let neg = self.intersects(Self::CASCADE_ORDER_SIGN);
279
+ let abs = (self & Self::CASCADE_ORDER_BITS).bits() >> Self::CASCADE_ORDER_SHIFT;
280
+ ShadowCascadeOrder(if neg { -(abs as i8) } else { abs as i8 })
281
+ }
282
+
283
+ /// Returns an author normal cascade level with the given shadow cascade order.
284
+ #[inline]
285
+ pub fn author_normal(shadow_cascade_order: ShadowCascadeOrder) -> Self {
286
+ let abs = shadow_cascade_order.0.unsigned_abs() << Self::CASCADE_ORDER_SHIFT;
287
+ let mut result = Self::new(CascadeOrigin::Author);
288
+ result |= Self::from_bits_truncate(abs);
289
+ result.set(Self::CASCADE_ORDER_SIGN, shadow_cascade_order.0 < 0);
290
+ result
291
+ }
292
+
293
+ /// Get the shadow root corresponding to the shadow cascade order, from the given element.
294
+ pub fn get_shadow_root_for_scoped<E: TElement>(
295
+ &self,
296
+ element: E,
297
+ ) -> Option<<<E as TElement>::ConcreteNode as TNode>::ConcreteShadowRoot> {
298
+ let mut cascade_order = self.shadow_order().0;
299
+ if cascade_order < 0 {
300
+ let element = element.ultimate_originating_element();
301
+ let mut slot = element.assigned_slot();
302
+ while let Some(s) = slot {
303
+ cascade_order += 1;
304
+ if cascade_order == 0 {
305
+ return s.containing_shadow();
306
+ }
307
+ slot = s.assigned_slot();
308
+ }
309
+ if cascade_order != -1 {
310
+ return None;
311
+ }
312
+
313
+ return element.shadow_root();
314
+ }
315
+ debug_assert!(cascade_order >= 0);
316
+ let mut containing_shadow = element.containing_shadow();
317
+ while let Some(s) = containing_shadow {
318
+ if cascade_order == 0 {
319
+ break;
320
+ }
321
+ cascade_order -= 1;
322
+ containing_shadow = s.host().containing_shadow();
323
+ }
324
+ containing_shadow
325
+ }
326
+ }
327
+
328
+ /// A counter to track how many shadow root rules deep we are. This is used to
329
+ /// handle:
330
+ ///
331
+ /// https://drafts.csswg.org/css-scoping/#shadow-cascading
332
+ ///
333
+ /// See the static functions for the meaning of different values.
334
+ #[derive(Clone, Copy, Debug, Eq, Hash, MallocSizeOf, Ord, PartialEq, PartialOrd)]
335
+ #[repr(transparent)]
336
+ pub struct ShadowCascadeOrder(i8);
337
+
338
+ impl ShadowCascadeOrder {
339
+ /// We keep a maximum of 3 bits of order as a limit so that we can pack CascadeLevel in 1 byte.
340
+ const MAX: i8 = 0b111;
341
+ const MIN: i8 = -Self::MAX;
342
+
343
+ /// A level for the outermost shadow tree (the shadow tree we own, and the
344
+ /// ones from the slots we're slotted in).
345
+ #[inline]
346
+ pub fn for_outermost_shadow_tree() -> Self {
347
+ Self(-1)
348
+ }
349
+
350
+ /// A level for the element's tree.
351
+ #[inline]
352
+ pub fn for_same_tree() -> Self {
353
+ Self(0)
354
+ }
355
+
356
+ /// A level for the innermost containing tree (the one closest to the
357
+ /// element).
358
+ #[inline]
359
+ pub fn for_innermost_containing_tree() -> Self {
360
+ Self(1)
361
+ }
362
+
363
+ /// Returns true if the level is in the same or a containing shadow tree.
364
+ #[inline]
365
+ pub fn is_in_same_or_containing_tree(&self) -> bool {
366
+ self.0 > 0
367
+ }
368
+
369
+ /// Decrement the level, moving inwards. We should only move inwards if
370
+ /// we're traversing slots.
371
+ #[inline]
372
+ pub fn dec(&mut self) {
373
+ debug_assert!(self.0 < 0);
374
+ if self.0 != Self::MIN {
375
+ self.0 -= 1;
376
+ }
377
+ }
378
+
379
+ /// The level, moving inwards. We should only move inwards if we're
380
+ /// traversing slots.
381
+ #[inline]
382
+ pub fn inc(&mut self) {
383
+ debug_assert_ne!(self.0, -1);
384
+ if self.0 != Self::MAX {
385
+ self.0 += 1;
386
+ }
387
+ }
388
+ }
389
+
390
+ impl std::ops::Neg for ShadowCascadeOrder {
391
+ type Output = Self;
392
+ #[inline]
393
+ fn neg(self) -> Self {
394
+ Self(self.0.neg())
395
+ }
396
+ }
@@ -0,0 +1,201 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+
5
+ #![forbid(unsafe_code)]
6
+
7
+ use malloc_size_of::{MallocShallowSizeOf, MallocSizeOfOps};
8
+ use rustc_hash::FxHashMap;
9
+ use std::collections::hash_map;
10
+ use std::hash::Hash;
11
+ use std::mem;
12
+
13
+ pub(super) struct Map<K, V> {
14
+ inner: MapInner<K, V>,
15
+ }
16
+
17
+ enum MapInner<K, V> {
18
+ Empty,
19
+ One(V),
20
+ Map(Box<FxHashMap<K, V>>),
21
+ }
22
+
23
+ pub(super) struct MapIter<'a, K, V> {
24
+ inner: MapIterInner<'a, K, V>,
25
+ }
26
+
27
+ enum MapIterInner<'a, K, V> {
28
+ One(std::option::IntoIter<&'a V>),
29
+ Map(std::collections::hash_map::Values<'a, K, V>),
30
+ }
31
+
32
+ pub(super) enum Entry<'a, K, V> {
33
+ Occupied(&'a mut V),
34
+ Vacant(VacantEntry<'a, K, V>),
35
+ }
36
+
37
+ pub(super) struct VacantEntry<'a, K, V> {
38
+ inner: VacantEntryInner<'a, K, V>,
39
+ }
40
+
41
+ enum VacantEntryInner<'a, K, V> {
42
+ One(&'a mut MapInner<K, V>),
43
+ Map(hash_map::VacantEntry<'a, K, V>),
44
+ }
45
+
46
+ impl<K, V> Default for Map<K, V> {
47
+ fn default() -> Self {
48
+ Map {
49
+ inner: MapInner::Empty,
50
+ }
51
+ }
52
+ }
53
+
54
+ impl<'a, K, V> IntoIterator for &'a Map<K, V> {
55
+ type Item = &'a V;
56
+ type IntoIter = MapIter<'a, K, V>;
57
+
58
+ fn into_iter(self) -> Self::IntoIter {
59
+ MapIter {
60
+ inner: match &self.inner {
61
+ MapInner::Empty => MapIterInner::One(None.into_iter()),
62
+ MapInner::One(one) => MapIterInner::One(Some(one).into_iter()),
63
+ MapInner::Map(map) => MapIterInner::Map(map.values()),
64
+ },
65
+ }
66
+ }
67
+ }
68
+
69
+ impl<'a, K, V> Iterator for MapIter<'a, K, V> {
70
+ type Item = &'a V;
71
+
72
+ fn next(&mut self) -> Option<Self::Item> {
73
+ match &mut self.inner {
74
+ MapIterInner::One(one_iter) => one_iter.next(),
75
+ MapIterInner::Map(map_iter) => map_iter.next(),
76
+ }
77
+ }
78
+ }
79
+
80
+ impl<K, V> Map<K, V>
81
+ where
82
+ K: Eq + Hash,
83
+ {
84
+ pub(super) fn is_empty(&self) -> bool {
85
+ match &self.inner {
86
+ MapInner::Empty => true,
87
+ MapInner::One(_) => false,
88
+ MapInner::Map(map) => map.is_empty(),
89
+ }
90
+ }
91
+
92
+ #[cfg(debug_assertions)]
93
+ pub(super) fn len(&self) -> usize {
94
+ match &self.inner {
95
+ MapInner::Empty => 0,
96
+ MapInner::One(_) => 1,
97
+ MapInner::Map(map) => map.len(),
98
+ }
99
+ }
100
+
101
+ pub(super) fn get(&self, key: &K, key_from_value: impl FnOnce(&V) -> K) -> Option<&V> {
102
+ match &self.inner {
103
+ MapInner::One(one) if *key == key_from_value(one) => Some(one),
104
+ MapInner::Map(map) => map.get(key),
105
+ MapInner::Empty | MapInner::One(_) => None,
106
+ }
107
+ }
108
+
109
+ pub(super) fn entry(
110
+ &mut self,
111
+ key: K,
112
+ key_from_value: impl FnOnce(&V) -> K,
113
+ ) -> Entry<'_, K, V> {
114
+ match self.inner {
115
+ ref mut inner @ MapInner::Empty => Entry::Vacant(VacantEntry {
116
+ inner: VacantEntryInner::One(inner),
117
+ }),
118
+ MapInner::One(_) => {
119
+ let one = match mem::replace(&mut self.inner, MapInner::Empty) {
120
+ MapInner::One(one) => one,
121
+ _ => unreachable!(),
122
+ };
123
+ // If this panics, the child `one` will be lost.
124
+ let one_key = key_from_value(&one);
125
+ // Same for the equality test.
126
+ if key == one_key {
127
+ self.inner = MapInner::One(one);
128
+ let one = match &mut self.inner {
129
+ MapInner::One(one) => one,
130
+ _ => unreachable!(),
131
+ };
132
+ return Entry::Occupied(one);
133
+ }
134
+ self.inner = MapInner::Map(Box::new(FxHashMap::with_capacity_and_hasher(
135
+ 2,
136
+ Default::default(),
137
+ )));
138
+ let map = match &mut self.inner {
139
+ MapInner::Map(map) => map,
140
+ _ => unreachable!(),
141
+ };
142
+ map.insert(one_key, one);
143
+ match map.entry(key) {
144
+ hash_map::Entry::Vacant(entry) => Entry::Vacant(VacantEntry {
145
+ inner: VacantEntryInner::Map(entry),
146
+ }),
147
+ _ => unreachable!(),
148
+ }
149
+ },
150
+ MapInner::Map(ref mut map) => match map.entry(key) {
151
+ hash_map::Entry::Occupied(entry) => Entry::Occupied(entry.into_mut()),
152
+ hash_map::Entry::Vacant(entry) => Entry::Vacant(VacantEntry {
153
+ inner: VacantEntryInner::Map(entry),
154
+ }),
155
+ },
156
+ }
157
+ }
158
+
159
+ pub(super) fn remove(&mut self, key: &K, key_from_value: impl FnOnce(&V) -> K) -> Option<V> {
160
+ match &mut self.inner {
161
+ MapInner::One(one) if *key == key_from_value(one) => {
162
+ match mem::replace(&mut self.inner, MapInner::Empty) {
163
+ MapInner::One(one) => Some(one),
164
+ _ => unreachable!(),
165
+ }
166
+ },
167
+ MapInner::Map(map) => map.remove(key),
168
+ MapInner::Empty | MapInner::One(_) => None,
169
+ }
170
+ }
171
+ }
172
+
173
+ impl<'a, K, V> VacantEntry<'a, K, V> {
174
+ pub(super) fn insert(self, value: V) -> &'a mut V {
175
+ match self.inner {
176
+ VacantEntryInner::One(map) => {
177
+ *map = MapInner::One(value);
178
+ match map {
179
+ MapInner::One(one) => one,
180
+ _ => unreachable!(),
181
+ }
182
+ },
183
+ VacantEntryInner::Map(entry) => entry.insert(value),
184
+ }
185
+ }
186
+ }
187
+
188
+ impl<K, V> MallocShallowSizeOf for Map<K, V>
189
+ where
190
+ K: Eq + Hash,
191
+ {
192
+ fn shallow_size_of(&self, ops: &mut MallocSizeOfOps) -> usize {
193
+ match &self.inner {
194
+ MapInner::Map(m) => {
195
+ // We want to account for both the box and the hashmap.
196
+ m.shallow_size_of(ops) + (**m).shallow_size_of(ops)
197
+ },
198
+ MapInner::One(_) | MapInner::Empty => 0,
199
+ }
200
+ }
201
+ }