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