tailwind_css_fixes/modules/transition/ease/
mod.rs1use super::*;
2use crate::StandardValue;
3
4#[doc=include_str!("readme.md")]
5#[derive(Clone, Debug)]
6pub struct TailwindEase {
7 kind: StandardValue,
8}
9crate::macros::sealed::keyword_instance!(TailwindEase => "transition-timing-function",
10 {
11 "in" => "ease-in",
12 "in-out" => "ease-in-out",
13 "out" => "ease-out",
14 }
15);
16
17impl Display for TailwindEase {
18 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
19 write!(f, "ease-{}", self.kind)
20 }
21}
22
23impl TailwindEase {
24 pub fn parse(pattern: &[&str], arbitrary: &TailwindArbitrary) -> Result<Self> {
26 let value = &StandardValue::parser("ease", &|s| Self::check_valid(s).is_ok())(pattern, arbitrary)?.to_string();
27 Ok(TailwindEase::from(value))
28 }
29
30 pub fn parse_arbitrary(arbitrary: &TailwindArbitrary) -> Result<Self> {
32 StandardValue::parse_arbitrary(arbitrary).map(|kind| Self { kind })
33 }
34
35 pub fn check_valid(mode: &str) -> Result<&str> {
38 let set = BTreeSet::from_iter(vec![
39 "",
40 "in",
41 "in-out",
42 "out",
43 "inherit",
44 "initial",
45 "linear",
46 "revert",
47 "step-end",
48 "step-start",
49 "unset",
50 ]);
51 if set.contains(mode) {
52 Ok(mode)
53 } else {
54 syntax_error!("Invalid ease keyword: {}", mode)
55 }
56 }
57}