1use crate::{pos::Span, tokenizer::TokenWithSpan};
4#[cfg(feature = "variant_helpers")]
5use oxc_css_parser_macro::EnumAsIs;
6#[cfg(feature = "span_ignored_eq")]
7use oxc_css_parser_macro::SpanIgnoredEq;
8use oxc_css_parser_macro::Spanned;
9#[cfg(feature = "serialize")]
10use serde::Serialize;
11use smallvec::SmallVec;
12use std::borrow::Cow;
13
14#[derive(Clone, Debug, Spanned, PartialEq)]
15#[cfg_attr(feature = "serialize", derive(Serialize))]
16#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
17#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
18pub struct AnPlusB {
19 pub a: i32,
20 pub b: i32,
21 pub span: Span,
22}
23
24#[derive(Clone, Debug, Spanned, PartialEq)]
25#[cfg_attr(feature = "serialize", derive(Serialize))]
26#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
27#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
28pub struct AtRule<'s> {
29 pub name: Ident<'s>,
30 pub prelude: Option<AtRulePrelude<'s>>,
31 pub block: Option<SimpleBlock<'s>>,
32 pub span: Span,
33}
34
35#[derive(Clone, Debug, Spanned, PartialEq)]
36#[cfg_attr(feature = "serialize", derive(Serialize))]
37#[cfg_attr(feature = "serialize", serde(untagged))]
38#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
39#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
40pub enum AtRulePrelude<'s> {
41 Charset(Str<'s>),
42 ColorProfile(ColorProfilePrelude<'s>),
43 Container(ContainerPrelude<'s>),
44 CounterStyle(InterpolableIdent<'s>),
45 CustomMedia(Box<CustomMedia<'s>>),
46 CustomSelector(Box<CustomSelectorPrelude<'s>>),
47 Document(DocumentPrelude<'s>),
48 FontFeatureValues(FontFamilyName<'s>),
49 FontPaletteValues(InterpolableIdent<'s>),
50 Import(Box<ImportPrelude<'s>>),
51 Keyframes(KeyframesName<'s>),
52 Layer(LayerNames<'s>),
53 LessImport(Box<LessImportPrelude<'s>>),
54 LessPlugin(Box<LessPlugin<'s>>),
55 Media(MediaQueryList<'s>),
56 Namespace(Box<NamespacePrelude<'s>>),
57 Nest(SelectorList<'s>),
58 Page(PageSelectorList<'s>),
59 PositionTry(InterpolableIdent<'s>),
60 Property(InterpolableIdent<'s>),
61 SassAtRoot(SassAtRoot<'s>),
62 SassContent(SassContent<'s>),
63 SassEach(Box<SassEach<'s>>),
64 SassExpr(Box<ComponentValue<'s>>),
65 SassExtend(Box<SassExtend<'s>>),
66 SassFor(Box<SassFor<'s>>),
67 SassForward(Box<SassForward<'s>>),
68 SassFunction(Box<SassFunction<'s>>),
69 SassImport(SassImportPrelude<'s>),
70 SassInclude(Box<SassInclude<'s>>),
71 SassMixin(Box<SassMixin<'s>>),
72 SassUse(Box<SassUse<'s>>),
73 Scope(Box<ScopePrelude<'s>>),
74 ScrollTimeline(InterpolableIdent<'s>),
75 Supports(SupportsCondition<'s>),
76 Unknown(Box<UnknownAtRulePrelude<'s>>),
77}
78
79#[derive(Clone, Debug, Spanned, PartialEq)]
80#[cfg_attr(feature = "serialize", derive(Serialize))]
81#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
82#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
83pub struct AttributeSelector<'s> {
84 pub name: WqName<'s>,
85 pub matcher: Option<AttributeSelectorMatcher>,
86 pub value: Option<AttributeSelectorValue<'s>>,
87 pub modifier: Option<AttributeSelectorModifier<'s>>,
88 pub span: Span,
89}
90
91#[derive(Clone, Debug, Spanned, PartialEq)]
92#[cfg_attr(feature = "serialize", derive(Serialize))]
93#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
94#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
95pub struct AttributeSelectorMatcher {
96 pub kind: AttributeSelectorMatcherKind,
97 pub span: Span,
98}
99
100#[derive(Clone, Debug, PartialEq)]
101#[cfg_attr(feature = "serialize", derive(Serialize))]
102#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
103pub enum AttributeSelectorMatcherKind {
104 Exact,
106 MatchWord,
108 ExactOrPrefixThenHyphen,
110 Prefix,
112 Suffix,
114 Substring,
116}
117
118#[derive(Clone, Debug, Spanned, PartialEq)]
119#[cfg_attr(feature = "serialize", derive(Serialize))]
120#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
121#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
122pub struct AttributeSelectorModifier<'s> {
123 pub ident: InterpolableIdent<'s>,
124 pub span: Span,
125}
126
127#[derive(Clone, Debug, Spanned, PartialEq)]
128#[cfg_attr(feature = "serialize", derive(Serialize))]
129#[cfg_attr(feature = "serialize", serde(untagged))]
130#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
131#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
132pub enum AttributeSelectorValue<'s> {
133 Ident(InterpolableIdent<'s>),
134 Str(InterpolableStr<'s>),
135 Percentage(Percentage<'s>),
136 LessEscapedStr(LessEscapedStr<'s>),
137}
138
139#[derive(Clone, Debug, Spanned, PartialEq)]
140#[cfg_attr(feature = "serialize", derive(Serialize))]
141#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
142#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
143pub struct BracketBlock<'s> {
144 pub value: Vec<ComponentValue<'s>>,
145 pub span: Span,
146}
147
148#[derive(Clone, Debug, Spanned, PartialEq)]
149#[cfg_attr(feature = "serialize", derive(Serialize))]
150#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
151#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
152pub struct Calc<'s> {
153 pub left: Box<ComponentValue<'s>>,
154 pub op: CalcOperator,
155 pub right: Box<ComponentValue<'s>>,
156 pub span: Span,
157}
158
159#[derive(Clone, Debug, Spanned, PartialEq)]
160#[cfg_attr(feature = "serialize", derive(Serialize))]
161#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
162#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
163pub struct CalcOperator {
164 pub kind: CalcOperatorKind,
165 pub span: Span,
166}
167
168#[derive(Clone, Debug, Spanned, PartialEq)]
169#[cfg_attr(feature = "serialize", derive(Serialize))]
170#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
171pub enum CalcOperatorKind {
172 Plus,
173 Minus,
174 Multiply,
175 Division,
176}
177
178#[derive(Clone, Debug, Spanned, PartialEq)]
179#[cfg_attr(feature = "serialize", derive(Serialize))]
180#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
181#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
182pub struct ClassSelector<'s> {
183 pub name: InterpolableIdent<'s>,
184 pub span: Span,
185}
186
187#[derive(Clone, Debug, Spanned, PartialEq)]
188#[cfg_attr(feature = "serialize", derive(Serialize))]
189#[cfg_attr(feature = "serialize", serde(untagged))]
190#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
191#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
192pub enum ColorProfilePrelude<'s> {
193 DashedIdent(InterpolableIdent<'s>),
194 DeviceCmyk(Ident<'s>),
195}
196
197#[derive(Clone, Debug, Spanned, PartialEq)]
198#[cfg_attr(feature = "serialize", derive(Serialize))]
199#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
200#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
201pub struct Combinator {
202 pub kind: CombinatorKind,
203 pub span: Span,
204}
205
206#[derive(Clone, Debug, PartialEq)]
207#[cfg_attr(feature = "serialize", derive(Serialize))]
208#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
209pub enum CombinatorKind {
210 Descendant,
212 NextSibling,
214 Child,
216 LaterSibling,
218 Column,
220}
221
222#[derive(Clone, Debug, Spanned, PartialEq)]
223#[cfg_attr(feature = "serialize", derive(Serialize))]
224#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
225#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
226pub struct ComplexSelector<'s> {
227 pub children: SmallVec<[ComplexSelectorChild<'s>; 3]>,
228 pub span: Span,
229}
230
231#[derive(Clone, Debug, Spanned, PartialEq)]
232#[cfg_attr(feature = "serialize", derive(Serialize))]
233#[cfg_attr(feature = "serialize", serde(untagged))]
234#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
235#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
236pub enum ComplexSelectorChild<'s> {
237 CompoundSelector(CompoundSelector<'s>),
238 Combinator(Combinator),
239}
240
241#[derive(Clone, Debug, Spanned, PartialEq)]
242#[cfg_attr(feature = "serialize", derive(Serialize))]
243#[cfg_attr(feature = "serialize", serde(untagged))]
244#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
245#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
246pub enum ComponentValue<'s> {
247 BracketBlock(BracketBlock<'s>),
248 Calc(Calc<'s>),
249 Delimiter(Delimiter),
250 Dimension(Dimension<'s>),
251 Function(Function<'s>),
252 HexColor(HexColor<'s>),
253 IdSelector(IdSelector<'s>),
254 ImportantAnnotation(ImportantAnnotation<'s>),
255 InterpolableIdent(InterpolableIdent<'s>),
256 InterpolableStr(InterpolableStr<'s>),
257 LayerName(LayerName<'s>),
258 LessBinaryOperation(LessBinaryOperation<'s>),
259 LessCondition(Box<LessCondition<'s>>),
260 LessDetachedRuleset(LessDetachedRuleset<'s>),
261 LessEscapedStr(LessEscapedStr<'s>),
262 LessJavaScriptSnippet(LessJavaScriptSnippet<'s>),
263 LessList(LessList<'s>),
264 LessMixinCall(LessMixinCall<'s>),
265 LessNamespaceValue(Box<LessNamespaceValue<'s>>),
266 LessNegativeValue(LessNegativeValue<'s>),
267 LessParenthesizedOperation(LessParenthesizedOperation<'s>),
268 LessPercentKeyword(LessPercentKeyword),
269 LessPropertyVariable(LessPropertyVariable<'s>),
270 LessVariable(LessVariable<'s>),
271 LessVariableVariable(LessVariableVariable<'s>),
272 Number(Number<'s>),
273 Percentage(Percentage<'s>),
274 Placeholder(Placeholder<'s>),
275 Ratio(Ratio<'s>),
276 SassArbitraryArgument(SassArbitraryArgument<'s>),
277 SassBinaryExpression(SassBinaryExpression<'s>),
278 SassKeywordArgument(SassKeywordArgument<'s>),
279 SassList(SassList<'s>),
280 SassMap(SassMap<'s>),
281 SassQualifiedName(SassQualifiedName<'s>),
282 SassNestingDeclaration(SassNestingDeclaration<'s>),
283 SassParenthesizedExpression(SassParenthesizedExpression<'s>),
284 SassParentSelector(NestingSelector<'s>),
285 SassUnaryExpression(SassUnaryExpression<'s>),
286 SassVariable(SassVariable<'s>),
287 TokenWithSpan(TokenWithSpan<'s>),
288 UnicodeRange(UnicodeRange<'s>),
289 Url(Url<'s>),
290}
291
292#[derive(Clone, Debug, Spanned, PartialEq)]
293#[cfg_attr(feature = "serialize", derive(Serialize))]
294#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
295#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
296pub struct ComponentValues<'s> {
297 pub values: Vec<ComponentValue<'s>>,
298 pub span: Span,
299}
300
301#[derive(Clone, Debug, Spanned, PartialEq)]
302#[cfg_attr(feature = "serialize", derive(Serialize))]
303#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
304#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
305pub struct CompoundSelector<'s> {
306 pub children: Vec<SimpleSelector<'s>>,
307 pub span: Span,
308}
309
310#[derive(Clone, Debug, Spanned, PartialEq)]
311#[cfg_attr(feature = "serialize", derive(Serialize))]
312#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
313#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
314pub struct CompoundSelectorList<'s> {
315 pub selectors: Vec<CompoundSelector<'s>>,
316 pub comma_spans: Vec<Span>,
317 pub span: Span,
318}
319
320#[derive(Clone, Debug, Spanned, PartialEq)]
321#[cfg_attr(feature = "serialize", derive(Serialize))]
322#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
323#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
324pub struct ContainerCondition<'s> {
325 pub conditions: Vec<ContainerConditionKind<'s>>,
326 pub span: Span,
327}
328
329#[derive(Clone, Debug, Spanned, PartialEq)]
330#[cfg_attr(feature = "serialize", derive(Serialize))]
331#[cfg_attr(feature = "serialize", serde(untagged))]
332#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
333#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
334pub enum ContainerConditionKind<'s> {
335 QueryInParens(QueryInParens<'s>),
336 And(ContainerConditionAnd<'s>),
337 Or(ContainerConditionOr<'s>),
338 Not(ContainerConditionNot<'s>),
339}
340
341#[derive(Clone, Debug, Spanned, PartialEq)]
342#[cfg_attr(feature = "serialize", derive(Serialize))]
343#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
344#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
345pub struct ContainerConditionAnd<'s> {
346 pub keyword: Ident<'s>,
347 pub query_in_parens: QueryInParens<'s>,
348 pub span: Span,
349}
350
351#[derive(Clone, Debug, Spanned, PartialEq)]
352#[cfg_attr(feature = "serialize", derive(Serialize))]
353#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
354#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
355pub struct ContainerConditionNot<'s> {
356 pub keyword: Ident<'s>,
357 pub query_in_parens: QueryInParens<'s>,
358 pub span: Span,
359}
360
361#[derive(Clone, Debug, Spanned, PartialEq)]
362#[cfg_attr(feature = "serialize", derive(Serialize))]
363#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
364#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
365pub struct ContainerConditionOr<'s> {
366 pub keyword: Ident<'s>,
367 pub query_in_parens: QueryInParens<'s>,
368 pub span: Span,
369}
370
371#[derive(Clone, Debug, Spanned, PartialEq)]
372#[cfg_attr(feature = "serialize", derive(Serialize))]
373#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
374#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
375pub struct ContainerPrelude<'s> {
376 pub name: Option<InterpolableIdent<'s>>,
377 pub condition: ContainerCondition<'s>,
378 pub span: Span,
379}
380
381#[derive(Clone, Debug, Spanned, PartialEq)]
382#[cfg_attr(feature = "serialize", derive(Serialize))]
383#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
384#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
385pub struct CustomMedia<'s> {
386 pub name: InterpolableIdent<'s>,
387 pub value: CustomMediaValue<'s>,
388 pub span: Span,
389}
390
391#[derive(Clone, Debug, Spanned, PartialEq)]
392#[cfg_attr(feature = "serialize", derive(Serialize))]
393#[cfg_attr(feature = "serialize", serde(untagged))]
394#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
395#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
396pub enum CustomMediaValue<'s> {
397 MediaQueryList(MediaQueryList<'s>),
398 True(Ident<'s>),
399 False(Ident<'s>),
400}
401
402#[derive(Clone, Debug, Spanned, PartialEq)]
403#[cfg_attr(feature = "serialize", derive(Serialize))]
404#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
405#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
406pub struct CustomSelector<'s> {
407 pub prefix_arg: Option<CustomSelectorArg<'s>>,
408 pub name: Ident<'s>,
409 pub args: Option<CustomSelectorArgs<'s>>,
410 pub span: Span,
411}
412
413#[derive(Clone, Debug, Spanned, PartialEq)]
414#[cfg_attr(feature = "serialize", derive(Serialize))]
415#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
416#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
417pub struct CustomSelectorArg<'s> {
418 pub name: Ident<'s>,
419 pub span: Span,
420}
421
422#[derive(Clone, Debug, Spanned, PartialEq)]
423#[cfg_attr(feature = "serialize", derive(Serialize))]
424#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
425#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
426pub struct CustomSelectorArgs<'s> {
427 pub args: Vec<CustomSelectorArg<'s>>,
428 pub comma_spans: Vec<Span>,
429 pub span: Span,
430}
431
432#[derive(Clone, Debug, Spanned, PartialEq)]
433#[cfg_attr(feature = "serialize", derive(Serialize))]
434#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
435#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
436pub struct CustomSelectorPrelude<'s> {
437 pub custom_selector: CustomSelector<'s>,
438 pub selector: SelectorList<'s>,
439 pub span: Span,
440}
441
442#[derive(Clone, Debug, Spanned, PartialEq)]
443#[cfg_attr(feature = "serialize", derive(Serialize))]
444#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
445#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
446pub struct Declaration<'s> {
447 pub name: InterpolableIdent<'s>,
448 pub name_suffix: Option<char>,
449 pub colon_span: Span,
450 pub value: Vec<ComponentValue<'s>>,
451 pub important: Option<ImportantAnnotation<'s>>,
452 pub less_property_merge: Option<LessPropertyMerge>,
453 pub span: Span,
454}
455
456#[derive(Clone, Debug, Spanned, PartialEq)]
457#[cfg_attr(feature = "serialize", derive(Serialize))]
458#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
459#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
460pub struct Delimiter {
461 pub kind: DelimiterKind,
462 pub span: Span,
463}
464
465#[derive(Clone, Debug, PartialEq)]
466#[cfg_attr(feature = "serialize", derive(Serialize))]
467#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
468pub enum DelimiterKind {
469 Comma,
470 Solidus,
471 Semicolon,
472}
473
474#[derive(Clone, Debug, Spanned, PartialEq)]
475#[cfg_attr(feature = "serialize", derive(Serialize))]
476#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
477#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
478pub struct Dimension<'s> {
479 pub value: Number<'s>,
480 pub unit: Ident<'s>,
481 pub kind: DimensionKind,
482 pub span: Span,
483}
484
485#[derive(Clone, Debug, Spanned, PartialEq)]
486#[cfg_attr(feature = "serialize", derive(Serialize))]
487#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
488pub enum DimensionKind {
489 Length,
490 Angle,
491 Duration,
492 Frequency,
493 Resolution,
494 Flex,
495 Unknown,
496}
497
498#[derive(Clone, Debug, Spanned, PartialEq)]
499#[cfg_attr(feature = "serialize", derive(Serialize))]
500#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
501#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
502pub struct DocumentPrelude<'s> {
503 pub matchers: Vec<DocumentPreludeMatcher<'s>>,
504 pub comma_spans: Vec<Span>,
505 pub span: Span,
506}
507
508#[derive(Clone, Debug, Spanned, PartialEq)]
509#[cfg_attr(feature = "serialize", derive(Serialize))]
510#[cfg_attr(feature = "serialize", serde(untagged))]
511#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
512#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
513pub enum DocumentPreludeMatcher<'s> {
514 Url(Url<'s>),
515 Function(Function<'s>),
516}
517
518#[derive(Clone, Debug, Spanned, PartialEq)]
519#[cfg_attr(feature = "serialize", derive(Serialize))]
520#[cfg_attr(feature = "serialize", serde(untagged))]
521#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
522#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
523pub enum FontFamilyName<'s> {
524 Str(InterpolableStr<'s>),
525 Unquoted(UnquotedFontFamilyName<'s>),
526}
527
528#[derive(Clone, Debug, Spanned, PartialEq)]
529#[cfg_attr(feature = "serialize", derive(Serialize))]
530#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
531#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
532pub struct Function<'s> {
533 pub name: FunctionName<'s>,
534 pub args: Vec<ComponentValue<'s>>,
535 pub span: Span,
536}
537
538#[derive(Clone, Debug, Spanned, PartialEq)]
539#[cfg_attr(feature = "serialize", derive(Serialize))]
540#[cfg_attr(feature = "serialize", serde(untagged))]
541#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
542#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
543pub enum FunctionName<'s> {
544 Ident(InterpolableIdent<'s>),
545 SassQualifiedName(Box<SassQualifiedName<'s>>),
546 LessListFunction(LessListFunction),
547 LessFormatFunction(LessFormatFunction),
548}
549
550#[derive(Clone, Debug, Spanned, PartialEq)]
551#[cfg_attr(feature = "serialize", derive(Serialize))]
552#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
553#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
554pub struct HexColor<'s> {
555 pub value: Cow<'s, str>,
556 pub raw: &'s str,
557 pub span: Span,
558}
559
560#[derive(Clone, Debug, Spanned, PartialEq)]
561#[cfg_attr(feature = "serialize", derive(Serialize))]
562#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
563#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
564pub struct Ident<'s> {
565 pub name: Cow<'s, str>,
566 pub raw: &'s str,
567 pub span: Span,
568}
569
570#[derive(Clone, Debug, Spanned, PartialEq)]
571#[cfg_attr(feature = "serialize", derive(Serialize))]
572#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
573#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
574pub struct ImportPrelude<'s> {
575 pub href: ImportPreludeHref<'s>,
576 pub layer: Option<ImportPreludeLayer<'s>>,
577 pub supports: Option<ImportPreludeSupports<'s>>,
578 pub media: Option<MediaQueryList<'s>>,
579 pub span: Span,
580}
581
582#[derive(Clone, Debug, Spanned, PartialEq)]
583#[cfg_attr(feature = "serialize", derive(Serialize))]
584#[cfg_attr(feature = "serialize", serde(untagged))]
585#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
586#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
587pub enum ImportPreludeHref<'s> {
588 Str(InterpolableStr<'s>),
589 Url(Url<'s>),
590 Function(Function<'s>),
593}
594
595#[derive(Clone, Debug, Spanned, PartialEq)]
596#[cfg_attr(feature = "serialize", derive(Serialize))]
597#[cfg_attr(feature = "serialize", serde(untagged))]
598#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
599#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
600pub enum ImportPreludeLayer<'s> {
601 Empty(Ident<'s>),
602 WithName(Function<'s>),
603}
604
605#[derive(Clone, Debug, Spanned, PartialEq)]
606#[cfg_attr(feature = "serialize", derive(Serialize))]
607#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
608#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
609pub struct ImportPreludeSupports<'s> {
610 pub kind: ImportPreludeSupportsKind<'s>,
611 pub span: Span,
612}
613
614#[derive(Clone, Debug, Spanned, PartialEq)]
615#[cfg_attr(feature = "serialize", derive(Serialize))]
616#[cfg_attr(feature = "serialize", serde(untagged))]
617#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
618#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
619pub enum ImportPreludeSupportsKind<'s> {
620 SupportsCondition(SupportsCondition<'s>),
621 Declaration(Declaration<'s>),
622}
623
624#[derive(Clone, Debug, Spanned, PartialEq)]
625#[cfg_attr(feature = "serialize", derive(Serialize))]
626#[cfg_attr(feature = "serialize", serde(untagged))]
627#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
628#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
629pub enum InterpolableIdent<'s> {
630 Literal(Ident<'s>),
631 SassInterpolated(SassInterpolatedIdent<'s>),
632 LessInterpolated(LessInterpolatedIdent<'s>),
633 Placeholder(Placeholder<'s>),
634}
635
636#[derive(Clone, Debug, Spanned, PartialEq)]
641#[cfg_attr(feature = "serialize", derive(Serialize))]
642#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
643#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
644pub struct Placeholder<'s> {
645 pub index: u32,
646 pub suffix: &'s str,
650 pub span: Span,
651}
652
653#[derive(Clone, Debug, Spanned, PartialEq)]
654#[cfg_attr(feature = "serialize", derive(Serialize))]
655#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
656#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
657pub struct InterpolableIdentStaticPart<'s> {
658 pub value: Cow<'s, str>,
659 pub raw: &'s str,
660 pub span: Span,
661}
662
663#[derive(Clone, Debug, Spanned, PartialEq)]
664#[cfg_attr(feature = "serialize", derive(Serialize))]
665#[cfg_attr(feature = "serialize", serde(untagged))]
666#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
667#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
668pub enum InterpolableStr<'s> {
669 Literal(Str<'s>),
670 SassInterpolated(SassInterpolatedStr<'s>),
671 LessInterpolated(LessInterpolatedStr<'s>),
672}
673
674#[derive(Clone, Debug, Spanned, PartialEq)]
675#[cfg_attr(feature = "serialize", derive(Serialize))]
676#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
677#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
678pub struct InterpolableStrStaticPart<'s> {
679 pub value: Cow<'s, str>,
680 pub raw: &'s str,
681 pub span: Span,
682}
683
684#[derive(Clone, Debug, Spanned, PartialEq)]
685#[cfg_attr(feature = "serialize", derive(Serialize))]
686#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
687#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
688pub struct InterpolableUrlStaticPart<'s> {
689 pub value: Cow<'s, str>,
690 pub raw: &'s str,
691 pub span: Span,
692}
693
694#[derive(Clone, Debug, Spanned, PartialEq)]
695#[cfg_attr(feature = "serialize", derive(Serialize))]
696#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
697#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
698pub struct IdSelector<'s> {
699 pub name: InterpolableIdent<'s>,
700 pub span: Span,
701}
702
703#[derive(Clone, Debug, Spanned, PartialEq)]
704#[cfg_attr(feature = "serialize", derive(Serialize))]
705#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
706#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
707pub struct ImportantAnnotation<'s> {
708 pub ident: Ident<'s>,
709 pub span: Span,
710}
711
712#[derive(Clone, Debug, Spanned, PartialEq)]
713#[cfg_attr(feature = "serialize", derive(Serialize))]
714#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
715#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
716pub struct KeyframeBlock<'s> {
717 pub selectors: Vec<KeyframeSelector<'s>>,
718 pub comma_spans: Vec<Span>,
719 pub block: SimpleBlock<'s>,
720 pub span: Span,
721}
722
723#[derive(Clone, Debug, Spanned, PartialEq)]
724#[cfg_attr(feature = "serialize", derive(Serialize))]
725#[cfg_attr(feature = "serialize", serde(untagged))]
726#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
727#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
728pub enum KeyframeSelector<'s> {
729 Ident(InterpolableIdent<'s>),
730 Percentage(Percentage<'s>),
731}
732
733#[derive(Clone, Debug, Spanned, PartialEq)]
734#[cfg_attr(feature = "serialize", derive(Serialize))]
735#[cfg_attr(feature = "serialize", serde(untagged))]
736#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
737#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
738pub enum KeyframesName<'s> {
739 Ident(InterpolableIdent<'s>),
740 Str(InterpolableStr<'s>),
741 LessVariable(LessVariable<'s>),
742 LessEscapedStr(LessEscapedStr<'s>),
743}
744
745#[derive(Clone, Debug, Spanned, PartialEq)]
746#[cfg_attr(feature = "serialize", derive(Serialize))]
747#[cfg_attr(feature = "serialize", serde(untagged))]
748#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
749#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
750pub enum LanguageRange<'s> {
751 Str(InterpolableStr<'s>),
752 Ident(InterpolableIdent<'s>),
753}
754
755#[derive(Clone, Debug, Spanned, PartialEq)]
756#[cfg_attr(feature = "serialize", derive(Serialize))]
757#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
758#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
759pub struct LanguageRangeList<'s> {
760 pub ranges: Vec<LanguageRange<'s>>,
761 pub comma_spans: Vec<Span>,
762 pub span: Span,
763}
764
765#[derive(Clone, Debug, Spanned, PartialEq)]
766#[cfg_attr(feature = "serialize", derive(Serialize))]
767#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
768#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
769pub struct LayerName<'s> {
770 pub idents: Vec<InterpolableIdent<'s>>,
771 pub span: Span,
772}
773
774#[derive(Clone, Debug, Spanned, PartialEq)]
775#[cfg_attr(feature = "serialize", derive(Serialize))]
776#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
777#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
778pub struct LayerNames<'s> {
779 pub names: Vec<LayerName<'s>>,
780 pub comma_spans: Vec<Span>,
781 pub span: Span,
782}
783
784#[derive(Clone, Debug, Spanned, PartialEq)]
785#[cfg_attr(feature = "serialize", derive(Serialize))]
786#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
787#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
788pub struct LessBinaryCondition<'s> {
789 pub left: Box<LessCondition<'s>>,
790 pub op: LessBinaryConditionOperator,
791 pub right: Box<LessCondition<'s>>,
792 pub span: Span,
793}
794
795#[derive(Clone, Debug, Spanned, PartialEq)]
796#[cfg_attr(feature = "serialize", derive(Serialize))]
797#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
798#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
799pub struct LessBinaryConditionOperator {
800 pub kind: LessBinaryConditionOperatorKind,
801 pub span: Span,
802}
803
804#[derive(Clone, Debug, PartialEq)]
805#[cfg_attr(feature = "serialize", derive(Serialize))]
806#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
807pub enum LessBinaryConditionOperatorKind {
808 GreaterThan,
809 GreaterThanOrEqual,
810 LessThan,
811 LessThanOrEqual,
812 Equal,
813 EqualOrGreaterThan,
814 EqualOrLessThan,
815 And,
816 Or,
817}
818
819#[derive(Clone, Debug, Spanned, PartialEq)]
820#[cfg_attr(feature = "serialize", derive(Serialize))]
821#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
822#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
823pub struct LessBinaryOperation<'s> {
824 pub left: Box<ComponentValue<'s>>,
825 pub op: LessOperationOperator,
826 pub right: Box<ComponentValue<'s>>,
827 pub span: Span,
828}
829
830#[derive(Clone, Debug, Spanned, PartialEq)]
831#[cfg_attr(feature = "serialize", derive(Serialize))]
832#[cfg_attr(feature = "serialize", serde(untagged))]
833#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
834#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
835pub enum LessCondition<'s> {
836 Binary(LessBinaryCondition<'s>),
837 Negated(LessNegatedCondition<'s>),
838 Parenthesized(LessParenthesizedCondition<'s>),
839 Value(ComponentValue<'s>),
840}
841
842#[derive(Clone, Debug, Spanned, PartialEq)]
843#[cfg_attr(feature = "serialize", derive(Serialize))]
844#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
845#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
846pub struct LessConditionalQualifiedRule<'s> {
847 pub selector: SelectorList<'s>,
848 pub guard: LessConditions<'s>,
849 pub block: SimpleBlock<'s>,
850 pub span: Span,
851}
852
853#[derive(Clone, Debug, Spanned, PartialEq)]
854#[cfg_attr(feature = "serialize", derive(Serialize))]
855#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
856#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
857pub struct LessConditions<'s> {
858 pub conditions: Vec<LessCondition<'s>>,
859 pub when_span: Span,
860 pub comma_spans: Vec<Span>,
861 pub span: Span,
862}
863
864#[derive(Clone, Debug, Spanned, PartialEq)]
865#[cfg_attr(feature = "serialize", derive(Serialize))]
866#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
867#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
868pub struct LessDetachedRuleset<'s> {
869 pub block: SimpleBlock<'s>,
870 pub span: Span,
871}
872
873#[derive(Clone, Debug, Spanned, PartialEq)]
874#[cfg_attr(feature = "serialize", derive(Serialize))]
875#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
876#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
877pub struct LessEscapedStr<'s> {
878 pub str: Str<'s>,
879 pub span: Span,
880}
881
882#[derive(Clone, Debug, Spanned, PartialEq)]
883#[cfg_attr(feature = "serialize", derive(Serialize))]
884#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
885#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
886pub struct LessExtend<'s> {
887 pub selector: ComplexSelector<'s>,
888 pub all: Option<Ident<'s>>,
889 pub span: Span,
890}
891
892#[derive(Clone, Debug, Spanned, PartialEq)]
893#[cfg_attr(feature = "serialize", derive(Serialize))]
894#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
895#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
896pub struct LessExtendList<'s> {
897 pub elements: Vec<LessExtend<'s>>,
898 pub comma_spans: Vec<Span>,
899 pub span: Span,
900}
901
902#[derive(Clone, Debug, Spanned, PartialEq)]
903#[cfg_attr(feature = "serialize", derive(Serialize))]
904#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
905#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
906pub struct LessExtendRule<'s> {
907 pub nesting_selector: NestingSelector<'s>,
908 pub name_of_extend: Ident<'s>,
909 pub extend: LessExtendList<'s>,
910 pub span: Span,
911}
912
913#[derive(Clone, Debug, Spanned, PartialEq)]
914#[cfg_attr(feature = "serialize", derive(Serialize))]
915#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
916#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
917pub struct LessFormatFunction {
918 pub span: Span,
919}
920
921#[derive(Clone, Debug, Spanned, PartialEq)]
922#[cfg_attr(feature = "serialize", derive(Serialize))]
923#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
924#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
925pub struct LessImportOptions<'s> {
926 pub names: Vec<Ident<'s>>,
927 pub comma_spans: Vec<Span>,
928 pub span: Span,
929}
930
931#[derive(Clone, Debug, Spanned, PartialEq)]
932#[cfg_attr(feature = "serialize", derive(Serialize))]
933#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
934#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
935pub struct LessImportPrelude<'s> {
936 pub href: ImportPreludeHref<'s>,
937 pub options: LessImportOptions<'s>,
938 pub media: Option<MediaQueryList<'s>>,
939 pub span: Span,
940}
941
942#[derive(Clone, Debug, Spanned, PartialEq)]
943#[cfg_attr(feature = "serialize", derive(Serialize))]
944#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
945#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
946pub struct LessInterpolatedIdent<'s> {
947 pub elements: Vec<LessInterpolatedIdentElement<'s>>,
948 pub span: Span,
949}
950
951#[derive(Clone, Debug, Spanned, PartialEq)]
952#[cfg_attr(feature = "serialize", derive(Serialize))]
953#[cfg_attr(feature = "serialize", serde(untagged))]
954#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
955#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
956pub enum LessInterpolatedIdentElement<'s> {
957 Variable(LessVariableInterpolation<'s>),
958 Property(LessPropertyInterpolation<'s>),
959 Static(InterpolableIdentStaticPart<'s>),
960}
961
962#[derive(Clone, Debug, Spanned, PartialEq)]
963#[cfg_attr(feature = "serialize", derive(Serialize))]
964#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
965#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
966pub struct LessInterpolatedStr<'s> {
967 pub elements: Vec<LessInterpolatedStrElement<'s>>,
968 pub span: Span,
969}
970
971#[derive(Clone, Debug, Spanned, PartialEq)]
972#[cfg_attr(feature = "serialize", derive(Serialize))]
973#[cfg_attr(feature = "serialize", serde(untagged))]
974#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
975#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
976pub enum LessInterpolatedStrElement<'s> {
977 Variable(LessVariableInterpolation<'s>),
978 Property(LessPropertyInterpolation<'s>),
979 Static(InterpolableStrStaticPart<'s>),
980}
981
982#[derive(Clone, Debug, Spanned, PartialEq)]
983#[cfg_attr(feature = "serialize", derive(Serialize))]
984#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
985#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
986pub struct LessJavaScriptSnippet<'s> {
987 pub code: &'s str,
988 pub raw: &'s str,
989 pub escaped: bool,
990 pub span: Span,
991}
992
993#[derive(Clone, Debug, Spanned, PartialEq)]
994#[cfg_attr(feature = "serialize", derive(Serialize))]
995#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
996#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
997pub struct LessList<'s> {
998 pub elements: Vec<ComponentValue<'s>>,
999 pub comma_spans: Option<Vec<Span>>,
1000 pub span: Span,
1001}
1002
1003#[derive(Clone, Debug, Spanned, PartialEq)]
1004#[cfg_attr(feature = "serialize", derive(Serialize))]
1005#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1006#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1007pub struct LessListFunction {
1008 pub span: Span,
1009}
1010
1011#[derive(Clone, Debug, Spanned, PartialEq)]
1012#[cfg_attr(feature = "serialize", derive(Serialize))]
1013#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1014#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1015pub struct LessLookup<'s> {
1016 pub name: Option<LessLookupName<'s>>,
1017 pub span: Span,
1018}
1019
1020#[derive(Clone, Debug, Spanned, PartialEq)]
1021#[cfg_attr(feature = "serialize", derive(Serialize))]
1022#[cfg_attr(feature = "serialize", serde(untagged))]
1023#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1024#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
1025pub enum LessLookupName<'s> {
1026 LessVariable(LessVariable<'s>),
1027 LessVariableVariable(LessVariableVariable<'s>),
1028 LessPropertyVariable(LessPropertyVariable<'s>),
1029 Ident(Ident<'s>),
1030}
1031
1032#[derive(Clone, Debug, Spanned, PartialEq)]
1033#[cfg_attr(feature = "serialize", derive(Serialize))]
1034#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1035#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1036pub struct LessLookups<'s> {
1037 pub lookups: Vec<LessLookup<'s>>,
1038 pub span: Span,
1039}
1040
1041#[derive(Clone, Debug, Spanned, PartialEq)]
1042#[cfg_attr(feature = "serialize", derive(Serialize))]
1043#[cfg_attr(feature = "serialize", serde(untagged))]
1044#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1045#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
1046pub enum LessMixinArgument<'s> {
1047 Named(LessMixinNamedArgument<'s>),
1048 Value(ComponentValue<'s>),
1049 Variadic(LessMixinVariadicArgument<'s>),
1050}
1051
1052#[derive(Clone, Debug, Spanned, PartialEq)]
1053#[cfg_attr(feature = "serialize", derive(Serialize))]
1054#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1055#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1056pub struct LessMixinArguments<'s> {
1057 pub args: Vec<LessMixinArgument<'s>>,
1058 pub is_comma_separated: bool,
1059 pub separator_spans: Vec<Span>,
1060 pub span: Span,
1061}
1062
1063#[derive(Clone, Debug, Spanned, PartialEq)]
1064#[cfg_attr(feature = "serialize", derive(Serialize))]
1065#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1066#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1067pub struct LessMixinCall<'s> {
1068 pub callee: LessMixinCallee<'s>,
1069 pub args: Option<LessMixinArguments<'s>>,
1070 pub important: Option<ImportantAnnotation<'s>>,
1071 pub span: Span,
1072}
1073
1074#[derive(Clone, Debug, Spanned, PartialEq)]
1075#[cfg_attr(feature = "serialize", derive(Serialize))]
1076#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1077#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1078pub struct LessMixinCallee<'s> {
1079 pub children: Vec<LessMixinCalleeChild<'s>>,
1080 pub span: Span,
1081}
1082
1083#[derive(Clone, Debug, Spanned, PartialEq)]
1084#[cfg_attr(feature = "serialize", derive(Serialize))]
1085#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1086#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1087pub struct LessMixinCalleeChild<'s> {
1088 pub name: LessMixinName<'s>,
1089 pub combinator: Option<Combinator>,
1090 pub span: Span,
1091}
1092
1093#[derive(Clone, Debug, Spanned, PartialEq)]
1094#[cfg_attr(feature = "serialize", derive(Serialize))]
1095#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1096#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1097pub struct LessMixinDefinition<'s> {
1098 pub name: LessMixinName<'s>,
1099 pub params: LessMixinParameters<'s>,
1100 pub guard: Option<LessConditions<'s>>,
1101 pub block: SimpleBlock<'s>,
1102 pub span: Span,
1103}
1104
1105#[derive(Clone, Debug, Spanned, PartialEq)]
1106#[cfg_attr(feature = "serialize", derive(Serialize))]
1107#[cfg_attr(feature = "serialize", serde(untagged))]
1108#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1109#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
1110pub enum LessMixinName<'s> {
1111 ClassSelector(ClassSelector<'s>),
1112 IdSelector(IdSelector<'s>),
1113}
1114
1115#[derive(Clone, Debug, Spanned, PartialEq)]
1116#[cfg_attr(feature = "serialize", derive(Serialize))]
1117#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1118#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1119pub struct LessMixinNamedArgument<'s> {
1120 pub name: LessMixinParameterName<'s>,
1121 pub colon_span: Span,
1122 pub value: ComponentValue<'s>,
1123 pub span: Span,
1124}
1125
1126#[derive(Clone, Debug, Spanned, PartialEq)]
1127#[cfg_attr(feature = "serialize", derive(Serialize))]
1128#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1129#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1130pub struct LessMixinNamedParameter<'s> {
1131 pub name: LessMixinParameterName<'s>,
1132 pub value: Option<LessMixinNamedParameterDefaultValue<'s>>,
1133 pub span: Span,
1134}
1135
1136#[derive(Clone, Debug, Spanned, PartialEq)]
1137#[cfg_attr(feature = "serialize", derive(Serialize))]
1138#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1139#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1140pub struct LessMixinNamedParameterDefaultValue<'s> {
1141 pub colon_span: Span,
1142 pub value: ComponentValue<'s>,
1143 pub span: Span,
1144}
1145
1146#[derive(Clone, Debug, Spanned, PartialEq)]
1147#[cfg_attr(feature = "serialize", derive(Serialize))]
1148#[cfg_attr(feature = "serialize", serde(untagged))]
1149#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1150#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
1151pub enum LessMixinParameter<'s> {
1152 Named(LessMixinNamedParameter<'s>),
1153 Unnamed(LessMixinUnnamedParameter<'s>),
1154 Variadic(LessMixinVariadicParameter<'s>),
1155}
1156
1157#[derive(Clone, Debug, Spanned, PartialEq)]
1158#[cfg_attr(feature = "serialize", derive(Serialize))]
1159#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1160#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1161pub struct LessMixinParameters<'s> {
1162 pub params: Vec<LessMixinParameter<'s>>,
1163 pub is_comma_separated: bool,
1164 pub separator_spans: Vec<Span>,
1165 pub span: Span,
1166}
1167
1168#[derive(Clone, Debug, Spanned, PartialEq)]
1169#[cfg_attr(feature = "serialize", derive(Serialize))]
1170#[cfg_attr(feature = "serialize", serde(untagged))]
1171#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1172#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
1173pub enum LessMixinParameterName<'s> {
1174 Variable(LessVariable<'s>),
1175 PropertyVariable(LessPropertyVariable<'s>),
1176}
1177
1178#[derive(Clone, Debug, Spanned, PartialEq)]
1179#[cfg_attr(feature = "serialize", derive(Serialize))]
1180#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1181#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1182pub struct LessMixinUnnamedParameter<'s> {
1183 pub value: ComponentValue<'s>,
1184 pub span: Span,
1185}
1186
1187#[derive(Clone, Debug, Spanned, PartialEq)]
1188#[cfg_attr(feature = "serialize", derive(Serialize))]
1189#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1190#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1191pub struct LessMixinVariadicArgument<'s> {
1192 pub name: LessMixinParameterName<'s>,
1193 pub span: Span,
1194}
1195
1196#[derive(Clone, Debug, Spanned, PartialEq)]
1197#[cfg_attr(feature = "serialize", derive(Serialize))]
1198#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1199#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1200pub struct LessMixinVariadicParameter<'s> {
1201 pub name: Option<LessMixinParameterName<'s>>,
1202 pub span: Span,
1203}
1204
1205#[derive(Clone, Debug, Spanned, PartialEq)]
1206#[cfg_attr(feature = "serialize", derive(Serialize))]
1207#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1208#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1209pub struct LessNamespaceValue<'s> {
1210 pub callee: LessNamespaceValueCallee<'s>,
1211 pub lookups: LessLookups<'s>,
1212 pub span: Span,
1213}
1214
1215#[derive(Clone, Debug, Spanned, PartialEq)]
1216#[cfg_attr(feature = "serialize", derive(Serialize))]
1217#[cfg_attr(feature = "serialize", serde(untagged))]
1218#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1219#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
1220pub enum LessNamespaceValueCallee<'s> {
1221 LessMixinCall(LessMixinCall<'s>),
1222 LessVariable(LessVariable<'s>),
1223}
1224
1225#[derive(Clone, Debug, Spanned, PartialEq)]
1226#[cfg_attr(feature = "serialize", derive(Serialize))]
1227#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1228#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1229pub struct LessNegatedCondition<'s> {
1230 pub condition: Box<LessCondition<'s>>,
1231 pub span: Span,
1232}
1233
1234#[derive(Clone, Debug, Spanned, PartialEq)]
1235#[cfg_attr(feature = "serialize", derive(Serialize))]
1236#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1237#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1238pub struct LessNegativeValue<'s> {
1239 pub value: Box<ComponentValue<'s>>,
1240 pub span: Span,
1241}
1242
1243#[derive(Clone, Debug, Spanned, PartialEq)]
1244#[cfg_attr(feature = "serialize", derive(Serialize))]
1245#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1246#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1247pub struct LessOperationOperator {
1248 pub kind: LessOperationOperatorKind,
1249 pub span: Span,
1250}
1251
1252#[derive(Clone, Debug, PartialEq)]
1253#[cfg_attr(feature = "serialize", derive(Serialize))]
1254#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1255pub enum LessOperationOperatorKind {
1256 Multiply,
1257 Division,
1258 Plus,
1259 Minus,
1260}
1261
1262#[derive(Clone, Debug, Spanned, PartialEq)]
1263#[cfg_attr(feature = "serialize", derive(Serialize))]
1264#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1265#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1266pub struct LessParenthesizedCondition<'s> {
1267 pub condition: Box<LessCondition<'s>>,
1268 pub span: Span,
1269}
1270
1271#[derive(Clone, Debug, Spanned, PartialEq)]
1272#[cfg_attr(feature = "serialize", derive(Serialize))]
1273#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1274#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1275pub struct LessParenthesizedOperation<'s> {
1276 pub operation: Box<ComponentValue<'s>>,
1277 pub span: Span,
1278}
1279
1280#[derive(Clone, Debug, Spanned, PartialEq)]
1281#[cfg_attr(feature = "serialize", derive(Serialize))]
1282#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1283#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1284pub struct LessPercentKeyword {
1285 pub span: Span,
1286}
1287
1288#[derive(Clone, Debug, Spanned, PartialEq)]
1289#[cfg_attr(feature = "serialize", derive(Serialize))]
1290#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1291#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1292pub struct LessPlugin<'s> {
1293 pub path: LessPluginPath<'s>,
1294 pub args: Option<TokenSeq<'s>>,
1295 pub span: Span,
1296}
1297
1298#[derive(Clone, Debug, Spanned, PartialEq)]
1299#[cfg_attr(feature = "serialize", derive(Serialize))]
1300#[cfg_attr(feature = "serialize", serde(untagged))]
1301#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1302#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
1303pub enum LessPluginPath<'s> {
1304 Str(Str<'s>),
1305 Url(Url<'s>),
1306}
1307
1308#[derive(Clone, Debug, Spanned, PartialEq)]
1309#[cfg_attr(feature = "serialize", derive(Serialize))]
1310#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1311#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1312pub struct LessPropertyInterpolation<'s> {
1313 pub name: Ident<'s>,
1314 pub span: Span,
1315}
1316
1317#[derive(Clone, Debug, Spanned, PartialEq)]
1318#[cfg_attr(feature = "serialize", derive(Serialize))]
1319#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1320#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1321pub struct LessPropertyMerge {
1322 pub kind: LessPropertyMergeKind,
1323 pub span: Span,
1324}
1325
1326#[derive(Clone, Debug, Spanned, PartialEq)]
1327#[cfg_attr(feature = "serialize", derive(Serialize))]
1328#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1329pub enum LessPropertyMergeKind {
1330 Comma,
1331 Space,
1332}
1333
1334#[derive(Clone, Debug, Spanned, PartialEq)]
1335#[cfg_attr(feature = "serialize", derive(Serialize))]
1336#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1337#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1338pub struct LessPropertyVariable<'s> {
1339 pub name: Ident<'s>,
1340 pub span: Span,
1341}
1342
1343#[derive(Clone, Debug, Spanned, PartialEq)]
1344#[cfg_attr(feature = "serialize", derive(Serialize))]
1345#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1346#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1347pub struct LessVariable<'s> {
1348 pub name: Ident<'s>,
1349 pub span: Span,
1350}
1351
1352#[derive(Clone, Debug, Spanned, PartialEq)]
1353#[cfg_attr(feature = "serialize", derive(Serialize))]
1354#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1355#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1356pub struct LessVariableCall<'s> {
1357 pub variable: LessVariable<'s>,
1358 pub span: Span,
1359}
1360
1361#[derive(Clone, Debug, Spanned, PartialEq)]
1362#[cfg_attr(feature = "serialize", derive(Serialize))]
1363#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1364#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1365pub struct LessVariableDeclaration<'s> {
1366 pub name: LessVariable<'s>,
1367 pub colon_span: Span,
1368 pub value: ComponentValue<'s>,
1369 pub span: Span,
1370}
1371
1372#[derive(Clone, Debug, Spanned, PartialEq)]
1373#[cfg_attr(feature = "serialize", derive(Serialize))]
1374#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1375#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1376pub struct LessVariableInterpolation<'s> {
1377 pub name: Ident<'s>,
1378 pub span: Span,
1379}
1380
1381#[derive(Clone, Debug, Spanned, PartialEq)]
1382#[cfg_attr(feature = "serialize", derive(Serialize))]
1383#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1384#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1385pub struct LessVariableVariable<'s> {
1386 pub variable: LessVariable<'s>,
1387 pub span: Span,
1388}
1389
1390#[derive(Clone, Debug, Spanned, PartialEq)]
1391#[cfg_attr(feature = "serialize", derive(Serialize))]
1392#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1393#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1394pub struct MediaAnd<'s> {
1395 pub keyword: Ident<'s>,
1396 pub media_in_parens: MediaInParens<'s>,
1397 pub span: Span,
1398}
1399
1400#[derive(Clone, Debug, Spanned, PartialEq)]
1401#[cfg_attr(feature = "serialize", derive(Serialize))]
1402#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1403#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1404pub struct MediaCondition<'s> {
1405 pub conditions: Vec<MediaConditionKind<'s>>,
1406 pub span: Span,
1407}
1408
1409#[derive(Clone, Debug, Spanned, PartialEq)]
1410#[cfg_attr(feature = "serialize", derive(Serialize))]
1411#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1412#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1413pub struct MediaConditionAfterMediaType<'s> {
1414 pub and: Ident<'s>,
1415 pub condition: MediaCondition<'s>,
1416 pub span: Span,
1417}
1418
1419#[derive(Clone, Debug, Spanned, PartialEq)]
1420#[cfg_attr(feature = "serialize", derive(Serialize))]
1421#[cfg_attr(feature = "serialize", serde(untagged))]
1422#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1423#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
1424pub enum MediaConditionKind<'s> {
1425 MediaInParens(MediaInParens<'s>),
1426 And(MediaAnd<'s>),
1427 Or(MediaOr<'s>),
1428 Not(MediaNot<'s>),
1429}
1430
1431#[derive(Clone, Debug, Spanned, PartialEq)]
1432#[cfg_attr(feature = "serialize", derive(Serialize))]
1433#[cfg_attr(feature = "serialize", serde(untagged))]
1434#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1435#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
1436pub enum MediaFeature<'s> {
1437 Plain(MediaFeaturePlain<'s>),
1438 Boolean(MediaFeatureBoolean<'s>),
1439 Range(MediaFeatureRange<'s>),
1440 RangeInterval(MediaFeatureRangeInterval<'s>),
1441}
1442
1443#[derive(Clone, Debug, Spanned, PartialEq)]
1444#[cfg_attr(feature = "serialize", derive(Serialize))]
1445#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1446#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1447pub struct MediaFeatureComparison {
1448 pub kind: MediaFeatureComparisonKind,
1449 pub span: Span,
1450}
1451
1452#[derive(Clone, Debug, PartialEq)]
1453#[cfg_attr(feature = "serialize", derive(Serialize))]
1454#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1455pub enum MediaFeatureComparisonKind {
1456 LessThan,
1457 LessThanOrEqual,
1458 GreaterThan,
1459 GreaterThanOrEqual,
1460 Equal,
1461}
1462
1463#[derive(Clone, Debug, Spanned, PartialEq)]
1464#[cfg_attr(feature = "serialize", derive(Serialize))]
1465#[cfg_attr(feature = "serialize", serde(untagged))]
1466#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1467#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
1468pub enum MediaFeatureName<'s> {
1469 Ident(InterpolableIdent<'s>),
1470 SassVariable(SassVariable<'s>),
1471}
1472
1473#[derive(Clone, Debug, Spanned, PartialEq)]
1474#[cfg_attr(feature = "serialize", derive(Serialize))]
1475#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1476#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1477pub struct MediaFeatureBoolean<'s> {
1478 pub name: MediaFeatureName<'s>,
1479 pub span: Span,
1480}
1481
1482#[derive(Clone, Debug, Spanned, PartialEq)]
1483#[cfg_attr(feature = "serialize", derive(Serialize))]
1484#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1485#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1486pub struct MediaFeaturePlain<'s> {
1487 pub name: MediaFeatureName<'s>,
1488 pub colon_span: Span,
1489 pub value: ComponentValue<'s>,
1490 pub span: Span,
1491}
1492
1493#[derive(Clone, Debug, Spanned, PartialEq)]
1494#[cfg_attr(feature = "serialize", derive(Serialize))]
1495#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1496#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1497pub struct MediaFeatureRange<'s> {
1498 pub left: ComponentValue<'s>,
1499 pub comparison: MediaFeatureComparison,
1500 pub right: ComponentValue<'s>,
1501 pub span: Span,
1502}
1503
1504#[derive(Clone, Debug, Spanned, PartialEq)]
1505#[cfg_attr(feature = "serialize", derive(Serialize))]
1506#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1507#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1508pub struct MediaFeatureRangeInterval<'s> {
1509 pub left: ComponentValue<'s>,
1510 pub left_comparison: MediaFeatureComparison,
1511 pub name: MediaFeatureName<'s>,
1512 pub right_comparison: MediaFeatureComparison,
1513 pub right: ComponentValue<'s>,
1514 pub span: Span,
1515}
1516
1517#[derive(Clone, Debug, Spanned, PartialEq)]
1518#[cfg_attr(feature = "serialize", derive(Serialize))]
1519#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1520#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1521pub struct MediaInParens<'s> {
1522 pub kind: MediaInParensKind<'s>,
1523 pub span: Span,
1524}
1525
1526#[derive(Clone, Debug, Spanned, PartialEq)]
1527#[cfg_attr(feature = "serialize", derive(Serialize))]
1528#[cfg_attr(feature = "serialize", serde(untagged))]
1529#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1530#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
1531pub enum MediaInParensKind<'s> {
1532 MediaCondition(MediaCondition<'s>),
1533 MediaFeature(Box<MediaFeature<'s>>),
1534 SassInterpolation(SassInterpolatedIdent<'s>),
1535}
1536
1537#[derive(Clone, Debug, Spanned, PartialEq)]
1538#[cfg_attr(feature = "serialize", derive(Serialize))]
1539#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1540#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1541pub struct MediaNot<'s> {
1542 pub keyword: Ident<'s>,
1543 pub media_in_parens: MediaInParens<'s>,
1544 pub span: Span,
1545}
1546
1547#[derive(Clone, Debug, Spanned, PartialEq)]
1548#[cfg_attr(feature = "serialize", derive(Serialize))]
1549#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1550#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1551pub struct MediaOr<'s> {
1552 pub keyword: Ident<'s>,
1553 pub media_in_parens: MediaInParens<'s>,
1554 pub span: Span,
1555}
1556
1557#[derive(Clone, Debug, Spanned, PartialEq)]
1558#[cfg_attr(feature = "serialize", derive(Serialize))]
1559#[cfg_attr(feature = "serialize", serde(untagged))]
1560#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1561#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
1562pub enum MediaQuery<'s> {
1563 ConditionOnly(MediaCondition<'s>),
1564 WithType(MediaQueryWithType<'s>),
1565 Function(Function<'s>),
1566 LessVariable(LessVariable<'s>),
1567 LessNamespaceValue(Box<LessNamespaceValue<'s>>),
1568}
1569
1570#[derive(Clone, Debug, Spanned, PartialEq)]
1571#[cfg_attr(feature = "serialize", derive(Serialize))]
1572#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1573#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1574pub struct MediaQueryList<'s> {
1575 pub queries: Vec<MediaQuery<'s>>,
1576 pub comma_spans: Vec<Span>,
1577 pub span: Span,
1578}
1579
1580#[derive(Clone, Debug, Spanned, PartialEq)]
1581#[cfg_attr(feature = "serialize", derive(Serialize))]
1582#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1583#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1584pub struct MediaQueryWithType<'s> {
1585 pub modifier: Option<Ident<'s>>,
1586 pub media_type: InterpolableIdent<'s>,
1587 pub condition: Option<MediaConditionAfterMediaType<'s>>,
1588 pub span: Span,
1589}
1590
1591#[derive(Clone, Debug, Spanned, PartialEq)]
1592#[cfg_attr(feature = "serialize", derive(Serialize))]
1593#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1594#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1595pub struct NamespacePrelude<'s> {
1596 pub prefix: Option<InterpolableIdent<'s>>,
1597 pub uri: NamespacePreludeUri<'s>,
1598 pub span: Span,
1599}
1600
1601#[derive(Clone, Debug, Spanned, PartialEq)]
1602#[cfg_attr(feature = "serialize", derive(Serialize))]
1603#[cfg_attr(feature = "serialize", serde(untagged))]
1604#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1605#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
1606pub enum NamespacePreludeUri<'s> {
1607 Str(InterpolableStr<'s>),
1608 Url(Url<'s>),
1609}
1610
1611#[derive(Clone, Debug, Spanned, PartialEq)]
1612#[cfg_attr(feature = "serialize", derive(Serialize))]
1613#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1614#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1615pub struct NestingSelector<'s> {
1616 pub suffix: Option<InterpolableIdent<'s>>,
1617 pub span: Span,
1618}
1619
1620#[derive(Clone, Debug, Spanned, PartialEq)]
1621#[cfg_attr(feature = "serialize", derive(Serialize))]
1622#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1623#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1624pub struct NsPrefix<'s> {
1625 pub kind: Option<NsPrefixKind<'s>>,
1626 pub span: Span,
1627}
1628
1629#[derive(Clone, Debug, Spanned, PartialEq)]
1630#[cfg_attr(feature = "serialize", derive(Serialize))]
1631#[cfg_attr(feature = "serialize", serde(untagged))]
1632#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1633#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
1634pub enum NsPrefixKind<'s> {
1635 Ident(InterpolableIdent<'s>),
1636 Universal(NsPrefixUniversal),
1637}
1638
1639#[derive(Clone, Debug, Spanned, PartialEq)]
1640#[cfg_attr(feature = "serialize", derive(Serialize))]
1641#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1642#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1643pub struct NsPrefixUniversal {
1644 pub span: Span,
1645}
1646
1647#[derive(Clone, Debug, Spanned, PartialEq)]
1648#[cfg_attr(feature = "serialize", derive(Serialize))]
1649#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1650#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1651pub struct Nth<'s> {
1652 pub index: NthIndex<'s>,
1653 pub matcher: Option<NthMatcher<'s>>,
1654 pub span: Span,
1655}
1656
1657#[derive(Clone, Debug, Spanned, PartialEq)]
1658#[cfg_attr(feature = "serialize", derive(Serialize))]
1659#[cfg_attr(feature = "serialize", serde(untagged))]
1660#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1661#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
1662pub enum NthIndex<'s> {
1663 Odd(Ident<'s>),
1664 Even(Ident<'s>),
1665 Integer(Number<'s>),
1666 AnPlusB(AnPlusB),
1667}
1668
1669#[derive(Clone, Debug, Spanned, PartialEq)]
1670#[cfg_attr(feature = "serialize", derive(Serialize))]
1671#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1672#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1673pub struct NthMatcher<'s> {
1674 pub selector: Option<SelectorList<'s>>,
1675 pub span: Span,
1676}
1677
1678#[derive(Clone, Debug, Spanned, PartialEq)]
1679#[cfg_attr(feature = "serialize", derive(Serialize))]
1680#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1681#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1682pub struct Number<'s> {
1683 pub value: f32,
1684 pub raw: &'s str,
1685 pub span: Span,
1686}
1687
1688#[derive(Clone, Debug, Spanned, PartialEq)]
1689#[cfg_attr(feature = "serialize", derive(Serialize))]
1690#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1691#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1692pub struct PageSelector<'s> {
1693 pub name: Option<InterpolableIdent<'s>>,
1694 pub pseudo: Vec<PseudoPage<'s>>,
1695 pub span: Span,
1696}
1697
1698#[derive(Clone, Debug, Spanned, PartialEq)]
1699#[cfg_attr(feature = "serialize", derive(Serialize))]
1700#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1701#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1702pub struct PageSelectorList<'s> {
1703 pub selectors: Vec<PageSelector<'s>>,
1704 pub comma_spans: Vec<Span>,
1705 pub span: Span,
1706}
1707
1708#[derive(Clone, Debug, Spanned, PartialEq)]
1709#[cfg_attr(feature = "serialize", derive(Serialize))]
1710#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1711#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1712pub struct Percentage<'s> {
1713 pub value: Number<'s>,
1714 pub span: Span,
1715}
1716
1717#[derive(Clone, Debug, Spanned, PartialEq)]
1718#[cfg_attr(feature = "serialize", derive(Serialize))]
1719#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1720#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1721pub struct PseudoClassSelector<'s> {
1722 pub name: InterpolableIdent<'s>,
1723 pub arg: Option<PseudoClassSelectorArg<'s>>,
1724 pub span: Span,
1725}
1726
1727#[derive(Clone, Debug, Spanned, PartialEq)]
1728#[cfg_attr(feature = "serialize", derive(Serialize))]
1729#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1730#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1731pub struct PseudoClassSelectorArg<'s> {
1732 pub kind: PseudoClassSelectorArgKind<'s>,
1733 pub l_paren: Span,
1734 pub r_paren: Span,
1735 pub span: Span,
1736}
1737
1738#[derive(Clone, Debug, Spanned, PartialEq)]
1739#[cfg_attr(feature = "serialize", derive(Serialize))]
1740#[cfg_attr(feature = "serialize", serde(untagged))]
1741#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1742#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
1743pub enum PseudoClassSelectorArgKind<'s> {
1744 CompoundSelector(CompoundSelector<'s>),
1745 CompoundSelectorList(CompoundSelectorList<'s>),
1746 Ident(InterpolableIdent<'s>),
1747 LanguageRangeList(LanguageRangeList<'s>),
1748 Nth(Nth<'s>),
1749 Number(Number<'s>),
1750 RelativeSelectorList(RelativeSelectorList<'s>),
1751 SelectorList(SelectorList<'s>),
1752 LessExtendList(LessExtendList<'s>),
1753 TokenSeq(TokenSeq<'s>),
1754}
1755
1756#[derive(Clone, Debug, Spanned, PartialEq)]
1757#[cfg_attr(feature = "serialize", derive(Serialize))]
1758#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1759#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1760pub struct PseudoElementSelector<'s> {
1761 pub name: InterpolableIdent<'s>,
1762 pub arg: Option<PseudoElementSelectorArg<'s>>,
1763 pub span: Span,
1764}
1765
1766#[derive(Clone, Debug, Spanned, PartialEq)]
1767#[cfg_attr(feature = "serialize", derive(Serialize))]
1768#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1769#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1770pub struct PseudoElementSelectorArg<'s> {
1771 pub kind: PseudoElementSelectorArgKind<'s>,
1772 pub l_paren: Span,
1773 pub r_paren: Span,
1774 pub span: Span,
1775}
1776
1777#[derive(Clone, Debug, Spanned, PartialEq)]
1778#[cfg_attr(feature = "serialize", derive(Serialize))]
1779#[cfg_attr(feature = "serialize", serde(untagged))]
1780#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1781#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
1782pub enum PseudoElementSelectorArgKind<'s> {
1783 CompoundSelector(CompoundSelector<'s>),
1784 Ident(InterpolableIdent<'s>),
1785 TokenSeq(TokenSeq<'s>),
1786}
1787
1788#[derive(Clone, Debug, Spanned, PartialEq)]
1789#[cfg_attr(feature = "serialize", derive(Serialize))]
1790#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1791#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1792pub struct PseudoPage<'s> {
1793 pub name: InterpolableIdent<'s>,
1794 pub span: Span,
1795}
1796
1797#[derive(Clone, Debug, Spanned, PartialEq)]
1798#[cfg_attr(feature = "serialize", derive(Serialize))]
1799#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1800#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1801pub struct QualifiedRule<'s> {
1802 pub selector: SelectorList<'s>,
1803 pub block: SimpleBlock<'s>,
1804 pub span: Span,
1805}
1806
1807#[derive(Clone, Debug, Spanned, PartialEq)]
1808#[cfg_attr(feature = "serialize", derive(Serialize))]
1809#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1810#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1811pub struct QueryInParens<'s> {
1812 pub kind: QueryInParensKind<'s>,
1813 pub span: Span,
1814}
1815
1816#[derive(Clone, Debug, Spanned, PartialEq)]
1817#[cfg_attr(feature = "serialize", derive(Serialize))]
1818#[cfg_attr(feature = "serialize", serde(untagged))]
1819#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1820#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
1821pub enum QueryInParensKind<'s> {
1822 ContainerCondition(ContainerCondition<'s>),
1823 SizeFeature(Box<MediaFeature<'s>>),
1824 StyleQuery(StyleQuery<'s>),
1825 ScrollState(Box<MediaFeature<'s>>),
1826}
1827
1828#[derive(Clone, Debug, Spanned, PartialEq)]
1829#[cfg_attr(feature = "serialize", derive(Serialize))]
1830#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1831#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1832pub struct Ratio<'s> {
1833 pub numerator: Number<'s>,
1834 pub solidus_span: Span,
1835 pub denominator: Number<'s>,
1836 pub span: Span,
1837}
1838
1839#[derive(Clone, Debug, Spanned, PartialEq)]
1840#[cfg_attr(feature = "serialize", derive(Serialize))]
1841#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1842#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1843pub struct RelativeSelector<'s> {
1844 pub combinator: Option<Combinator>,
1845 pub complex_selector: ComplexSelector<'s>,
1846 pub span: Span,
1847}
1848
1849#[derive(Clone, Debug, Spanned, PartialEq)]
1850#[cfg_attr(feature = "serialize", derive(Serialize))]
1851#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1852#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1853pub struct RelativeSelectorList<'s> {
1854 pub selectors: Vec<RelativeSelector<'s>>,
1855 pub comma_spans: Vec<Span>,
1856 pub span: Span,
1857}
1858
1859#[derive(Clone, Debug, Spanned, PartialEq)]
1860#[cfg_attr(feature = "serialize", derive(Serialize))]
1861#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1862#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1863pub struct SassArbitraryArgument<'s> {
1864 pub value: Box<ComponentValue<'s>>,
1865 pub span: Span,
1866}
1867
1868#[derive(Clone, Debug, Spanned, PartialEq)]
1869#[cfg_attr(feature = "serialize", derive(Serialize))]
1870#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1871#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1872pub struct SassArbitraryParameter<'s> {
1873 pub name: SassVariable<'s>,
1874 pub span: Span,
1875}
1876
1877#[derive(Clone, Debug, Spanned, PartialEq)]
1878#[cfg_attr(feature = "serialize", derive(Serialize))]
1879#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1880#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1881pub struct SassAtRoot<'s> {
1882 pub kind: SassAtRootKind<'s>,
1883 pub span: Span,
1884}
1885
1886#[derive(Clone, Debug, Spanned, PartialEq)]
1887#[cfg_attr(feature = "serialize", derive(Serialize))]
1888#[cfg_attr(feature = "serialize", serde(untagged))]
1889#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1890#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
1891pub enum SassAtRootKind<'s> {
1892 Selector(SelectorList<'s>),
1893 Query(SassAtRootQuery<'s>),
1894}
1895
1896#[derive(Clone, Debug, Spanned, PartialEq)]
1897#[cfg_attr(feature = "serialize", derive(Serialize))]
1898#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1899#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1900pub struct SassAtRootQuery<'s> {
1901 pub modifier: SassAtRootQueryModifier,
1902 pub colon_span: Span,
1903 pub rules: Vec<SassAtRootQueryRule<'s>>,
1905 pub span: Span,
1906}
1907
1908#[derive(Clone, Debug, Spanned, PartialEq)]
1909#[cfg_attr(feature = "serialize", derive(Serialize))]
1910#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1911#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1912pub struct SassAtRootQueryModifier {
1913 pub kind: SassAtRootQueryModifierKind,
1914 pub span: Span,
1915}
1916
1917#[derive(Clone, Debug, PartialEq)]
1918#[cfg_attr(feature = "serialize", derive(Serialize))]
1919#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1920pub enum SassAtRootQueryModifierKind {
1921 With,
1922 Without,
1923}
1924
1925#[derive(Clone, Debug, Spanned, PartialEq)]
1926#[cfg_attr(feature = "serialize", derive(Serialize))]
1927#[cfg_attr(feature = "serialize", serde(untagged))]
1928#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1929#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
1930pub enum SassAtRootQueryRule<'s> {
1931 Ident(InterpolableIdent<'s>),
1932 Str(InterpolableStr<'s>),
1933}
1934
1935#[derive(Clone, Debug, Spanned, PartialEq)]
1936#[cfg_attr(feature = "serialize", derive(Serialize))]
1937#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1938#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1939pub struct SassBinaryExpression<'s> {
1940 pub left: Box<ComponentValue<'s>>,
1941 pub op: SassBinaryOperator,
1942 pub right: Box<ComponentValue<'s>>,
1943 pub span: Span,
1944}
1945
1946#[derive(Clone, Debug, Spanned, PartialEq)]
1947#[cfg_attr(feature = "serialize", derive(Serialize))]
1948#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1949#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1950pub struct SassBinaryOperator {
1951 pub kind: SassBinaryOperatorKind,
1952 pub span: Span,
1953}
1954
1955#[derive(Clone, Debug, PartialEq)]
1956#[cfg_attr(feature = "serialize", derive(Serialize))]
1957#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1958pub enum SassBinaryOperatorKind {
1959 Multiply,
1960 Division,
1961 Modulo,
1962 Plus,
1963 Minus,
1964 GreaterThan,
1965 GreaterThanOrEqual,
1966 LessThan,
1967 LessThanOrEqual,
1968 EqualsEquals,
1969 ExclamationEquals,
1970 And,
1971 Or,
1972}
1973
1974#[derive(Clone, Debug, Spanned, PartialEq)]
1975#[cfg_attr(feature = "serialize", derive(Serialize))]
1976#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1977#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1978pub struct SassConditionalClause<'s> {
1979 pub condition: ComponentValue<'s>,
1980 pub block: SimpleBlock<'s>,
1981 pub span: Span,
1982}
1983
1984#[derive(Clone, Debug, Spanned, PartialEq)]
1985#[cfg_attr(feature = "serialize", derive(Serialize))]
1986#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1987#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1988pub struct SassContent<'s> {
1989 pub args: Vec<ComponentValue<'s>>,
1990 pub comma_spans: Vec<Span>,
1991 pub span: Span,
1992}
1993
1994#[derive(Clone, Debug, Spanned, PartialEq)]
1995#[cfg_attr(feature = "serialize", derive(Serialize))]
1996#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1997#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
1998pub struct SassEach<'s> {
1999 pub bindings: Vec<SassVariable<'s>>,
2000 pub comma_spans: Vec<Span>,
2001 pub in_span: Span,
2002 pub expr: ComponentValue<'s>,
2003 pub span: Span,
2004}
2005
2006#[derive(Clone, Debug, Spanned, PartialEq)]
2007#[cfg_attr(feature = "serialize", derive(Serialize))]
2008#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2009#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2010pub struct SassExtend<'s> {
2011 pub selectors: CompoundSelectorList<'s>,
2012 pub optional: Option<SassFlag<'s>>,
2013 pub span: Span,
2014}
2015
2016#[derive(Clone, Debug, Spanned, PartialEq)]
2017#[cfg_attr(feature = "serialize", derive(Serialize))]
2018#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2019#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2020pub struct SassFlag<'s> {
2021 pub keyword: Ident<'s>,
2022 pub span: Span,
2023}
2024
2025#[derive(Clone, Debug, Spanned, PartialEq)]
2026#[cfg_attr(feature = "serialize", derive(Serialize))]
2027#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2028#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2029pub struct SassFor<'s> {
2030 pub binding: SassVariable<'s>,
2031 pub from_span: Span,
2032 pub start: ComponentValue<'s>,
2033 pub end: ComponentValue<'s>,
2034 pub boundary: SassForBoundary,
2035 pub span: Span,
2036}
2037
2038#[derive(Clone, Debug, Spanned, PartialEq)]
2039#[cfg_attr(feature = "serialize", derive(Serialize))]
2040#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2041#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2042pub struct SassForBoundary {
2043 pub kind: SassForBoundaryKind,
2044 pub span: Span,
2045}
2046
2047#[derive(Clone, Debug, Spanned, PartialEq)]
2048#[cfg_attr(feature = "serialize", derive(Serialize))]
2049#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2050pub enum SassForBoundaryKind {
2051 Inclusive,
2052 Exclusive,
2053}
2054
2055#[derive(Clone, Debug, Spanned, PartialEq)]
2056#[cfg_attr(feature = "serialize", derive(Serialize))]
2057#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2058#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2059pub struct SassForward<'s> {
2060 pub path: InterpolableStr<'s>,
2061 pub prefix: Option<SassForwardPrefix<'s>>,
2062 pub visibility: Option<SassForwardVisibility<'s>>,
2063 pub config: Option<SassModuleConfig<'s>>,
2064 pub span: Span,
2065}
2066
2067#[derive(Clone, Debug, Spanned, PartialEq)]
2068#[cfg_attr(feature = "serialize", derive(Serialize))]
2069#[cfg_attr(feature = "serialize", serde(untagged))]
2070#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2071#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
2072pub enum SassForwardMember<'s> {
2073 Ident(Ident<'s>),
2074 Variable(SassVariable<'s>),
2075}
2076
2077#[derive(Clone, Debug, Spanned, PartialEq)]
2078#[cfg_attr(feature = "serialize", derive(Serialize))]
2079#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2080#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2081pub struct SassForwardPrefix<'s> {
2082 pub as_span: Span,
2083 pub name: Ident<'s>,
2084 pub span: Span,
2085}
2086
2087#[derive(Clone, Debug, Spanned, PartialEq)]
2088#[cfg_attr(feature = "serialize", derive(Serialize))]
2089#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2090#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2091pub struct SassForwardVisibility<'s> {
2092 pub modifier: SassForwardVisibilityModifier,
2093 pub members: Vec<SassForwardMember<'s>>,
2094 pub comma_spans: Vec<Span>,
2095 pub span: Span,
2096}
2097
2098#[derive(Clone, Debug, Spanned, PartialEq)]
2099#[cfg_attr(feature = "serialize", derive(Serialize))]
2100#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2101#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2102pub struct SassForwardVisibilityModifier {
2103 pub kind: SassForwardVisibilityModifierKind,
2104 pub span: Span,
2105}
2106
2107#[derive(Clone, Debug, Spanned, PartialEq)]
2108#[cfg_attr(feature = "serialize", derive(Serialize))]
2109#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2110pub enum SassForwardVisibilityModifierKind {
2111 Hide,
2112 Show,
2113}
2114
2115#[derive(Clone, Debug, Spanned, PartialEq)]
2116#[cfg_attr(feature = "serialize", derive(Serialize))]
2117#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2118#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2119pub struct SassFunction<'s> {
2120 pub name: Ident<'s>,
2121 pub parameters: SassParameters<'s>,
2122 pub span: Span,
2123}
2124
2125#[derive(Clone, Debug, Spanned, PartialEq)]
2126#[cfg_attr(feature = "serialize", derive(Serialize))]
2127#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2128#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2129pub struct SassIfAtRule<'s> {
2130 pub if_clause: SassConditionalClause<'s>,
2131 pub else_if_clauses: Vec<SassConditionalClause<'s>>,
2132 pub else_clause: Option<SimpleBlock<'s>>,
2133 pub else_spans: Vec<Span>,
2134 pub span: Span,
2135}
2136
2137#[derive(Clone, Debug, Spanned, PartialEq)]
2138#[cfg_attr(feature = "serialize", derive(Serialize))]
2139#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2140#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2141pub struct SassImportPrelude<'s> {
2142 pub paths: Vec<Str<'s>>,
2143 pub comma_spans: Vec<Span>,
2144 pub span: Span,
2145}
2146
2147#[derive(Clone, Debug, Spanned, PartialEq)]
2148#[cfg_attr(feature = "serialize", derive(Serialize))]
2149#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2150#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2151pub struct SassInclude<'s> {
2152 pub name: FunctionName<'s>,
2153 pub arguments: Option<SassIncludeArgs<'s>>,
2154 pub content_block_params: Option<SassIncludeContentBlockParams<'s>>,
2155 pub span: Span,
2156}
2157
2158#[derive(Clone, Debug, Spanned, PartialEq)]
2159#[cfg_attr(feature = "serialize", derive(Serialize))]
2160#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2161#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2162pub struct SassIncludeArgs<'s> {
2163 pub args: Vec<ComponentValue<'s>>,
2164 pub comma_spans: Vec<Span>,
2165 pub span: Span,
2166}
2167
2168#[derive(Clone, Debug, Spanned, PartialEq)]
2169#[cfg_attr(feature = "serialize", derive(Serialize))]
2170#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2171#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2172pub struct SassIncludeContentBlockParams<'s> {
2173 pub using_span: Span,
2174 pub params: SassParameters<'s>,
2175 pub span: Span,
2176}
2177
2178#[derive(Clone, Debug, Spanned, PartialEq)]
2179#[cfg_attr(feature = "serialize", derive(Serialize))]
2180#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2181#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2182pub struct SassInterpolatedIdent<'s> {
2183 pub elements: Vec<SassInterpolatedIdentElement<'s>>,
2184 pub span: Span,
2185}
2186
2187#[derive(Clone, Debug, Spanned, PartialEq)]
2188#[cfg_attr(feature = "serialize", derive(Serialize))]
2189#[cfg_attr(feature = "serialize", serde(untagged))]
2190#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2191#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
2192pub enum SassInterpolatedIdentElement<'s> {
2193 Expression(ComponentValue<'s>),
2194 Static(InterpolableIdentStaticPart<'s>),
2195}
2196
2197#[derive(Clone, Debug, Spanned, PartialEq)]
2198#[cfg_attr(feature = "serialize", derive(Serialize))]
2199#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2200#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2201pub struct SassInterpolatedStr<'s> {
2202 pub elements: Vec<SassInterpolatedStrElement<'s>>,
2203 pub span: Span,
2204}
2205
2206#[derive(Clone, Debug, Spanned, PartialEq)]
2207#[cfg_attr(feature = "serialize", derive(Serialize))]
2208#[cfg_attr(feature = "serialize", serde(untagged))]
2209#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2210#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
2211pub enum SassInterpolatedStrElement<'s> {
2212 Expression(ComponentValue<'s>),
2213 Static(InterpolableStrStaticPart<'s>),
2214}
2215
2216#[derive(Clone, Debug, Spanned, PartialEq)]
2217#[cfg_attr(feature = "serialize", derive(Serialize))]
2218#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2219#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2220pub struct SassInterpolatedUrl<'s> {
2221 pub elements: Vec<SassInterpolatedUrlElement<'s>>,
2222 pub span: Span,
2223}
2224
2225#[derive(Clone, Debug, Spanned, PartialEq)]
2226#[cfg_attr(feature = "serialize", derive(Serialize))]
2227#[cfg_attr(feature = "serialize", serde(untagged))]
2228#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2229#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
2230pub enum SassInterpolatedUrlElement<'s> {
2231 Expression(ComponentValue<'s>),
2232 Static(InterpolableUrlStaticPart<'s>),
2233}
2234
2235#[derive(Clone, Debug, Spanned, PartialEq)]
2236#[cfg_attr(feature = "serialize", derive(Serialize))]
2237#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2238#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2239pub struct SassKeywordArgument<'s> {
2240 pub name: SassVariable<'s>,
2241 pub colon_span: Span,
2242 pub value: Box<ComponentValue<'s>>,
2243 pub span: Span,
2244}
2245
2246#[derive(Clone, Debug, Spanned, PartialEq)]
2247#[cfg_attr(feature = "serialize", derive(Serialize))]
2248#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2249#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2250pub struct SassList<'s> {
2251 pub elements: Vec<ComponentValue<'s>>,
2252 pub comma_spans: Option<Vec<Span>>,
2253 pub span: Span,
2254}
2255
2256#[derive(Clone, Debug, Spanned, PartialEq)]
2257#[cfg_attr(feature = "serialize", derive(Serialize))]
2258#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2259#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2260pub struct SassMap<'s> {
2261 pub items: Vec<SassMapItem<'s>>,
2262 pub comma_spans: Vec<Span>,
2263 pub span: Span,
2264}
2265
2266#[derive(Clone, Debug, Spanned, PartialEq)]
2267#[cfg_attr(feature = "serialize", derive(Serialize))]
2268#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2269#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2270pub struct SassMapItem<'s> {
2271 pub key: ComponentValue<'s>,
2272 pub colon_span: Span,
2273 pub value: ComponentValue<'s>,
2274 pub span: Span,
2275}
2276
2277#[derive(Clone, Debug, Spanned, PartialEq)]
2278#[cfg_attr(feature = "serialize", derive(Serialize))]
2279#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2280#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2281pub struct SassMixin<'s> {
2282 pub name: Ident<'s>,
2283 pub parameters: Option<SassParameters<'s>>,
2284 pub span: Span,
2285}
2286
2287#[derive(Clone, Debug, Spanned, PartialEq)]
2288#[cfg_attr(feature = "serialize", derive(Serialize))]
2289#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2290#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2291pub struct SassModuleConfig<'s> {
2292 pub with_span: Span,
2293 pub lparen_span: Span,
2294 pub items: Vec<SassModuleConfigItem<'s>>,
2295 pub comma_spans: Vec<Span>,
2296 pub span: Span,
2297}
2298
2299#[derive(Clone, Debug, Spanned, PartialEq)]
2300#[cfg_attr(feature = "serialize", derive(Serialize))]
2301#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2302#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2303pub struct SassModuleConfigItem<'s> {
2304 pub variable: SassVariable<'s>,
2305 pub colon_span: Span,
2306 pub value: ComponentValue<'s>,
2307 pub flags: Vec<SassFlag<'s>>,
2308 pub span: Span,
2309}
2310
2311#[derive(Clone, Debug, Spanned, PartialEq)]
2312#[cfg_attr(feature = "serialize", derive(Serialize))]
2313#[cfg_attr(feature = "serialize", serde(untagged))]
2314#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2315#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
2316pub enum SassModuleMemberName<'s> {
2317 Ident(Ident<'s>),
2318 Variable(SassVariable<'s>),
2319}
2320
2321#[derive(Clone, Debug, Spanned, PartialEq)]
2322#[cfg_attr(feature = "serialize", derive(Serialize))]
2323#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2324#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2325pub struct SassNestingDeclaration<'s> {
2326 pub block: SimpleBlock<'s>,
2327 pub span: Span,
2328}
2329
2330#[derive(Clone, Debug, Spanned, PartialEq)]
2331#[cfg_attr(feature = "serialize", derive(Serialize))]
2332#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2333#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2334pub struct SassParameter<'s> {
2335 pub name: SassVariable<'s>,
2336 pub default_value: Option<SassParameterDefaultValue<'s>>,
2337 pub span: Span,
2338}
2339
2340#[derive(Clone, Debug, Spanned, PartialEq)]
2341#[cfg_attr(feature = "serialize", derive(Serialize))]
2342#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2343#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2344pub struct SassParameterDefaultValue<'s> {
2345 pub colon_span: Span,
2346 pub value: ComponentValue<'s>,
2347 pub span: Span,
2348}
2349
2350#[derive(Clone, Debug, Spanned, PartialEq)]
2351#[cfg_attr(feature = "serialize", derive(Serialize))]
2352#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2353#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2354pub struct SassParameters<'s> {
2355 pub params: Vec<SassParameter<'s>>,
2356 pub arbitrary_param: Option<SassArbitraryParameter<'s>>,
2357 pub comma_spans: Vec<Span>,
2358 pub span: Span,
2359}
2360
2361#[derive(Clone, Debug, Spanned, PartialEq)]
2362#[cfg_attr(feature = "serialize", derive(Serialize))]
2363#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2364#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2365pub struct SassParenthesizedExpression<'s> {
2366 pub expr: Box<ComponentValue<'s>>,
2367 pub span: Span,
2368}
2369
2370#[derive(Clone, Debug, Spanned, PartialEq)]
2371#[cfg_attr(feature = "serialize", derive(Serialize))]
2372#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2373#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2374pub struct SassPlaceholderSelector<'s> {
2375 pub name: InterpolableIdent<'s>,
2376 pub span: Span,
2377}
2378
2379#[derive(Clone, Debug, Spanned, PartialEq)]
2380#[cfg_attr(feature = "serialize", derive(Serialize))]
2381#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2382#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2383pub struct SassQualifiedName<'s> {
2384 pub module: Ident<'s>,
2385 pub member: SassModuleMemberName<'s>,
2386 pub span: Span,
2387}
2388
2389#[derive(Clone, Debug, Spanned, PartialEq)]
2390#[cfg_attr(feature = "serialize", derive(Serialize))]
2391#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2392#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2393pub struct SassUnaryExpression<'s> {
2394 pub op: SassUnaryOperator,
2395 pub expr: Box<ComponentValue<'s>>,
2396 pub span: Span,
2397}
2398
2399#[derive(Clone, Debug, Spanned, PartialEq)]
2400#[cfg_attr(feature = "serialize", derive(Serialize))]
2401#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2402#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2403pub struct SassUnaryOperator {
2404 pub kind: SassUnaryOperatorKind,
2405 pub span: Span,
2406}
2407
2408#[derive(Clone, Debug, PartialEq)]
2409#[cfg_attr(feature = "serialize", derive(Serialize))]
2410#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2411pub enum SassUnaryOperatorKind {
2412 Plus,
2413 Minus,
2414 Not,
2415}
2416
2417#[derive(Clone, Debug, Spanned, PartialEq)]
2418#[cfg_attr(feature = "serialize", derive(Serialize))]
2419#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2420#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2421pub struct SassUnnamedNamespace {
2422 pub span: Span,
2423}
2424
2425#[derive(Clone, Debug, Spanned, PartialEq)]
2426#[cfg_attr(feature = "serialize", derive(Serialize))]
2427#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2428#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2429pub struct SassUse<'s> {
2430 pub path: InterpolableStr<'s>,
2431 pub namespace: Option<SassUseNamespace<'s>>,
2432 pub config: Option<SassModuleConfig<'s>>,
2433 pub span: Span,
2434}
2435
2436#[derive(Clone, Debug, Spanned, PartialEq)]
2437#[cfg_attr(feature = "serialize", derive(Serialize))]
2438#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2439#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2440pub struct SassUseNamespace<'s> {
2441 pub as_span: Span,
2442 pub kind: SassUseNamespaceKind<'s>,
2443 pub span: Span,
2444}
2445
2446#[derive(Clone, Debug, Spanned, PartialEq)]
2447#[cfg_attr(feature = "serialize", derive(Serialize))]
2448#[cfg_attr(feature = "serialize", serde(untagged))]
2449#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2450#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
2451pub enum SassUseNamespaceKind<'s> {
2452 Named(Ident<'s>),
2453 Unnamed(SassUnnamedNamespace),
2454}
2455
2456#[derive(Clone, Debug, Spanned, PartialEq)]
2457#[cfg_attr(feature = "serialize", derive(Serialize))]
2458#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2459#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2460pub struct SassVariable<'s> {
2461 pub name: Ident<'s>,
2462 pub span: Span,
2463}
2464
2465#[derive(Clone, Debug, Spanned, PartialEq)]
2466#[cfg_attr(feature = "serialize", derive(Serialize))]
2467#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2468#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2469pub struct SassVariableDeclaration<'s> {
2470 pub namespace: Option<Ident<'s>>,
2471 pub name: SassVariable<'s>,
2472 pub colon_span: Span,
2473 pub value: ComponentValue<'s>,
2474 pub flags: Vec<SassFlag<'s>>,
2475 pub span: Span,
2476}
2477
2478#[derive(Clone, Debug, Spanned, PartialEq)]
2479#[cfg_attr(feature = "serialize", derive(Serialize))]
2480#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2481#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2482pub struct ScopeEnd<'s> {
2483 pub to_span: Span,
2484 pub lparen_span: Span,
2485 pub selector: SelectorList<'s>,
2486 pub span: Span,
2487}
2488
2489#[derive(Clone, Debug, Spanned, PartialEq)]
2490#[cfg_attr(feature = "serialize", derive(Serialize))]
2491#[cfg_attr(feature = "serialize", serde(untagged))]
2492#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2493#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
2494pub enum ScopePrelude<'s> {
2495 StartOnly(ScopeStart<'s>),
2496 EndOnly(ScopeEnd<'s>),
2497 Both(ScopeStartWithEnd<'s>),
2498}
2499
2500#[derive(Clone, Debug, Spanned, PartialEq)]
2501#[cfg_attr(feature = "serialize", derive(Serialize))]
2502#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2503#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2504pub struct ScopeStart<'s> {
2505 pub selector: SelectorList<'s>,
2506 pub span: Span,
2507}
2508
2509#[derive(Clone, Debug, Spanned, PartialEq)]
2510#[cfg_attr(feature = "serialize", derive(Serialize))]
2511#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2512#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2513pub struct ScopeStartWithEnd<'s> {
2514 pub start: ScopeStart<'s>,
2515 pub end: ScopeEnd<'s>,
2516 pub span: Span,
2517}
2518
2519#[derive(Clone, Debug, Spanned, PartialEq)]
2520#[cfg_attr(feature = "serialize", derive(Serialize))]
2521#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2522#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2523pub struct SelectorList<'s> {
2524 pub selectors: Vec<ComplexSelector<'s>>,
2525 pub comma_spans: Vec<Span>,
2526 pub span: Span,
2527}
2528
2529#[derive(Clone, Debug, Spanned, PartialEq)]
2530#[cfg_attr(feature = "serialize", derive(Serialize))]
2531#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2532#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2533pub struct SimpleBlock<'s> {
2534 pub statements: Vec<Statement<'s>>,
2535 pub span: Span,
2536}
2537
2538#[derive(Clone, Debug, Spanned, PartialEq)]
2539#[cfg_attr(feature = "serialize", derive(Serialize))]
2540#[cfg_attr(feature = "serialize", serde(untagged))]
2541#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2542#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
2543pub enum SimpleSelector<'s> {
2544 Class(ClassSelector<'s>),
2545 Id(IdSelector<'s>),
2546 Type(TypeSelector<'s>),
2547 Attribute(AttributeSelector<'s>),
2548 PseudoClass(PseudoClassSelector<'s>),
2549 PseudoElement(PseudoElementSelector<'s>),
2550 Nesting(NestingSelector<'s>),
2551 SassPlaceholder(SassPlaceholderSelector<'s>),
2552}
2553
2554#[derive(Clone, Debug, Spanned, PartialEq)]
2555#[cfg_attr(feature = "serialize", derive(Serialize))]
2556#[cfg_attr(feature = "serialize", serde(untagged))]
2557#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2558#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
2559pub enum Statement<'s> {
2560 AtRule(AtRule<'s>),
2561 Declaration(Declaration<'s>),
2562 KeyframeBlock(KeyframeBlock<'s>),
2563 LessConditionalQualifiedRule(LessConditionalQualifiedRule<'s>),
2564 LessExtendRule(LessExtendRule<'s>),
2565 LessFunctionCall(Function<'s>),
2566 LessMixinCall(LessMixinCall<'s>),
2567 LessMixinDefinition(LessMixinDefinition<'s>),
2568 LessVariableCall(LessVariableCall<'s>),
2569 LessVariableDeclaration(LessVariableDeclaration<'s>),
2570 Placeholder(Placeholder<'s>),
2571 QualifiedRule(QualifiedRule<'s>),
2572 SassIfAtRule(SassIfAtRule<'s>),
2573 SassVariableDeclaration(SassVariableDeclaration<'s>),
2574 UnknownSassAtRule(Box<UnknownSassAtRule<'s>>),
2575}
2576
2577#[derive(Clone, Debug, Spanned, PartialEq)]
2578#[cfg_attr(feature = "serialize", derive(Serialize))]
2579#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2580#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2581pub struct Str<'s> {
2582 pub value: Cow<'s, str>,
2583 pub raw: &'s str,
2584 pub span: Span,
2585}
2586
2587#[derive(Clone, Debug, Spanned, PartialEq)]
2588#[cfg_attr(feature = "serialize", derive(Serialize))]
2589#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2590#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2591pub struct StyleCondition<'s> {
2592 pub conditions: Vec<StyleConditionKind<'s>>,
2593 pub span: Span,
2594}
2595
2596#[derive(Clone, Debug, Spanned, PartialEq)]
2597#[cfg_attr(feature = "serialize", derive(Serialize))]
2598#[cfg_attr(feature = "serialize", serde(untagged))]
2599#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2600#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
2601pub enum StyleConditionKind<'s> {
2602 StyleInParens(StyleInParens<'s>),
2603 And(StyleConditionAnd<'s>),
2604 Or(StyleConditionOr<'s>),
2605 Not(StyleConditionNot<'s>),
2606}
2607
2608#[derive(Clone, Debug, Spanned, PartialEq)]
2609#[cfg_attr(feature = "serialize", derive(Serialize))]
2610#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2611#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2612pub struct StyleConditionAnd<'s> {
2613 pub keyword: Ident<'s>,
2614 pub style_in_parens: StyleInParens<'s>,
2615 pub span: Span,
2616}
2617
2618#[derive(Clone, Debug, Spanned, PartialEq)]
2619#[cfg_attr(feature = "serialize", derive(Serialize))]
2620#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2621#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2622pub struct StyleConditionNot<'s> {
2623 pub keyword: Ident<'s>,
2624 pub style_in_parens: StyleInParens<'s>,
2625 pub span: Span,
2626}
2627
2628#[derive(Clone, Debug, Spanned, PartialEq)]
2629#[cfg_attr(feature = "serialize", derive(Serialize))]
2630#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2631#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2632pub struct StyleConditionOr<'s> {
2633 pub keyword: Ident<'s>,
2634 pub style_in_parens: StyleInParens<'s>,
2635 pub span: Span,
2636}
2637
2638#[derive(Clone, Debug, Spanned, PartialEq)]
2639#[cfg_attr(feature = "serialize", derive(Serialize))]
2640#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2641#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2642pub struct StyleInParens<'s> {
2643 pub kind: StyleInParensKind<'s>,
2644 pub span: Span,
2645}
2646
2647#[derive(Clone, Debug, Spanned, PartialEq)]
2648#[cfg_attr(feature = "serialize", derive(Serialize))]
2649#[cfg_attr(feature = "serialize", serde(untagged))]
2650#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2651#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
2652pub enum StyleInParensKind<'s> {
2653 Condition(StyleCondition<'s>),
2654 Feature(Declaration<'s>),
2655}
2656
2657#[derive(Clone, Debug, Spanned, PartialEq)]
2658#[cfg_attr(feature = "serialize", derive(Serialize))]
2659#[cfg_attr(feature = "serialize", serde(untagged))]
2660#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2661#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
2662pub enum StyleQuery<'s> {
2663 Condition(StyleCondition<'s>),
2664 Feature(Declaration<'s>),
2665}
2666
2667#[derive(Clone, Debug, Spanned, PartialEq)]
2668#[cfg_attr(feature = "serialize", derive(Serialize))]
2669#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2670#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2671pub struct Stylesheet<'s> {
2672 pub statements: Vec<Statement<'s>>,
2673 pub span: Span,
2674}
2675
2676#[derive(Clone, Debug, Spanned, PartialEq)]
2677#[cfg_attr(feature = "serialize", derive(Serialize))]
2678#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2679#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2680pub struct SupportsAnd<'s> {
2681 pub keyword: Ident<'s>,
2682 pub condition: SupportsInParens<'s>,
2683 pub span: Span,
2684}
2685
2686#[derive(Clone, Debug, Spanned, PartialEq)]
2687#[cfg_attr(feature = "serialize", derive(Serialize))]
2688#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2689#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2690pub struct SupportsCondition<'s> {
2691 pub conditions: Vec<SupportsConditionKind<'s>>,
2692 pub span: Span,
2693}
2694
2695#[derive(Clone, Debug, Spanned, PartialEq)]
2696#[cfg_attr(feature = "serialize", derive(Serialize))]
2697#[cfg_attr(feature = "serialize", serde(untagged))]
2698#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2699#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
2700pub enum SupportsConditionKind<'s> {
2701 Not(SupportsNot<'s>),
2702 And(SupportsAnd<'s>),
2703 Or(SupportsOr<'s>),
2704 SupportsInParens(SupportsInParens<'s>),
2705}
2706
2707#[derive(Clone, Debug, Spanned, PartialEq)]
2708#[cfg_attr(feature = "serialize", derive(Serialize))]
2709#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2710#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2711pub struct SupportsDecl<'s> {
2712 pub decl: Declaration<'s>,
2713 pub span: Span,
2714}
2715
2716#[derive(Clone, Debug, Spanned, PartialEq)]
2717#[cfg_attr(feature = "serialize", derive(Serialize))]
2718#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2719#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2720pub struct SupportsInParens<'s> {
2721 pub kind: SupportsInParensKind<'s>,
2722 pub span: Span,
2723}
2724
2725#[derive(Clone, Debug, Spanned, PartialEq)]
2726#[cfg_attr(feature = "serialize", derive(Serialize))]
2727#[cfg_attr(feature = "serialize", serde(untagged))]
2728#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2729#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
2730pub enum SupportsInParensKind<'s> {
2731 SupportsCondition(SupportsCondition<'s>),
2732 Feature(Box<SupportsDecl<'s>>),
2733 Selector(SelectorList<'s>),
2734 Function(Function<'s>),
2735}
2736
2737#[derive(Clone, Debug, Spanned, PartialEq)]
2738#[cfg_attr(feature = "serialize", derive(Serialize))]
2739#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2740#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2741pub struct SupportsNot<'s> {
2742 pub keyword: Ident<'s>,
2743 pub condition: SupportsInParens<'s>,
2744 pub span: Span,
2745}
2746
2747#[derive(Clone, Debug, Spanned, PartialEq)]
2748#[cfg_attr(feature = "serialize", derive(Serialize))]
2749#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2750#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2751pub struct SupportsOr<'s> {
2752 pub keyword: Ident<'s>,
2753 pub condition: SupportsInParens<'s>,
2754 pub span: Span,
2755}
2756
2757#[derive(Clone, Debug, Spanned, PartialEq)]
2758#[cfg_attr(feature = "serialize", derive(Serialize))]
2759#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2760#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2761pub struct TagNameSelector<'s> {
2762 pub name: WqName<'s>,
2763 pub span: Span,
2764}
2765
2766#[derive(Clone, Debug, Spanned, PartialEq)]
2767#[cfg_attr(feature = "serialize", derive(Serialize))]
2768#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2769#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2770pub struct TokenSeq<'s> {
2771 pub tokens: Vec<TokenWithSpan<'s>>,
2772 pub span: Span,
2773}
2774
2775#[derive(Clone, Debug, Spanned, PartialEq)]
2776#[cfg_attr(feature = "serialize", derive(Serialize))]
2777#[cfg_attr(feature = "serialize", serde(untagged))]
2778#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2779#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
2780pub enum TypeSelector<'s> {
2781 TagName(TagNameSelector<'s>),
2782 Universal(UniversalSelector<'s>),
2783}
2784
2785#[derive(Clone, Debug, Spanned, PartialEq)]
2786#[cfg_attr(feature = "serialize", derive(Serialize))]
2787#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2788#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2789pub struct UnicodeRange<'s> {
2790 pub prefix: char,
2791 pub start: u32,
2792 pub start_raw: &'s str,
2793 pub end: u32,
2794 pub end_raw: Option<&'s str>,
2795 pub span: Span,
2796}
2797
2798#[derive(Clone, Debug, Spanned, PartialEq)]
2799#[cfg_attr(feature = "serialize", derive(Serialize))]
2800#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2801#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2802pub struct UniversalSelector<'s> {
2803 pub prefix: Option<NsPrefix<'s>>,
2804 pub span: Span,
2805}
2806
2807#[derive(Clone, Debug, Spanned, PartialEq)]
2808#[cfg_attr(feature = "serialize", derive(Serialize))]
2809#[cfg_attr(feature = "serialize", serde(untagged))]
2810#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2811#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
2812pub enum UnknownAtRulePrelude<'s> {
2813 ComponentValue(ComponentValue<'s>),
2814 TokenSeq(TokenSeq<'s>),
2815}
2816
2817#[derive(Clone, Debug, Spanned, PartialEq)]
2818#[cfg_attr(feature = "serialize", derive(Serialize))]
2819#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2820#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2821pub struct UnknownSassAtRule<'s> {
2822 pub name: InterpolableIdent<'s>,
2823 pub prelude: Option<UnknownAtRulePrelude<'s>>,
2824 pub block: Option<SimpleBlock<'s>>,
2825 pub span: Span,
2826}
2827
2828#[derive(Clone, Debug, Spanned, PartialEq)]
2829#[cfg_attr(feature = "serialize", derive(Serialize))]
2830#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2831#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2832pub struct UnquotedFontFamilyName<'s> {
2833 pub idents: Vec<InterpolableIdent<'s>>,
2834 pub span: Span,
2835}
2836
2837#[derive(Clone, Debug, Spanned, PartialEq)]
2838#[cfg_attr(feature = "serialize", derive(Serialize))]
2839#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2840#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2841pub struct Url<'s> {
2842 pub name: Ident<'s>,
2843 pub value: Option<UrlValue<'s>>,
2844 pub modifiers: Vec<UrlModifier<'s>>,
2845 pub span: Span,
2846}
2847
2848#[derive(Clone, Debug, Spanned, PartialEq)]
2849#[cfg_attr(feature = "serialize", derive(Serialize))]
2850#[cfg_attr(feature = "serialize", serde(untagged))]
2851#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2852#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
2853pub enum UrlModifier<'s> {
2854 Ident(InterpolableIdent<'s>),
2855 Function(Function<'s>),
2856}
2857
2858#[derive(Clone, Debug, Spanned, PartialEq)]
2860#[cfg_attr(feature = "serialize", derive(Serialize))]
2861#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2862#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2863pub struct UrlRaw<'s> {
2864 pub value: Cow<'s, str>,
2865 pub raw: &'s str,
2866 pub span: Span,
2867}
2868
2869#[derive(Clone, Debug, Spanned, PartialEq)]
2870#[cfg_attr(feature = "serialize", derive(Serialize))]
2871#[cfg_attr(feature = "serialize", serde(untagged))]
2872#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2873#[cfg_attr(feature = "variant_helpers", derive(EnumAsIs))]
2874pub enum UrlValue<'s> {
2875 Raw(UrlRaw<'s>),
2876 SassInterpolated(SassInterpolatedUrl<'s>),
2877 Str(InterpolableStr<'s>),
2878 LessEscapedStr(LessEscapedStr<'s>),
2879}
2880
2881#[derive(Clone, Debug, Spanned, PartialEq)]
2882#[cfg_attr(feature = "serialize", derive(Serialize))]
2883#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2884#[cfg_attr(feature = "span_ignored_eq", derive(SpanIgnoredEq))]
2885pub struct WqName<'s> {
2886 pub name: InterpolableIdent<'s>,
2887 pub prefix: Option<NsPrefix<'s>>,
2888 pub span: Span,
2889}