Skip to main content

css_ast/values/masking/
mod.rs

1// AUTO-GENERATED from w3c/csswg-drafts
2// Commit: https://github.com/w3c/csswg-drafts/commit/27fd597de31a8c43234f99f58983e4af3d1f9282
3// Do not edit this file directly.
4#![allow(warnings)]
5//! https://drafts.csswg.org/css-masking-1/
6
7mod impls;
8use super::prelude::*;
9use impls::*;
10/// Represents the style value for `clip` as defined in [css-masking-1](https://drafts.csswg.org/css-masking-1/#clip).
11///
12/// The clip CSS property sets the visible area of an absolutely positioned element.
13///
14/// The grammar is defined as:
15///
16/// ```text,ignore
17/// <rect()> | auto
18/// ```
19///
20/// https://drafts.csswg.org/css-masking-1/#clip
21#[syntax(" <rect()> | auto ")]
22#[derive(
23	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
24)]
25#[declaration_metadata(
26    initial = "auto",
27    applies_to = Unknown,
28    animation_type = ByComputedValue,
29    property_group = Masking,
30    computed_value_type = AsSpecified,
31    canonical_order = "per grammar",
32)]
33#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
34#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.clip"))]
35#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
36#[derive(csskit_derives::NodeWithMetadata)]
37pub struct ClipStyleValue<'a>;
38
39/// Represents the style value for `clip-path` as defined in [css-masking-1](https://drafts.csswg.org/css-masking-1/#clip-path).
40///
41/// The clip-path CSS property and SVG attribute set the visible area of an element. Everything outside the area will be hidden.
42///
43/// The grammar is defined as:
44///
45/// ```text,ignore
46/// <clip-source> | [ <basic-shape> || <geometry-box> ] | none
47/// ```
48///
49/// https://drafts.csswg.org/css-masking-1/#clip-path
50#[syntax(" <clip-source> | [ <basic-shape> || <geometry-box> ] | none ")]
51#[derive(
52	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
53)]
54#[declaration_metadata(
55    initial = "none",
56    applies_to = Unknown,
57    animation_type = ByComputedValue,
58    property_group = Masking,
59    computed_value_type = SpecifiedWithAbsoluteUrls,
60    canonical_order = "per grammar",
61)]
62#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
63#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.clip-path"))]
64#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
65#[derive(csskit_derives::NodeWithMetadata)]
66pub enum ClipPathStyleValue<'a> {}
67
68/// Represents the style value for `clip-rule` as defined in [css-masking-1](https://drafts.csswg.org/css-masking-1/#clip-rule).
69///
70/// The SVG image format, represented by the <svg> element, creates two-dimensional vector graphics with declarative or scripted interaction and animation.
71///
72/// The grammar is defined as:
73///
74/// ```text,ignore
75/// nonzero | evenodd
76/// ```
77///
78/// https://drafts.csswg.org/css-masking-1/#clip-rule
79#[syntax(" nonzero | evenodd ")]
80#[derive(
81	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
82)]
83#[declaration_metadata(
84    initial = "nonzero",
85    inherits,
86    applies_to = Unknown,
87    animation_type = Discrete,
88    property_group = Masking,
89    computed_value_type = AsSpecified,
90    canonical_order = "per grammar",
91)]
92#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
93#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.clip-rule"))]
94#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
95#[derive(csskit_derives::NodeWithMetadata)]
96pub enum ClipRuleStyleValue<'a> {}
97
98/// Represents the style value for `mask` as defined in [css-masking-1](https://drafts.csswg.org/css-masking-1/#mask).
99///
100/// The mask CSS property (and several longhand properties) partially or completely hides an element according to the shape and depth of an image.
101///
102/// The grammar is defined as:
103///
104/// ```text,ignore
105/// <mask-layer>#
106/// ```
107///
108/// https://drafts.csswg.org/css-masking-1/#mask
109#[syntax(" <mask-layer># ")]
110#[derive(
111	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
112)]
113#[declaration_metadata(
114    initial = "see individual properties",
115    applies_to = Unknown,
116    animation_type = Unknown,
117    percentages = Unknown,
118    longhands = MaskClip|MaskComposite|MaskImage|MaskMode|MaskOrigin|MaskPosition|MaskRepeat|MaskSize,
119    shorthand_resets_known = true,
120    shorthand_resets = MaskBorder,
121    property_group = Masking,
122    computed_value_type = Unknown,
123    canonical_order = "per grammar",
124)]
125#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
126#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.mask"))]
127#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
128#[derive(csskit_derives::NodeWithMetadata)]
129pub struct MaskStyleValue<'a>;
130
131/// Represents the style value for `mask-border` as defined in [css-masking-1](https://drafts.csswg.org/css-masking-1/#mask-border).
132///
133/// The mask-border CSS property sets how the edges of an element are masked. It is a shorthand for mask-border-outset, mask-border-repeat, mask-border-slice, mask-border-source, and mask-border-width.
134///
135/// The grammar is defined as:
136///
137/// ```text,ignore
138/// <'mask-border-source'> || <'mask-border-slice'> [ / <'mask-border-width'>? [ / <'mask-border-outset'> ]? ]? || <'mask-border-repeat'> || <'mask-border-mode'>
139/// ```
140///
141/// https://drafts.csswg.org/css-masking-1/#mask-border
142#[syntax(
143	" <'mask-border-source'> || <'mask-border-slice'> [ / <'mask-border-width'>? [ / <'mask-border-outset'> ]? ]? || <'mask-border-repeat'> || <'mask-border-mode'> "
144)]
145#[derive(
146	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
147)]
148#[declaration_metadata(
149    initial = "See individual properties",
150    applies_to = Unknown,
151    animation_type = Unknown,
152    longhands = MaskBorderMode|MaskBorderOutset|MaskBorderRepeat|MaskBorderSlice|MaskBorderSource|MaskBorderWidth,
153    reset_by_shorthands = Mask,
154    property_group = Masking,
155    computed_value_type = Unknown,
156    canonical_order = "per grammar",
157)]
158#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
159#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.mask-border"))]
160#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
161#[derive(csskit_derives::NodeWithMetadata)]
162pub struct MaskBorderStyleValue<'a>;
163
164/// Represents the style value for `mask-border-mode` as defined in [css-masking-1](https://drafts.csswg.org/css-masking-1/#mask-border-mode).
165///
166/// The grammar is defined as:
167///
168/// ```text,ignore
169/// luminance | alpha
170/// ```
171///
172/// https://drafts.csswg.org/css-masking-1/#mask-border-mode
173#[syntax(" luminance | alpha ")]
174#[derive(
175	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
176)]
177#[declaration_metadata(
178    initial = "alpha",
179    applies_to = Unknown,
180    animation_type = Discrete,
181    shorthand_group = MaskBorder,
182    reset_by_shorthands = Mask,
183    property_group = Masking,
184    computed_value_type = AsSpecified,
185    canonical_order = "per grammar",
186)]
187#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
188#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.mask-border-mode"))]
189#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
190#[derive(csskit_derives::NodeWithMetadata)]
191pub enum MaskBorderModeStyleValue<'a> {}
192
193/// Represents the style value for `mask-border-outset` as defined in [css-masking-1](https://drafts.csswg.org/css-masking-1/#mask-border-outset).
194///
195/// The mask-border CSS property sets how the edges of an element are masked. It is a shorthand for mask-border-outset, mask-border-repeat, mask-border-slice, mask-border-source, and mask-border-width.
196///
197/// The grammar is defined as:
198///
199/// ```text,ignore
200/// <'border-image-outset'>
201/// ```
202///
203/// https://drafts.csswg.org/css-masking-1/#mask-border-outset
204#[syntax(" <'border-image-outset'> ")]
205#[derive(
206	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
207)]
208#[declaration_metadata(
209    initial = "0",
210    applies_to = Unknown,
211    animation_type = ByComputedValue,
212    shorthand_group = MaskBorder,
213    reset_by_shorthands = Mask,
214    property_group = Masking,
215    computed_value_type = Unknown,
216    canonical_order = "per grammar",
217)]
218#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
219#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.mask-border-outset"))]
220#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
221#[derive(csskit_derives::NodeWithMetadata)]
222pub struct MaskBorderOutsetStyleValue<'a>;
223
224/// Represents the style value for `mask-border-repeat` as defined in [css-masking-1](https://drafts.csswg.org/css-masking-1/#mask-border-repeat).
225///
226/// The mask-border CSS property sets how the edges of an element are masked. It is a shorthand for mask-border-outset, mask-border-repeat, mask-border-slice, mask-border-source, and mask-border-width.
227///
228/// The grammar is defined as:
229///
230/// ```text,ignore
231/// <'border-image-repeat'>
232/// ```
233///
234/// https://drafts.csswg.org/css-masking-1/#mask-border-repeat
235#[syntax(" <'border-image-repeat'> ")]
236#[derive(
237	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
238)]
239#[declaration_metadata(
240    initial = "stretch",
241    applies_to = Unknown,
242    animation_type = Discrete,
243    shorthand_group = MaskBorder,
244    reset_by_shorthands = Mask,
245    property_group = Masking,
246    computed_value_type = AsSpecified,
247    canonical_order = "per grammar",
248)]
249#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
250#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.mask-border-repeat"))]
251#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
252#[derive(csskit_derives::NodeWithMetadata)]
253pub struct MaskBorderRepeatStyleValue<'a>;
254
255/// Represents the style value for `mask-border-slice` as defined in [css-masking-1](https://drafts.csswg.org/css-masking-1/#mask-border-slice).
256///
257/// The mask-border CSS property sets how the edges of an element are masked. It is a shorthand for mask-border-outset, mask-border-repeat, mask-border-slice, mask-border-source, and mask-border-width.
258///
259/// The grammar is defined as:
260///
261/// ```text,ignore
262/// <'border-image-slice'>
263/// ```
264///
265/// https://drafts.csswg.org/css-masking-1/#mask-border-slice
266#[syntax(" <'border-image-slice'> ")]
267#[derive(
268	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
269)]
270#[declaration_metadata(
271    initial = "0",
272    applies_to = Unknown,
273    animation_type = ByComputedValue,
274    percentages = BorderImageArea,
275    shorthand_group = MaskBorder,
276    reset_by_shorthands = Mask,
277    property_group = Masking,
278    computed_value_type = AsSpecified,
279    canonical_order = "per grammar",
280)]
281#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
282#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.mask-border-slice"))]
283#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
284#[derive(csskit_derives::NodeWithMetadata)]
285pub struct MaskBorderSliceStyleValue<'a>;
286
287/// Represents the style value for `mask-border-source` as defined in [css-masking-1](https://drafts.csswg.org/css-masking-1/#mask-border-source).
288///
289/// The mask-border CSS property sets how the edges of an element are masked. It is a shorthand for mask-border-outset, mask-border-repeat, mask-border-slice, mask-border-source, and mask-border-width.
290///
291/// The grammar is defined as:
292///
293/// ```text,ignore
294/// <'border-image-source'>
295/// ```
296///
297/// https://drafts.csswg.org/css-masking-1/#mask-border-source
298#[syntax(" <'border-image-source'> ")]
299#[derive(
300	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
301)]
302#[declaration_metadata(
303    initial = "none",
304    applies_to = Unknown,
305    animation_type = Discrete,
306    shorthand_group = MaskBorder,
307    reset_by_shorthands = Mask,
308    property_group = Masking,
309    computed_value_type = Unknown,
310    canonical_order = "per grammar",
311)]
312#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
313#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.mask-border-source"))]
314#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
315#[derive(csskit_derives::NodeWithMetadata)]
316pub struct MaskBorderSourceStyleValue<'a>;
317
318/// Represents the style value for `mask-border-width` as defined in [css-masking-1](https://drafts.csswg.org/css-masking-1/#mask-border-width).
319///
320/// The mask-border CSS property sets how the edges of an element are masked. It is a shorthand for mask-border-outset, mask-border-repeat, mask-border-slice, mask-border-source, and mask-border-width.
321///
322/// The grammar is defined as:
323///
324/// ```text,ignore
325/// <'border-image-width'>
326/// ```
327///
328/// https://drafts.csswg.org/css-masking-1/#mask-border-width
329#[syntax(" <'border-image-width'> ")]
330#[derive(
331	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
332)]
333#[declaration_metadata(
334    initial = "auto",
335    applies_to = Unknown,
336    animation_type = ByComputedValue,
337    percentages = BorderImageArea,
338    shorthand_group = MaskBorder,
339    reset_by_shorthands = Mask,
340    property_group = Masking,
341    computed_value_type = Unknown,
342    canonical_order = "per grammar",
343)]
344#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
345#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.mask-border-width"))]
346#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
347#[derive(csskit_derives::NodeWithMetadata)]
348pub struct MaskBorderWidthStyleValue<'a>;
349
350/// Represents the style value for `mask-clip` as defined in [css-masking-1](https://drafts.csswg.org/css-masking-1/#mask-clip).
351///
352/// The mask CSS property (and several longhand properties) partially or completely hides an element according to the shape and depth of an image.
353///
354/// The grammar is defined as:
355///
356/// ```text,ignore
357/// [ <coord-box> | no-clip ]#
358/// ```
359///
360/// https://drafts.csswg.org/css-masking-1/#mask-clip
361#[syntax(" [ <coord-box> | no-clip ]# ")]
362#[derive(
363	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
364)]
365#[declaration_metadata(
366    initial = "border-box",
367    applies_to = Unknown,
368    animation_type = Discrete,
369    shorthand_group = Mask,
370    property_group = Masking,
371    computed_value_type = Unknown,
372    canonical_order = "per grammar",
373)]
374#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
375#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.mask-clip"))]
376#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
377#[derive(csskit_derives::NodeWithMetadata)]
378pub struct MaskClipStyleValue<'a>;
379
380/// Represents the style value for `mask-composite` as defined in [css-masking-1](https://drafts.csswg.org/css-masking-1/#mask-composite).
381///
382/// The mask CSS property (and several longhand properties) partially or completely hides an element according to the shape and depth of an image.
383///
384/// The grammar is defined as:
385///
386/// ```text,ignore
387/// <compositing-operator>#
388/// ```
389///
390/// https://drafts.csswg.org/css-masking-1/#mask-composite
391#[syntax(" <compositing-operator># ")]
392#[derive(
393	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
394)]
395#[declaration_metadata(
396    initial = "add",
397    applies_to = Unknown,
398    animation_type = Discrete,
399    shorthand_group = Mask,
400    property_group = Masking,
401    computed_value_type = Unknown,
402    canonical_order = "per grammar",
403)]
404#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
405#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.mask-composite"))]
406#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
407#[derive(csskit_derives::NodeWithMetadata)]
408pub struct MaskCompositeStyleValue<'a>;
409
410/// Represents the style value for `mask-image` as defined in [css-masking-1](https://drafts.csswg.org/css-masking-1/#mask-image).
411///
412/// The mask CSS property (and several longhand properties) partially or completely hides an element according to the shape and depth of an image.
413///
414/// The grammar is defined as:
415///
416/// ```text,ignore
417/// <mask-reference>#
418/// ```
419///
420/// https://drafts.csswg.org/css-masking-1/#mask-image
421#[syntax(" <mask-reference># ")]
422#[derive(
423	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
424)]
425#[declaration_metadata(
426    initial = "none",
427    applies_to = Unknown,
428    animation_type = Discrete,
429    shorthand_group = Mask,
430    property_group = Masking,
431    computed_value_type = Unknown,
432    canonical_order = "per grammar",
433)]
434#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
435#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.mask-image"))]
436#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
437#[derive(csskit_derives::NodeWithMetadata)]
438pub struct MaskImageStyleValue<'a>;
439
440/// Represents the style value for `mask-mode` as defined in [css-masking-1](https://drafts.csswg.org/css-masking-1/#mask-mode).
441///
442/// The mask CSS property (and several longhand properties) partially or completely hides an element according to the shape and depth of an image.
443///
444/// The grammar is defined as:
445///
446/// ```text,ignore
447/// <masking-mode>#
448/// ```
449///
450/// https://drafts.csswg.org/css-masking-1/#mask-mode
451#[syntax(" <masking-mode># ")]
452#[derive(
453	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
454)]
455#[declaration_metadata(
456    initial = "match-source",
457    applies_to = Unknown,
458    animation_type = Discrete,
459    shorthand_group = Mask,
460    property_group = Masking,
461    computed_value_type = Unknown,
462    canonical_order = "per grammar",
463)]
464#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
465#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.mask-mode"))]
466#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
467#[derive(csskit_derives::NodeWithMetadata)]
468pub struct MaskModeStyleValue<'a>;
469
470/// Represents the style value for `mask-origin` as defined in [css-masking-1](https://drafts.csswg.org/css-masking-1/#mask-origin).
471///
472/// The mask CSS property (and several longhand properties) partially or completely hides an element according to the shape and depth of an image.
473///
474/// The grammar is defined as:
475///
476/// ```text,ignore
477/// <coord-box>#
478/// ```
479///
480/// https://drafts.csswg.org/css-masking-1/#mask-origin
481#[syntax(" <coord-box># ")]
482#[derive(
483	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
484)]
485#[declaration_metadata(
486    initial = "border-box",
487    applies_to = Unknown,
488    animation_type = Discrete,
489    shorthand_group = Mask,
490    property_group = Masking,
491    computed_value_type = Unknown,
492    canonical_order = "per grammar",
493)]
494#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
495#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.mask-origin"))]
496#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
497#[derive(csskit_derives::NodeWithMetadata)]
498pub struct MaskOriginStyleValue<'a>;
499
500/// Represents the style value for `mask-position` as defined in [css-masking-1](https://drafts.csswg.org/css-masking-1/#mask-position).
501///
502/// The mask CSS property (and several longhand properties) partially or completely hides an element according to the shape and depth of an image.
503///
504/// The grammar is defined as:
505///
506/// ```text,ignore
507/// <position>#
508/// ```
509///
510/// https://drafts.csswg.org/css-masking-1/#mask-position
511#[syntax(" <position># ")]
512#[derive(
513	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
514)]
515#[declaration_metadata(
516    initial = "0% 0%",
517    applies_to = Unknown,
518    animation_type = RepeatableList,
519    percentages = Unknown,
520    shorthand_group = Mask,
521    property_group = Masking,
522    computed_value_type = AbsoluteLengthOrPercentage,
523    canonical_order = "per grammar",
524)]
525#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
526#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.mask-position"))]
527#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
528#[derive(csskit_derives::NodeWithMetadata)]
529pub struct MaskPositionStyleValue<'a>;
530
531/// Represents the style value for `mask-repeat` as defined in [css-masking-1](https://drafts.csswg.org/css-masking-1/#mask-repeat).
532///
533/// The mask CSS property (and several longhand properties) partially or completely hides an element according to the shape and depth of an image.
534///
535/// The grammar is defined as:
536///
537/// ```text,ignore
538/// <repeat-style>#
539/// ```
540///
541/// https://drafts.csswg.org/css-masking-1/#mask-repeat
542#[syntax(" <repeat-style># ")]
543#[derive(
544	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
545)]
546#[declaration_metadata(
547    initial = "repeat",
548    applies_to = Unknown,
549    animation_type = Discrete,
550    shorthand_group = Mask,
551    property_group = Masking,
552    computed_value_type = Unknown,
553    canonical_order = "per grammar",
554)]
555#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
556#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.mask-repeat"))]
557#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
558#[derive(csskit_derives::NodeWithMetadata)]
559pub struct MaskRepeatStyleValue<'a>;
560
561/// Represents the style value for `mask-size` as defined in [css-masking-1](https://drafts.csswg.org/css-masking-1/#mask-size).
562///
563/// The mask CSS property (and several longhand properties) partially or completely hides an element according to the shape and depth of an image.
564///
565/// The grammar is defined as:
566///
567/// ```text,ignore
568/// <bg-size>#
569/// ```
570///
571/// https://drafts.csswg.org/css-masking-1/#mask-size
572#[syntax(" <bg-size># ")]
573#[derive(
574	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
575)]
576#[declaration_metadata(
577    initial = "auto",
578    applies_to = Unknown,
579    animation_type = RepeatableList,
580    shorthand_group = Mask,
581    property_group = Masking,
582    computed_value_type = Unknown,
583    canonical_order = "per grammar",
584)]
585#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
586#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.mask-size"))]
587#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
588#[derive(csskit_derives::NodeWithMetadata)]
589pub struct MaskSizeStyleValue<'a>;
590
591/// Represents the style value for `mask-type` as defined in [css-masking-1](https://drafts.csswg.org/css-masking-1/#mask-type).
592///
593/// The mask-type CSS property on an SVG <mask> element sets whether the mask is a luminance or alpha mask.
594///
595/// The grammar is defined as:
596///
597/// ```text,ignore
598/// luminance | alpha
599/// ```
600///
601/// https://drafts.csswg.org/css-masking-1/#mask-type
602#[syntax(" luminance | alpha ")]
603#[derive(
604	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
605)]
606#[declaration_metadata(
607    initial = "luminance",
608    applies_to = Unknown,
609    animation_type = Discrete,
610    property_group = Masking,
611    computed_value_type = AsSpecified,
612    canonical_order = "per grammar",
613)]
614#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
615#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.mask-type"))]
616#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
617#[derive(csskit_derives::NodeWithMetadata)]
618pub enum MaskTypeStyleValue<'a> {}