/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
//! Resolved animation values.
use super::{Context, ToResolvedValue};
use crate::values::computed::time::Time;
use crate::values::computed::AnimationDuration;
impl ToResolvedValue for AnimationDuration {
type ResolvedValue = Self;
fn to_resolved_value(self, context: &Context) -> Self::ResolvedValue {
match self {
// For backwards-compatibility with Level 1, when the computed value of
// animation-timeline is auto (i.e. only one list value, and that value being auto),
// the resolved value of auto for animation-duration is 0s whenever its used value
// would also be 0s.
// https://drafts.csswg.org/css-animations-2/#animation-duration
Self::Auto if context.style.get_ui().has_initial_animation_timeline() => {
Self::Time(Time::from_seconds(0.0f32))
},
_ => self,
}
}
#[inline]
fn from_resolved_value(value: Self::ResolvedValue) -> Self {
value
}
}