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/40527902c4d0840cdb7a808c8cd42302be1c3bc8
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    resets = MaskBorder,
120    property_group = Masking,
121    computed_value_type = Unknown,
122    canonical_order = "per grammar",
123)]
124#[declaration_writes(
125    MaskImage?,
126    MaskPosition?,
127    "/"
128    MaskSize?,
129    MaskRepeat?,
130    MaskOrigin?,
131    = MaskClip?,
132    MaskComposite?,
133    MaskMode?
134)]
135#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
136#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.mask"))]
137#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
138#[derive(csskit_derives::NodeWithMetadata)]
139pub struct MaskStyleValue<'a>;
140
141/// Represents the style value for `mask-border` as defined in [css-masking-1](https://drafts.csswg.org/css-masking-1/#mask-border).
142///
143/// 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.
144///
145/// The grammar is defined as:
146///
147/// ```text,ignore
148/// <'mask-border-source'> || <'mask-border-slice'> [ / <'mask-border-width'>? [ / <'mask-border-outset'> ]? ]? || <'mask-border-repeat'> || <'mask-border-mode'>
149/// ```
150///
151/// https://drafts.csswg.org/css-masking-1/#mask-border
152#[syntax(
153	" <'mask-border-source'> || <'mask-border-slice'> [ / <'mask-border-width'>? [ / <'mask-border-outset'> ]? ]? || <'mask-border-repeat'> || <'mask-border-mode'> "
154)]
155#[derive(
156	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
157)]
158#[declaration_metadata(
159    initial = "See individual properties",
160    applies_to = Unknown,
161    animation_type = Unknown,
162    longhands = MaskBorderSource|MaskBorderSlice|MaskBorderWidth|MaskBorderOutset|MaskBorderRepeat|MaskBorderMode,
163    reset_by = Mask,
164    property_group = Masking,
165    computed_value_type = Unknown,
166    canonical_order = "per grammar",
167)]
168#[declaration_writes(
169    MaskBorderSource,
170    MaskBorderSlice,
171    "/"
172    MaskBorderWidth,
173    "/"
174    MaskBorderOutset,
175    MaskBorderRepeat,
176    MaskBorderMode
177)]
178#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
179#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.mask-border"))]
180#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
181#[derive(csskit_derives::NodeWithMetadata)]
182pub struct MaskBorderStyleValue<'a>;
183
184/// Represents the style value for `mask-border-mode` as defined in [css-masking-1](https://drafts.csswg.org/css-masking-1/#mask-border-mode).
185///
186/// The grammar is defined as:
187///
188/// ```text,ignore
189/// luminance | alpha
190/// ```
191///
192/// https://drafts.csswg.org/css-masking-1/#mask-border-mode
193#[syntax(" luminance | alpha ")]
194#[derive(
195	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
196)]
197#[declaration_metadata(
198    initial = "alpha",
199    applies_to = Unknown,
200    animation_type = Discrete,
201    shorthands = MaskBorder,
202    reset_by = Mask,
203    property_group = Masking,
204    computed_value_type = AsSpecified,
205    canonical_order = "per grammar",
206)]
207#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
208#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.mask-border-mode"))]
209#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
210#[derive(csskit_derives::NodeWithMetadata)]
211pub enum MaskBorderModeStyleValue<'a> {}
212
213/// Represents the style value for `mask-border-outset` as defined in [css-masking-1](https://drafts.csswg.org/css-masking-1/#mask-border-outset).
214///
215/// 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.
216///
217/// The grammar is defined as:
218///
219/// ```text,ignore
220/// <'border-image-outset'>
221/// ```
222///
223/// https://drafts.csswg.org/css-masking-1/#mask-border-outset
224#[syntax(" <'border-image-outset'> ")]
225#[derive(
226	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
227)]
228#[declaration_metadata(
229    initial = "0",
230    applies_to = Unknown,
231    animation_type = ByComputedValue,
232    shorthands = MaskBorder,
233    reset_by = Mask,
234    property_group = Masking,
235    computed_value_type = Unknown,
236    canonical_order = "per grammar",
237)]
238#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
239#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.mask-border-outset"))]
240#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
241#[derive(csskit_derives::NodeWithMetadata)]
242pub struct MaskBorderOutsetStyleValue<'a>;
243
244/// Represents the style value for `mask-border-repeat` as defined in [css-masking-1](https://drafts.csswg.org/css-masking-1/#mask-border-repeat).
245///
246/// 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.
247///
248/// The grammar is defined as:
249///
250/// ```text,ignore
251/// <'border-image-repeat'>
252/// ```
253///
254/// https://drafts.csswg.org/css-masking-1/#mask-border-repeat
255#[syntax(" <'border-image-repeat'> ")]
256#[derive(
257	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
258)]
259#[declaration_metadata(
260    initial = "stretch",
261    applies_to = Unknown,
262    animation_type = Discrete,
263    shorthands = MaskBorder,
264    reset_by = Mask,
265    property_group = Masking,
266    computed_value_type = AsSpecified,
267    canonical_order = "per grammar",
268)]
269#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
270#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.mask-border-repeat"))]
271#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
272#[derive(csskit_derives::NodeWithMetadata)]
273pub struct MaskBorderRepeatStyleValue<'a>;
274
275/// Represents the style value for `mask-border-slice` as defined in [css-masking-1](https://drafts.csswg.org/css-masking-1/#mask-border-slice).
276///
277/// 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.
278///
279/// The grammar is defined as:
280///
281/// ```text,ignore
282/// <'border-image-slice'>
283/// ```
284///
285/// https://drafts.csswg.org/css-masking-1/#mask-border-slice
286#[syntax(" <'border-image-slice'> ")]
287#[derive(
288	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
289)]
290#[declaration_metadata(
291    initial = "0",
292    applies_to = Unknown,
293    animation_type = ByComputedValue,
294    percentages = BorderImageArea,
295    shorthands = MaskBorder,
296    reset_by = Mask,
297    property_group = Masking,
298    computed_value_type = AsSpecified,
299    canonical_order = "per grammar",
300)]
301#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
302#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.mask-border-slice"))]
303#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
304#[derive(csskit_derives::NodeWithMetadata)]
305pub struct MaskBorderSliceStyleValue<'a>;
306
307/// Represents the style value for `mask-border-source` as defined in [css-masking-1](https://drafts.csswg.org/css-masking-1/#mask-border-source).
308///
309/// 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.
310///
311/// The grammar is defined as:
312///
313/// ```text,ignore
314/// <'border-image-source'>
315/// ```
316///
317/// https://drafts.csswg.org/css-masking-1/#mask-border-source
318#[syntax(" <'border-image-source'> ")]
319#[derive(
320	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
321)]
322#[declaration_metadata(
323    initial = "none",
324    applies_to = Unknown,
325    animation_type = Discrete,
326    shorthands = MaskBorder,
327    reset_by = Mask,
328    property_group = Masking,
329    computed_value_type = Unknown,
330    canonical_order = "per grammar",
331)]
332#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
333#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.mask-border-source"))]
334#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
335#[derive(csskit_derives::NodeWithMetadata)]
336pub struct MaskBorderSourceStyleValue<'a>;
337
338/// Represents the style value for `mask-border-width` as defined in [css-masking-1](https://drafts.csswg.org/css-masking-1/#mask-border-width).
339///
340/// 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.
341///
342/// The grammar is defined as:
343///
344/// ```text,ignore
345/// <'border-image-width'>
346/// ```
347///
348/// https://drafts.csswg.org/css-masking-1/#mask-border-width
349#[syntax(" <'border-image-width'> ")]
350#[derive(
351	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
352)]
353#[declaration_metadata(
354    initial = "auto",
355    applies_to = Unknown,
356    animation_type = ByComputedValue,
357    percentages = BorderImageArea,
358    shorthands = MaskBorder,
359    reset_by = Mask,
360    property_group = Masking,
361    computed_value_type = Unknown,
362    canonical_order = "per grammar",
363)]
364#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
365#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.mask-border-width"))]
366#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
367#[derive(csskit_derives::NodeWithMetadata)]
368pub struct MaskBorderWidthStyleValue<'a>;
369
370/// Represents the style value for `mask-clip` as defined in [css-masking-1](https://drafts.csswg.org/css-masking-1/#mask-clip).
371///
372/// The mask CSS property (and several longhand properties) partially or completely hides an element according to the shape and depth of an image.
373///
374/// The grammar is defined as:
375///
376/// ```text,ignore
377/// [ <coord-box> | no-clip ]#
378/// ```
379///
380/// https://drafts.csswg.org/css-masking-1/#mask-clip
381#[syntax(" [ <coord-box> | no-clip ]# ")]
382#[derive(
383	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
384)]
385#[declaration_metadata(
386    initial = "border-box",
387    applies_to = Unknown,
388    animation_type = Discrete,
389    shorthands = Mask,
390    property_group = Masking,
391    computed_value_type = Unknown,
392    canonical_order = "per grammar",
393)]
394#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
395#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.mask-clip"))]
396#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
397#[derive(csskit_derives::NodeWithMetadata)]
398pub struct MaskClipStyleValue<'a>;
399
400/// Represents the style value for `mask-composite` as defined in [css-masking-1](https://drafts.csswg.org/css-masking-1/#mask-composite).
401///
402/// The mask CSS property (and several longhand properties) partially or completely hides an element according to the shape and depth of an image.
403///
404/// The grammar is defined as:
405///
406/// ```text,ignore
407/// <compositing-operator>#
408/// ```
409///
410/// https://drafts.csswg.org/css-masking-1/#mask-composite
411#[syntax(" <compositing-operator># ")]
412#[derive(
413	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
414)]
415#[declaration_metadata(
416    initial = "add",
417    applies_to = Unknown,
418    animation_type = Discrete,
419    shorthands = Mask,
420    property_group = Masking,
421    computed_value_type = Unknown,
422    canonical_order = "per grammar",
423)]
424#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
425#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.mask-composite"))]
426#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
427#[derive(csskit_derives::NodeWithMetadata)]
428pub struct MaskCompositeStyleValue<'a>;
429
430/// Represents the style value for `mask-image` as defined in [css-masking-1](https://drafts.csswg.org/css-masking-1/#mask-image).
431///
432/// The mask CSS property (and several longhand properties) partially or completely hides an element according to the shape and depth of an image.
433///
434/// The grammar is defined as:
435///
436/// ```text,ignore
437/// <mask-reference>#
438/// ```
439///
440/// https://drafts.csswg.org/css-masking-1/#mask-image
441#[syntax(" <mask-reference># ")]
442#[derive(
443	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
444)]
445#[declaration_metadata(
446    initial = "none",
447    applies_to = Unknown,
448    animation_type = Discrete,
449    shorthands = Mask,
450    property_group = Masking,
451    computed_value_type = Unknown,
452    canonical_order = "per grammar",
453)]
454#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
455#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.mask-image"))]
456#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
457#[derive(csskit_derives::NodeWithMetadata)]
458pub struct MaskImageStyleValue<'a>;
459
460/// Represents the style value for `mask-mode` as defined in [css-masking-1](https://drafts.csswg.org/css-masking-1/#mask-mode).
461///
462/// The mask CSS property (and several longhand properties) partially or completely hides an element according to the shape and depth of an image.
463///
464/// The grammar is defined as:
465///
466/// ```text,ignore
467/// <masking-mode>#
468/// ```
469///
470/// https://drafts.csswg.org/css-masking-1/#mask-mode
471#[syntax(" <masking-mode># ")]
472#[derive(
473	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
474)]
475#[declaration_metadata(
476    initial = "match-source",
477    applies_to = Unknown,
478    animation_type = Discrete,
479    shorthands = Mask,
480    property_group = Masking,
481    computed_value_type = Unknown,
482    canonical_order = "per grammar",
483)]
484#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
485#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.mask-mode"))]
486#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
487#[derive(csskit_derives::NodeWithMetadata)]
488pub struct MaskModeStyleValue<'a>;
489
490/// Represents the style value for `mask-origin` as defined in [css-masking-1](https://drafts.csswg.org/css-masking-1/#mask-origin).
491///
492/// The mask CSS property (and several longhand properties) partially or completely hides an element according to the shape and depth of an image.
493///
494/// The grammar is defined as:
495///
496/// ```text,ignore
497/// <coord-box>#
498/// ```
499///
500/// https://drafts.csswg.org/css-masking-1/#mask-origin
501#[syntax(" <coord-box># ")]
502#[derive(
503	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
504)]
505#[declaration_metadata(
506    initial = "border-box",
507    applies_to = Unknown,
508    animation_type = Discrete,
509    shorthands = Mask,
510    property_group = Masking,
511    computed_value_type = Unknown,
512    canonical_order = "per grammar",
513)]
514#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
515#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.mask-origin"))]
516#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
517#[derive(csskit_derives::NodeWithMetadata)]
518pub struct MaskOriginStyleValue<'a>;
519
520/// Represents the style value for `mask-position` as defined in [css-masking-1](https://drafts.csswg.org/css-masking-1/#mask-position).
521///
522/// The mask CSS property (and several longhand properties) partially or completely hides an element according to the shape and depth of an image.
523///
524/// The grammar is defined as:
525///
526/// ```text,ignore
527/// <position>#
528/// ```
529///
530/// https://drafts.csswg.org/css-masking-1/#mask-position
531#[syntax(" <position># ")]
532#[derive(
533	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
534)]
535#[declaration_metadata(
536    initial = "0% 0%",
537    applies_to = Unknown,
538    animation_type = RepeatableList,
539    percentages = Unknown,
540    shorthands = Mask,
541    property_group = Masking,
542    computed_value_type = AbsoluteLengthOrPercentage,
543    canonical_order = "per grammar",
544)]
545#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
546#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.mask-position"))]
547#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
548#[derive(csskit_derives::NodeWithMetadata)]
549pub struct MaskPositionStyleValue<'a>;
550
551/// Represents the style value for `mask-repeat` as defined in [css-masking-1](https://drafts.csswg.org/css-masking-1/#mask-repeat).
552///
553/// The mask CSS property (and several longhand properties) partially or completely hides an element according to the shape and depth of an image.
554///
555/// The grammar is defined as:
556///
557/// ```text,ignore
558/// <repeat-style>#
559/// ```
560///
561/// https://drafts.csswg.org/css-masking-1/#mask-repeat
562#[syntax(" <repeat-style># ")]
563#[derive(
564	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
565)]
566#[declaration_metadata(
567    initial = "repeat",
568    applies_to = Unknown,
569    animation_type = Discrete,
570    shorthands = Mask,
571    property_group = Masking,
572    computed_value_type = Unknown,
573    canonical_order = "per grammar",
574)]
575#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
576#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.mask-repeat"))]
577#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
578#[derive(csskit_derives::NodeWithMetadata)]
579pub struct MaskRepeatStyleValue<'a>;
580
581/// Represents the style value for `mask-size` as defined in [css-masking-1](https://drafts.csswg.org/css-masking-1/#mask-size).
582///
583/// The mask CSS property (and several longhand properties) partially or completely hides an element according to the shape and depth of an image.
584///
585/// The grammar is defined as:
586///
587/// ```text,ignore
588/// <bg-size>#
589/// ```
590///
591/// https://drafts.csswg.org/css-masking-1/#mask-size
592#[syntax(" <bg-size># ")]
593#[derive(
594	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
595)]
596#[declaration_metadata(
597    initial = "auto",
598    applies_to = Unknown,
599    animation_type = RepeatableList,
600    shorthands = Mask,
601    property_group = Masking,
602    computed_value_type = Unknown,
603    canonical_order = "per grammar",
604)]
605#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
606#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.mask-size"))]
607#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
608#[derive(csskit_derives::NodeWithMetadata)]
609pub struct MaskSizeStyleValue<'a>;
610
611/// Represents the style value for `mask-type` as defined in [css-masking-1](https://drafts.csswg.org/css-masking-1/#mask-type).
612///
613/// The mask-type CSS property on an SVG <mask> element sets whether the mask is a luminance or alpha mask.
614///
615/// The grammar is defined as:
616///
617/// ```text,ignore
618/// luminance | alpha
619/// ```
620///
621/// https://drafts.csswg.org/css-masking-1/#mask-type
622#[syntax(" luminance | alpha ")]
623#[derive(
624	Parse, Peek, ToSpan, ToCursors, DeclarationMetadata, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
625)]
626#[declaration_metadata(
627    initial = "luminance",
628    applies_to = Unknown,
629    animation_type = Discrete,
630    property_group = Masking,
631    computed_value_type = AsSpecified,
632    canonical_order = "per grammar",
633)]
634#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
635#[cfg_attr(feature = "css_feature_data", derive(ToCSSFeature), css_feature("css.properties.mask-type"))]
636#[cfg_attr(feature = "visitable", derive(Visitable), visit)]
637#[derive(csskit_derives::NodeWithMetadata)]
638pub enum MaskTypeStyleValue<'a> {}