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 CompoundSelector(CompoundSelector<'a>),
1606 CompoundSelectorList(CompoundSelectorList<'a>),
1607 Ident(InterpolableIdent<'a>),
1608 LanguageRangeList(LanguageRangeList<'a>),
1609 Nth(Nth<'a>),
1610 Number(Number<'a>),
1611 RelativeSelectorList(RelativeSelectorList<'a>),
1612 SelectorList(SelectorList<'a>),
1613 LessExtendList(LessExtendList<'a>),
1614 TokenSeq(TokenSeq<'a>),
1615}
1616
1617#[derive(Debug)]
1618#[cfg_attr(feature = "serialize", derive(Serialize))]
1619#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1620pub struct PseudoElementSelector<'a> {
1621 pub span: Span,
1622 pub name: InterpolableIdent<'a>,
1623 pub arg: Option<PseudoElementSelectorArg<'a>>,
1624}
1625
1626#[derive(Debug)]
1627#[cfg_attr(feature = "serialize", derive(Serialize))]
1628#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1629pub struct PseudoElementSelectorArg<'a> {
1630 pub span: Span,
1631 pub kind: PseudoElementSelectorArgKind<'a>,
1632 pub l_paren: Span,
1633 pub r_paren: Span,
1634}
1635
1636#[derive(Debug)]
1637#[cfg_attr(feature = "serialize", derive(Serialize))]
1638#[cfg_attr(feature = "serialize", serde(untagged))]
1639pub enum PseudoElementSelectorArgKind<'a> {
1640 CompoundSelector(CompoundSelector<'a>),
1641 CompoundSelectorList(CompoundSelectorList<'a>),
1642 Ident(InterpolableIdent<'a>),
1643 IdentList(IdentList<'a>),
1644 TokenSeq(TokenSeq<'a>),
1645}
1646
1647#[derive(Debug)]
1650#[cfg_attr(feature = "serialize", derive(Serialize))]
1651#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1652pub struct IdentList<'a> {
1653 pub span: Span,
1654 pub idents: Vec<'a, InterpolableIdent<'a>>,
1655}
1656
1657#[derive(Debug)]
1658#[cfg_attr(feature = "serialize", derive(Serialize))]
1659#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1660pub struct PseudoPage<'a> {
1661 pub span: Span,
1662 pub name: InterpolableIdent<'a>,
1663 pub arg: Option<TokenSeq<'a>>,
1666}
1667
1668#[derive(Debug)]
1669#[cfg_attr(feature = "serialize", derive(Serialize))]
1670#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1671pub struct QualifiedRule<'a> {
1672 pub span: Span,
1673 pub selector: SelectorList<'a>,
1674 pub block: SimpleBlock<'a>,
1675}
1676
1677#[derive(Debug)]
1678#[cfg_attr(feature = "serialize", derive(Serialize))]
1679#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1680pub struct QueryInParens<'a> {
1681 pub span: Span,
1682 pub kind: QueryInParensKind<'a>,
1683}
1684
1685#[derive(Debug)]
1686#[cfg_attr(feature = "serialize", derive(Serialize))]
1687#[cfg_attr(feature = "serialize", serde(untagged))]
1688pub enum QueryInParensKind<'a> {
1689 ContainerCondition(ContainerCondition<'a>),
1690 SizeFeature(Box<'a, MediaFeature<'a>>),
1691 StyleQuery(StyleQuery<'a>),
1692 ScrollState(Box<'a, MediaFeature<'a>>),
1693 GeneralEnclosed(TokenSeq<'a>),
1694}
1695
1696#[derive(Debug)]
1697#[cfg_attr(feature = "serialize", derive(Serialize))]
1698#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1699pub struct Ratio<'a> {
1700 pub span: Span,
1701 pub numerator: Number<'a>,
1702 pub solidus_span: Span,
1703 pub denominator: Number<'a>,
1704}
1705
1706#[derive(Debug)]
1707#[cfg_attr(feature = "serialize", derive(Serialize))]
1708#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1709pub struct RelativeSelector<'a> {
1710 pub span: Span,
1711 pub combinator: Option<Combinator>,
1712 pub complex_selector: ComplexSelector<'a>,
1713}
1714
1715#[derive(Debug)]
1716#[cfg_attr(feature = "serialize", derive(Serialize))]
1717#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1718pub struct RelativeSelectorList<'a> {
1719 pub span: Span,
1720 pub selectors: Vec<'a, RelativeSelector<'a>>,
1721 pub comma_spans: Vec<'a, Span>,
1722}
1723
1724#[derive(Debug)]
1725#[cfg_attr(feature = "serialize", derive(Serialize))]
1726#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1727pub struct SassArbitraryArgument<'a> {
1728 pub span: Span,
1729 pub value: Box<'a, ComponentValue<'a>>,
1730}
1731
1732#[derive(Debug)]
1733#[cfg_attr(feature = "serialize", derive(Serialize))]
1734#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1735pub struct SassArbitraryParameter<'a> {
1736 pub span: Span,
1737 pub name: SassVariable<'a>,
1738}
1739
1740#[derive(Debug)]
1741#[cfg_attr(feature = "serialize", derive(Serialize))]
1742#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1743pub struct SassAtRoot<'a> {
1744 pub span: Span,
1745 pub kind: SassAtRootKind<'a>,
1746}
1747
1748#[derive(Debug)]
1749#[cfg_attr(feature = "serialize", derive(Serialize))]
1750#[cfg_attr(feature = "serialize", serde(untagged))]
1751pub enum SassAtRootKind<'a> {
1752 Selector(SelectorList<'a>),
1753 Query(SassAtRootQuery<'a>),
1754}
1755
1756#[derive(Debug)]
1757#[cfg_attr(feature = "serialize", derive(Serialize))]
1758#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1759pub struct SassAtRootQuery<'a> {
1760 pub span: Span,
1761 pub modifier: SassAtRootQueryModifier,
1762 pub colon_span: Span,
1763 pub rules: Vec<'a, SassAtRootQueryRule<'a>>,
1765}
1766
1767#[derive(Debug)]
1768#[cfg_attr(feature = "serialize", derive(Serialize))]
1769#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1770pub struct SassAtRootQueryModifier {
1771 pub span: Span,
1772 pub kind: SassAtRootQueryModifierKind,
1773}
1774
1775#[derive(Debug)]
1776#[cfg_attr(feature = "serialize", derive(Serialize))]
1777pub enum SassAtRootQueryModifierKind {
1778 With,
1779 Without,
1780}
1781
1782#[derive(Debug)]
1783#[cfg_attr(feature = "serialize", derive(Serialize))]
1784#[cfg_attr(feature = "serialize", serde(untagged))]
1785pub enum SassAtRootQueryRule<'a> {
1786 Ident(InterpolableIdent<'a>),
1787 Str(InterpolableStr<'a>),
1788}
1789
1790#[derive(Debug)]
1791#[cfg_attr(feature = "serialize", derive(Serialize))]
1792#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1793pub struct SassBinaryExpression<'a> {
1794 pub span: Span,
1795 pub left: Box<'a, ComponentValue<'a>>,
1796 pub op: SassBinaryOperator,
1797 pub right: Box<'a, ComponentValue<'a>>,
1798}
1799
1800#[derive(Debug)]
1801#[cfg_attr(feature = "serialize", derive(Serialize))]
1802#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1803pub struct SassBinaryOperator {
1804 pub span: Span,
1805 pub kind: SassBinaryOperatorKind,
1806}
1807
1808#[derive(Debug)]
1809#[cfg_attr(feature = "serialize", derive(Serialize))]
1810pub enum SassBinaryOperatorKind {
1811 Multiply,
1812 Division,
1813 Modulo,
1814 Plus,
1815 Minus,
1816 GreaterThan,
1817 GreaterThanOrEqual,
1818 LessThan,
1819 LessThanOrEqual,
1820 EqualsEquals,
1821 ExclamationEquals,
1822 And,
1823 Or,
1824}
1825
1826#[derive(Debug)]
1827#[cfg_attr(feature = "serialize", derive(Serialize))]
1828#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1829pub struct SassConditionalClause<'a> {
1830 pub span: Span,
1831 pub condition: ComponentValue<'a>,
1832 pub block: SimpleBlock<'a>,
1833}
1834
1835#[derive(Debug)]
1836#[cfg_attr(feature = "serialize", derive(Serialize))]
1837#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1838pub struct SassContent<'a> {
1839 pub span: Span,
1840 pub args: Vec<'a, ComponentValue<'a>>,
1841 pub comma_spans: Vec<'a, Span>,
1842}
1843
1844#[derive(Debug)]
1845#[cfg_attr(feature = "serialize", derive(Serialize))]
1846#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1847pub struct SassEach<'a> {
1848 pub span: Span,
1849 pub bindings: Vec<'a, SassVariable<'a>>,
1850 pub comma_spans: Vec<'a, Span>,
1851 pub in_span: Span,
1852 pub expr: ComponentValue<'a>,
1853}
1854
1855#[derive(Debug)]
1856#[cfg_attr(feature = "serialize", derive(Serialize))]
1857#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1858pub struct SassExtend<'a> {
1859 pub span: Span,
1860 pub selectors: CompoundSelectorList<'a>,
1861 pub optional: Option<SassFlag<'a>>,
1862}
1863
1864#[derive(Debug)]
1865#[cfg_attr(feature = "serialize", derive(Serialize))]
1866#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1867pub struct SassFlag<'a> {
1868 pub span: Span,
1869 pub keyword: Ident<'a>,
1870}
1871
1872#[derive(Debug)]
1873#[cfg_attr(feature = "serialize", derive(Serialize))]
1874#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1875pub struct SassFor<'a> {
1876 pub span: Span,
1877 pub binding: SassVariable<'a>,
1878 pub from_span: Span,
1879 pub start: ComponentValue<'a>,
1880 pub end: ComponentValue<'a>,
1881 pub boundary: SassForBoundary,
1882}
1883
1884#[derive(Debug)]
1885#[cfg_attr(feature = "serialize", derive(Serialize))]
1886#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1887pub struct SassForBoundary {
1888 pub span: Span,
1889 pub kind: SassForBoundaryKind,
1890}
1891
1892#[derive(Debug)]
1893#[cfg_attr(feature = "serialize", derive(Serialize))]
1894pub enum SassForBoundaryKind {
1895 Inclusive,
1896 Exclusive,
1897}
1898
1899#[derive(Debug)]
1900#[cfg_attr(feature = "serialize", derive(Serialize))]
1901#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1902pub struct SassForward<'a> {
1903 pub span: Span,
1904 pub path: InterpolableStr<'a>,
1905 pub prefix: Option<SassForwardPrefix<'a>>,
1906 pub visibility: Option<SassForwardVisibility<'a>>,
1907 pub config: Option<SassModuleConfig<'a>>,
1908}
1909
1910#[derive(Debug)]
1911#[cfg_attr(feature = "serialize", derive(Serialize))]
1912#[cfg_attr(feature = "serialize", serde(untagged))]
1913pub enum SassForwardMember<'a> {
1914 Ident(Ident<'a>),
1915 Variable(SassVariable<'a>),
1916}
1917
1918#[derive(Debug)]
1919#[cfg_attr(feature = "serialize", derive(Serialize))]
1920#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1921pub struct SassForwardPrefix<'a> {
1922 pub span: Span,
1923 pub as_span: Span,
1924 pub name: Ident<'a>,
1925}
1926
1927#[derive(Debug)]
1928#[cfg_attr(feature = "serialize", derive(Serialize))]
1929#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1930pub struct SassForwardVisibility<'a> {
1931 pub span: Span,
1932 pub modifier: SassForwardVisibilityModifier,
1933 pub members: Vec<'a, SassForwardMember<'a>>,
1934 pub comma_spans: Vec<'a, Span>,
1935}
1936
1937#[derive(Debug)]
1938#[cfg_attr(feature = "serialize", derive(Serialize))]
1939#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1940pub struct SassForwardVisibilityModifier {
1941 pub span: Span,
1942 pub kind: SassForwardVisibilityModifierKind,
1943}
1944
1945#[derive(Debug)]
1946#[cfg_attr(feature = "serialize", derive(Serialize))]
1947pub enum SassForwardVisibilityModifierKind {
1948 Hide,
1949 Show,
1950}
1951
1952#[derive(Debug)]
1953#[cfg_attr(feature = "serialize", derive(Serialize))]
1954#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1955pub struct SassFunction<'a> {
1956 pub span: Span,
1957 pub name: Ident<'a>,
1958 pub parameters: SassParameters<'a>,
1959}
1960
1961#[derive(Debug)]
1962#[cfg_attr(feature = "serialize", derive(Serialize))]
1963#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1964pub struct SassIfAtRule<'a> {
1965 pub span: Span,
1966 pub if_clause: SassConditionalClause<'a>,
1967 pub else_if_clauses: Vec<'a, SassConditionalClause<'a>>,
1968 pub else_clause: Option<SimpleBlock<'a>>,
1969 pub else_spans: Vec<'a, Span>,
1970}
1971
1972#[derive(Debug)]
1973#[cfg_attr(feature = "serialize", derive(Serialize))]
1974#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1975pub struct SassImportPrelude<'a> {
1976 pub span: Span,
1977 pub paths: Vec<'a, Str<'a>>,
1978 pub comma_spans: Vec<'a, Span>,
1979}
1980
1981#[derive(Debug)]
1982#[cfg_attr(feature = "serialize", derive(Serialize))]
1983#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1984pub struct SassInclude<'a> {
1985 pub span: Span,
1986 pub name: FunctionName<'a>,
1987 pub arguments: Option<SassIncludeArgs<'a>>,
1988 pub content_block_params: Option<SassIncludeContentBlockParams<'a>>,
1989}
1990
1991#[derive(Debug)]
1992#[cfg_attr(feature = "serialize", derive(Serialize))]
1993#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
1994pub struct SassIncludeArgs<'a> {
1995 pub span: Span,
1996 pub args: Vec<'a, ComponentValue<'a>>,
1997 pub comma_spans: Vec<'a, Span>,
1998}
1999
2000#[derive(Debug)]
2001#[cfg_attr(feature = "serialize", derive(Serialize))]
2002#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2003pub struct SassIncludeContentBlockParams<'a> {
2004 pub span: Span,
2005 pub using_span: Span,
2006 pub params: SassParameters<'a>,
2007}
2008
2009#[derive(Debug)]
2010#[cfg_attr(feature = "serialize", derive(Serialize))]
2011#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2012pub struct SassInterpolatedIdent<'a> {
2013 pub span: Span,
2014 pub elements: Vec<'a, SassInterpolatedIdentElement<'a>>,
2015}
2016
2017#[derive(Debug)]
2018#[cfg_attr(feature = "serialize", derive(Serialize))]
2019#[cfg_attr(feature = "serialize", serde(untagged))]
2020pub enum SassInterpolatedIdentElement<'a> {
2021 Expression(ComponentValue<'a>),
2022 Static(InterpolableIdentStaticPart<'a>),
2023}
2024
2025#[derive(Debug)]
2026#[cfg_attr(feature = "serialize", derive(Serialize))]
2027#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2028pub struct SassInterpolatedStr<'a> {
2029 pub span: Span,
2030 pub elements: Vec<'a, SassInterpolatedStrElement<'a>>,
2031}
2032
2033#[derive(Debug)]
2034#[cfg_attr(feature = "serialize", derive(Serialize))]
2035#[cfg_attr(feature = "serialize", serde(untagged))]
2036pub enum SassInterpolatedStrElement<'a> {
2037 Expression(ComponentValue<'a>),
2038 Static(InterpolableStrStaticPart<'a>),
2039}
2040
2041#[derive(Debug)]
2042#[cfg_attr(feature = "serialize", derive(Serialize))]
2043#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2044pub struct SassInterpolatedUrl<'a> {
2045 pub span: Span,
2046 pub elements: Vec<'a, SassInterpolatedUrlElement<'a>>,
2047}
2048
2049#[derive(Debug)]
2050#[cfg_attr(feature = "serialize", derive(Serialize))]
2051#[cfg_attr(feature = "serialize", serde(untagged))]
2052pub enum SassInterpolatedUrlElement<'a> {
2053 Expression(ComponentValue<'a>),
2054 Static(InterpolableUrlStaticPart<'a>),
2055}
2056
2057#[derive(Debug)]
2058#[cfg_attr(feature = "serialize", derive(Serialize))]
2059#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2060pub struct SassKeywordArgument<'a> {
2061 pub span: Span,
2062 pub name: SassVariable<'a>,
2063 pub colon_span: Span,
2064 pub value: Box<'a, ComponentValue<'a>>,
2065}
2066
2067#[derive(Debug)]
2068#[cfg_attr(feature = "serialize", derive(Serialize))]
2069#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2070pub struct SassList<'a> {
2071 pub span: Span,
2072 pub elements: Vec<'a, ComponentValue<'a>>,
2073 pub comma_spans: Option<Vec<'a, Span>>,
2074}
2075
2076#[derive(Debug)]
2077#[cfg_attr(feature = "serialize", derive(Serialize))]
2078#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2079pub struct SassMap<'a> {
2080 pub span: Span,
2081 pub items: Vec<'a, SassMapItem<'a>>,
2082 pub comma_spans: Vec<'a, Span>,
2083}
2084
2085#[derive(Debug)]
2086#[cfg_attr(feature = "serialize", derive(Serialize))]
2087#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2088pub struct SassMapItem<'a> {
2089 pub span: Span,
2090 pub key: ComponentValue<'a>,
2091 pub colon_span: Span,
2092 pub value: ComponentValue<'a>,
2093}
2094
2095#[derive(Debug)]
2096#[cfg_attr(feature = "serialize", derive(Serialize))]
2097#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2098pub struct SassMixin<'a> {
2099 pub span: Span,
2100 pub name: Ident<'a>,
2101 pub parameters: Option<SassParameters<'a>>,
2102}
2103
2104#[derive(Debug)]
2105#[cfg_attr(feature = "serialize", derive(Serialize))]
2106#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2107pub struct SassModuleConfig<'a> {
2108 pub span: Span,
2109 pub with_span: Span,
2110 pub lparen_span: Span,
2111 pub items: Vec<'a, SassModuleConfigItem<'a>>,
2112 pub comma_spans: Vec<'a, Span>,
2113}
2114
2115#[derive(Debug)]
2116#[cfg_attr(feature = "serialize", derive(Serialize))]
2117#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2118pub struct SassModuleConfigItem<'a> {
2119 pub span: Span,
2120 pub variable: SassVariable<'a>,
2121 pub colon_span: Span,
2122 pub value: ComponentValue<'a>,
2123 pub flags: Vec<'a, SassFlag<'a>>,
2124}
2125
2126#[derive(Debug)]
2127#[cfg_attr(feature = "serialize", derive(Serialize))]
2128#[cfg_attr(feature = "serialize", serde(untagged))]
2129pub enum SassModuleMemberName<'a> {
2130 Ident(Ident<'a>),
2131 Variable(SassVariable<'a>),
2132}
2133
2134#[derive(Debug)]
2135#[cfg_attr(feature = "serialize", derive(Serialize))]
2136#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2137pub struct SassNestingDeclaration<'a> {
2138 pub span: Span,
2139 pub block: SimpleBlock<'a>,
2140}
2141
2142#[derive(Debug)]
2143#[cfg_attr(feature = "serialize", derive(Serialize))]
2144#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2145pub struct SassParameter<'a> {
2146 pub span: Span,
2147 pub name: SassVariable<'a>,
2148 pub default_value: Option<SassParameterDefaultValue<'a>>,
2149}
2150
2151#[derive(Debug)]
2152#[cfg_attr(feature = "serialize", derive(Serialize))]
2153#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2154pub struct SassParameterDefaultValue<'a> {
2155 pub span: Span,
2156 pub colon_span: Span,
2157 pub value: ComponentValue<'a>,
2158}
2159
2160#[derive(Debug)]
2161#[cfg_attr(feature = "serialize", derive(Serialize))]
2162#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2163pub struct SassParameters<'a> {
2164 pub span: Span,
2165 pub params: Vec<'a, SassParameter<'a>>,
2166 pub arbitrary_param: Option<SassArbitraryParameter<'a>>,
2167 pub comma_spans: Vec<'a, Span>,
2168}
2169
2170#[derive(Debug)]
2171#[cfg_attr(feature = "serialize", derive(Serialize))]
2172#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2173pub struct SassParenthesizedExpression<'a> {
2174 pub span: Span,
2175 pub expr: Box<'a, ComponentValue<'a>>,
2176}
2177
2178#[derive(Debug)]
2179#[cfg_attr(feature = "serialize", derive(Serialize))]
2180#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2181pub struct SassPlaceholderSelector<'a> {
2182 pub span: Span,
2183 pub name: InterpolableIdent<'a>,
2184}
2185
2186#[derive(Debug)]
2187#[cfg_attr(feature = "serialize", derive(Serialize))]
2188#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2189pub struct SassQualifiedName<'a> {
2190 pub span: Span,
2191 pub module: Ident<'a>,
2192 pub member: SassModuleMemberName<'a>,
2193}
2194
2195#[derive(Debug)]
2196#[cfg_attr(feature = "serialize", derive(Serialize))]
2197#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2198pub struct SassUnaryExpression<'a> {
2199 pub span: Span,
2200 pub op: SassUnaryOperator,
2201 pub expr: Box<'a, ComponentValue<'a>>,
2202}
2203
2204#[derive(Debug)]
2205#[cfg_attr(feature = "serialize", derive(Serialize))]
2206#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2207pub struct SassUnaryOperator {
2208 pub span: Span,
2209 pub kind: SassUnaryOperatorKind,
2210}
2211
2212#[derive(Debug)]
2213#[cfg_attr(feature = "serialize", derive(Serialize))]
2214pub enum SassUnaryOperatorKind {
2215 Plus,
2216 Minus,
2217 Not,
2218}
2219
2220#[derive(Debug)]
2221#[cfg_attr(feature = "serialize", derive(Serialize))]
2222#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2223pub struct SassUnnamedNamespace {
2224 pub span: Span,
2225}
2226
2227#[derive(Debug)]
2228#[cfg_attr(feature = "serialize", derive(Serialize))]
2229#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2230pub struct SassUse<'a> {
2231 pub span: Span,
2232 pub path: InterpolableStr<'a>,
2233 pub namespace: Option<SassUseNamespace<'a>>,
2234 pub config: Option<SassModuleConfig<'a>>,
2235}
2236
2237#[derive(Debug)]
2238#[cfg_attr(feature = "serialize", derive(Serialize))]
2239#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2240pub struct SassUseNamespace<'a> {
2241 pub span: Span,
2242 pub as_span: Span,
2243 pub kind: SassUseNamespaceKind<'a>,
2244}
2245
2246#[derive(Debug)]
2247#[cfg_attr(feature = "serialize", derive(Serialize))]
2248#[cfg_attr(feature = "serialize", serde(untagged))]
2249pub enum SassUseNamespaceKind<'a> {
2250 Named(Ident<'a>),
2251 Unnamed(SassUnnamedNamespace),
2252}
2253
2254#[derive(Debug)]
2255#[cfg_attr(feature = "serialize", derive(Serialize))]
2256#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2257pub struct SassVariable<'a> {
2258 pub span: Span,
2259 pub name: Ident<'a>,
2260}
2261
2262#[derive(Debug)]
2263#[cfg_attr(feature = "serialize", derive(Serialize))]
2264#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2265pub struct SassVariableDeclaration<'a> {
2266 pub span: Span,
2267 pub namespace: Option<Ident<'a>>,
2268 pub name: SassVariable<'a>,
2269 pub colon_span: Span,
2270 pub value: ComponentValue<'a>,
2271 pub flags: Vec<'a, SassFlag<'a>>,
2272}
2273
2274#[derive(Debug)]
2275#[cfg_attr(feature = "serialize", derive(Serialize))]
2276#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2277pub struct ScopeEnd<'a> {
2278 pub span: Span,
2279 pub to_span: Span,
2280 pub lparen_span: Span,
2281 pub selector: Option<SelectorList<'a>>,
2282}
2283
2284#[derive(Debug)]
2285#[cfg_attr(feature = "serialize", derive(Serialize))]
2286#[cfg_attr(feature = "serialize", serde(untagged))]
2287pub enum ScopePrelude<'a> {
2288 StartOnly(ScopeStart<'a>),
2289 EndOnly(ScopeEnd<'a>),
2290 Both(ScopeStartWithEnd<'a>),
2291}
2292
2293#[derive(Debug)]
2294#[cfg_attr(feature = "serialize", derive(Serialize))]
2295#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2296pub struct ScopeStart<'a> {
2297 pub span: Span,
2298 pub selector: Option<SelectorList<'a>>,
2299}
2300
2301#[derive(Debug)]
2302#[cfg_attr(feature = "serialize", derive(Serialize))]
2303#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2304pub struct ScopeStartWithEnd<'a> {
2305 pub span: Span,
2306 pub start: ScopeStart<'a>,
2307 pub end: ScopeEnd<'a>,
2308}
2309
2310#[derive(Debug)]
2311#[cfg_attr(feature = "serialize", derive(Serialize))]
2312#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2313pub struct SelectorList<'a> {
2314 pub span: Span,
2315 pub selectors: Vec<'a, ComplexSelector<'a>>,
2316 pub comma_spans: Vec<'a, Span>,
2317}
2318
2319#[derive(Debug)]
2320#[cfg_attr(feature = "serialize", derive(Serialize))]
2321#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2322pub struct SimpleBlock<'a> {
2323 pub span: Span,
2324 pub statements: Vec<'a, Statement<'a>>,
2325}
2326
2327#[derive(Debug)]
2328#[cfg_attr(feature = "serialize", derive(Serialize))]
2329#[cfg_attr(feature = "serialize", serde(untagged))]
2330pub enum SimpleSelector<'a> {
2331 Class(ClassSelector<'a>),
2332 Id(IdSelector<'a>),
2333 Type(TypeSelector<'a>),
2334 Attribute(AttributeSelector<'a>),
2335 PseudoClass(PseudoClassSelector<'a>),
2336 PseudoElement(PseudoElementSelector<'a>),
2337 Nesting(NestingSelector<'a>),
2338 SassPlaceholder(SassPlaceholderSelector<'a>),
2339}
2340
2341#[derive(Debug)]
2342#[cfg_attr(feature = "serialize", derive(Serialize))]
2343#[cfg_attr(feature = "serialize", serde(untagged))]
2344pub enum Statement<'a> {
2345 AtRule(AtRule<'a>),
2346 Declaration(Declaration<'a>),
2347 KeyframeBlock(KeyframeBlock<'a>),
2348 LessConditionalQualifiedRule(LessConditionalQualifiedRule<'a>),
2349 LessExtendRule(LessExtendRule<'a>),
2350 LessFunctionCall(Function<'a>),
2351 LessMixinCall(LessMixinCall<'a>),
2352 LessMixinDefinition(Box<'a, LessMixinDefinition<'a>>),
2353 LessVariableCall(LessVariableCall<'a>),
2354 LessVariableDeclaration(Box<'a, LessVariableDeclaration<'a>>),
2355 Placeholder(Placeholder<'a>),
2356 PostcssSimpleVarDeclaration(Box<'a, PostcssSimpleVarDeclaration<'a>>),
2357 QualifiedRule(QualifiedRule<'a>),
2358 SassIfAtRule(Box<'a, SassIfAtRule<'a>>),
2359 SassVariableDeclaration(Box<'a, SassVariableDeclaration<'a>>),
2360 UnknownSassAtRule(Box<'a, UnknownSassAtRule<'a>>),
2361}
2362
2363#[derive(Debug)]
2364#[cfg_attr(feature = "serialize", derive(Serialize))]
2365#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2366pub struct Str<'a> {
2367 pub span: Span,
2368 pub value: &'a str,
2369 pub raw: &'a str,
2370}
2371
2372#[derive(Debug)]
2373#[cfg_attr(feature = "serialize", derive(Serialize))]
2374#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2375pub struct StyleCondition<'a> {
2376 pub span: Span,
2377 pub conditions: Vec<'a, StyleConditionKind<'a>>,
2378}
2379
2380#[derive(Debug)]
2381#[cfg_attr(feature = "serialize", derive(Serialize))]
2382#[cfg_attr(feature = "serialize", serde(untagged))]
2383pub enum StyleConditionKind<'a> {
2384 StyleInParens(StyleInParens<'a>),
2385 And(StyleConditionAnd<'a>),
2386 Or(StyleConditionOr<'a>),
2387 Not(StyleConditionNot<'a>),
2388}
2389
2390#[derive(Debug)]
2391#[cfg_attr(feature = "serialize", derive(Serialize))]
2392#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2393pub struct StyleConditionAnd<'a> {
2394 pub span: Span,
2395 pub keyword: Ident<'a>,
2396 pub style_in_parens: StyleInParens<'a>,
2397}
2398
2399#[derive(Debug)]
2400#[cfg_attr(feature = "serialize", derive(Serialize))]
2401#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2402pub struct StyleConditionNot<'a> {
2403 pub span: Span,
2404 pub keyword: Ident<'a>,
2405 pub style_in_parens: StyleInParens<'a>,
2406}
2407
2408#[derive(Debug)]
2409#[cfg_attr(feature = "serialize", derive(Serialize))]
2410#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2411pub struct StyleConditionOr<'a> {
2412 pub span: Span,
2413 pub keyword: Ident<'a>,
2414 pub style_in_parens: StyleInParens<'a>,
2415}
2416
2417#[derive(Debug)]
2418#[cfg_attr(feature = "serialize", derive(Serialize))]
2419#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2420pub struct StyleInParens<'a> {
2421 pub span: Span,
2422 pub kind: StyleInParensKind<'a>,
2423}
2424
2425#[derive(Debug)]
2426#[cfg_attr(feature = "serialize", derive(Serialize))]
2427#[cfg_attr(feature = "serialize", serde(untagged))]
2428pub enum StyleInParensKind<'a> {
2429 Condition(StyleCondition<'a>),
2430 Feature(Declaration<'a>),
2431}
2432
2433#[derive(Debug)]
2434#[cfg_attr(feature = "serialize", derive(Serialize))]
2435#[cfg_attr(feature = "serialize", serde(untagged))]
2436pub enum StyleQuery<'a> {
2437 Condition(StyleCondition<'a>),
2438 Feature(Declaration<'a>),
2439 FeatureName(InterpolableIdent<'a>),
2442}
2443
2444#[derive(Debug)]
2445#[cfg_attr(feature = "serialize", derive(Serialize))]
2446#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2447pub struct Stylesheet<'a> {
2448 pub span: Span,
2449 pub statements: Vec<'a, Statement<'a>>,
2450}
2451
2452#[derive(Debug)]
2453#[cfg_attr(feature = "serialize", derive(Serialize))]
2454#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2455pub struct SupportsAnd<'a> {
2456 pub span: Span,
2457 pub keyword: Ident<'a>,
2458 pub condition: SupportsInParens<'a>,
2459}
2460
2461#[derive(Debug)]
2462#[cfg_attr(feature = "serialize", derive(Serialize))]
2463#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2464pub struct SupportsCondition<'a> {
2465 pub span: Span,
2466 pub conditions: Vec<'a, SupportsConditionKind<'a>>,
2467}
2468
2469#[derive(Debug)]
2470#[cfg_attr(feature = "serialize", derive(Serialize))]
2471#[cfg_attr(feature = "serialize", serde(untagged))]
2472pub enum SupportsConditionKind<'a> {
2473 Not(SupportsNot<'a>),
2474 And(SupportsAnd<'a>),
2475 Or(SupportsOr<'a>),
2476 SupportsInParens(SupportsInParens<'a>),
2477}
2478
2479#[derive(Debug)]
2480#[cfg_attr(feature = "serialize", derive(Serialize))]
2481#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2482pub struct SupportsDecl<'a> {
2483 pub span: Span,
2484 pub decl: Declaration<'a>,
2485}
2486
2487#[derive(Debug)]
2488#[cfg_attr(feature = "serialize", derive(Serialize))]
2489#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2490pub struct SupportsInParens<'a> {
2491 pub span: Span,
2492 pub kind: SupportsInParensKind<'a>,
2493}
2494
2495#[derive(Debug)]
2496#[cfg_attr(feature = "serialize", derive(Serialize))]
2497#[cfg_attr(feature = "serialize", serde(untagged))]
2498pub enum SupportsInParensKind<'a> {
2499 SupportsCondition(SupportsCondition<'a>),
2500 Feature(Box<'a, SupportsDecl<'a>>),
2501 Selector(SelectorList<'a>),
2502 Function(Function<'a>),
2503 GeneralEnclosed(TokenSeq<'a>),
2504 Interpolation(InterpolableIdent<'a>),
2507}
2508
2509#[derive(Debug)]
2510#[cfg_attr(feature = "serialize", derive(Serialize))]
2511#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2512pub struct SupportsNot<'a> {
2513 pub span: Span,
2514 pub keyword: Ident<'a>,
2515 pub condition: SupportsInParens<'a>,
2516}
2517
2518#[derive(Debug)]
2519#[cfg_attr(feature = "serialize", derive(Serialize))]
2520#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2521pub struct SupportsOr<'a> {
2522 pub span: Span,
2523 pub keyword: Ident<'a>,
2524 pub condition: SupportsInParens<'a>,
2525}
2526
2527#[derive(Debug)]
2528#[cfg_attr(feature = "serialize", derive(Serialize))]
2529#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2530pub struct TagNameSelector<'a> {
2531 pub span: Span,
2532 pub name: WqName<'a>,
2533}
2534
2535#[derive(Debug)]
2536#[cfg_attr(feature = "serialize", derive(Serialize))]
2537#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2538pub struct TokenSeq<'a> {
2539 pub span: Span,
2540 pub tokens: Vec<'a, TokenWithSpan<'a>>,
2541}
2542
2543#[derive(Debug)]
2544#[cfg_attr(feature = "serialize", derive(Serialize))]
2545#[cfg_attr(feature = "serialize", serde(untagged))]
2546pub enum TypeSelector<'a> {
2547 TagName(TagNameSelector<'a>),
2548 Universal(UniversalSelector<'a>),
2549}
2550
2551#[derive(Debug)]
2552#[cfg_attr(feature = "serialize", derive(Serialize))]
2553#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2554pub struct UnicodeRange<'a> {
2555 pub span: Span,
2556 pub prefix: char,
2557 pub start: u32,
2558 pub start_raw: &'a str,
2559 pub end: u32,
2560 pub end_raw: Option<&'a str>,
2561}
2562
2563#[derive(Debug)]
2564#[cfg_attr(feature = "serialize", derive(Serialize))]
2565#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2566pub struct UniversalSelector<'a> {
2567 pub span: Span,
2568 pub prefix: Option<NsPrefix<'a>>,
2569}
2570
2571#[derive(Debug)]
2572#[cfg_attr(feature = "serialize", derive(Serialize))]
2573#[cfg_attr(feature = "serialize", serde(untagged))]
2574pub enum UnknownAtRulePrelude<'a> {
2575 ComponentValue(ComponentValue<'a>),
2576 TokenSeq(TokenSeq<'a>),
2577}
2578
2579#[derive(Debug)]
2580#[cfg_attr(feature = "serialize", derive(Serialize))]
2581#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2582pub struct UnknownSassAtRule<'a> {
2583 pub span: Span,
2584 pub name: InterpolableIdent<'a>,
2585 pub prelude: Option<UnknownAtRulePrelude<'a>>,
2586 pub block: Option<SimpleBlock<'a>>,
2587}
2588
2589#[derive(Debug)]
2590#[cfg_attr(feature = "serialize", derive(Serialize))]
2591#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2592pub struct UnquotedFontFamilyName<'a> {
2593 pub span: Span,
2594 pub idents: Vec<'a, InterpolableIdent<'a>>,
2595}
2596
2597#[derive(Debug)]
2598#[cfg_attr(feature = "serialize", derive(Serialize))]
2599#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2600pub struct Url<'a> {
2601 pub span: Span,
2602 pub name: Ident<'a>,
2603 pub value: Option<UrlValue<'a>>,
2604 pub modifiers: Vec<'a, UrlModifier<'a>>,
2605}
2606
2607#[derive(Debug)]
2608#[cfg_attr(feature = "serialize", derive(Serialize))]
2609#[cfg_attr(feature = "serialize", serde(untagged))]
2610pub enum UrlModifier<'a> {
2611 Ident(InterpolableIdent<'a>),
2612 Function(Function<'a>),
2613}
2614
2615#[derive(Debug)]
2617#[cfg_attr(feature = "serialize", derive(Serialize))]
2618#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2619pub struct UrlRaw<'a> {
2620 pub span: Span,
2621 pub value: &'a str,
2622 pub raw: &'a str,
2623}
2624
2625#[derive(Debug)]
2626#[cfg_attr(feature = "serialize", derive(Serialize))]
2627#[cfg_attr(feature = "serialize", serde(untagged))]
2628pub enum UrlValue<'a> {
2629 Raw(UrlRaw<'a>),
2630 SassInterpolated(SassInterpolatedUrl<'a>),
2631 Str(InterpolableStr<'a>),
2632 LessEscapedStr(LessEscapedStr<'a>),
2633}
2634
2635#[derive(Debug)]
2636#[cfg_attr(feature = "serialize", derive(Serialize))]
2637#[cfg_attr(feature = "serialize", serde(tag = "type", rename_all = "camelCase"))]
2638pub struct WqName<'a> {
2639 pub span: Span,
2640 pub name: InterpolableIdent<'a>,
2641 pub prefix: Option<NsPrefix<'a>>,
2642}