blitz-pdf 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (370) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +355 -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,305 @@
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
+ //! The pseudo-classes and pseudo-elements supported by the style system.
6
+
7
+ #![deny(missing_docs)]
8
+
9
+ use crate::derives::*;
10
+ use crate::stylesheets::{Namespaces, Origin, UrlExtraData};
11
+ use crate::values::serialize_atom_identifier;
12
+ use crate::Atom;
13
+ use cssparser::{match_ignore_ascii_case, Parser as CssParser};
14
+ use dom::ElementState;
15
+ use selectors::parser::{ParseRelative, SelectorList};
16
+ use std::fmt::{self, Debug, Write};
17
+ use style_traits::{CssWriter, ParseError, ToCss};
18
+
19
+ /// A convenient alias for the type that represents an attribute value used for
20
+ /// selector parser implementation.
21
+ pub type AttrValue = <SelectorImpl as ::selectors::SelectorImpl>::AttrValue;
22
+
23
+ #[cfg(feature = "servo")]
24
+ pub use crate::servo::selector_parser::*;
25
+
26
+ #[cfg(feature = "gecko")]
27
+ pub use crate::gecko::selector_parser::*;
28
+
29
+ #[cfg(feature = "servo")]
30
+ pub use crate::servo::selector_parser::ServoElementSnapshot as Snapshot;
31
+
32
+ #[cfg(feature = "gecko")]
33
+ pub use crate::gecko::snapshot::GeckoElementSnapshot as Snapshot;
34
+
35
+ #[cfg(feature = "servo")]
36
+ pub use crate::servo::restyle_damage::ServoRestyleDamage as RestyleDamage;
37
+
38
+ #[cfg(feature = "gecko")]
39
+ pub use crate::gecko::restyle_damage::GeckoRestyleDamage as RestyleDamage;
40
+
41
+ /// Servo's selector parser.
42
+ #[derive(MallocSizeOf)]
43
+ pub struct SelectorParser<'a> {
44
+ /// The origin of the stylesheet we're parsing.
45
+ pub stylesheet_origin: Origin,
46
+ /// The namespace set of the stylesheet.
47
+ pub namespaces: &'a Namespaces,
48
+ /// The extra URL data of the stylesheet, which is used to look up
49
+ /// whether we are parsing a chrome:// URL style sheet.
50
+ pub url_data: &'a UrlExtraData,
51
+ /// Whether we're parsing selectors for `@supports`
52
+ pub for_supports_rule: bool,
53
+ }
54
+
55
+ impl<'a> SelectorParser<'a> {
56
+ /// Parse a selector list with an author origin and without taking into
57
+ /// account namespaces.
58
+ ///
59
+ /// This is used for some DOM APIs like `querySelector`.
60
+ pub fn parse_author_origin_no_namespace(
61
+ input: &str,
62
+ url_data: &UrlExtraData,
63
+ ) -> Result<SelectorList<SelectorImpl>, ParseError> {
64
+ let namespaces = Namespaces::default();
65
+ let parser = SelectorParser {
66
+ stylesheet_origin: Origin::Author,
67
+ namespaces: &namespaces,
68
+ url_data,
69
+ for_supports_rule: false,
70
+ };
71
+ SelectorList::parse(&parser, &mut CssParser::new(input), ParseRelative::No)
72
+ }
73
+
74
+ /// Whether we're parsing selectors in a user-agent stylesheet.
75
+ pub fn in_user_agent_stylesheet(&self) -> bool {
76
+ matches!(self.stylesheet_origin, Origin::UserAgent)
77
+ }
78
+
79
+ /// Whether we're parsing selectors in a stylesheet that has chrome
80
+ /// privilege.
81
+ pub fn chrome_rules_enabled(&self) -> bool {
82
+ self.url_data.chrome_rules_enabled() || self.stylesheet_origin == Origin::User
83
+ }
84
+ }
85
+
86
+ /// This enumeration determines how a pseudo-element cascades.
87
+ #[derive(Clone, Debug, Eq, PartialEq)]
88
+ pub enum PseudoElementCascadeType {
89
+ /// Eagerly cascaded pseudo-elements are "normal" pseudo-elements (i.e.
90
+ /// `::before` and `::after`). They inherit styles normally as another
91
+ /// selector would do, and they're computed as part of the cascade.
92
+ ///
93
+ /// These kind of pseudo-elements require more up-front computation and
94
+ /// storage and thus should used for public pseudo-elements that can be used
95
+ /// on many element types (such as `::before` and `::after`).
96
+ Eager,
97
+ /// Lazy pseudo-elements are affected by selector matching, but they're only
98
+ /// computed when needed, and not before. They're useful for general
99
+ /// pseudo-elements that are not very common or that do not apply to many
100
+ /// elements. For instance in Servo this is used for `::backdrop` and
101
+ /// `::marker`.
102
+ Lazy,
103
+ /// Precomputed pseudo-elements skip the cascade process entirely, mostly as
104
+ /// an optimisation since they are private pseudo-elements (like
105
+ /// `::-servo-details-content`).
106
+ ///
107
+ /// This pseudo-elements are resolved on the fly using *only* global rules
108
+ /// (rules of the form `*|*`), and applying them to the parent style so are
109
+ /// mainly useful for user-agent stylesheets.
110
+ Precomputed,
111
+ }
112
+
113
+ /// A per-pseudo map, from a given pseudo to a `T`.
114
+ #[derive(Clone, MallocSizeOf)]
115
+ pub struct PerPseudoElementMap<T> {
116
+ sparse: [i8; PSEUDO_COUNT],
117
+ dense: Vec<T>,
118
+ }
119
+
120
+ impl<T> Default for PerPseudoElementMap<T> {
121
+ fn default() -> Self {
122
+ Self {
123
+ dense: Vec::new(),
124
+ sparse: [const { -1 }; PSEUDO_COUNT],
125
+ }
126
+ }
127
+ }
128
+
129
+ impl<T> Debug for PerPseudoElementMap<T>
130
+ where
131
+ T: Debug,
132
+ {
133
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
134
+ f.write_char('[')?;
135
+ for idx in 0..=PSEUDO_COUNT {
136
+ if idx > 0 {
137
+ f.write_str(", ")?;
138
+ }
139
+ debug_assert!(self.sparse.get(idx).is_some());
140
+ let i = self.sparse[idx];
141
+ if i < 0 {
142
+ None::<T>.fmt(f)?;
143
+ } else {
144
+ Some(&self.dense[i as usize]).fmt(f)?;
145
+ }
146
+ }
147
+ f.write_char(']')
148
+ }
149
+ }
150
+
151
+ impl<T> PerPseudoElementMap<T> {
152
+ /// Get an entry in the map.
153
+ pub fn get(&self, pseudo: &PseudoElement) -> Option<&T> {
154
+ let idx = pseudo.index();
155
+ debug_assert!(self.sparse.get(idx).is_some());
156
+ let i = self.sparse[idx];
157
+ if i < 0 {
158
+ None
159
+ } else {
160
+ Some(&self.dense[i as usize])
161
+ }
162
+ }
163
+
164
+ /// Clear this enumerated array.
165
+ pub fn clear(&mut self) {
166
+ self.dense.clear();
167
+ self.sparse.fill(-1);
168
+ }
169
+
170
+ /// Set an entry value.
171
+ ///
172
+ /// Returns an error if the element is not a simple pseudo.
173
+ pub fn set(&mut self, pseudo: &PseudoElement, value: T) {
174
+ let idx = pseudo.index();
175
+ let i = self.sparse[idx];
176
+ if i < 0 {
177
+ let i = self.dense.len() as i8;
178
+ self.dense.push(value);
179
+ self.sparse[idx] = i
180
+ } else {
181
+ self.dense[i as usize] = value
182
+ }
183
+ }
184
+
185
+ /// Get an entry for `pseudo`, or create it with calling `f`.
186
+ pub fn get_or_insert_with<F>(&mut self, pseudo: &PseudoElement, f: F) -> &mut T
187
+ where
188
+ F: FnOnce() -> T,
189
+ {
190
+ let idx = pseudo.index();
191
+ let mut i = self.sparse[idx];
192
+ if i < 0 {
193
+ i = self.dense.len() as i8;
194
+ debug_assert!(self.dense.len() < PSEUDO_COUNT);
195
+ self.dense.push(f());
196
+ self.sparse[idx] = i;
197
+ }
198
+ debug_assert!(self.dense.get(i as usize).is_some());
199
+ &mut self.dense[i as usize]
200
+ }
201
+
202
+ /// Get an iterator for the entries.
203
+ pub fn iter(&self) -> impl Iterator<Item = &T> {
204
+ self.dense.iter()
205
+ }
206
+
207
+ /// Get a mutable iterator for the entries.
208
+ pub fn iter_mut(&mut self) -> impl Iterator<Item = &mut T> {
209
+ self.dense.iter_mut()
210
+ }
211
+ }
212
+
213
+ /// Values for the :dir() pseudo class
214
+ ///
215
+ /// "ltr" and "rtl" values are normalized to lowercase.
216
+ #[derive(Clone, Debug, Eq, MallocSizeOf, PartialEq, ToShmem)]
217
+ pub struct Direction(pub Atom);
218
+
219
+ /// Horizontal values for the :dir() pseudo class
220
+ #[derive(Clone, Debug, Eq, PartialEq)]
221
+ pub enum HorizontalDirection {
222
+ /// :dir(ltr)
223
+ Ltr,
224
+ /// :dir(rtl)
225
+ Rtl,
226
+ }
227
+
228
+ impl Direction {
229
+ /// Parse a direction value.
230
+ pub fn parse(parser: &mut CssParser) -> Result<Self, ParseError> {
231
+ let ident = parser.expect_ident()?;
232
+ Ok(Direction(match_ignore_ascii_case! { &ident,
233
+ "rtl" => atom!("rtl"),
234
+ "ltr" => atom!("ltr"),
235
+ _ => Atom::from(ident.as_ref()),
236
+ }))
237
+ }
238
+
239
+ /// Convert this Direction into a HorizontalDirection, if applicable
240
+ pub fn as_horizontal_direction(&self) -> Option<HorizontalDirection> {
241
+ if self.0 == atom!("ltr") {
242
+ Some(HorizontalDirection::Ltr)
243
+ } else if self.0 == atom!("rtl") {
244
+ Some(HorizontalDirection::Rtl)
245
+ } else {
246
+ None
247
+ }
248
+ }
249
+
250
+ /// Gets the element state relevant to this :dir() selector.
251
+ pub fn element_state(&self) -> ElementState {
252
+ match self.as_horizontal_direction() {
253
+ Some(HorizontalDirection::Ltr) => ElementState::LTR,
254
+ Some(HorizontalDirection::Rtl) => ElementState::RTL,
255
+ None => ElementState::empty(),
256
+ }
257
+ }
258
+ }
259
+
260
+ impl ToCss for Direction {
261
+ fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result
262
+ where
263
+ W: Write,
264
+ {
265
+ serialize_atom_identifier(&self.0, dest)
266
+ }
267
+ }
268
+
269
+ #[cfg(test)]
270
+ mod tests {
271
+ use super::*;
272
+
273
+ #[test]
274
+ fn can_build_and_set_arbitrary_index() {
275
+ let mut map = <PerPseudoElementMap<i32>>::default();
276
+ assert_eq!(map.get(&PseudoElement::After), None);
277
+ map.set(&PseudoElement::After, 3);
278
+ assert_eq!(map.get(&PseudoElement::After), Some(3).as_ref());
279
+
280
+ assert_eq!(map.get(&PseudoElement::Marker), None);
281
+ map.set(&PseudoElement::Marker, 8);
282
+ assert_eq!(map.get(&PseudoElement::Marker), Some(8).as_ref());
283
+
284
+ assert_eq!(
285
+ map.get_or_insert_with(&PseudoElement::Marker, || { 10 }),
286
+ &8
287
+ );
288
+ map.set(&PseudoElement::Marker, 9);
289
+ assert_eq!(map.get(&PseudoElement::Marker), Some(9).as_ref());
290
+
291
+ assert_eq!(
292
+ map.get_or_insert_with(&PseudoElement::FirstLetter, || { 10 }),
293
+ &10
294
+ );
295
+ assert_eq!(map.get(&PseudoElement::FirstLetter), Some(10).as_ref());
296
+ }
297
+
298
+ #[test]
299
+ fn can_iter() {
300
+ let mut map = <PerPseudoElementMap<i32>>::default();
301
+ map.set(&PseudoElement::After, 3);
302
+ map.set(&PseudoElement::Marker, 8);
303
+ assert_eq!(map.iter().cloned().collect::<Vec<_>>(), vec![3, 8]);
304
+ }
305
+ }