1use crate::value::Unit;
2
3#[derive(Clone, Copy, Eq, Ord, PartialEq, PartialOrd)]
5pub enum FlexPosition {
6 Center,
8 End,
10 Start,
12}
13
14impl ToString for FlexPosition {
15 fn to_string(&self) -> String {
16 match self {
17 FlexPosition::Center => "center",
18 FlexPosition::End => "flex-end",
19 FlexPosition::Start => "flex-start",
20 }
21 .into()
22 }
23}
24
25impl Default for FlexPosition {
26 fn default() -> FlexPosition {
27 FlexPosition::Center
28 }
29}
30
31#[derive(Clone, Copy, Eq, Ord, PartialEq, PartialOrd)]
33pub enum Alignment {
34 BottomCenter,
36 BottomLeft,
38 BottomRight,
40 Center,
42 CenterLeft,
44 CenterRight,
46 TopCenter,
48 TopLeft,
50 TopRight,
52}
53
54impl Default for Alignment {
55 fn default() -> Alignment {
56 Alignment::Center
57 }
58}
59
60impl ToString for Alignment {
61 fn to_string(&self) -> String {
62 let (ai, jc) = match self {
63 Alignment::BottomCenter => ("flex-end", "center"),
64 Alignment::BottomLeft => ("flex-end", "flex-start"),
65 Alignment::BottomRight => ("flex-end", "flex-end"),
66 Alignment::Center => ("center", "center"),
67 Alignment::CenterLeft => ("center", "flex-start"),
68 Alignment::CenterRight => ("center", "flex-end"),
69 Alignment::TopCenter => ("flex-start", "center"),
70 Alignment::TopLeft => ("flex-start", "flex-start"),
71 Alignment::TopRight => ("flex-start", "flex-end"),
72 };
73
74 format!("align-items: {}; justify-content: {};", ai, jc)
75 }
76}
77
78#[derive(Clone, Copy, Eq, Ord, PartialEq, PartialOrd)]
80pub enum FlexBasis {
81 Auto,
83 Inherit,
85 Fill,
87 MaxContent,
89 MinContent,
91 FitContent,
93 Number(Unit),
95}
96
97impl Default for FlexBasis {
98 fn default() -> FlexBasis {
99 FlexBasis::Inherit
100 }
101}
102
103impl ToString for FlexBasis {
104 fn to_string(&self) -> String {
105 match self {
106 FlexBasis::Auto => "auto".into(),
107 FlexBasis::Inherit => "inherit".into(),
108 FlexBasis::Fill => "fill".into(),
109 FlexBasis::FitContent => "fit-content".into(),
110 FlexBasis::MaxContent => "max-content".into(),
111 FlexBasis::MinContent => "min-content".into(),
112 FlexBasis::Number(u) => u.to_string(),
113 }
114 }
115}
116
117#[derive(Clone, Copy, Eq, Ord, PartialEq, PartialOrd)]
119pub enum FlexDirection {
120 Column,
122 ColumnReverse,
124 Row,
126 RowReverse,
128}
129
130impl Default for FlexDirection {
131 fn default() -> FlexDirection {
132 FlexDirection::Row
133 }
134}
135
136impl ToString for FlexDirection {
137 fn to_string(&self) -> String {
138 match self {
139 FlexDirection::Column => "column",
140 FlexDirection::ColumnReverse => "column-reverse",
141 FlexDirection::Row => "row",
142 FlexDirection::RowReverse => "row-reverse",
143 }
144 .to_string()
145 }
146}
147
148#[derive(Clone, Copy, Eq, Ord, PartialEq, PartialOrd)]
150pub enum FlexWrap {
151 Wrap,
153 NoWrap,
155 WrapReverse,
157}
158
159impl Default for FlexWrap {
160 fn default() -> FlexWrap {
161 FlexWrap::Wrap
162 }
163}
164
165impl ToString for FlexWrap {
166 fn to_string(&self) -> String {
167 match self {
168 FlexWrap::Wrap => "wrap",
169 FlexWrap::NoWrap => "no-wrap",
170 FlexWrap::WrapReverse => "wrap-reverse",
171 }
172 .to_string()
173 }
174}