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.
- package/LICENSE +21 -0
- package/README.md +355 -2
- package/THIRD_PARTY_NOTICES.md +25 -0
- package/assets/icon.svg +4 -0
- package/dist/api.d.ts +7 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +46 -0
- package/dist/api.js.map +1 -0
- package/dist/assets.d.ts +7 -0
- package/dist/assets.d.ts.map +1 -0
- package/dist/assets.js +52 -0
- package/dist/assets.js.map +1 -0
- package/dist/browser.d.ts +3 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +3 -0
- package/dist/browser.js.map +1 -0
- package/dist/node.d.ts +3 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +10 -0
- package/dist/node.js.map +1 -0
- package/dist/options.d.ts +24 -0
- package/dist/options.d.ts.map +1 -0
- package/dist/options.js +135 -0
- package/dist/options.js.map +1 -0
- package/dist/types.d.ts +51 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/examples/bun.ts +8 -0
- package/examples/german-invoice/README.md +70 -0
- package/examples/german-invoice/data.mjs +83 -0
- package/examples/german-invoice/invoice.css +59 -0
- package/examples/german-invoice/template.mjs +49 -0
- package/examples/german-invoice.mjs +20 -0
- package/examples/invoice.html +29 -0
- package/examples/node.mjs +8 -0
- package/examples/pagination.html +40 -0
- package/examples/pagination.mjs +8 -0
- package/licenses/DejaVu.txt +187 -0
- package/licenses/RUST_DEPENDENCIES.txt +11577 -0
- package/package.json +89 -4
- package/src/api.ts +44 -0
- package/src/assets.ts +43 -0
- package/src/browser.ts +6 -0
- package/src/node.ts +12 -0
- package/src/options.ts +101 -0
- package/src/types.ts +49 -0
- package/vendor/README.md +17 -0
- package/vendor/stylo/.cargo-ok +1 -0
- package/vendor/stylo/.cargo_vcs_info.json +6 -0
- package/vendor/stylo/Cargo.lock +1485 -0
- package/vendor/stylo/Cargo.toml +274 -0
- package/vendor/stylo/LICENSE +373 -0
- package/vendor/stylo/README.md +6 -0
- package/vendor/stylo/applicable_declarations.rs +328 -0
- package/vendor/stylo/author_styles.rs +79 -0
- package/vendor/stylo/bezier.rs +176 -0
- package/vendor/stylo/bloom.rs +414 -0
- package/vendor/stylo/build.rs +91 -0
- package/vendor/stylo/build_gecko.rs +393 -0
- package/vendor/stylo/color/color_function.rs +601 -0
- package/vendor/stylo/color/component.rs +207 -0
- package/vendor/stylo/color/convert.rs +935 -0
- package/vendor/stylo/color/gamut/raytrace.rs +265 -0
- package/vendor/stylo/color/gamut.rs +227 -0
- package/vendor/stylo/color/mix.rs +645 -0
- package/vendor/stylo/color/mod.rs +750 -0
- package/vendor/stylo/color/parsing.rs +770 -0
- package/vendor/stylo/color/to_css.rs +297 -0
- package/vendor/stylo/context.rs +716 -0
- package/vendor/stylo/counter_style/mod.rs +754 -0
- package/vendor/stylo/counter_style/predefined.rs +61 -0
- package/vendor/stylo/counter_style/update_predefined.py +35 -0
- package/vendor/stylo/custom_properties.rs +2023 -0
- package/vendor/stylo/custom_properties_map.rs +220 -0
- package/vendor/stylo/data.rs +693 -0
- package/vendor/stylo/device/gecko.rs +486 -0
- package/vendor/stylo/device/mod.rs +304 -0
- package/vendor/stylo/device/servo.rs +507 -0
- package/vendor/stylo/dom.rs +1164 -0
- package/vendor/stylo/dom_apis.rs +937 -0
- package/vendor/stylo/driver.rs +172 -0
- package/vendor/stylo/error_reporting.rs +484 -0
- package/vendor/stylo/font_face.rs +558 -0
- package/vendor/stylo/font_metrics.rs +124 -0
- package/vendor/stylo/gecko/anon_boxes.toml +113 -0
- package/vendor/stylo/gecko/arc_types.rs +211 -0
- package/vendor/stylo/gecko/conversions.rs +59 -0
- package/vendor/stylo/gecko/data.rs +222 -0
- package/vendor/stylo/gecko/media_features.rs +971 -0
- package/vendor/stylo/gecko/mod.rs +20 -0
- package/vendor/stylo/gecko/non_ts_pseudo_class_list.rs +119 -0
- package/vendor/stylo/gecko/pseudo_element.rs +640 -0
- package/vendor/stylo/gecko/pseudo_element_definition.mako.rs +298 -0
- package/vendor/stylo/gecko/pseudo_elements.py +137 -0
- package/vendor/stylo/gecko/pseudo_elements.toml +197 -0
- package/vendor/stylo/gecko/regen_pseudo_elements.py +33 -0
- package/vendor/stylo/gecko/restyle_damage.rs +127 -0
- package/vendor/stylo/gecko/selector_parser.rs +627 -0
- package/vendor/stylo/gecko/snapshot.rs +202 -0
- package/vendor/stylo/gecko/snapshot_helpers.rs +334 -0
- package/vendor/stylo/gecko/traversal.rs +52 -0
- package/vendor/stylo/gecko/wrapper.rs +2258 -0
- package/vendor/stylo/gecko_bindings/mod.rs +34 -0
- package/vendor/stylo/gecko_bindings/sugar/mod.rs +12 -0
- package/vendor/stylo/gecko_bindings/sugar/ns_com_ptr.rs +15 -0
- package/vendor/stylo/gecko_bindings/sugar/ns_compatibility.rs +19 -0
- package/vendor/stylo/gecko_bindings/sugar/ns_style_auto_array.rs +111 -0
- package/vendor/stylo/gecko_bindings/sugar/origin_flags.rs +31 -0
- package/vendor/stylo/gecko_bindings/sugar/ownership.rs +70 -0
- package/vendor/stylo/gecko_bindings/sugar/refptr.rs +299 -0
- package/vendor/stylo/gecko_string_cache/mod.rs +543 -0
- package/vendor/stylo/gecko_string_cache/namespace.rs +106 -0
- package/vendor/stylo/global_style_data.rs +224 -0
- package/vendor/stylo/invalidation/element/document_state.rs +156 -0
- package/vendor/stylo/invalidation/element/element_wrapper.rs +432 -0
- package/vendor/stylo/invalidation/element/invalidation_map.rs +1631 -0
- package/vendor/stylo/invalidation/element/invalidator.rs +1470 -0
- package/vendor/stylo/invalidation/element/mod.rs +13 -0
- package/vendor/stylo/invalidation/element/relative_selector.rs +1399 -0
- package/vendor/stylo/invalidation/element/restyle_hints.rs +226 -0
- package/vendor/stylo/invalidation/element/state_and_attributes.rs +756 -0
- package/vendor/stylo/invalidation/media_queries.rs +144 -0
- package/vendor/stylo/invalidation/mod.rs +10 -0
- package/vendor/stylo/invalidation/stylesheets.rs +745 -0
- package/vendor/stylo/invalidation/viewport_units.rs +71 -0
- package/vendor/stylo/lib.rs +336 -0
- package/vendor/stylo/logical_geometry.rs +1684 -0
- package/vendor/stylo/macros.rs +70 -0
- package/vendor/stylo/matching.rs +1226 -0
- package/vendor/stylo/media_queries/media_list.rs +168 -0
- package/vendor/stylo/media_queries/media_query.rs +190 -0
- package/vendor/stylo/media_queries/mod.rs +13 -0
- package/vendor/stylo/parallel.rs +205 -0
- package/vendor/stylo/parser.rs +276 -0
- package/vendor/stylo/piecewise_linear.rs +282 -0
- package/vendor/stylo/prefs.rs +33 -0
- package/vendor/stylo/properties/build.py +119 -0
- package/vendor/stylo/properties/cascade.rs +2704 -0
- package/vendor/stylo/properties/computed_value_flags.rs +206 -0
- package/vendor/stylo/properties/counted_unknown_properties.py +104 -0
- package/vendor/stylo/properties/counter_style_descriptors.toml +45 -0
- package/vendor/stylo/properties/data.py +1375 -0
- package/vendor/stylo/properties/declaration_block.rs +1788 -0
- package/vendor/stylo/properties/font_face_descriptors.toml +50 -0
- package/vendor/stylo/properties/gecko.mako.rs +1555 -0
- package/vendor/stylo/properties/helpers/animated_properties.mako.rs +800 -0
- package/vendor/stylo/properties/helpers.mako.rs +812 -0
- package/vendor/stylo/properties/longhands.toml +4305 -0
- package/vendor/stylo/properties/mod.rs +1857 -0
- package/vendor/stylo/properties/properties.html.mako +31 -0
- package/vendor/stylo/properties/properties.mako.rs +3103 -0
- package/vendor/stylo/properties/property_descriptors.toml +18 -0
- package/vendor/stylo/properties/shorthands.rs +4241 -0
- package/vendor/stylo/properties/shorthands.toml +575 -0
- package/vendor/stylo/properties/vendored_python/mako-1.3.10-py3-none-any.whl +0 -0
- package/vendor/stylo/properties/vendored_python/markupsafe/LICENSE.txt +28 -0
- package/vendor/stylo/properties/vendored_python/markupsafe/__init__.py +384 -0
- package/vendor/stylo/properties/vendored_python/toml-0.10.2-py2.py3-none-any.whl +0 -0
- package/vendor/stylo/properties/view_transition_descriptors.toml +11 -0
- package/vendor/stylo/properties_and_values/mod.rs +12 -0
- package/vendor/stylo/properties_and_values/registry.rs +65 -0
- package/vendor/stylo/properties_and_values/rule.rs +331 -0
- package/vendor/stylo/properties_and_values/syntax/ascii.rs +60 -0
- package/vendor/stylo/properties_and_values/syntax/data_type.rs +146 -0
- package/vendor/stylo/properties_and_values/syntax/mod.rs +437 -0
- package/vendor/stylo/properties_and_values/value.rs +758 -0
- package/vendor/stylo/queries/condition.rs +996 -0
- package/vendor/stylo/queries/feature.rs +199 -0
- package/vendor/stylo/queries/feature_expression.rs +1170 -0
- package/vendor/stylo/queries/mod.rs +19 -0
- package/vendor/stylo/queries/values.rs +46 -0
- package/vendor/stylo/rule_cache.rs +267 -0
- package/vendor/stylo/rule_collector.rs +554 -0
- package/vendor/stylo/rule_tree/core.rs +787 -0
- package/vendor/stylo/rule_tree/level.rs +396 -0
- package/vendor/stylo/rule_tree/map.rs +201 -0
- package/vendor/stylo/rule_tree/mod.rs +427 -0
- package/vendor/stylo/rule_tree/source.rs +80 -0
- package/vendor/stylo/rule_tree/unsafe_box.rs +78 -0
- package/vendor/stylo/scoped_tls.rs +80 -0
- package/vendor/stylo/selector_map.rs +1050 -0
- package/vendor/stylo/selector_parser.rs +305 -0
- package/vendor/stylo/servo/animation.rs +1922 -0
- package/vendor/stylo/servo/attr.rs +714 -0
- package/vendor/stylo/servo/encoding_support.rs +81 -0
- package/vendor/stylo/servo/media_features.rs +254 -0
- package/vendor/stylo/servo/mod.rs +16 -0
- package/vendor/stylo/servo/restyle_damage.rs +215 -0
- package/vendor/stylo/servo/selector_parser.rs +1036 -0
- package/vendor/stylo/servo/shadow_parts.rs +207 -0
- package/vendor/stylo/shared_lock.rs +271 -0
- package/vendor/stylo/sharing/checks.rs +281 -0
- package/vendor/stylo/sharing/mod.rs +1000 -0
- package/vendor/stylo/simple_buckets_map.rs +52 -0
- package/vendor/stylo/str.rs +168 -0
- package/vendor/stylo/style_adjuster.rs +1086 -0
- package/vendor/stylo/style_resolver.rs +658 -0
- package/vendor/stylo/stylesheet_set.rs +658 -0
- package/vendor/stylo/stylesheets/appearance_base_rule.rs +51 -0
- package/vendor/stylo/stylesheets/container_rule.rs +769 -0
- package/vendor/stylo/stylesheets/counter_style_rule.rs +7 -0
- package/vendor/stylo/stylesheets/document_rule.rs +272 -0
- package/vendor/stylo/stylesheets/font_face_rule.rs +7 -0
- package/vendor/stylo/stylesheets/font_feature_values_rule.rs +481 -0
- package/vendor/stylo/stylesheets/font_palette_values_rule.rs +304 -0
- package/vendor/stylo/stylesheets/import_rule.rs +259 -0
- package/vendor/stylo/stylesheets/keyframes_rule.rs +733 -0
- package/vendor/stylo/stylesheets/layer_rule.rs +221 -0
- package/vendor/stylo/stylesheets/loader.rs +29 -0
- package/vendor/stylo/stylesheets/margin_rule.rs +190 -0
- package/vendor/stylo/stylesheets/media_rule.rs +191 -0
- package/vendor/stylo/stylesheets/mod.rs +918 -0
- package/vendor/stylo/stylesheets/namespace_rule.rs +43 -0
- package/vendor/stylo/stylesheets/nested_declarations_rule.rs +51 -0
- package/vendor/stylo/stylesheets/origin.rs +249 -0
- package/vendor/stylo/stylesheets/page_rule.rs +354 -0
- package/vendor/stylo/stylesheets/position_try_rule.rs +68 -0
- package/vendor/stylo/stylesheets/property_rule.rs +5 -0
- package/vendor/stylo/stylesheets/rule_list.rs +167 -0
- package/vendor/stylo/stylesheets/rule_parser.rs +1189 -0
- package/vendor/stylo/stylesheets/rules_iterator.rs +397 -0
- package/vendor/stylo/stylesheets/scope_rule.rs +511 -0
- package/vendor/stylo/stylesheets/starting_style_rule.rs +54 -0
- package/vendor/stylo/stylesheets/style_rule.rs +80 -0
- package/vendor/stylo/stylesheets/stylesheet.rs +570 -0
- package/vendor/stylo/stylesheets/supports_rule.rs +486 -0
- package/vendor/stylo/stylesheets/view_transition_rule.rs +81 -0
- package/vendor/stylo/stylist.rs +5076 -0
- package/vendor/stylo/thread_state.rs +87 -0
- package/vendor/stylo/traversal.rs +765 -0
- package/vendor/stylo/traversal_flags.rs +68 -0
- package/vendor/stylo/typed_om/mod.rs +981 -0
- package/vendor/stylo/typed_om/numeric.rs +128 -0
- package/vendor/stylo/typed_om/numeric_declaration.rs +93 -0
- package/vendor/stylo/typed_om/numeric_type.rs +640 -0
- package/vendor/stylo/typed_om/sum_value.rs +426 -0
- package/vendor/stylo/url/gecko.rs +367 -0
- package/vendor/stylo/url/mod.rs +71 -0
- package/vendor/stylo/url/servo.rs +239 -0
- package/vendor/stylo/use_counters/mod.rs +137 -0
- package/vendor/stylo/values/animated/color.rs +103 -0
- package/vendor/stylo/values/animated/effects.rs +26 -0
- package/vendor/stylo/values/animated/font.rs +37 -0
- package/vendor/stylo/values/animated/grid.rs +161 -0
- package/vendor/stylo/values/animated/lists.rs +141 -0
- package/vendor/stylo/values/animated/mod.rs +550 -0
- package/vendor/stylo/values/animated/svg.rs +46 -0
- package/vendor/stylo/values/animated/text.rs +58 -0
- package/vendor/stylo/values/animated/transform.rs +1592 -0
- package/vendor/stylo/values/computed/align.rs +90 -0
- package/vendor/stylo/values/computed/angle.rs +130 -0
- package/vendor/stylo/values/computed/animation.rs +124 -0
- package/vendor/stylo/values/computed/background.rs +13 -0
- package/vendor/stylo/values/computed/basic_shape.rs +267 -0
- package/vendor/stylo/values/computed/border.rs +163 -0
- package/vendor/stylo/values/computed/box.rs +267 -0
- package/vendor/stylo/values/computed/calc.rs +334 -0
- package/vendor/stylo/values/computed/color.rs +161 -0
- package/vendor/stylo/values/computed/column.rs +11 -0
- package/vendor/stylo/values/computed/corner_shape.rs +155 -0
- package/vendor/stylo/values/computed/counters.rs +26 -0
- package/vendor/stylo/values/computed/easing.rs +109 -0
- package/vendor/stylo/values/computed/effects.rs +30 -0
- package/vendor/stylo/values/computed/flex.rs +19 -0
- package/vendor/stylo/values/computed/font.rs +1517 -0
- package/vendor/stylo/values/computed/image.rs +273 -0
- package/vendor/stylo/values/computed/length.rs +576 -0
- package/vendor/stylo/values/computed/length_percentage.rs +1055 -0
- package/vendor/stylo/values/computed/list.rs +16 -0
- package/vendor/stylo/values/computed/mod.rs +1141 -0
- package/vendor/stylo/values/computed/motion.rs +73 -0
- package/vendor/stylo/values/computed/outline.rs +7 -0
- package/vendor/stylo/values/computed/page.rs +77 -0
- package/vendor/stylo/values/computed/param.rs +9 -0
- package/vendor/stylo/values/computed/percentage.rs +143 -0
- package/vendor/stylo/values/computed/position.rs +273 -0
- package/vendor/stylo/values/computed/ratio.rs +88 -0
- package/vendor/stylo/values/computed/rect.rs +19 -0
- package/vendor/stylo/values/computed/resolution.rs +76 -0
- package/vendor/stylo/values/computed/svg.rs +66 -0
- package/vendor/stylo/values/computed/table.rs +7 -0
- package/vendor/stylo/values/computed/text.rs +199 -0
- package/vendor/stylo/values/computed/time.rs +83 -0
- package/vendor/stylo/values/computed/transform.rs +559 -0
- package/vendor/stylo/values/computed/tree_counting.rs +30 -0
- package/vendor/stylo/values/computed/ui.rs +23 -0
- package/vendor/stylo/values/computed/url.rs +12 -0
- package/vendor/stylo/values/distance.rs +139 -0
- package/vendor/stylo/values/generics/animation.rs +363 -0
- package/vendor/stylo/values/generics/background.rs +65 -0
- package/vendor/stylo/values/generics/basic_shape.rs +1389 -0
- package/vendor/stylo/values/generics/border.rs +303 -0
- package/vendor/stylo/values/generics/box.rs +552 -0
- package/vendor/stylo/values/generics/calc.rs +2986 -0
- package/vendor/stylo/values/generics/color.rs +318 -0
- package/vendor/stylo/values/generics/column.rs +44 -0
- package/vendor/stylo/values/generics/counters.rs +320 -0
- package/vendor/stylo/values/generics/easing.rs +132 -0
- package/vendor/stylo/values/generics/effects.rs +131 -0
- package/vendor/stylo/values/generics/flex.rs +34 -0
- package/vendor/stylo/values/generics/font.rs +376 -0
- package/vendor/stylo/values/generics/grid.rs +962 -0
- package/vendor/stylo/values/generics/image.rs +653 -0
- package/vendor/stylo/values/generics/length.rs +656 -0
- package/vendor/stylo/values/generics/mod.rs +303 -0
- package/vendor/stylo/values/generics/motion.rs +274 -0
- package/vendor/stylo/values/generics/page.rs +167 -0
- package/vendor/stylo/values/generics/position.rs +669 -0
- package/vendor/stylo/values/generics/ratio.rs +88 -0
- package/vendor/stylo/values/generics/rect.rs +147 -0
- package/vendor/stylo/values/generics/size.rs +102 -0
- package/vendor/stylo/values/generics/svg.rs +226 -0
- package/vendor/stylo/values/generics/text.rs +268 -0
- package/vendor/stylo/values/generics/transform.rs +1157 -0
- package/vendor/stylo/values/generics/ui.rs +147 -0
- package/vendor/stylo/values/generics/url.rs +51 -0
- package/vendor/stylo/values/mod.rs +820 -0
- package/vendor/stylo/values/resolved/animation.rs +33 -0
- package/vendor/stylo/values/resolved/color.rs +53 -0
- package/vendor/stylo/values/resolved/counters.rs +45 -0
- package/vendor/stylo/values/resolved/mod.rs +316 -0
- package/vendor/stylo/values/specified/align.rs +711 -0
- package/vendor/stylo/values/specified/angle.rs +407 -0
- package/vendor/stylo/values/specified/animation.rs +921 -0
- package/vendor/stylo/values/specified/background.rs +270 -0
- package/vendor/stylo/values/specified/basic_shape.rs +986 -0
- package/vendor/stylo/values/specified/border.rs +430 -0
- package/vendor/stylo/values/specified/box.rs +2231 -0
- package/vendor/stylo/values/specified/calc.rs +1657 -0
- package/vendor/stylo/values/specified/color.rs +1210 -0
- package/vendor/stylo/values/specified/column.rs +11 -0
- package/vendor/stylo/values/specified/corner_shape.rs +152 -0
- package/vendor/stylo/values/specified/counters.rs +242 -0
- package/vendor/stylo/values/specified/easing.rs +225 -0
- package/vendor/stylo/values/specified/effects.rs +421 -0
- package/vendor/stylo/values/specified/flex.rs +42 -0
- package/vendor/stylo/values/specified/font.rs +2103 -0
- package/vendor/stylo/values/specified/frequency.rs +39 -0
- package/vendor/stylo/values/specified/grid.rs +407 -0
- package/vendor/stylo/values/specified/image.rs +1385 -0
- package/vendor/stylo/values/specified/intersection_observer.rs +80 -0
- package/vendor/stylo/values/specified/length.rs +2024 -0
- package/vendor/stylo/values/specified/list.rs +190 -0
- package/vendor/stylo/values/specified/mod.rs +531 -0
- package/vendor/stylo/values/specified/motion.rs +316 -0
- package/vendor/stylo/values/specified/number.rs +603 -0
- package/vendor/stylo/values/specified/outline.rs +69 -0
- package/vendor/stylo/values/specified/page.rs +94 -0
- package/vendor/stylo/values/specified/param.rs +121 -0
- package/vendor/stylo/values/specified/percentage.rs +364 -0
- package/vendor/stylo/values/specified/position.rs +2247 -0
- package/vendor/stylo/values/specified/ratio.rs +29 -0
- package/vendor/stylo/values/specified/rect.rs +28 -0
- package/vendor/stylo/values/specified/resolution.rs +237 -0
- package/vendor/stylo/values/specified/source_size_list.rs +135 -0
- package/vendor/stylo/values/specified/svg.rs +427 -0
- package/vendor/stylo/values/specified/svg_path.rs +1115 -0
- package/vendor/stylo/values/specified/table.rs +38 -0
- package/vendor/stylo/values/specified/text.rs +1561 -0
- package/vendor/stylo/values/specified/time.rs +313 -0
- package/vendor/stylo/values/specified/transform.rs +599 -0
- package/vendor/stylo/values/specified/tree_counting.rs +32 -0
- package/vendor/stylo/values/specified/ui.rs +344 -0
- package/vendor/stylo/values/specified/url.rs +12 -0
- package/vendor/stylo/values/tagged_numeric.rs +253 -0
- package/wasm/blitz_pdf.d.ts +67 -0
- package/wasm/blitz_pdf.js +699 -0
- package/wasm/blitz_pdf_bg.wasm +0 -0
- package/wasm/blitz_pdf_bg.wasm.d.ts +20 -0
|
@@ -0,0 +1,33 @@
|
|
|
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
|
+
//! Resolved animation values.
|
|
6
|
+
|
|
7
|
+
use super::{Context, ToResolvedValue};
|
|
8
|
+
|
|
9
|
+
use crate::values::computed::time::Time;
|
|
10
|
+
use crate::values::computed::AnimationDuration;
|
|
11
|
+
|
|
12
|
+
impl ToResolvedValue for AnimationDuration {
|
|
13
|
+
type ResolvedValue = Self;
|
|
14
|
+
|
|
15
|
+
fn to_resolved_value(self, context: &Context) -> Self::ResolvedValue {
|
|
16
|
+
match self {
|
|
17
|
+
// For backwards-compatibility with Level 1, when the computed value of
|
|
18
|
+
// animation-timeline is auto (i.e. only one list value, and that value being auto),
|
|
19
|
+
// the resolved value of auto for animation-duration is 0s whenever its used value
|
|
20
|
+
// would also be 0s.
|
|
21
|
+
// https://drafts.csswg.org/css-animations-2/#animation-duration
|
|
22
|
+
Self::Auto if context.style.get_ui().has_initial_animation_timeline() => {
|
|
23
|
+
Self::Time(Time::from_seconds(0.0f32))
|
|
24
|
+
},
|
|
25
|
+
_ => self,
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
#[inline]
|
|
30
|
+
fn from_resolved_value(value: Self::ResolvedValue) -> Self {
|
|
31
|
+
value
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
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
|
+
//! Resolved color values.
|
|
6
|
+
|
|
7
|
+
use super::{Context, ToResolvedValue};
|
|
8
|
+
|
|
9
|
+
use crate::properties::{PropertyId, ShorthandId};
|
|
10
|
+
use crate::values::computed::color as computed;
|
|
11
|
+
use crate::values::generics::color as generics;
|
|
12
|
+
|
|
13
|
+
impl ToResolvedValue for computed::Color {
|
|
14
|
+
// A resolved color value is (almost always) a rgba color, with currentcolor resolved.
|
|
15
|
+
type ResolvedValue = Self;
|
|
16
|
+
|
|
17
|
+
#[inline]
|
|
18
|
+
fn to_resolved_value(self, context: &Context) -> Self::ResolvedValue {
|
|
19
|
+
if context.for_property == PropertyId::NonCustom(ShorthandId::TextDecoration.into())
|
|
20
|
+
&& matches!(self, Self::CurrentColor)
|
|
21
|
+
{
|
|
22
|
+
return self;
|
|
23
|
+
}
|
|
24
|
+
generics::Color::Absolute(context.style.resolve_color(&self))
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
#[inline]
|
|
28
|
+
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self {
|
|
29
|
+
resolved
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
impl ToResolvedValue for computed::CaretColor {
|
|
34
|
+
// A resolved caret-color value is an rgba color, with auto resolving to
|
|
35
|
+
// currentcolor.
|
|
36
|
+
type ResolvedValue = computed::Color;
|
|
37
|
+
|
|
38
|
+
#[inline]
|
|
39
|
+
fn to_resolved_value(self, context: &Context) -> Self::ResolvedValue {
|
|
40
|
+
let color = match self.0 {
|
|
41
|
+
generics::ColorOrAuto::Color(color) => color,
|
|
42
|
+
generics::ColorOrAuto::Auto => generics::Color::currentcolor(),
|
|
43
|
+
};
|
|
44
|
+
color.to_resolved_value(context)
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
#[inline]
|
|
48
|
+
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self {
|
|
49
|
+
generics::CaretColor(generics::ColorOrAuto::Color(
|
|
50
|
+
computed::Color::from_resolved_value(resolved),
|
|
51
|
+
))
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
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
|
+
//! Resolved values for counter properties
|
|
6
|
+
|
|
7
|
+
use super::{Context, ToResolvedValue};
|
|
8
|
+
use crate::values::computed;
|
|
9
|
+
#[cfg(feature = "gecko")]
|
|
10
|
+
use selectors::parser::PseudoElement;
|
|
11
|
+
|
|
12
|
+
/// https://drafts.csswg.org/css-content/#content-property
|
|
13
|
+
///
|
|
14
|
+
/// We implement this at resolved value time because otherwise it causes us to allocate a bunch of
|
|
15
|
+
/// useless initial structs for all ::before / ::after, which is a bit unfortunate.
|
|
16
|
+
///
|
|
17
|
+
/// Though these should be temporary, mostly, so if this causes complexity in
|
|
18
|
+
/// other places, it should be fine to move to `StyleAdjuster`.
|
|
19
|
+
///
|
|
20
|
+
/// See https://github.com/w3c/csswg-drafts/issues/4632 for where some related
|
|
21
|
+
/// issues are being discussed.
|
|
22
|
+
impl ToResolvedValue for computed::Content {
|
|
23
|
+
type ResolvedValue = Self;
|
|
24
|
+
|
|
25
|
+
#[inline]
|
|
26
|
+
fn to_resolved_value(self, context: &Context) -> Self {
|
|
27
|
+
let (is_before_or_after, is_marker) = match context.style.pseudo() {
|
|
28
|
+
Some(ref pseudo) => (pseudo.is_before_or_after(), pseudo.is_marker()),
|
|
29
|
+
None => (false, false),
|
|
30
|
+
};
|
|
31
|
+
match self {
|
|
32
|
+
Self::Normal if is_before_or_after => Self::None,
|
|
33
|
+
// For now, make `content: none` resolve to `normal` for pseudos
|
|
34
|
+
// other than ::before, ::after and ::marker, as we don't respect it.
|
|
35
|
+
// https://github.com/w3c/csswg-drafts/issues/6124
|
|
36
|
+
Self::None if !is_before_or_after && !is_marker => Self::Normal,
|
|
37
|
+
other => other,
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
#[inline]
|
|
42
|
+
fn from_resolved_value(resolved: Self) -> Self {
|
|
43
|
+
resolved
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,316 @@
|
|
|
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
|
+
//! Resolved values. These are almost always computed values, but in some cases
|
|
6
|
+
//! there are used values.
|
|
7
|
+
|
|
8
|
+
#[cfg(feature = "gecko")]
|
|
9
|
+
use crate::device::Device;
|
|
10
|
+
use crate::properties::{ComputedValues, LonghandId, PropertyId};
|
|
11
|
+
use crate::ArcSlice;
|
|
12
|
+
use app_units::Au;
|
|
13
|
+
use servo_arc::Arc;
|
|
14
|
+
use smallvec::SmallVec;
|
|
15
|
+
|
|
16
|
+
mod animation;
|
|
17
|
+
mod color;
|
|
18
|
+
mod counters;
|
|
19
|
+
|
|
20
|
+
use crate::values::computed::{self, Length};
|
|
21
|
+
|
|
22
|
+
/// Element-specific information needed to resolve property values.
|
|
23
|
+
#[cfg(feature = "gecko")]
|
|
24
|
+
pub struct ResolvedElementInfo<'a> {
|
|
25
|
+
/// Element we're resolving line-height against.
|
|
26
|
+
pub element: crate::gecko::wrapper::GeckoElement<'a>,
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/// Information needed to resolve a given value.
|
|
30
|
+
pub struct Context<'a> {
|
|
31
|
+
/// The style we're resolving for. This is useful to resolve currentColor.
|
|
32
|
+
pub style: &'a ComputedValues,
|
|
33
|
+
/// The device / document we're resolving style for. Useful to do font metrics stuff needed for
|
|
34
|
+
/// line-height.
|
|
35
|
+
#[cfg(feature = "gecko")]
|
|
36
|
+
pub device: &'a Device,
|
|
37
|
+
/// The element-specific information to resolve the value.
|
|
38
|
+
#[cfg(feature = "gecko")]
|
|
39
|
+
pub element_info: ResolvedElementInfo<'a>,
|
|
40
|
+
/// The property we're resolving the value for over-all (might be a shorthand, or a custom property).
|
|
41
|
+
pub for_property: PropertyId,
|
|
42
|
+
/// The current (physical) longhand we're resolving the value for. Guaranteed to be `Some()`
|
|
43
|
+
/// inside `ToResolvedValue` implementations.
|
|
44
|
+
pub current_longhand: Option<LonghandId>,
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/// A trait to represent the conversion between resolved and resolved values.
|
|
48
|
+
///
|
|
49
|
+
/// This trait is derivable with `#[derive(ToResolvedValue)]`.
|
|
50
|
+
///
|
|
51
|
+
/// The deriving code assumes that if the type isn't generic, then the trait can
|
|
52
|
+
/// be implemented as simple move. This means that a manual implementation with
|
|
53
|
+
/// `ResolvedValue = Self` is bogus if it returns anything else than a clone.
|
|
54
|
+
pub trait ToResolvedValue {
|
|
55
|
+
/// The resolved value type we're going to be converted to.
|
|
56
|
+
type ResolvedValue;
|
|
57
|
+
|
|
58
|
+
/// Convert a resolved value to a resolved value.
|
|
59
|
+
fn to_resolved_value(self, context: &Context) -> Self::ResolvedValue;
|
|
60
|
+
|
|
61
|
+
/// Convert a resolved value to resolved value form.
|
|
62
|
+
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
macro_rules! trivial_to_resolved_value {
|
|
66
|
+
($ty:ty) => {
|
|
67
|
+
impl $crate::values::resolved::ToResolvedValue for $ty {
|
|
68
|
+
type ResolvedValue = Self;
|
|
69
|
+
|
|
70
|
+
#[inline]
|
|
71
|
+
fn to_resolved_value(self, _: &Context) -> Self {
|
|
72
|
+
self
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
#[inline]
|
|
76
|
+
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self {
|
|
77
|
+
resolved
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
trivial_to_resolved_value!(());
|
|
84
|
+
trivial_to_resolved_value!(bool);
|
|
85
|
+
trivial_to_resolved_value!(f32);
|
|
86
|
+
trivial_to_resolved_value!(u8);
|
|
87
|
+
trivial_to_resolved_value!(i8);
|
|
88
|
+
trivial_to_resolved_value!(u16);
|
|
89
|
+
trivial_to_resolved_value!(i16);
|
|
90
|
+
trivial_to_resolved_value!(u32);
|
|
91
|
+
trivial_to_resolved_value!(i32);
|
|
92
|
+
trivial_to_resolved_value!(usize);
|
|
93
|
+
trivial_to_resolved_value!(String);
|
|
94
|
+
trivial_to_resolved_value!(Box<str>);
|
|
95
|
+
trivial_to_resolved_value!(crate::OwnedStr);
|
|
96
|
+
trivial_to_resolved_value!(crate::color::AbsoluteColor);
|
|
97
|
+
trivial_to_resolved_value!(crate::values::generics::color::ColorMixFlags);
|
|
98
|
+
trivial_to_resolved_value!(crate::Atom);
|
|
99
|
+
trivial_to_resolved_value!(crate::values::AtomIdent);
|
|
100
|
+
trivial_to_resolved_value!(crate::custom_properties::VariableValue);
|
|
101
|
+
trivial_to_resolved_value!(crate::stylesheets::UrlExtraData);
|
|
102
|
+
trivial_to_resolved_value!(computed::url::ComputedUrl);
|
|
103
|
+
#[cfg(feature = "servo")]
|
|
104
|
+
trivial_to_resolved_value!(crate::Namespace);
|
|
105
|
+
#[cfg(feature = "servo")]
|
|
106
|
+
trivial_to_resolved_value!(crate::Prefix);
|
|
107
|
+
trivial_to_resolved_value!(style_traits::values::specified::AllowedNumericType);
|
|
108
|
+
trivial_to_resolved_value!(computed::TimingFunction);
|
|
109
|
+
|
|
110
|
+
impl ToResolvedValue for Au {
|
|
111
|
+
type ResolvedValue = Length;
|
|
112
|
+
|
|
113
|
+
#[inline]
|
|
114
|
+
fn to_resolved_value(self, context: &Context) -> Self::ResolvedValue {
|
|
115
|
+
Length::new(self.to_f32_px()).to_resolved_value(context)
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
#[inline]
|
|
119
|
+
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self {
|
|
120
|
+
Au::from_f32_px(Length::from_resolved_value(resolved).px())
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
impl<A, B> ToResolvedValue for (A, B)
|
|
125
|
+
where
|
|
126
|
+
A: ToResolvedValue,
|
|
127
|
+
B: ToResolvedValue,
|
|
128
|
+
{
|
|
129
|
+
type ResolvedValue = (
|
|
130
|
+
<A as ToResolvedValue>::ResolvedValue,
|
|
131
|
+
<B as ToResolvedValue>::ResolvedValue,
|
|
132
|
+
);
|
|
133
|
+
|
|
134
|
+
#[inline]
|
|
135
|
+
fn to_resolved_value(self, context: &Context) -> Self::ResolvedValue {
|
|
136
|
+
(
|
|
137
|
+
self.0.to_resolved_value(context),
|
|
138
|
+
self.1.to_resolved_value(context),
|
|
139
|
+
)
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
#[inline]
|
|
143
|
+
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self {
|
|
144
|
+
(
|
|
145
|
+
A::from_resolved_value(resolved.0),
|
|
146
|
+
B::from_resolved_value(resolved.1),
|
|
147
|
+
)
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
impl<T> ToResolvedValue for Option<T>
|
|
152
|
+
where
|
|
153
|
+
T: ToResolvedValue,
|
|
154
|
+
{
|
|
155
|
+
type ResolvedValue = Option<<T as ToResolvedValue>::ResolvedValue>;
|
|
156
|
+
|
|
157
|
+
#[inline]
|
|
158
|
+
fn to_resolved_value(self, context: &Context) -> Self::ResolvedValue {
|
|
159
|
+
self.map(|item| item.to_resolved_value(context))
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
#[inline]
|
|
163
|
+
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self {
|
|
164
|
+
resolved.map(T::from_resolved_value)
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
impl<T> ToResolvedValue for SmallVec<[T; 1]>
|
|
169
|
+
where
|
|
170
|
+
T: ToResolvedValue,
|
|
171
|
+
{
|
|
172
|
+
type ResolvedValue = SmallVec<[<T as ToResolvedValue>::ResolvedValue; 1]>;
|
|
173
|
+
|
|
174
|
+
#[inline]
|
|
175
|
+
fn to_resolved_value(self, context: &Context) -> Self::ResolvedValue {
|
|
176
|
+
self.into_iter()
|
|
177
|
+
.map(|item| item.to_resolved_value(context))
|
|
178
|
+
.collect()
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
#[inline]
|
|
182
|
+
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self {
|
|
183
|
+
resolved.into_iter().map(T::from_resolved_value).collect()
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
impl<T> ToResolvedValue for Vec<T>
|
|
188
|
+
where
|
|
189
|
+
T: ToResolvedValue,
|
|
190
|
+
{
|
|
191
|
+
type ResolvedValue = Vec<<T as ToResolvedValue>::ResolvedValue>;
|
|
192
|
+
|
|
193
|
+
#[inline]
|
|
194
|
+
fn to_resolved_value(self, context: &Context) -> Self::ResolvedValue {
|
|
195
|
+
self.into_iter()
|
|
196
|
+
.map(|item| item.to_resolved_value(context))
|
|
197
|
+
.collect()
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
#[inline]
|
|
201
|
+
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self {
|
|
202
|
+
resolved.into_iter().map(T::from_resolved_value).collect()
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
impl<T> ToResolvedValue for thin_vec::ThinVec<T>
|
|
207
|
+
where
|
|
208
|
+
T: ToResolvedValue,
|
|
209
|
+
{
|
|
210
|
+
type ResolvedValue = thin_vec::ThinVec<<T as ToResolvedValue>::ResolvedValue>;
|
|
211
|
+
|
|
212
|
+
#[inline]
|
|
213
|
+
fn to_resolved_value(self, context: &Context) -> Self::ResolvedValue {
|
|
214
|
+
self.into_iter()
|
|
215
|
+
.map(|item| item.to_resolved_value(context))
|
|
216
|
+
.collect()
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
#[inline]
|
|
220
|
+
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self {
|
|
221
|
+
resolved.into_iter().map(T::from_resolved_value).collect()
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
impl<T> ToResolvedValue for Box<T>
|
|
226
|
+
where
|
|
227
|
+
T: ToResolvedValue,
|
|
228
|
+
{
|
|
229
|
+
type ResolvedValue = Box<<T as ToResolvedValue>::ResolvedValue>;
|
|
230
|
+
|
|
231
|
+
#[inline]
|
|
232
|
+
fn to_resolved_value(self, context: &Context) -> Self::ResolvedValue {
|
|
233
|
+
Box::new(T::to_resolved_value(*self, context))
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
#[inline]
|
|
237
|
+
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self {
|
|
238
|
+
Box::new(T::from_resolved_value(*resolved))
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
impl<T> ToResolvedValue for Box<[T]>
|
|
243
|
+
where
|
|
244
|
+
T: ToResolvedValue,
|
|
245
|
+
{
|
|
246
|
+
type ResolvedValue = Box<[<T as ToResolvedValue>::ResolvedValue]>;
|
|
247
|
+
|
|
248
|
+
#[inline]
|
|
249
|
+
fn to_resolved_value(self, context: &Context) -> Self::ResolvedValue {
|
|
250
|
+
Vec::from(self)
|
|
251
|
+
.to_resolved_value(context)
|
|
252
|
+
.into_boxed_slice()
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
#[inline]
|
|
256
|
+
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self {
|
|
257
|
+
Vec::from_resolved_value(Vec::from(resolved)).into_boxed_slice()
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
impl<T> ToResolvedValue for crate::OwnedSlice<T>
|
|
262
|
+
where
|
|
263
|
+
T: ToResolvedValue,
|
|
264
|
+
{
|
|
265
|
+
type ResolvedValue = crate::OwnedSlice<<T as ToResolvedValue>::ResolvedValue>;
|
|
266
|
+
|
|
267
|
+
#[inline]
|
|
268
|
+
fn to_resolved_value(self, context: &Context) -> Self::ResolvedValue {
|
|
269
|
+
self.into_box().to_resolved_value(context).into()
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
#[inline]
|
|
273
|
+
fn from_resolved_value(resolved: Self::ResolvedValue) -> Self {
|
|
274
|
+
Self::from(Box::from_resolved_value(resolved.into_box()))
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
// NOTE(emilio): This is implementable more generically, but it's unlikely what
|
|
279
|
+
// you want there, as it forces you to have an extra allocation.
|
|
280
|
+
//
|
|
281
|
+
// We could do that if needed, ideally with specialization for the case where
|
|
282
|
+
// ResolvedValue = T. But we don't need it for now.
|
|
283
|
+
impl<T> ToResolvedValue for Arc<T>
|
|
284
|
+
where
|
|
285
|
+
T: ToResolvedValue<ResolvedValue = T>,
|
|
286
|
+
{
|
|
287
|
+
type ResolvedValue = Self;
|
|
288
|
+
|
|
289
|
+
#[inline]
|
|
290
|
+
fn to_resolved_value(self, _: &Context) -> Self {
|
|
291
|
+
self
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
#[inline]
|
|
295
|
+
fn from_resolved_value(resolved: Self) -> Self {
|
|
296
|
+
resolved
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
// Same caveat as above applies.
|
|
301
|
+
impl<T> ToResolvedValue for ArcSlice<T>
|
|
302
|
+
where
|
|
303
|
+
T: ToResolvedValue<ResolvedValue = T>,
|
|
304
|
+
{
|
|
305
|
+
type ResolvedValue = Self;
|
|
306
|
+
|
|
307
|
+
#[inline]
|
|
308
|
+
fn to_resolved_value(self, _: &Context) -> Self {
|
|
309
|
+
self
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
#[inline]
|
|
313
|
+
fn from_resolved_value(resolved: Self) -> Self {
|
|
314
|
+
resolved
|
|
315
|
+
}
|
|
316
|
+
}
|