1#![allow(warnings)]
5mod impls;
8use super::prelude::*;
9use impls::*;
10#[syntax(" none | <integer [1,∞]> ")]
20#[derive(
21 Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
22)]
23#[declaration_metadata(
24 initial = "none",
25 inherits = Unknown,
26 applies_to = Unknown,
27 animation_type = Unknown,
28 property_group = Overflow,
29 computed_value_type = Unknown,
30 canonical_order = "per grammar",
31)]
32#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
33#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.-webkit-line-clamp"))]
34#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
35#[derive(csskit_derives::NodeWithMetadata)]
36pub struct WebkitLineClampStyleValue;
37
38#[syntax(" no-ellipsis | auto | <string> ")]
48#[derive(
49 Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
50)]
51#[declaration_metadata(
52 initial = "no-ellipsis",
53 inherits,
54 applies_to = Block,
55 animation_type = Discrete,
56 property_group = Overflow,
57 computed_value_type = AsSpecified,
58 canonical_order = "per grammar",
59)]
60#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
61#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.block-ellipsis"))]
62#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
63#[derive(csskit_derives::NodeWithMetadata)]
64pub enum BlockEllipsisStyleValue {}
65
66#[syntax(" auto | discard | collapse ")]
76#[derive(
77 Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
78)]
79#[declaration_metadata(
80 initial = "auto",
81 applies_to = Unknown,
82 animation_type = Discrete,
83 property_group = Overflow,
84 computed_value_type = Unknown,
85 canonical_order = "per grammar",
86)]
87#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
88#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.continue"))]
89#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
90#[derive(csskit_derives::NodeWithMetadata)]
91pub enum ContinueStyleValue {}
92
93#[syntax(" none | [<integer [1,∞]> || <'block-ellipsis'>] -webkit-legacy? ")]
105#[derive(
106 Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
107)]
108#[declaration_metadata(
109 initial = "none",
110 inherits = Unknown,
111 applies_to = Unknown,
112 animation_type = Unknown,
113 property_group = Overflow,
114 computed_value_type = Unknown,
115 canonical_order = "per grammar",
116)]
117#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
118#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.line-clamp"))]
119#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
120#[derive(csskit_derives::NodeWithMetadata)]
121pub struct LineClampStyleValue;
122
123#[syntax(" none | <integer [1,∞]> ")]
133#[derive(
134 Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
135)]
136#[declaration_metadata(
137 initial = "none",
138 applies_to = Unknown,
139 animation_type = ByComputedValue,
140 property_group = Overflow,
141 computed_value_type = Unknown,
142 canonical_order = "per grammar",
143)]
144#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
145#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.max-lines"))]
146#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
147#[derive(csskit_derives::NodeWithMetadata)]
148pub struct MaxLinesStyleValue;
149
150#[syntax(" <'overflow-block'>{1,2} ")]
162#[derive(
163 Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
164)]
165#[declaration_metadata(
166 initial = "visible",
167 applies_to = Unknown,
168 animation_type = Discrete,
169 longhands = OverflowX|OverflowY,
170 property_group = Overflow,
171 computed_value_type = Unknown,
172 canonical_order = "per grammar",
173)]
174#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
175#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.overflow"))]
176#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
177#[derive(csskit_derives::NodeWithMetadata)]
178pub struct OverflowStyleValue;
179
180#[syntax(" visible | hidden | clip | scroll | auto ")]
192#[derive(
193 Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
194)]
195#[declaration_metadata(
196 initial = "visible",
197 applies_to = Unknown,
198 animation_type = Discrete,
199 property_group = Overflow,
200 computed_value_type = Unknown,
201 canonical_order = "per grammar",
202 logical_property_group = Overflow,
203 box_side = BlockStart|BlockEnd,
204)]
205#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
206#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.overflow-block"))]
207#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
208#[derive(csskit_derives::NodeWithMetadata)]
209pub enum OverflowBlockStyleValue {}
210
211#[syntax(" <visual-box> || <length> ")]
223#[derive(
224 Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
225)]
226#[declaration_metadata(
227 initial = "0px",
228 applies_to = Unknown,
229 animation_type = Unknown,
230 percentages = Unknown,
231 property_group = Overflow,
232 computed_value_type = Unknown,
233 canonical_order = "per grammar",
234)]
235#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
236#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.overflow-clip-margin"))]
237#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
238#[derive(csskit_derives::NodeWithMetadata)]
239pub struct OverflowClipMarginStyleValue;
240
241#[syntax(" <visual-box> || <length> ")]
251#[derive(
252 Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
253)]
254#[declaration_metadata(
255 initial = "0px",
256 applies_to = Unknown,
257 animation_type = Unknown,
258 percentages = Unknown,
259 property_group = Overflow,
260 computed_value_type = Unknown,
261 canonical_order = "per grammar",
262 box_side = BlockStart|BlockEnd,
263)]
264#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
265#[cfg_attr(
266 feature = "css_feature_data",
267 derive(ToCSSFeature),
268 css_feature("css.properties.overflow-clip-margin-block")
269)]
270#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
271#[derive(csskit_derives::NodeWithMetadata)]
272pub struct OverflowClipMarginBlockStyleValue;
273
274#[syntax(" <visual-box> || <length> ")]
284#[derive(
285 Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
286)]
287#[declaration_metadata(
288 initial = "0px",
289 applies_to = Unknown,
290 animation_type = Discrete,
291 percentages = Unknown,
292 property_group = Overflow,
293 computed_value_type = Unknown,
294 canonical_order = "per grammar",
295 logical_property_group = OverflowClipMargin,
296 box_side = BlockEnd,
297)]
298#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
299#[cfg_attr(
300 feature = "css_feature_data",
301 derive(ToCSSFeature),
302 css_feature("css.properties.overflow-clip-margin-block-end")
303)]
304#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
305#[derive(csskit_derives::NodeWithMetadata)]
306pub struct OverflowClipMarginBlockEndStyleValue;
307
308#[syntax(" <visual-box> || <length> ")]
318#[derive(
319 Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
320)]
321#[declaration_metadata(
322 initial = "0px",
323 applies_to = Unknown,
324 animation_type = Discrete,
325 percentages = Unknown,
326 property_group = Overflow,
327 computed_value_type = Unknown,
328 canonical_order = "per grammar",
329 logical_property_group = OverflowClipMargin,
330 box_side = BlockStart,
331)]
332#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
333#[cfg_attr(
334 feature = "css_feature_data",
335 derive(ToCSSFeature),
336 css_feature("css.properties.overflow-clip-margin-block-start")
337)]
338#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
339#[derive(csskit_derives::NodeWithMetadata)]
340pub struct OverflowClipMarginBlockStartStyleValue;
341
342#[syntax(" <visual-box> || <length> ")]
352#[derive(
353 Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
354)]
355#[declaration_metadata(
356 initial = "0px",
357 applies_to = Unknown,
358 animation_type = Discrete,
359 percentages = Unknown,
360 property_group = Overflow,
361 computed_value_type = Unknown,
362 canonical_order = "per grammar",
363 logical_property_group = OverflowClipMargin,
364 box_side = Bottom,
365)]
366#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
367#[cfg_attr(
368 feature = "css_feature_data",
369 derive(ToCSSFeature),
370 css_feature("css.properties.overflow-clip-margin-bottom")
371)]
372#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
373#[derive(csskit_derives::NodeWithMetadata)]
374pub struct OverflowClipMarginBottomStyleValue;
375
376#[syntax(" <visual-box> || <length> ")]
386#[derive(
387 Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
388)]
389#[declaration_metadata(
390 initial = "0px",
391 applies_to = Unknown,
392 animation_type = Unknown,
393 percentages = Unknown,
394 property_group = Overflow,
395 computed_value_type = Unknown,
396 canonical_order = "per grammar",
397 box_side = InlineStart|InlineEnd,
398)]
399#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
400#[cfg_attr(
401 feature = "css_feature_data",
402 derive(ToCSSFeature),
403 css_feature("css.properties.overflow-clip-margin-inline")
404)]
405#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
406#[derive(csskit_derives::NodeWithMetadata)]
407pub struct OverflowClipMarginInlineStyleValue;
408
409#[syntax(" <visual-box> || <length> ")]
419#[derive(
420 Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
421)]
422#[declaration_metadata(
423 initial = "0px",
424 applies_to = Unknown,
425 animation_type = Discrete,
426 percentages = Unknown,
427 property_group = Overflow,
428 computed_value_type = Unknown,
429 canonical_order = "per grammar",
430 logical_property_group = OverflowClipMargin,
431 box_side = InlineEnd,
432)]
433#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
434#[cfg_attr(
435 feature = "css_feature_data",
436 derive(ToCSSFeature),
437 css_feature("css.properties.overflow-clip-margin-inline-end")
438)]
439#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
440#[derive(csskit_derives::NodeWithMetadata)]
441pub struct OverflowClipMarginInlineEndStyleValue;
442
443#[syntax(" <visual-box> || <length> ")]
453#[derive(
454 Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
455)]
456#[declaration_metadata(
457 initial = "0px",
458 applies_to = Unknown,
459 animation_type = Discrete,
460 percentages = Unknown,
461 property_group = Overflow,
462 computed_value_type = Unknown,
463 canonical_order = "per grammar",
464 logical_property_group = OverflowClipMargin,
465 box_side = InlineStart,
466)]
467#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
468#[cfg_attr(
469 feature = "css_feature_data",
470 derive(ToCSSFeature),
471 css_feature("css.properties.overflow-clip-margin-inline-start")
472)]
473#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
474#[derive(csskit_derives::NodeWithMetadata)]
475pub struct OverflowClipMarginInlineStartStyleValue;
476
477#[syntax(" <visual-box> || <length> ")]
487#[derive(
488 Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
489)]
490#[declaration_metadata(
491 initial = "0px",
492 applies_to = Unknown,
493 animation_type = Discrete,
494 percentages = Unknown,
495 property_group = Overflow,
496 computed_value_type = Unknown,
497 canonical_order = "per grammar",
498 logical_property_group = OverflowClipMargin,
499 box_side = Left,
500)]
501#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
502#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.overflow-clip-margin-left"))]
503#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
504#[derive(csskit_derives::NodeWithMetadata)]
505pub struct OverflowClipMarginLeftStyleValue;
506
507#[syntax(" <visual-box> || <length> ")]
517#[derive(
518 Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
519)]
520#[declaration_metadata(
521 initial = "0px",
522 applies_to = Unknown,
523 animation_type = Discrete,
524 percentages = Unknown,
525 property_group = Overflow,
526 computed_value_type = Unknown,
527 canonical_order = "per grammar",
528 logical_property_group = OverflowClipMargin,
529 box_side = Right,
530)]
531#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
532#[cfg_attr(
533 feature = "css_feature_data",
534 derive(ToCSSFeature),
535 css_feature("css.properties.overflow-clip-margin-right")
536)]
537#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
538#[derive(csskit_derives::NodeWithMetadata)]
539pub struct OverflowClipMarginRightStyleValue;
540
541#[syntax(" <visual-box> || <length> ")]
551#[derive(
552 Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
553)]
554#[declaration_metadata(
555 initial = "0px",
556 applies_to = Unknown,
557 animation_type = Discrete,
558 percentages = Unknown,
559 property_group = Overflow,
560 computed_value_type = Unknown,
561 canonical_order = "per grammar",
562 logical_property_group = OverflowClipMargin,
563 box_side = Top,
564)]
565#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
566#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.overflow-clip-margin-top"))]
567#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
568#[derive(csskit_derives::NodeWithMetadata)]
569pub struct OverflowClipMarginTopStyleValue;
570
571#[syntax(" visible | hidden | clip | scroll | auto ")]
583#[derive(
584 Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
585)]
586#[declaration_metadata(
587 initial = "visible",
588 applies_to = Unknown,
589 animation_type = Discrete,
590 property_group = Overflow,
591 computed_value_type = Unknown,
592 canonical_order = "per grammar",
593 logical_property_group = Overflow,
594 box_side = InlineStart|InlineEnd,
595)]
596#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
597#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.overflow-inline"))]
598#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
599#[derive(csskit_derives::NodeWithMetadata)]
600pub enum OverflowInlineStyleValue {}
601
602#[syntax(" visible | hidden | clip | scroll | auto ")]
614#[derive(
615 Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
616)]
617#[declaration_metadata(
618 initial = "visible",
619 applies_to = Unknown,
620 animation_type = Discrete,
621 shorthand_group = Overflow,
622 property_group = Overflow,
623 computed_value_type = Unknown,
624 canonical_order = "per grammar",
625 logical_property_group = Overflow,
626)]
627#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
628#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.overflow-x"))]
629#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
630#[derive(csskit_derives::NodeWithMetadata)]
631pub enum OverflowXStyleValue {}
632
633#[syntax(" visible | hidden | clip | scroll | auto ")]
645#[derive(
646 Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
647)]
648#[declaration_metadata(
649 initial = "visible",
650 applies_to = Unknown,
651 animation_type = Discrete,
652 shorthand_group = Overflow,
653 property_group = Overflow,
654 computed_value_type = Unknown,
655 canonical_order = "per grammar",
656 logical_property_group = Overflow,
657)]
658#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
659#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.overflow-y"))]
660#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
661#[derive(csskit_derives::NodeWithMetadata)]
662pub enum OverflowYStyleValue {}
663
664#[syntax(" auto | smooth ")]
676#[derive(
677 Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
678)]
679#[declaration_metadata(
680 initial = "auto",
681 applies_to = Unknown,
682 property_group = Overflow,
683 computed_value_type = AsSpecified,
684 canonical_order = "per grammar",
685)]
686#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
687#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.scroll-behavior"))]
688#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
689#[derive(csskit_derives::NodeWithMetadata)]
690pub enum ScrollBehaviorStyleValue {}
691
692#[syntax(" none | [ [ before | after ] || [ links | tabs ] ] ")]
704#[derive(
705 Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
706)]
707#[declaration_metadata(
708 initial = "none",
709 applies_to = Unknown,
710 animation_type = Discrete,
711 property_group = Overflow,
712 computed_value_type = Unknown,
713 canonical_order = "per grammar",
714)]
715#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
716#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.scroll-marker-group"))]
717#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
718#[derive(csskit_derives::NodeWithMetadata)]
719pub enum ScrollMarkerGroupStyleValue {}
720
721#[syntax(" none | auto ")]
733#[derive(
734 Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
735)]
736#[declaration_metadata(
737 initial = "none",
738 applies_to = Elements,
739 animation_type = Discrete,
740 property_group = Overflow,
741 computed_value_type = AsSpecified,
742 canonical_order = "per grammar",
743)]
744#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
745#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.scroll-target-group"))]
746#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
747#[derive(csskit_derives::NodeWithMetadata)]
748pub enum ScrollTargetGroupStyleValue {}
749
750#[syntax(" auto | stable && both-edges? ")]
762#[derive(
763 Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
764)]
765#[declaration_metadata(
766 initial = "auto",
767 applies_to = Unknown,
768 animation_type = Discrete,
769 property_group = Overflow,
770 computed_value_type = Unknown,
771 canonical_order = "per grammar",
772)]
773#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
774#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.scrollbar-gutter"))]
775#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
776#[derive(csskit_derives::NodeWithMetadata)]
777pub struct ScrollbarGutterStyleValue;
778
779#[syntax(" [ clip | ellipsis | <string> | fade | <fade()> ]{1,2} ")]
791#[derive(
792 Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
793)]
794#[declaration_metadata(
795 initial = "clip",
796 applies_to = Block,
797 animation_type = ByComputedValue,
798 percentages = LineBox,
799 property_group = Overflow,
800 computed_value_type = AsSpecified,
801 canonical_order = "per grammar",
802)]
803#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
804#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.text-overflow"))]
805#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
806#[derive(csskit_derives::NodeWithMetadata)]
807pub struct TextOverflowStyleValue;