@@ -23,6 +23,7 @@ pub fn extract_style_prop<'a>(
2323 value : convert_value ( str. value . as_str ( ) ) ,
2424 level : 0 ,
2525 property : name,
26+ selector : None ,
2627 } ) ) )
2728 }
2829 JSXAttributeValue :: ExpressionContainer ( expression) => {
@@ -34,31 +35,35 @@ pub fn extract_style_prop<'a>(
3435 name. as_str ( ) ,
3536 expression. expression . to_expression ( ) ,
3637 0 ,
38+ None ,
3739 )
3840 }
3941 }
4042 _ => None ,
4143 }
4244}
43- fn extract_style_prop_from_express < ' a > (
45+ pub fn extract_style_prop_from_express < ' a > (
4446 ast_builder : & AstBuilder < ' a > ,
4547 name : & str ,
4648 expression : & Expression < ' a > ,
4749 level : u8 ,
50+ selector : Option < & str > ,
4851) -> Option < ExtractStyleProp < ' a > > {
4952 match & expression {
5053 Expression :: NumericLiteral ( num) => {
5154 Some ( ExtractStyleProp :: Static ( Static ( ExtractStaticStyle {
5255 value : convert_value ( num. value . to_string ( ) . as_str ( ) ) ,
5356 level,
5457 property : name. to_string ( ) ,
58+ selector : selector. map ( |s| s. to_string ( ) ) ,
5559 } ) ) )
5660 }
5761 Expression :: StringLiteral ( str) => {
5862 Some ( ExtractStyleProp :: Static ( Static ( ExtractStaticStyle {
5963 value : convert_value ( str. value . as_str ( ) ) ,
6064 level,
6165 property : name. to_string ( ) ,
66+ selector : selector. map ( |s| s. to_string ( ) ) ,
6267 } ) ) )
6368 }
6469 Expression :: Identifier ( identifier) => {
@@ -69,6 +74,7 @@ fn extract_style_prop_from_express<'a>(
6974 level,
7075 property : name. to_string ( ) ,
7176 identifier : identifier. name . to_string ( ) ,
77+ selector : selector. map ( |s| s. to_string ( ) ) ,
7278 } ) ) )
7379 }
7480 }
@@ -81,6 +87,7 @@ fn extract_style_prop_from_express<'a>(
8187 name,
8288 & logical. right ,
8389 level,
90+ selector,
8491 )
8592 . map ( Box :: new) ,
8693 } ) ,
@@ -91,6 +98,7 @@ fn extract_style_prop_from_express<'a>(
9198 name,
9299 & logical. right ,
93100 level,
101+ selector,
94102 )
95103 . map ( Box :: new) ,
96104 alternate : None ,
@@ -120,18 +128,29 @@ fn extract_style_prop_from_express<'a>(
120128 name,
121129 & logical. right ,
122130 level,
131+ selector,
123132 )
124133 . map ( Box :: new) ,
125134 } ) ,
126135 } ,
127- Expression :: ParenthesizedExpression ( parenthesized) => {
128- extract_style_prop_from_express ( ast_builder, name, & parenthesized. expression , level)
129- }
136+ Expression :: ParenthesizedExpression ( parenthesized) => extract_style_prop_from_express (
137+ ast_builder,
138+ name,
139+ & parenthesized. expression ,
140+ level,
141+ selector,
142+ ) ,
130143 Expression :: ArrayExpression ( array) => {
131- extract_style_prop_from_array_express ( ast_builder, name, array)
144+ extract_style_prop_from_array_express ( ast_builder, name, array, selector )
132145 }
133146 Expression :: ConditionalExpression ( conditional) => {
134- extract_style_prop_from_conditional_express ( ast_builder, name, conditional, level)
147+ extract_style_prop_from_conditional_express (
148+ ast_builder,
149+ name,
150+ conditional,
151+ level,
152+ selector,
153+ )
135154 }
136155 _ => None ,
137156 }
@@ -142,6 +161,7 @@ fn extract_style_prop_from_conditional_express<'a>(
142161 name : & str ,
143162 conditional : & ConditionalExpression < ' a > ,
144163 level : u8 ,
164+ media : Option < & str > ,
145165) -> Option < ExtractStyleProp < ' a > > {
146166 Some ( ExtractStyleProp :: Conditional {
147167 condition : conditional. test . clone_in ( ast_builder. allocator ) ,
@@ -150,13 +170,15 @@ fn extract_style_prop_from_conditional_express<'a>(
150170 name,
151171 & conditional. consequent ,
152172 level,
173+ media,
153174 )
154175 . map ( Box :: new) ,
155176 alternate : extract_style_prop_from_express (
156177 ast_builder,
157178 name,
158179 & conditional. alternate ,
159180 level,
181+ media,
160182 )
161183 . map ( Box :: new) ,
162184 } )
@@ -166,13 +188,20 @@ fn extract_style_prop_from_array_express<'a>(
166188 ast_builder : & AstBuilder < ' a > ,
167189 name : & str ,
168190 array : & ArrayExpression < ' a > ,
191+ selector : Option < & str > ,
169192) -> Option < ExtractStyleProp < ' a > > {
170193 let ret = array
171194 . elements
172195 . iter ( )
173196 . enumerate ( )
174197 . filter_map ( |( idx, element) | {
175- extract_style_prop_from_express ( ast_builder, name, element. to_expression ( ) , idx as u8 )
198+ extract_style_prop_from_express (
199+ ast_builder,
200+ name,
201+ element. to_expression ( ) ,
202+ idx as u8 ,
203+ selector,
204+ )
176205 } )
177206 . collect :: < Vec < ExtractStyleProp > > ( ) ;
178207 if ret. is_empty ( ) {
0 commit comments