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,427 @@
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
+ //! Specified types for SVG properties.
6
+
7
+ use crate::derives::*;
8
+ use crate::parser::{Parse, ParserContext};
9
+ use crate::values::generics::svg as generic;
10
+ use crate::values::specified::color::Color;
11
+ use crate::values::specified::url::SpecifiedUrl;
12
+ use crate::values::specified::AllowQuirks;
13
+ use crate::values::specified::LengthPercentage;
14
+ use crate::values::specified::SVGPathData;
15
+ use crate::values::specified::{NonNegativeLengthPercentage, Opacity};
16
+ use crate::values::CustomIdent;
17
+ use cssparser::{Parser, Token};
18
+ use std::fmt::{self, Write};
19
+ use style_traits::{CommaWithSpace, CssWriter, ParseError, Separator};
20
+ use style_traits::{StyleParseErrorKind, ToCss};
21
+
22
+ /// Specified SVG Paint value
23
+ pub type SVGPaint = generic::GenericSVGPaint<Color, SpecifiedUrl>;
24
+
25
+ /// <length> | <percentage> | <number> | context-value
26
+ pub type SVGLength = generic::GenericSVGLength<LengthPercentage>;
27
+
28
+ /// A non-negative version of SVGLength.
29
+ pub type SVGWidth = generic::GenericSVGLength<NonNegativeLengthPercentage>;
30
+
31
+ /// [ <length> | <percentage> | <number> ]# | context-value
32
+ pub type SVGStrokeDashArray = generic::GenericSVGStrokeDashArray<NonNegativeLengthPercentage>;
33
+
34
+ /// Whether the `context-value` value is enabled.
35
+ pub fn is_context_value_enabled() -> bool {
36
+ crate::pref!("gfx.font_rendering.opentype_svg.enabled")
37
+ }
38
+
39
+ macro_rules! parse_svg_length {
40
+ ($ty:ty, $lp:ty) => {
41
+ impl Parse for $ty {
42
+ fn parse(context: &ParserContext, input: &mut Parser) -> Result<Self, ParseError> {
43
+ if let Ok(lp) =
44
+ input.try_parse(|i| <$lp>::parse_quirky(context, i, AllowQuirks::Always))
45
+ {
46
+ return Ok(generic::SVGLength::LengthPercentage(lp));
47
+ }
48
+
49
+ try_match_ident_ignore_ascii_case! { input,
50
+ "context-value" if is_context_value_enabled() => {
51
+ Ok(generic::SVGLength::ContextValue)
52
+ },
53
+ }
54
+ }
55
+ }
56
+ };
57
+ }
58
+
59
+ parse_svg_length!(SVGLength, LengthPercentage);
60
+ parse_svg_length!(SVGWidth, NonNegativeLengthPercentage);
61
+
62
+ impl Parse for SVGStrokeDashArray {
63
+ fn parse(context: &ParserContext, input: &mut Parser) -> Result<Self, ParseError> {
64
+ if let Ok(values) = input.try_parse(|i| {
65
+ CommaWithSpace::parse(i, |i| {
66
+ NonNegativeLengthPercentage::parse_quirky(context, i, AllowQuirks::Always)
67
+ })
68
+ }) {
69
+ return Ok(generic::SVGStrokeDashArray::Values(values.into()));
70
+ }
71
+
72
+ try_match_ident_ignore_ascii_case! { input,
73
+ "context-value" if is_context_value_enabled() => {
74
+ Ok(generic::SVGStrokeDashArray::ContextValue)
75
+ },
76
+ "none" => Ok(generic::SVGStrokeDashArray::Values(Default::default())),
77
+ }
78
+ }
79
+ }
80
+
81
+ /// <opacity-value> | context-fill-opacity | context-stroke-opacity
82
+ pub type SVGOpacity = generic::SVGOpacity<Opacity>;
83
+
84
+ /// The specified value for a single CSS paint-order property.
85
+ #[repr(u8)]
86
+ #[derive(Clone, Copy, Debug, Eq, Ord, PartialEq, PartialOrd, ToCss)]
87
+ pub enum PaintOrder {
88
+ /// `normal` variant
89
+ Normal = 0,
90
+ /// `fill` variant
91
+ Fill = 1,
92
+ /// `stroke` variant
93
+ Stroke = 2,
94
+ /// `markers` variant
95
+ Markers = 3,
96
+ }
97
+
98
+ /// Number of non-normal components
99
+ pub const PAINT_ORDER_COUNT: u8 = 3;
100
+
101
+ /// Number of bits for each component
102
+ pub const PAINT_ORDER_SHIFT: u8 = 2;
103
+
104
+ /// Mask with above bits set
105
+ pub const PAINT_ORDER_MASK: u8 = 0b11;
106
+
107
+ /// The specified value is tree `PaintOrder` values packed into the
108
+ /// bitfields below, as a six-bit field, of 3 two-bit pairs
109
+ ///
110
+ /// Each pair can be set to FILL, STROKE, or MARKERS
111
+ /// Lowest significant bit pairs are highest priority.
112
+ /// `normal` is the empty bitfield. The three pairs are
113
+ /// never zero in any case other than `normal`.
114
+ ///
115
+ /// Higher priority values, i.e. the values specified first,
116
+ /// will be painted first (and may be covered by paintings of lower priority)
117
+ #[derive(
118
+ Clone,
119
+ Copy,
120
+ Debug,
121
+ MallocSizeOf,
122
+ PartialEq,
123
+ SpecifiedValueInfo,
124
+ ToComputedValue,
125
+ ToResolvedValue,
126
+ ToShmem,
127
+ ToTyped,
128
+ )]
129
+ #[repr(transparent)]
130
+ #[typed(todo_derive_fields)]
131
+ pub struct SVGPaintOrder(pub u8);
132
+
133
+ impl SVGPaintOrder {
134
+ /// Get default `paint-order` with `0`
135
+ pub fn normal() -> Self {
136
+ SVGPaintOrder(0)
137
+ }
138
+
139
+ /// Get variant of `paint-order`
140
+ pub fn order_at(&self, pos: u8) -> PaintOrder {
141
+ match (self.0 >> (pos * PAINT_ORDER_SHIFT)) & PAINT_ORDER_MASK {
142
+ 0 => PaintOrder::Normal,
143
+ 1 => PaintOrder::Fill,
144
+ 2 => PaintOrder::Stroke,
145
+ 3 => PaintOrder::Markers,
146
+ _ => unreachable!("this cannot happen"),
147
+ }
148
+ }
149
+ }
150
+
151
+ impl Parse for SVGPaintOrder {
152
+ fn parse(_context: &ParserContext, input: &mut Parser) -> Result<SVGPaintOrder, ParseError> {
153
+ if let Ok(()) = input.try_parse(|i| i.expect_ident_matching("normal")) {
154
+ return Ok(SVGPaintOrder::normal());
155
+ }
156
+
157
+ let mut value = 0;
158
+ // bitfield representing what we've seen so far
159
+ // bit 1 is fill, bit 2 is stroke, bit 3 is markers
160
+ let mut seen = 0;
161
+ let mut pos = 0;
162
+
163
+ loop {
164
+ let result: Result<_, ParseError> = input.try_parse(|input| {
165
+ try_match_ident_ignore_ascii_case! { input,
166
+ "fill" => Ok(PaintOrder::Fill),
167
+ "stroke" => Ok(PaintOrder::Stroke),
168
+ "markers" => Ok(PaintOrder::Markers),
169
+ }
170
+ });
171
+
172
+ match result {
173
+ Ok(val) => {
174
+ if (seen & (1 << val as u8)) != 0 {
175
+ // don't parse the same ident twice
176
+ return Err(ParseError::custom(StyleParseErrorKind::UnspecifiedError));
177
+ }
178
+
179
+ value |= (val as u8) << (pos * PAINT_ORDER_SHIFT);
180
+ seen |= 1 << (val as u8);
181
+ pos += 1;
182
+ },
183
+ Err(_) => break,
184
+ }
185
+ }
186
+
187
+ if value == 0 {
188
+ // Couldn't find any keyword
189
+ return Err(ParseError::custom(StyleParseErrorKind::UnspecifiedError));
190
+ }
191
+
192
+ // fill in rest
193
+ for i in pos..PAINT_ORDER_COUNT {
194
+ for paint in 1..(PAINT_ORDER_COUNT + 1) {
195
+ // if not seen, set bit at position, mark as seen
196
+ if (seen & (1 << paint)) == 0 {
197
+ seen |= 1 << paint;
198
+ value |= paint << (i * PAINT_ORDER_SHIFT);
199
+ break;
200
+ }
201
+ }
202
+ }
203
+
204
+ Ok(SVGPaintOrder(value))
205
+ }
206
+ }
207
+
208
+ impl ToCss for SVGPaintOrder {
209
+ fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result
210
+ where
211
+ W: Write,
212
+ {
213
+ if self.0 == 0 {
214
+ return dest.write_str("normal");
215
+ }
216
+
217
+ let mut last_pos_to_serialize = 0;
218
+ for i in (1..PAINT_ORDER_COUNT).rev() {
219
+ let component = self.order_at(i);
220
+ let earlier_component = self.order_at(i - 1);
221
+ if component < earlier_component {
222
+ last_pos_to_serialize = i - 1;
223
+ break;
224
+ }
225
+ }
226
+
227
+ for pos in 0..last_pos_to_serialize + 1 {
228
+ if pos != 0 {
229
+ dest.write_char(' ')?
230
+ }
231
+ self.order_at(pos).to_css(dest)?;
232
+ }
233
+ Ok(())
234
+ }
235
+ }
236
+
237
+ /// The context properties we understand.
238
+ #[derive(
239
+ Clone,
240
+ Copy,
241
+ Eq,
242
+ Debug,
243
+ Default,
244
+ MallocSizeOf,
245
+ PartialEq,
246
+ SpecifiedValueInfo,
247
+ ToComputedValue,
248
+ ToResolvedValue,
249
+ ToShmem,
250
+ )]
251
+ #[repr(C)]
252
+ pub struct ContextPropertyBits(u8);
253
+ bitflags! {
254
+ impl ContextPropertyBits: u8 {
255
+ /// `fill`
256
+ const FILL = 1 << 0;
257
+ /// `stroke`
258
+ const STROKE = 1 << 1;
259
+ /// `fill-opacity`
260
+ const FILL_OPACITY = 1 << 2;
261
+ /// `stroke-opacity`
262
+ const STROKE_OPACITY = 1 << 3;
263
+ }
264
+ }
265
+
266
+ /// Specified MozContextProperties value.
267
+ /// Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-context-properties)
268
+ #[derive(
269
+ Clone,
270
+ Debug,
271
+ Default,
272
+ MallocSizeOf,
273
+ PartialEq,
274
+ SpecifiedValueInfo,
275
+ ToComputedValue,
276
+ ToCss,
277
+ ToResolvedValue,
278
+ ToShmem,
279
+ ToTyped,
280
+ )]
281
+ #[repr(C)]
282
+ pub struct MozContextProperties {
283
+ #[css(iterable, if_empty = "none")]
284
+ #[ignore_malloc_size_of = "Arc"]
285
+ idents: crate::ArcSlice<CustomIdent>,
286
+ #[css(skip)]
287
+ bits: ContextPropertyBits,
288
+ }
289
+
290
+ impl Parse for MozContextProperties {
291
+ fn parse(
292
+ _context: &ParserContext,
293
+ input: &mut Parser,
294
+ ) -> Result<MozContextProperties, ParseError> {
295
+ let mut values = vec![];
296
+ let mut bits = ContextPropertyBits::empty();
297
+ loop {
298
+ {
299
+ let ident = input.expect_ident()?;
300
+
301
+ if ident.eq_ignore_ascii_case("none") && values.is_empty() {
302
+ return Ok(Self::default());
303
+ }
304
+
305
+ let ident = CustomIdent::from_ident(ident, &["all", "none", "auto"])?;
306
+
307
+ if ident.0 == atom!("fill") {
308
+ bits.insert(ContextPropertyBits::FILL);
309
+ } else if ident.0 == atom!("stroke") {
310
+ bits.insert(ContextPropertyBits::STROKE);
311
+ } else if ident.0 == atom!("fill-opacity") {
312
+ bits.insert(ContextPropertyBits::FILL_OPACITY);
313
+ } else if ident.0 == atom!("stroke-opacity") {
314
+ bits.insert(ContextPropertyBits::STROKE_OPACITY);
315
+ }
316
+
317
+ values.push(ident);
318
+ }
319
+
320
+ match input.next() {
321
+ Ok(&Token::Comma) => continue,
322
+ Err(..) => break,
323
+ Ok(_) => return Err(ParseError::unexpected_token()),
324
+ }
325
+ }
326
+
327
+ if values.is_empty() {
328
+ return Err(ParseError::custom(StyleParseErrorKind::UnspecifiedError));
329
+ }
330
+
331
+ Ok(MozContextProperties {
332
+ idents: crate::ArcSlice::from_iter(values.into_iter()),
333
+ bits,
334
+ })
335
+ }
336
+ }
337
+
338
+ /// The svg d property type.
339
+ ///
340
+ /// https://svgwg.org/svg2-draft/paths.html#TheDProperty
341
+ #[derive(
342
+ Animate,
343
+ Clone,
344
+ ComputeSquaredDistance,
345
+ Debug,
346
+ Deserialize,
347
+ MallocSizeOf,
348
+ PartialEq,
349
+ Serialize,
350
+ SpecifiedValueInfo,
351
+ ToAnimatedValue,
352
+ ToAnimatedZero,
353
+ ToComputedValue,
354
+ ToCss,
355
+ ToResolvedValue,
356
+ ToShmem,
357
+ ToTyped,
358
+ )]
359
+ #[repr(C, u8)]
360
+ #[typed(todo_derive_fields)]
361
+ pub enum DProperty {
362
+ /// Path value for path(<string>) or just a <string>.
363
+ #[css(function)]
364
+ Path(SVGPathData),
365
+ /// None value.
366
+ #[animation(error)]
367
+ None,
368
+ }
369
+
370
+ impl DProperty {
371
+ /// return none.
372
+ #[inline]
373
+ pub fn none() -> Self {
374
+ DProperty::None
375
+ }
376
+ }
377
+
378
+ impl Parse for DProperty {
379
+ fn parse(context: &ParserContext, input: &mut Parser) -> Result<Self, ParseError> {
380
+ // Parse none.
381
+ if input.try_parse(|i| i.expect_ident_matching("none")).is_ok() {
382
+ return Ok(DProperty::none());
383
+ }
384
+
385
+ // Parse possible functions.
386
+ input.expect_function_matching("path")?;
387
+ let path_data = input.parse_nested_block(|i| Parse::parse(context, i))?;
388
+ Ok(DProperty::Path(path_data))
389
+ }
390
+ }
391
+
392
+ #[derive(
393
+ Clone,
394
+ Copy,
395
+ Debug,
396
+ Default,
397
+ Eq,
398
+ MallocSizeOf,
399
+ Parse,
400
+ PartialEq,
401
+ SpecifiedValueInfo,
402
+ ToComputedValue,
403
+ ToCss,
404
+ ToResolvedValue,
405
+ ToShmem,
406
+ ToTyped,
407
+ )]
408
+ #[css(bitflags(single = "none", mixed = "non-scaling-stroke"))]
409
+ #[repr(C)]
410
+ /// https://svgwg.org/svg2-draft/coords.html#VectorEffects
411
+ pub struct VectorEffect(u8);
412
+ bitflags! {
413
+ impl VectorEffect: u8 {
414
+ /// `none`
415
+ const NONE = 0;
416
+ /// `non-scaling-stroke`
417
+ const NON_SCALING_STROKE = 1 << 0;
418
+ }
419
+ }
420
+
421
+ impl VectorEffect {
422
+ /// Returns the initial value of vector-effect
423
+ #[inline]
424
+ pub fn none() -> Self {
425
+ Self::NONE
426
+ }
427
+ }