From 39c5603e2d00be93b395ab6b80ec9e6bf0288c34 Mon Sep 17 00:00:00 2001 From: Yoli <799480165@qq.com> Date: Wed, 29 May 2024 12:16:31 +0800 Subject: [PATCH] sync type css to 3.1.3 (#23) ## Change Log ### New CSS * AnimationRange * AnimationRangeEnd * AnimationRangeStart * FontSynthesisPosition * FontSynthesisSmallCaps * FontSynthesisStyle * FontSynthesisWeight * MasonryAutoFlow * Overlay * TextWrap * TimelineScope * TransitionBehavior * ViewTimeline * ViewTimelineAxis * ViewTimelineInset * ViewTimelineName * WhiteSpaceCollapse * WhiteSpaceTrim * MozOutlineRadius * MozOutlineRadiusBottomright * MozOutlineRadiusBottomleft * MozOutlineRadiusTopleft * MozOutlineRadiusTopright ### Obsolete CSS * MozBackfaceVisibility * MozPerspective * MozPerspectiveOrigin * MozTransformOrigin * MozTransformStyle * MozTransition * MozTransitionDelay * MozTransitionDuration * MozTransitionProperty * MozTransitionTimingFunction --- generator.ts | 12 +- package.json | 2 +- src/Css/CSSObject.StandardLonghand.cs | 613 +++++++++++++++++-------- src/Css/CSSObject.StandardShorthand.cs | 74 ++- src/Css/CSSObject.VendorLonghand.cs | 143 ++---- src/Css/CSSObject.VendorShorthand.cs | 10 +- src/Css/Property.cs | 502 ++++++++++++++++++++ 7 files changed, 1036 insertions(+), 320 deletions(-) diff --git a/generator.ts b/generator.ts index 2aaf97d..4899946 100644 --- a/generator.ts +++ b/generator.ts @@ -291,7 +291,7 @@ function generatePropertyItems(input: string, output: string, start: number, end const tab = ' '; let propTypes: PropertyType[] = [] if (useGeneric) { - const propLines = getFileContent('./node_modules/csstype/index.d.ts', 18459, 20144); + const propLines = getFileContent('./node_modules/csstype/index.d.ts', 18948, 20690); propTypes = getPropertyTypes(propLines) } const items = getPropertyItems(lines, propTypes); @@ -329,32 +329,32 @@ ${sb} } function generateProperty() { const input = './node_modules/csstype/index.d.ts'; const output = './src/Css/Property.cs'; - generatePropertyTypes(input, output, 18459, 20144); + generatePropertyTypes(input, output, 18948, 20690); generatePropertyGeneric('./src/Css/PropertyT.cs', 4); } function generateStandardLonghand() { const input = './node_modules/csstype/index.d.ts'; const output = './src/Css/CSSObject.StandardLonghand.cs'; - generatePropertyItems(input, output, 11, 5064); + generatePropertyItems(input, output, 11, 5283); } function generateStandardShorthand() { const input = './node_modules/csstype/index.d.ts'; const output = './src/Css/CSSObject.StandardShorthand.cs'; - generatePropertyItems(input, output, 5066, 5864); + generatePropertyItems(input, output, 5285, 6109); } function generateVendorLonghand() { const input = './node_modules/csstype/index.d.ts'; const output = './src/Css/CSSObject.VendorLonghand.cs'; - generatePropertyItems(input, output, 5870, 7663); + generatePropertyItems(input, output, 6115, 7868); } function generateVendorShorthand() { const input = './node_modules/csstype/index.d.ts'; const output = './src/Css/CSSObject.VendorShorthand.cs'; - generatePropertyItems(input, output, 7665, 7816); + generatePropertyItems(input, output, 7870, 8021); } function generateUnitless() { diff --git a/package.json b/package.json index 571c1af..044e2d8 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "devDependencies": { "@emotion/unitless": "^0.8.1", "@types/node": "^18.16.1", - "csstype": "^3.1.2", + "csstype": "3.1.3", "less": "^4.1.3", "ts-node": "^10.9.1", "tslib": "^2.5.0" diff --git a/src/Css/CSSObject.StandardLonghand.cs b/src/Css/CSSObject.StandardLonghand.cs index 25fe248..736c71a 100644 --- a/src/Css/CSSObject.StandardLonghand.cs +++ b/src/Css/CSSObject.StandardLonghand.cs @@ -86,7 +86,7 @@ public Property AlignTracks /// **Initial value**: `replace` /// | Chrome | Firefox | Safari | Edge | IE | /// | :-----: | :-----: | :----: | :--: | :-: | - /// | **112** | n/a | **16** | n/a | No | + /// | **112** | **115** | **16** | n/a | No | /// @see https://developer.mozilla.org/docs/Web/CSS/animation-composition /// public Property AnimationComposition @@ -207,13 +207,43 @@ public Property AnimationPlayState set => _properties["animation-play-state"] = value; } + /// + /// The **`animation-range-end`** CSS property is used to set the end of an animation's attachment range along its timeline, i.e. where along the timeline an animation will end. + /// **Syntax**: `[ normal | <length-percentage> | <timeline-range-name> <length-percentage>? ]#` + /// **Initial value**: `normal` + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :-----: | :-----: | :----: | :--: | :-: | + /// | **115** | No | No | n/a | No | + /// @see https://developer.mozilla.org/docs/Web/CSS/animation-range-end + /// + public Property AnimationRangeEnd + { + get => (Property) _properties["animation-range-end"]; + set => _properties["animation-range-end"] = value; + } + + /// + /// The **`animation-range-start`** CSS property is used to set the start of an animation's attachment range along its timeline, i.e. where along the timeline an animation will start. + /// **Syntax**: `[ normal | <length-percentage> | <timeline-range-name> <length-percentage>? ]#` + /// **Initial value**: `normal` + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :-----: | :-----: | :----: | :--: | :-: | + /// | **115** | No | No | n/a | No | + /// @see https://developer.mozilla.org/docs/Web/CSS/animation-range-start + /// + public Property AnimationRangeStart + { + get => (Property) _properties["animation-range-start"]; + set => _properties["animation-range-start"] = value; + } + /// /// The **`animation-timeline`** CSS property specifies the timeline that is used to control the progress of an animation. /// **Syntax**: `<single-animation-timeline>#` /// **Initial value**: `auto` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :----: | :-----: | :----: | :--: | :-: | - /// | No | n/a | No | n/a | No | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :-----: | :-----: | :----: | :--: | :-: | + /// | **115** | n/a | No | n/a | No | /// @see https://developer.mozilla.org/docs/Web/CSS/animation-timeline /// public Property AnimationTimeline @@ -288,10 +318,10 @@ public Property BackdropFilter /// The **`backface-visibility`** CSS property sets whether the back face of an element is visible when turned towards the user. /// **Syntax**: `visible | hidden` /// **Initial value**: `visible` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :------: | :------: | :-------: | :----: | :----: | - /// | **36** | **16** | **15.4** | **12** | **10** | - /// | 12 _-x-_ | 10 _-x-_ | 5.1 _-x-_ | | | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :------: | :-----: | :-------: | :----: | :----: | + /// | **36** | **16** | **15.4** | **12** | **10** | + /// | 12 _-x-_ | | 5.1 _-x-_ | | | /// @see https://developer.mozilla.org/docs/Web/CSS/backface-visibility /// public Property BackfaceVisibility @@ -336,7 +366,7 @@ public Property BackgroundBlendMode /// **Initial value**: `border-box` /// | Chrome | Firefox | Safari | Edge | IE | /// | :----: | :-----: | :-----: | :----: | :---: | - /// | **1** | **4** | **14** | **12** | **9** | + /// | **1** | **4** | **5** | **12** | **9** | /// | | | 3 _-x-_ | | | /// @see https://developer.mozilla.org/docs/Web/CSS/background-clip /// @@ -1529,11 +1559,11 @@ public Property Contain /// /// The **`contain-intrinsic-block-size`** CSS logical property defines the block size of an element that a browser can use for layout when the element is subject to size containment. - /// **Syntax**: `none | <length> | auto <length>` + /// **Syntax**: `auto? [ none | <length> ]` /// **Initial value**: `none` /// | Chrome | Firefox | Safari | Edge | IE | /// | :----: | :-----: | :----: | :--: | :-: | - /// | **95** | **107** | No | n/a | No | + /// | **95** | **107** | **17** | n/a | No | /// @see https://developer.mozilla.org/docs/Web/CSS/contain-intrinsic-contain-intrinsic-block-size /// public Property ContainIntrinsicBlockSize @@ -1544,11 +1574,11 @@ public Property ContainIntrinsicBlockSize /// /// The **`contain-intrinsic-length`** CSS property sets the height of an element that a browser can use for layout when the element is subject to size containment. - /// **Syntax**: `none | <length> | auto <length>` + /// **Syntax**: `auto? [ none | <length> ]` /// **Initial value**: `none` /// | Chrome | Firefox | Safari | Edge | IE | /// | :----: | :-----: | :----: | :--: | :-: | - /// | **83** | **107** | No | n/a | No | + /// | **95** | **107** | **17** | n/a | No | /// @see https://developer.mozilla.org/docs/Web/CSS/contain-intrinsic-height /// public Property ContainIntrinsicHeight @@ -1559,11 +1589,11 @@ public Property ContainIntrinsicHeight /// /// The **`contain-intrinsic-inline-size`** CSS logical property defines the inline-size of an element that a browser can use for layout when the element is subject to size containment. - /// **Syntax**: `none | <length> | auto <length>` + /// **Syntax**: `auto? [ none | <length> ]` /// **Initial value**: `none` /// | Chrome | Firefox | Safari | Edge | IE | /// | :----: | :-----: | :----: | :--: | :-: | - /// | **95** | **107** | No | n/a | No | + /// | **95** | **107** | **17** | n/a | No | /// @see https://developer.mozilla.org/docs/Web/CSS/contain-intrinsic-contain-intrinsic-inline-size /// public Property ContainIntrinsicInlineSize @@ -1574,11 +1604,11 @@ public Property ContainIntrinsicInlineSize /// /// The **`contain-intrinsic-width`** CSS property sets the width of an element that a browser will use for layout when the element is subject to size containment. - /// **Syntax**: `none | <length> | auto <length>` + /// **Syntax**: `auto? [ none | <length> ]` /// **Initial value**: `none` /// | Chrome | Firefox | Safari | Edge | IE | /// | :----: | :-----: | :----: | :--: | :-: | - /// | **83** | **107** | No | n/a | No | + /// | **95** | **107** | **17** | n/a | No | /// @see https://developer.mozilla.org/docs/Web/CSS/contain-intrinsic-width /// public Property ContainIntrinsicWidth @@ -1636,9 +1666,9 @@ public Property Content /// The **`content-visibility`** CSS property controls whether or not an element renders its contents at all, along with forcing a strong set of containments, allowing user agents to potentially omit large swathes of layout and rendering work until it becomes needed. It enables the user agent to skip an element's rendering work (including layout and painting) until it is needed — which makes the initial page load much faster. /// **Syntax**: `visible | auto | hidden` /// **Initial value**: `visible` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :----: | :-----: | :----: | :--: | :-: | - /// | **85** | n/a | No | n/a | No | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :----: | :---------: | :----: | :--: | :-: | + /// | **85** | **preview** | No | n/a | No | /// @see https://developer.mozilla.org/docs/Web/CSS/content-visibility /// public Property ContentVisibility @@ -1681,9 +1711,9 @@ public Property CounterReset /// The **`counter-set`** CSS property sets a CSS counter to a given value. It manipulates the value of existing counters, and will only create new counters if there isn't already a counter of the given name on the element. /// **Syntax**: `[ <counter-name> <integer>? ]+ | none` /// **Initial value**: `none` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :----: | :-----: | :----: | :--: | :-: | - /// | **85** | **68** | No | n/a | No | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :----: | :-----: | :------: | :--: | :-: | + /// | **85** | **68** | **17.2** | n/a | No | /// @see https://developer.mozilla.org/docs/Web/CSS/counter-set /// public Property CounterSet @@ -2032,8 +2062,8 @@ public Property FontStyle /// /// The **`font-synthesis`** CSS property controls which missing typefaces, bold, italic, or small-caps, may be synthesized by the browser. - /// **Syntax**: `none | [ weight || style || small-caps ]` - /// **Initial value**: `weight style` + /// **Syntax**: `none | [ weight || style || small-caps || position]` + /// **Initial value**: `weight style small-caps position ` /// | Chrome | Firefox | Safari | Edge | IE | /// | :----: | :-----: | :----: | :--: | :-: | /// | **97** | **34** | **9** | n/a | No | @@ -2045,6 +2075,66 @@ public Property FontSynthesis set => _properties["font-synthesis"] = value; } + /// + /// The **`font-synthesis-position`** CSS property lets you specify whether or not a browser may synthesize the subscript and superscript "position" typefaces when they are missing in a font family, while using `font-variant-position` to set the positions. + /// **Syntax**: `auto | none` + /// **Initial value**: `none` + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :----: | :-----: | :----: | :--: | :-: | + /// | No | **118** | No | n/a | No | + /// @see https://developer.mozilla.org/docs/Web/CSS/font-synthesis-position + /// + public Property FontSynthesisPosition + { + get => (Property) _properties["font-synthesis-position"]; + set => _properties["font-synthesis-position"] = value; + } + + /// + /// The **`font-synthesis-small-caps`** CSS property lets you specify whether or not the browser may synthesize small-caps typeface when it is missing in a font family. Small-caps glyphs typically use the form of uppercase letters but are reduced to the size of lowercase letters. + /// **Syntax**: `auto | none` + /// **Initial value**: `auto` + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :----: | :-----: | :------: | :--: | :-: | + /// | **97** | **111** | **16.4** | n/a | No | + /// @see https://developer.mozilla.org/docs/Web/CSS/font-synthesis-small-caps + /// + public Property FontSynthesisSmallCaps + { + get => (Property) _properties["font-synthesis-small-caps"]; + set => _properties["font-synthesis-small-caps"] = value; + } + + /// + /// The **`font-synthesis-style`** CSS property lets you specify whether or not the browser may synthesize the oblique typeface when it is missing in a font family. + /// **Syntax**: `auto | none` + /// **Initial value**: `auto` + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :----: | :-----: | :------: | :--: | :-: | + /// | **97** | **111** | **16.4** | n/a | No | + /// @see https://developer.mozilla.org/docs/Web/CSS/font-synthesis-style + /// + public Property FontSynthesisStyle + { + get => (Property) _properties["font-synthesis-style"]; + set => _properties["font-synthesis-style"] = value; + } + + /// + /// The **`font-synthesis-weight`** CSS property lets you specify whether or not the browser may synthesize the bold typeface when it is missing in a font family. + /// **Syntax**: `auto | none` + /// **Initial value**: `auto` + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :----: | :-----: | :------: | :--: | :-: | + /// | **97** | **111** | **16.4** | n/a | No | + /// @see https://developer.mozilla.org/docs/Web/CSS/font-synthesis-weight + /// + public Property FontSynthesisWeight + { + get => (Property) _properties["font-synthesis-weight"]; + set => _properties["font-synthesis-weight"] = value; + } + /// /// The **`font-variant`** CSS shorthand property allows you to set all the font variants for a font. /// **Syntax**: `normal | none | [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> || stylistic( <feature-value-name> ) || historical-forms || styleset( <feature-value-name># ) || character-variant( <feature-value-name># ) || swash( <feature-value-name> ) || ornaments( <feature-value-name> ) || annotation( <feature-value-name> ) || [ small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps ] || <numeric-figure-values> || <numeric-spacing-values> || <numeric-fraction-values> || ordinal || slashed-zero || <east-asian-variant-values> || <east-asian-width-values> || ruby ]` @@ -2064,9 +2154,9 @@ public Property FontVariant /// The **`font-variant-alternates`** CSS property controls the usage of alternate glyphs. These alternate glyphs may be referenced by alternative names defined in `@font-feature-values`. /// **Syntax**: `normal | [ stylistic( <feature-value-name> ) || historical-forms || styleset( <feature-value-name># ) || character-variant( <feature-value-name># ) || swash( <feature-value-name> ) || ornaments( <feature-value-name> ) || annotation( <feature-value-name> ) ]` /// **Initial value**: `normal` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :----: | :-----: | :-----: | :--: | :-: | - /// | No | **34** | **9.1** | n/a | No | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :-----: | :-----: | :-----: | :--: | :-: | + /// | **111** | **34** | **9.1** | n/a | No | /// @see https://developer.mozilla.org/docs/Web/CSS/font-variant-alternates /// public Property FontVariantAlternates @@ -2110,7 +2200,7 @@ public Property FontVariantEastAsian /// **Initial value**: `normal` /// | Chrome | Firefox | Safari | Edge | IE | /// | :----: | :-----: | :----: | :--: | :-: | - /// | No | **108** | No | n/a | No | + /// | No | n/a | No | n/a | No | /// @see https://developer.mozilla.org/docs/Web/CSS/font-variant-emoji /// public Property FontVariantEmoji @@ -2154,9 +2244,9 @@ public Property FontVariantNumeric /// The **`font-variant-position`** CSS property controls the use of alternate, smaller glyphs that are positioned as superscript or subscript. /// **Syntax**: `normal | sub | super` /// **Initial value**: `normal` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :----: | :-----: | :-----: | :--: | :-: | - /// | No | **34** | **9.1** | n/a | No | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :-----: | :-----: | :-----: | :--: | :-: | + /// | **117** | **34** | **9.1** | n/a | No | /// @see https://developer.mozilla.org/docs/Web/CSS/font-variant-position /// public Property FontVariantPosition @@ -2201,7 +2291,7 @@ public Property FontWeight /// **Initial value**: `auto` /// | Chrome | Firefox | Safari | Edge | IE | /// | :----: | :-----: | :----: | :-----------------------------: | :---------------------------------: | - /// | **89** | No | No | **79** | **10** _(-ms-high-contrast-adjust)_ | + /// | **89** | **113** | No | **79** | **10** _(-ms-high-contrast-adjust)_ | /// | | | | 12 _(-ms-high-contrast-adjust)_ | | /// @see https://developer.mozilla.org/docs/Web/CSS/forced-color-adjust /// @@ -2395,10 +2485,10 @@ public Property Height /// The **`hyphenate-character`** CSS property sets the character (or string) used at the end of a line before a hyphenation break. /// **Syntax**: `auto | <string>` /// **Initial value**: `auto` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :-----: | :-----: | :-----------: | :--: | :-: | - /// | **106** | **98** | **5.1** _-x-_ | n/a | No | - /// | 6 _-x-_ | | | | | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :-----: | :-----: | :-------: | :--: | :-: | + /// | **106** | **98** | **17** | n/a | No | + /// | 6 _-x-_ | | 5.1 _-x-_ | | | /// @see https://developer.mozilla.org/docs/Web/CSS/hyphenate-character /// public Property HyphenateCharacter @@ -2425,10 +2515,10 @@ public Property HyphenateLimitChars /// The **`hyphens`** CSS property specifies how words should be hyphenated when text wraps across multiple lines. It can prevent hyphenation entirely, hyphenate at manually-specified points within the text, or let the browser automatically insert hyphens where appropriate. /// **Syntax**: `none | manual | auto` /// **Initial value**: `manual` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :------: | :-----: | :-----------: | :----: | :----------: | - /// | **55** | **43** | **5.1** _-x-_ | **79** | **10** _-x-_ | - /// | 13 _-x-_ | 6 _-x-_ | | | | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :------: | :-----: | :-------: | :----: | :----------: | + /// | **55** | **43** | **17** | **79** | **10** _-x-_ | + /// | 13 _-x-_ | 6 _-x-_ | 5.1 _-x-_ | | | /// @see https://developer.mozilla.org/docs/Web/CSS/hyphens /// public Property Hyphens @@ -2780,7 +2870,7 @@ public Property ListStyleType /// **Initial value**: `0` /// | Chrome | Firefox | Safari | Edge | IE | /// | :----: | :-----: | :------: | :--: | :-: | - /// | **87** | **41** | **12.1** | n/a | No | + /// | **69** | **41** | **12.1** | n/a | No | /// @see https://developer.mozilla.org/docs/Web/CSS/margin-block-end /// public Property MarginBlockEnd @@ -2795,7 +2885,7 @@ public Property MarginBlockEnd /// **Initial value**: `0` /// | Chrome | Firefox | Safari | Edge | IE | /// | :----: | :-----: | :------: | :--: | :-: | - /// | **87** | **41** | **12.1** | n/a | No | + /// | **69** | **41** | **12.1** | n/a | No | /// @see https://developer.mozilla.org/docs/Web/CSS/margin-block-start /// public Property MarginBlockStart @@ -2825,7 +2915,7 @@ public Property MarginBottom /// **Initial value**: `0` /// | Chrome | Firefox | Safari | Edge | IE | /// | :----------------------: | :-------------------: | :----------------------: | :--: | :-: | - /// | **87** | **41** | **12.1** | n/a | No | + /// | **69** | **41** | **12.1** | n/a | No | /// | 2 _(-webkit-margin-end)_ | 3 _(-moz-margin-end)_ | 3 _(-webkit-margin-end)_ | | | /// @see https://developer.mozilla.org/docs/Web/CSS/margin-inline-end /// @@ -2841,7 +2931,7 @@ public Property MarginInlineEnd /// **Initial value**: `0` /// | Chrome | Firefox | Safari | Edge | IE | /// | :------------------------: | :---------------------: | :------------------------: | :--: | :-: | - /// | **87** | **41** | **12.1** | n/a | No | + /// | **69** | **41** | **12.1** | n/a | No | /// | 2 _(-webkit-margin-start)_ | 3 _(-moz-margin-start)_ | 3 _(-webkit-margin-start)_ | | | /// @see https://developer.mozilla.org/docs/Web/CSS/margin-inline-start /// @@ -2926,9 +3016,10 @@ public Property MaskBorderMode /// The **`mask-border-outset`** CSS property specifies the distance by which an element's mask border is set out from its border box. /// **Syntax**: `[ <length> | <number> ]{1,4}` /// **Initial value**: `0` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :-------------------------------------: | :-----: | :---------------------------------------: | :--: | :-: | - /// | **1** _(-webkit-mask-box-image-outset)_ | No | **3.1** _(-webkit-mask-box-image-outset)_ | n/a | No | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :-------------------------------------: | :-----: | :-----------------------------------: | :--: | :-: | + /// | **1** _(-webkit-mask-box-image-outset)_ | No | **17.2** | n/a | No | + /// | | | 3.1 _(-webkit-mask-box-image-outset)_ | | | /// @see https://developer.mozilla.org/docs/Web/CSS/mask-border-outset /// public Property MaskBorderOutset @@ -2941,9 +3032,10 @@ public Property MaskBorderOutset /// The **`mask-border-repeat`** CSS property sets how the edge regions of a source image are adjusted to fit the dimensions of an element's mask border. /// **Syntax**: `[ stretch | repeat | round | space ]{1,2}` /// **Initial value**: `stretch` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :-------------------------------------: | :-----: | :---------------------------------------: | :--: | :-: | - /// | **1** _(-webkit-mask-box-image-repeat)_ | No | **3.1** _(-webkit-mask-box-image-repeat)_ | n/a | No | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :-------------------------------------: | :-----: | :-----------------------------------: | :--: | :-: | + /// | **1** _(-webkit-mask-box-image-repeat)_ | No | **17.2** | n/a | No | + /// | | | 3.1 _(-webkit-mask-box-image-repeat)_ | | | /// @see https://developer.mozilla.org/docs/Web/CSS/mask-border-repeat /// public Property MaskBorderRepeat @@ -2956,9 +3048,10 @@ public Property MaskBorderRepeat /// The **`mask-border-slice`** CSS property divides the image set by `mask-border-source` into regions. These regions are used to form the components of an element's mask border. /// **Syntax**: `<number-percentage>{1,4} fill?` /// **Initial value**: `0` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :------------------------------------: | :-----: | :--------------------------------------: | :--: | :-: | - /// | **1** _(-webkit-mask-box-image-slice)_ | No | **3.1** _(-webkit-mask-box-image-slice)_ | n/a | No | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :------------------------------------: | :-----: | :----------------------------------: | :--: | :-: | + /// | **1** _(-webkit-mask-box-image-slice)_ | No | **17.2** | n/a | No | + /// | | | 3.1 _(-webkit-mask-box-image-slice)_ | | | /// @see https://developer.mozilla.org/docs/Web/CSS/mask-border-slice /// public Property MaskBorderSlice @@ -2971,9 +3064,10 @@ public Property MaskBorderSlice /// The **`mask-border-source`** CSS property sets the source image used to create an element's mask border. /// **Syntax**: `none | <image>` /// **Initial value**: `none` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :-------------------------------------: | :-----: | :---------------------------------------: | :--: | :-: | - /// | **1** _(-webkit-mask-box-image-source)_ | No | **3.1** _(-webkit-mask-box-image-source)_ | n/a | No | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :-------------------------------------: | :-----: | :-----------------------------------: | :--: | :-: | + /// | **1** _(-webkit-mask-box-image-source)_ | No | **17.2** | n/a | No | + /// | | | 3.1 _(-webkit-mask-box-image-source)_ | | | /// @see https://developer.mozilla.org/docs/Web/CSS/mask-border-source /// public Property MaskBorderSource @@ -2986,9 +3080,10 @@ public Property MaskBorderSource /// The **`mask-border-width`** CSS property sets the width of an element's mask border. /// **Syntax**: `[ <length-percentage> | <number> | auto ]{1,4}` /// **Initial value**: `auto` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :------------------------------------: | :-----: | :--------------------------------------: | :--: | :-: | - /// | **1** _(-webkit-mask-box-image-width)_ | No | **3.1** _(-webkit-mask-box-image-width)_ | n/a | No | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :------------------------------------: | :-----: | :----------------------------------: | :--: | :-: | + /// | **1** _(-webkit-mask-box-image-width)_ | No | **17.2** | n/a | No | + /// | | | 3.1 _(-webkit-mask-box-image-width)_ | | | /// @see https://developer.mozilla.org/docs/Web/CSS/mask-border-width /// public Property MaskBorderWidth @@ -3001,10 +3096,10 @@ public Property MaskBorderWidth /// The **`mask-clip`** CSS property determines the area which is affected by a mask. The painted content of an element must be restricted to this area. /// **Syntax**: `[ <geometry-box> | no-clip ]#` /// **Initial value**: `border-box` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :---------: | :-----: | :------: | :--: | :-: | - /// | **1** _-x-_ | **53** | **15.4** | n/a | No | - /// | | | 4 _-x-_ | | | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :-----: | :-----: | :------: | :--: | :-: | + /// | **120** | **53** | **15.4** | n/a | No | + /// | 1 _-x-_ | | 4 _-x-_ | | | /// @see https://developer.mozilla.org/docs/Web/CSS/mask-clip /// public Property MaskClip @@ -3017,9 +3112,9 @@ public Property MaskClip /// The **`mask-composite`** CSS property represents a compositing operation used on the current mask layer with the mask layers below it. /// **Syntax**: `<compositing-operator>#` /// **Initial value**: `add` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :----: | :-----: | :------: | :---: | :-: | - /// | No | **53** | **15.4** | 18-79 | No | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :-----: | :-----: | :------: | :---: | :-: | + /// | **120** | **53** | **15.4** | 18-79 | No | /// @see https://developer.mozilla.org/docs/Web/CSS/mask-composite /// public Property MaskComposite @@ -3032,10 +3127,10 @@ public Property MaskComposite /// The **`mask-image`** CSS property sets the image that is used as mask layer for an element. By default this means the alpha channel of the mask image will be multiplied with the alpha channel of the element. This can be controlled with the `mask-mode` property. /// **Syntax**: `<mask-reference>#` /// **Initial value**: `none` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :---------: | :-----: | :------: | :---: | :-: | - /// | **1** _-x-_ | **53** | **15.4** | 16-79 | No | - /// | | | 4 _-x-_ | | | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :-----: | :-----: | :------: | :---: | :-: | + /// | **120** | **53** | **15.4** | 16-79 | No | + /// | 1 _-x-_ | | 4 _-x-_ | | | /// @see https://developer.mozilla.org/docs/Web/CSS/mask-image /// public Property MaskImage @@ -3048,9 +3143,9 @@ public Property MaskImage /// The **`mask-mode`** CSS property sets whether the mask reference defined by `mask-image` is treated as a luminance or alpha mask. /// **Syntax**: `<masking-mode>#` /// **Initial value**: `match-source` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :----: | :-----: | :------: | :--: | :-: | - /// | No | **53** | **15.4** | n/a | No | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :-----: | :-----: | :------: | :--: | :-: | + /// | **120** | **53** | **15.4** | n/a | No | /// @see https://developer.mozilla.org/docs/Web/CSS/mask-mode /// public Property MaskMode @@ -3063,10 +3158,10 @@ public Property MaskMode /// The **`mask-origin`** CSS property sets the origin of a mask. /// **Syntax**: `<geometry-box>#` /// **Initial value**: `border-box` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :---------: | :-----: | :------: | :--: | :-: | - /// | **1** _-x-_ | **53** | **15.4** | n/a | No | - /// | | | 4 _-x-_ | | | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :-----: | :-----: | :------: | :--: | :-: | + /// | **120** | **53** | **15.4** | n/a | No | + /// | 1 _-x-_ | | 4 _-x-_ | | | /// @see https://developer.mozilla.org/docs/Web/CSS/mask-origin /// public Property MaskOrigin @@ -3079,10 +3174,10 @@ public Property MaskOrigin /// The **`mask-position`** CSS property sets the initial position, relative to the mask position layer set by `mask-origin`, for each defined mask image. /// **Syntax**: `<position>#` /// **Initial value**: `center` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :---------: | :-----: | :-------: | :---: | :-: | - /// | **1** _-x-_ | **53** | **15.4** | 18-79 | No | - /// | | | 3.1 _-x-_ | | | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :-----: | :-----: | :-------: | :---: | :-: | + /// | **120** | **53** | **15.4** | 18-79 | No | + /// | 1 _-x-_ | | 3.1 _-x-_ | | | /// @see https://developer.mozilla.org/docs/Web/CSS/mask-position /// public Property MaskPosition @@ -3095,10 +3190,10 @@ public Property MaskPosition /// The **`mask-repeat`** CSS property sets how mask images are repeated. A mask image can be repeated along the horizontal axis, the vertical axis, both axes, or not repeated at all. /// **Syntax**: `<repeat-style>#` /// **Initial value**: `repeat` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :---------: | :-----: | :-------: | :---: | :-: | - /// | **1** _-x-_ | **53** | **15.4** | 18-79 | No | - /// | | | 3.1 _-x-_ | | | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :-----: | :-----: | :-------: | :---: | :-: | + /// | **120** | **53** | **15.4** | 18-79 | No | + /// | 1 _-x-_ | | 3.1 _-x-_ | | | /// @see https://developer.mozilla.org/docs/Web/CSS/mask-repeat /// public Property MaskRepeat @@ -3111,10 +3206,10 @@ public Property MaskRepeat /// The **`mask-size`** CSS property specifies the sizes of the mask images. The size of the image can be fully or partially constrained in order to preserve its intrinsic ratio. /// **Syntax**: `<bg-size>#` /// **Initial value**: `auto` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :---------: | :-----: | :------: | :---: | :-: | - /// | **4** _-x-_ | **53** | **15.4** | 18-79 | No | - /// | | | 4 _-x-_ | | | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :-----: | :-----: | :------: | :---: | :-: | + /// | **120** | **53** | **15.4** | 18-79 | No | + /// | 4 _-x-_ | | 4 _-x-_ | | | /// @see https://developer.mozilla.org/docs/Web/CSS/mask-size /// public Property MaskSize @@ -3138,13 +3233,28 @@ public Property MaskType set => _properties["mask-type"] = value; } + /// + /// This feature is not Baseline because it does not work in some of the most widely-used browsers. + /// **Syntax**: `[ pack | next ] || [ definite-first | ordered ]` + /// **Initial value**: `pack` + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :----: | :-----: | :---------: | :--: | :-: | + /// | No | No | **preview** | n/a | No | + /// @see https://developer.mozilla.org/docs/Web/CSS/masonry-auto-flow + /// + public Property MasonryAutoFlow + { + get => (Property) _properties["masonry-auto-flow"]; + set => _properties["masonry-auto-flow"] = value; + } + /// /// The **`math-depth`** property describes a notion of _depth_ for each element of a mathematical formula, with respect to the top-level container of that formula. Concretely, this is used to determine the computed value of the font-size property when its specified value is `math`. /// **Syntax**: `auto-add | add(<integer>) | <integer>` /// **Initial value**: `0` /// | Chrome | Firefox | Safari | Edge | IE | /// | :-----: | :-----: | :----: | :--: | :-: | - /// | **109** | n/a | No | n/a | No | + /// | **109** | **117** | No | n/a | No | /// @see https://developer.mozilla.org/docs/Web/CSS/math-depth /// public Property MathDepth @@ -3174,7 +3284,7 @@ public Property MathShift /// **Initial value**: `normal` /// | Chrome | Firefox | Safari | Edge | IE | /// | :-----: | :-----: | :------: | :--: | :-: | - /// | **109** | n/a | **14.1** | n/a | No | + /// | **109** | **117** | **14.1** | n/a | No | /// @see https://developer.mozilla.org/docs/Web/CSS/math-style /// public Property MathStyle @@ -3333,10 +3443,10 @@ public Property MixBlendMode /// The **`offset-distance`** CSS property specifies a position along an `offset-path` for an element to be placed. /// **Syntax**: `<length-percentage>` /// **Initial value**: `0` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :--------------------: | :-----: | :---------: | :--: | :-: | - /// | **55** | **72** | **preview** | n/a | No | - /// | 46 _(motion-distance)_ | | | | | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :--------------------: | :-----: | :----: | :--: | :-: | + /// | **55** | **72** | **16** | n/a | No | + /// | 46 _(motion-distance)_ | | | | | /// @see https://developer.mozilla.org/docs/Web/CSS/offset-distance /// public Property MotionDistance @@ -3347,7 +3457,7 @@ public Property MotionDistance /// /// The **`offset-path`** CSS property specifies a motion path for an element to follow and defines the element's positioning within the parent container or SVG coordinate system. - /// **Syntax**: `none | ray( [ <angle> && <size> && contain? ] ) | <path()> | <url> | [ <basic-shape> || <geometry-box> ]` + /// **Syntax**: `none | <offset-path> || <coord-box>` /// **Initial value**: `none` /// | Chrome | Firefox | Safari | Edge | IE | /// | :----------------: | :-----: | :------: | :--: | :-: | @@ -3365,10 +3475,10 @@ public Property MotionPath /// The **`offset-rotate`** CSS property defines the orientation/direction of the element as it is positioned along the `offset-path`. /// **Syntax**: `[ auto | reverse ] || <angle>` /// **Initial value**: `auto` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :--------------------: | :-----: | :---------: | :--: | :-: | - /// | **56** | **72** | **preview** | n/a | No | - /// | 46 _(motion-rotation)_ | | | | | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :--------------------: | :-----: | :----: | :--: | :-: | + /// | **56** | **72** | **16** | n/a | No | + /// | 46 _(motion-rotation)_ | | | | | /// @see https://developer.mozilla.org/docs/Web/CSS/offset-rotate /// public Property MotionRotation @@ -3410,9 +3520,9 @@ public Property ObjectPosition /// /// **Syntax**: `auto | <position>` /// **Initial value**: `auto` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :----: | :-----: | :---------: | :--: | :-: | - /// | No | **72** | **preview** | n/a | No | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :-----: | :-----: | :----: | :--: | :-: | + /// | **116** | **72** | **16** | n/a | No | /// @see https://developer.mozilla.org/docs/Web/CSS/offset-anchor /// public Property OffsetAnchor @@ -3425,10 +3535,10 @@ public Property OffsetAnchor /// The **`offset-distance`** CSS property specifies a position along an `offset-path` for an element to be placed. /// **Syntax**: `<length-percentage>` /// **Initial value**: `0` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :--------------------: | :-----: | :---------: | :--: | :-: | - /// | **55** | **72** | **preview** | n/a | No | - /// | 46 _(motion-distance)_ | | | | | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :--------------------: | :-----: | :----: | :--: | :-: | + /// | **55** | **72** | **16** | n/a | No | + /// | 46 _(motion-distance)_ | | | | | /// @see https://developer.mozilla.org/docs/Web/CSS/offset-distance /// public Property OffsetDistance @@ -3439,7 +3549,7 @@ public Property OffsetDistance /// /// The **`offset-path`** CSS property specifies a motion path for an element to follow and defines the element's positioning within the parent container or SVG coordinate system. - /// **Syntax**: `none | ray( [ <angle> && <size> && contain? ] ) | <path()> | <url> | [ <basic-shape> || <geometry-box> ]` + /// **Syntax**: `none | <offset-path> || <coord-box>` /// **Initial value**: `none` /// | Chrome | Firefox | Safari | Edge | IE | /// | :----------------: | :-----: | :------: | :--: | :-: | @@ -3454,11 +3564,11 @@ public Property OffsetPath } /// - /// **Syntax**: `auto | <position>` + /// **Syntax**: `normal | auto | <position>` /// **Initial value**: `auto` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :----: | :-----: | :---------: | :--: | :-: | - /// | No | No | **preview** | n/a | No | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :-----: | :-----: | :----: | :--: | :-: | + /// | **116** | n/a | **16** | n/a | No | /// @see https://developer.mozilla.org/docs/Web/CSS/offset-position /// public Property OffsetPosition @@ -3471,10 +3581,10 @@ public Property OffsetPosition /// The **`offset-rotate`** CSS property defines the orientation/direction of the element as it is positioned along the `offset-path`. /// **Syntax**: `[ auto | reverse ] || <angle>` /// **Initial value**: `auto` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :--------------------: | :-----: | :---------: | :--: | :-: | - /// | **56** | **72** | **preview** | n/a | No | - /// | 46 _(motion-rotation)_ | | | | | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :--------------------: | :-----: | :----: | :--: | :-: | + /// | **56** | **72** | **16** | n/a | No | + /// | 46 _(motion-rotation)_ | | | | | /// @see https://developer.mozilla.org/docs/Web/CSS/offset-rotate /// public Property OffsetRotate @@ -3487,10 +3597,10 @@ public Property OffsetRotate /// The **`offset-rotate`** CSS property defines the orientation/direction of the element as it is positioned along the `offset-path`. /// **Syntax**: `[ auto | reverse ] || <angle>` /// **Initial value**: `auto` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :--------------------: | :-----: | :---------: | :--: | :-: | - /// | **56** | **72** | **preview** | n/a | No | - /// | 46 _(motion-rotation)_ | | | | | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :--------------------: | :-----: | :----: | :--: | :-: | + /// | **56** | **72** | **16** | n/a | No | + /// | 46 _(motion-rotation)_ | | | | | /// @see https://developer.mozilla.org/docs/Web/CSS/offset-rotate /// public Property OffsetRotation @@ -3637,10 +3747,6 @@ public Property OverflowBlock /// The **`overflow-clip-box`** CSS property specifies relative to which box the clipping happens when there is an overflow. It is short hand for the `overflow-clip-box-inline` and `overflow-clip-box-block` properties. /// **Syntax**: `padding-box | content-box` /// **Initial value**: `padding-box` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :----: | :-----: | :----: | :--: | :-: | - /// | No | **29** | No | n/a | No | - /// @see https://developer.mozilla.org/docs/Mozilla/Gecko/Chrome/CSS/overflow-clip-box /// public Property OverflowClipBox { @@ -3722,6 +3828,21 @@ public Property OverflowY set => _properties["overflow-y"] = value; } + /// + /// The **`overlay`** CSS property specifies whether an element appearing in the top layer (for example, a shown popover or modal `<dialog>` element) is actually rendered in the top layer. This property is only relevant within a list of `transition-property` values, and only if `allow-discrete` is set as the `transition-behavior`. + /// **Syntax**: `none | auto` + /// **Initial value**: `none` + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :-----: | :-----: | :----: | :--: | :-: | + /// | **117** | No | No | n/a | No | + /// @see https://developer.mozilla.org/docs/Web/CSS/overlay + /// + public Property Overlay + { + get => (Property) _properties["overlay"]; + set => _properties["overlay"] = value; + } + /// /// The **`overscroll-behavior-block`** CSS property sets the browser's behavior when the block direction boundary of a scrolling area is reached. /// **Syntax**: `contain | none | auto` @@ -3788,7 +3909,7 @@ public Property OverscrollBehaviorY /// **Initial value**: `0` /// | Chrome | Firefox | Safari | Edge | IE | /// | :----: | :-----: | :------: | :--: | :-: | - /// | **87** | **41** | **12.1** | n/a | No | + /// | **69** | **41** | **12.1** | n/a | No | /// @see https://developer.mozilla.org/docs/Web/CSS/padding-block-end /// public Property PaddingBlockEnd @@ -3803,7 +3924,7 @@ public Property PaddingBlockEnd /// **Initial value**: `0` /// | Chrome | Firefox | Safari | Edge | IE | /// | :----: | :-----: | :------: | :--: | :-: | - /// | **87** | **41** | **12.1** | n/a | No | + /// | **69** | **41** | **12.1** | n/a | No | /// @see https://developer.mozilla.org/docs/Web/CSS/padding-block-start /// public Property PaddingBlockStart @@ -3833,7 +3954,7 @@ public Property PaddingBottom /// **Initial value**: `0` /// | Chrome | Firefox | Safari | Edge | IE | /// | :-----------------------: | :--------------------: | :-----------------------: | :--: | :-: | - /// | **87** | **41** | **12.1** | n/a | No | + /// | **69** | **41** | **12.1** | n/a | No | /// | 2 _(-webkit-padding-end)_ | 3 _(-moz-padding-end)_ | 3 _(-webkit-padding-end)_ | | | /// @see https://developer.mozilla.org/docs/Web/CSS/padding-inline-end /// @@ -3849,7 +3970,7 @@ public Property PaddingInlineEnd /// **Initial value**: `0` /// | Chrome | Firefox | Safari | Edge | IE | /// | :-------------------------: | :----------------------: | :-------------------------: | :--: | :-: | - /// | **87** | **41** | **12.1** | n/a | No | + /// | **69** | **41** | **12.1** | n/a | No | /// | 2 _(-webkit-padding-start)_ | 3 _(-moz-padding-start)_ | 3 _(-webkit-padding-start)_ | | | /// @see https://developer.mozilla.org/docs/Web/CSS/padding-inline-start /// @@ -3908,9 +4029,9 @@ public Property PaddingTop /// The **`page`** CSS property is used to specify the named page, a specific type of page defined by the `@page` at-rule. /// **Syntax**: `auto | <custom-ident>` /// **Initial value**: `auto` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :----: | :-----: | :---------: | :--: | :-: | - /// | **85** | **110** | **preview** | n/a | No | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :----: | :-----: | :-------: | :--: | :-: | + /// | **85** | **110** | **≤13.1** | n/a | No | /// @see https://developer.mozilla.org/docs/Web/CSS/page /// public Property Page @@ -3983,10 +4104,10 @@ public Property PaintOrder /// The **`perspective`** CSS property determines the distance between the z=0 plane and the user in order to give a 3D-positioned element some perspective. /// **Syntax**: `none | <length>` /// **Initial value**: `none` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :------: | :------: | :-----: | :----: | :----: | - /// | **36** | **16** | **9** | **12** | **10** | - /// | 12 _-x-_ | 10 _-x-_ | 4 _-x-_ | | | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :------: | :-----: | :-----: | :----: | :----: | + /// | **36** | **16** | **9** | **12** | **10** | + /// | 12 _-x-_ | | 4 _-x-_ | | | /// @see https://developer.mozilla.org/docs/Web/CSS/perspective /// public Property Perspective @@ -3999,10 +4120,10 @@ public Property Perspective /// The **`perspective-origin`** CSS property determines the position at which the viewer is looking. It is used as the _vanishing point_ by the `perspective` property. /// **Syntax**: `<position>` /// **Initial value**: `50% 50%` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :------: | :------: | :-----: | :----: | :----: | - /// | **36** | **16** | **9** | **12** | **10** | - /// | 12 _-x-_ | 10 _-x-_ | 4 _-x-_ | | | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :------: | :-----: | :-----: | :----: | :----: | + /// | **36** | **16** | **9** | **12** | **10** | + /// | 12 _-x-_ | | 4 _-x-_ | | | /// @see https://developer.mozilla.org/docs/Web/CSS/perspective-origin /// public Property PerspectiveOrigin @@ -4207,9 +4328,9 @@ public Property ScrollBehavior /// The `scroll-margin-block-end` property defines the margin of the scroll snap area at the end of the block dimension that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets. /// **Syntax**: `<length>` /// **Initial value**: `0` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :----: | :-----: | :------: | :--: | :-: | - /// | **69** | **68** | **14.1** | n/a | No | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :----: | :-----: | :----: | :--: | :-: | + /// | **69** | **68** | **15** | n/a | No | /// @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin-block-end /// public Property ScrollMarginBlockEnd @@ -4222,9 +4343,9 @@ public Property ScrollMarginBlockEnd /// The `scroll-margin-block-start` property defines the margin of the scroll snap area at the start of the block dimension that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets. /// **Syntax**: `<length>` /// **Initial value**: `0` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :----: | :-----: | :------: | :--: | :-: | - /// | **69** | **68** | **14.1** | n/a | No | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :----: | :-----: | :----: | :--: | :-: | + /// | **69** | **68** | **15** | n/a | No | /// @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin-block-start /// public Property ScrollMarginBlockStart @@ -4253,9 +4374,9 @@ public Property ScrollMarginBottom /// The `scroll-margin-inline-end` property defines the margin of the scroll snap area at the end of the inline dimension that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets. /// **Syntax**: `<length>` /// **Initial value**: `0` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :----: | :-----: | :------: | :--: | :-: | - /// | **69** | **68** | **14.1** | n/a | No | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :----: | :-----: | :----: | :--: | :-: | + /// | **69** | **68** | **15** | n/a | No | /// @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin-inline-end /// public Property ScrollMarginInlineEnd @@ -4268,9 +4389,9 @@ public Property ScrollMarginInlineEnd /// The `scroll-margin-inline-start` property defines the margin of the scroll snap area at the start of the inline dimension that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets. /// **Syntax**: `<length>` /// **Initial value**: `0` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :----: | :-----: | :------: | :--: | :-: | - /// | **69** | **68** | **14.1** | n/a | No | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :----: | :-----: | :----: | :--: | :-: | + /// | **69** | **68** | **15** | n/a | No | /// @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin-inline-start /// public Property ScrollMarginInlineStart @@ -4559,11 +4680,11 @@ public Property ScrollSnapType /// /// The **`scroll-timeline-axis`** CSS property can be used to specify the scrollbar that will be used to provide the timeline for a scroll-timeline animation. - /// **Syntax**: `[ block | inline | vertical | horizontal ]#` + /// **Syntax**: `[ block | inline | x | y ]#` /// **Initial value**: `block` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :----: | :-----: | :----: | :--: | :-: | - /// | No | n/a | No | n/a | No | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :-----: | :-----: | :----: | :--: | :-: | + /// | **115** | n/a | No | n/a | No | /// @see https://developer.mozilla.org/docs/Web/CSS/scroll-timeline-axis /// public Property ScrollTimelineAxis @@ -4574,11 +4695,11 @@ public Property ScrollTimelineAxis /// /// The **`scroll-timeline-name`** CSS property defines a name that can be used to identify an element as the source of a scroll timeline for an animation. - /// **Syntax**: `none | <custom-ident>#` + /// **Syntax**: `none | <dashed-ident>#` /// **Initial value**: `none` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :----: | :-----: | :----: | :--: | :-: | - /// | No | n/a | No | n/a | No | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :-----: | :-----: | :----: | :--: | :-: | + /// | **115** | n/a | No | n/a | No | /// @see https://developer.mozilla.org/docs/Web/CSS/scroll-timeline-name /// public Property ScrollTimelineName @@ -4591,9 +4712,9 @@ public Property ScrollTimelineName /// The **`scrollbar-color`** CSS property sets the color of the scrollbar track and thumb. /// **Syntax**: `auto | <color>{2}` /// **Initial value**: `auto` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :----: | :-----: | :----: | :--: | :-: | - /// | No | **64** | No | n/a | No | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :-----: | :-----: | :----: | :--: | :-: | + /// | **121** | **64** | No | n/a | No | /// @see https://developer.mozilla.org/docs/Web/CSS/scrollbar-color /// public Property ScrollbarColor @@ -4621,9 +4742,9 @@ public Property ScrollbarGutter /// The **`scrollbar-width`** property allows the author to set the maximum thickness of an element's scrollbars when they are shown. /// **Syntax**: `auto | thin | none` /// **Initial value**: `auto` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :----: | :-----: | :----: | :--: | :-: | - /// | No | **64** | No | n/a | No | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :-----: | :-----: | :----: | :--: | :-: | + /// | **121** | **64** | No | n/a | No | /// @see https://developer.mozilla.org/docs/Web/CSS/scrollbar-width /// public Property ScrollbarWidth @@ -4742,10 +4863,10 @@ public Property TextAlignLast /// The **`text-combine-upright`** CSS property sets the combination of characters into the space of a single character. If the combined text is wider than 1em, the user agent must fit the contents within 1em. The resulting composition is treated as a single upright glyph for layout and decoration. This property only has an effect in vertical writing modes. /// **Syntax**: `none | all | [ digits <integer>? ]` /// **Initial value**: `none` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :------------------------: | :-----: | :--------------------------: | :---: | :------------------------------------: | - /// | **48** | **48** | **preview** | 15-79 | **11** _(-ms-text-combine-horizontal)_ | - /// | 9 _(-webkit-text-combine)_ | | 5.1 _(-webkit-text-combine)_ | | | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :------------------------: | :-----: | :--------------------------: | :----: | :------------------------------------: | + /// | **48** | **48** | **15.4** | **79** | **11** _(-ms-text-combine-horizontal)_ | + /// | 9 _(-webkit-text-combine)_ | | 5.1 _(-webkit-text-combine)_ | | | /// @see https://developer.mozilla.org/docs/Web/CSS/text-combine-upright /// public Property TextCombineUpright @@ -4915,9 +5036,9 @@ public Property TextIndent /// The **`text-justify`** CSS property sets what type of justification should be applied to text when `text-align``: justify;` is set on an element. /// **Syntax**: `auto | inter-character | inter-word | none` /// **Initial value**: `auto` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :----: | :-----: | :----: | :----: | :----: | - /// | n/a | **55** | No | **12** | **11** | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :----: | :-----: | :----: | :---: | :----: | + /// | n/a | **55** | No | 12-79 | **11** | /// @see https://developer.mozilla.org/docs/Web/CSS/text-justify /// public Property TextJustify @@ -5048,6 +5169,36 @@ public Property TextUnderlinePosition set => _properties["text-underline-position"] = value; } + /// + /// The **`text-wrap`** CSS property controls how text inside an element is wrapped. The different values provide: + /// **Syntax**: `wrap | nowrap | balance | stable | pretty` + /// **Initial value**: `wrap` + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :-----: | :-----: | :----: | :--: | :-: | + /// | **114** | **121** | No | n/a | No | + /// @see https://developer.mozilla.org/docs/Web/CSS/text-wrap + /// + public Property TextWrap + { + get => (Property) _properties["text-wrap"]; + set => _properties["text-wrap"] = value; + } + + /// + /// The **`timeline-scope`** CSS property modifies the scope of a named animation timeline. + /// **Syntax**: `none | <dashed-ident>#` + /// **Initial value**: `none` + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :-----: | :-----: | :----: | :--: | :-: | + /// | **116** | No | No | n/a | No | + /// @see https://developer.mozilla.org/docs/Web/CSS/timeline-scope + /// + public Property TimelineScope + { + get => (Property) _properties["timeline-scope"]; + set => _properties["timeline-scope"] = value; + } + /// /// The **`top`** CSS property participates in specifying the vertical position of a positioned element. It has no effect on non-positioned elements. /// **Syntax**: `<length> | <percentage> | auto` @@ -5114,10 +5265,10 @@ public Property TransformBox /// The **`transform-origin`** CSS property sets the origin for an element's transformations. /// **Syntax**: `[ <length-percentage> | left | center | right | top | bottom ] | [ [ <length-percentage> | left | center | right ] && [ <length-percentage> | top | center | bottom ] ] <length>?` /// **Initial value**: `50% 50% 0` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :-----: | :-------: | :-----: | :----: | :-----: | - /// | **36** | **16** | **9** | **12** | **10** | - /// | 1 _-x-_ | 3.5 _-x-_ | 2 _-x-_ | | 9 _-x-_ | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :-----: | :-----: | :-----: | :----: | :-----: | + /// | **36** | **16** | **9** | **12** | **10** | + /// | 1 _-x-_ | | 2 _-x-_ | | 9 _-x-_ | /// @see https://developer.mozilla.org/docs/Web/CSS/transform-origin /// public Property TransformOrigin @@ -5130,10 +5281,10 @@ public Property TransformOrigin /// The **`transform-style`** CSS property sets whether children of an element are positioned in the 3D space or are flattened in the plane of the element. /// **Syntax**: `flat | preserve-3d` /// **Initial value**: `flat` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :------: | :------: | :-----: | :----: | :-: | - /// | **36** | **16** | **9** | **12** | No | - /// | 12 _-x-_ | 10 _-x-_ | 4 _-x-_ | | | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :------: | :-----: | :-----: | :----: | :-: | + /// | **36** | **16** | **9** | **12** | No | + /// | 12 _-x-_ | | 4 _-x-_ | | | /// @see https://developer.mozilla.org/docs/Web/CSS/transform-style /// public Property TransformStyle @@ -5142,6 +5293,21 @@ public Property TransformStyle set => _properties["transform-style"] = value; } + /// + /// The **`transition-behavior`** CSS property specifies whether transitions will be started for properties whose animation behavior is discrete. + /// **Syntax**: `<transition-behavior-value>#` + /// **Initial value**: `normal` + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :-----: | :-----: | :----: | :--: | :-: | + /// | **117** | No | No | n/a | No | + /// @see https://developer.mozilla.org/docs/Web/CSS/transition-behavior + /// + public Property TransitionBehavior + { + get => (Property) _properties["transition-behavior"]; + set => _properties["transition-behavior"] = value; + } + /// /// The **`transition-delay`** CSS property specifies the duration to wait before starting a property's transition effect when its value changes. /// **Syntax**: `<time>#` @@ -5149,7 +5315,7 @@ public Property TransformStyle /// | Chrome | Firefox | Safari | Edge | IE | /// | :-----: | :-----: | :-----: | :----: | :----: | /// | **26** | **16** | **9** | **12** | **10** | - /// | 1 _-x-_ | 4 _-x-_ | 4 _-x-_ | | | + /// | 1 _-x-_ | | 4 _-x-_ | | | /// @see https://developer.mozilla.org/docs/Web/CSS/transition-delay /// public Property TransitionDelay @@ -5165,7 +5331,7 @@ public Property TransitionDelay /// | Chrome | Firefox | Safari | Edge | IE | /// | :-----: | :-----: | :-------: | :----: | :----: | /// | **26** | **16** | **9** | **12** | **10** | - /// | 1 _-x-_ | 4 _-x-_ | 3.1 _-x-_ | | | + /// | 1 _-x-_ | | 3.1 _-x-_ | | | /// @see https://developer.mozilla.org/docs/Web/CSS/transition-duration /// public Property TransitionDuration @@ -5181,7 +5347,7 @@ public Property TransitionDuration /// | Chrome | Firefox | Safari | Edge | IE | /// | :-----: | :-----: | :-------: | :----: | :----: | /// | **26** | **16** | **9** | **12** | **10** | - /// | 1 _-x-_ | 4 _-x-_ | 3.1 _-x-_ | | | + /// | 1 _-x-_ | | 3.1 _-x-_ | | | /// @see https://developer.mozilla.org/docs/Web/CSS/transition-property /// public Property TransitionProperty @@ -5197,7 +5363,7 @@ public Property TransitionProperty /// | Chrome | Firefox | Safari | Edge | IE | /// | :-----: | :-----: | :-------: | :----: | :----: | /// | **26** | **16** | **9** | **12** | **10** | - /// | 1 _-x-_ | 4 _-x-_ | 3.1 _-x-_ | | | + /// | 1 _-x-_ | | 3.1 _-x-_ | | | /// @see https://developer.mozilla.org/docs/Web/CSS/transition-timing-function /// public Property TransitionTimingFunction @@ -5267,6 +5433,51 @@ public Property VerticalAlign set => _properties["vertical-align"] = value; } + /// + /// The **`view-timeline-axis`** CSS property is used to specify the scrollbar direction that will be used to provide the timeline for a _named view progress timeline_ animation, which is progressed through based on the change in visibility of an element (known as the _subject_) inside a scrollable element (_scroller_). `view-timeline-axis` is set on the subject. See CSS scroll-driven animations for more details. + /// **Syntax**: `[ block | inline | x | y ]#` + /// **Initial value**: `block` + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :-----: | :-----: | :----: | :--: | :-: | + /// | **115** | n/a | No | n/a | No | + /// @see https://developer.mozilla.org/docs/Web/CSS/view-timeline-axis + /// + public Property ViewTimelineAxis + { + get => (Property) _properties["view-timeline-axis"]; + set => _properties["view-timeline-axis"] = value; + } + + /// + /// The **`view-timeline-inset`** CSS property is used to specify one or two values representing an adjustment to the position of the scrollport (see Scroll container for more details) in which the subject element of a _named view progress timeline_ animation is deemed to be visible. Put another way, this allows you to specify start and/or end inset (or outset) values that offset the position of the timeline. + /// **Syntax**: `[ [ auto | <length-percentage> ]{1,2} ]#` + /// **Initial value**: `auto` + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :-----: | :-----: | :----: | :--: | :-: | + /// | **115** | No | No | n/a | No | + /// @see https://developer.mozilla.org/docs/Web/CSS/view-timeline-inset + /// + public Property ViewTimelineInset + { + get => (Property) _properties["view-timeline-inset"]; + set => _properties["view-timeline-inset"] = value; + } + + /// + /// The **`view-timeline-name`** CSS property is used to define the name of a _named view progress timeline_, which is progressed through based on the change in visibility of an element (known as the _subject_) inside a scrollable element (_scroller_). `view-timeline` is set on the subject. + /// **Syntax**: `none | <dashed-ident>#` + /// **Initial value**: `none` + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :-----: | :-----: | :----: | :--: | :-: | + /// | **115** | n/a | No | n/a | No | + /// @see https://developer.mozilla.org/docs/Web/CSS/view-timeline-name + /// + public Property ViewTimelineName + { + get => (Property) _properties["view-timeline-name"]; + set => _properties["view-timeline-name"] = value; + } + /// /// The **`view-transition-name`** CSS property provides the selected element with a distinct identifying name (a `<custom-ident>`) and causes it to participate in a separate view transition from the root view transition — or no view transition if the `none` value is specified. /// **Syntax**: `none | <custom-ident>` @@ -5299,7 +5510,7 @@ public Property Visibility /// /// The **`white-space`** CSS property sets how white space inside an element is handled. - /// **Syntax**: `normal | pre | nowrap | pre-wrap | pre-line | break-spaces` + /// **Syntax**: `normal | pre | nowrap | pre-wrap | pre-line | break-spaces | [ <'white-space-collapse'> || <'text-wrap'> || <'white-space-trim'> ]` /// **Initial value**: `normal` /// | Chrome | Firefox | Safari | Edge | IE | /// | :----: | :-----: | :----: | :----: | :-----: | @@ -5312,6 +5523,31 @@ public Property WhiteSpace set => _properties["white-space"] = value; } + /// + /// The **`white-space-collapse`** CSS property controls how white space inside an element is collapsed. + /// **Syntax**: `collapse | discard | preserve | preserve-breaks | preserve-spaces | break-spaces` + /// **Initial value**: `collapse` + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :-----: | :-----: | :----: | :--: | :-: | + /// | **114** | No | No | n/a | No | + /// @see https://developer.mozilla.org/docs/Web/CSS/white-space-collapse + /// + public Property WhiteSpaceCollapse + { + get => (Property) _properties["white-space-collapse"]; + set => _properties["white-space-collapse"] = value; + } + + /// + /// **Syntax**: `none | discard-before || discard-after || discard-inner` + /// **Initial value**: `none` + /// + public Property WhiteSpaceTrim + { + get => (Property) _properties["white-space-trim"]; + set => _properties["white-space-trim"] = value; + } + /// /// The **`widows`** CSS property sets the minimum number of lines in a block container that must be shown at the _top_ of a page, region, or column. /// **Syntax**: `<integer>` @@ -5391,6 +5627,9 @@ public Property WordSpacing /// The **`overflow-wrap`** CSS property applies to inline elements, setting whether the browser should insert line breaks within an otherwise unbreakable string to prevent text from overflowing its line box. /// **Syntax**: `normal | break-word` /// **Initial value**: `normal` + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :-----: | :-----: | :-------: | :-----: | :-: | + /// | **≤80** | **≤72** | **≤13.1** | **≤80** | No | /// public Property WordWrap { @@ -5435,7 +5674,7 @@ public Property ZIndex /// **Initial value**: `normal` /// | Chrome | Firefox | Safari | Edge | IE | /// | :----: | :-----: | :-----: | :----: | :-----: | - /// | **1** | No | **3.1** | **12** | **5.5** | + /// | **1** | n/a | **3.1** | **12** | **5.5** | /// @see https://developer.mozilla.org/docs/Web/CSS/zoom /// public Property Zoom diff --git a/src/Css/CSSObject.StandardShorthand.cs b/src/Css/CSSObject.StandardShorthand.cs index 132cd54..657adaf 100644 --- a/src/Css/CSSObject.StandardShorthand.cs +++ b/src/Css/CSSObject.StandardShorthand.cs @@ -32,6 +32,20 @@ public Property Animation set => _properties["animation"] = value; } + /// + /// The **`animation-range`** CSS shorthand property is used to set the start and end of an animation's attachment range along its timeline, i.e. where along the timeline an animation will start and end. + /// **Syntax**: `[ <'animation-range-start'> <'animation-range-end'>? ]#` + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :-----: | :-----: | :----: | :--: | :-: | + /// | **115** | No | No | n/a | No | + /// @see https://developer.mozilla.org/docs/Web/CSS/animation-range + /// + public Property AnimationRange + { + get => (Property) _properties["animation-range"]; + set => _properties["animation-range"] = value; + } + /// /// The **`background`** shorthand CSS property sets all background style properties at once, such as color, image, origin and size, or repeat method. /// **Syntax**: `[ <bg-layer> , ]* <final-bg-layer>` @@ -327,10 +341,10 @@ public Property Columns /// /// The **`contain-intrinsic-size`** CSS shorthand property sets the size of an element that a browser will use for layout when the element is subject to size containment. - /// **Syntax**: `[ none | <length> | auto <length> ]{1,2}` + /// **Syntax**: `[ auto? [ none | <length> ] ]{1,2}` /// | Chrome | Firefox | Safari | Edge | IE | /// | :----: | :-----: | :----: | :--: | :-: | - /// | **83** | **107** | No | n/a | No | + /// | **83** | **107** | **17** | n/a | No | /// @see https://developer.mozilla.org/docs/Web/CSS/contain-intrinsic-size /// public Property ContainIntrinsicSize @@ -592,9 +606,10 @@ public Property MarginInline /// /// The **`mask`** CSS shorthand property hides an element (partially or fully) by masking or clipping the image at specific points. /// **Syntax**: `<mask-layer>#` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :----: | :-----: | :-----: | :---: | :-: | - /// | **1** | **2** | **3.1** | 12-79 | No | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :----: | :-----: | :-------: | :---: | :-: | + /// | **1** | **53** | **15.4** | 12-79 | No | + /// | | | 3.1 _-x-_ | | | /// @see https://developer.mozilla.org/docs/Web/CSS/mask /// public Property Mask @@ -606,9 +621,10 @@ public Property Mask /// /// The **`mask-border`** CSS shorthand property lets you create a mask along the edge of an element's border. /// **Syntax**: `<'mask-border-source'> || <'mask-border-slice'> [ / <'mask-border-width'>? [ / <'mask-border-outset'> ]? ]? || <'mask-border-repeat'> || <'mask-border-mode'>` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :------------------------------: | :-----: | :--------------------------------: | :--: | :-: | - /// | **1** _(-webkit-mask-box-image)_ | No | **3.1** _(-webkit-mask-box-image)_ | n/a | No | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :------------------------------: | :-----: | :----------------------------: | :--: | :-: | + /// | **1** _(-webkit-mask-box-image)_ | No | **17.2** | n/a | No | + /// | | | 3.1 _(-webkit-mask-box-image)_ | | | /// @see https://developer.mozilla.org/docs/Web/CSS/mask-border /// public Property MaskBorder @@ -650,9 +666,9 @@ public Property Offset /// /// The **`outline`** CSS shorthand property sets most of the outline properties in a single declaration. /// **Syntax**: `[ <'outline-color'> || <'outline-style'> || <'outline-width'> ]` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :----: | :-----: | :-----: | :----: | :---: | - /// | **94** | **88** | **1.2** | **94** | **8** | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :----: | :-----: | :------: | :----: | :---: | + /// | **94** | **88** | **16.4** | **94** | **8** | /// @see https://developer.mozilla.org/docs/Web/CSS/outline /// public Property Outline @@ -793,9 +809,9 @@ public Property ScrollMargin /// /// The `scroll-margin-block` shorthand property sets the scroll margins of an element in the block dimension. /// **Syntax**: `<length>{1,2}` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :----: | :-----: | :------: | :--: | :-: | - /// | **69** | **68** | **14.1** | n/a | No | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :----: | :-----: | :----: | :--: | :-: | + /// | **69** | **68** | **15** | n/a | No | /// @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin-block /// public Property ScrollMarginBlock @@ -807,9 +823,9 @@ public Property ScrollMarginBlock /// /// The `scroll-margin-inline` shorthand property sets the scroll margins of an element in the inline dimension. /// **Syntax**: `<length>{1,2}` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :----: | :-----: | :------: | :--: | :-: | - /// | **69** | **68** | **14.1** | n/a | No | + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :----: | :-----: | :----: | :--: | :-: | + /// | **69** | **68** | **15** | n/a | No | /// @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin-inline /// public Property ScrollMarginInline @@ -877,10 +893,10 @@ public Property ScrollSnapMargin /// /// The **`scroll-timeline`** CSS shorthand property defines a name that can be used to identify the source element of a scroll timeline, along with the scrollbar axis that should provide the timeline. - /// **Syntax**: `[<'scroll-timeline-name'> <'scroll-timeline-axis'>?]#` - /// | Chrome | Firefox | Safari | Edge | IE | - /// | :----: | :-----: | :----: | :--: | :-: | - /// | No | n/a | No | n/a | No | + /// **Syntax**: `[ <'scroll-timeline-name'> <'scroll-timeline-axis'>? ]#` + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :-----: | :-----: | :----: | :--: | :-: | + /// | **115** | n/a | No | n/a | No | /// @see https://developer.mozilla.org/docs/Web/CSS/scroll-timeline /// public Property ScrollTimeline @@ -924,7 +940,7 @@ public Property TextEmphasis /// | Chrome | Firefox | Safari | Edge | IE | /// | :-----: | :-----: | :-------: | :----: | :----: | /// | **26** | **16** | **9** | **12** | **10** | - /// | 1 _-x-_ | 4 _-x-_ | 3.1 _-x-_ | | | + /// | 1 _-x-_ | | 3.1 _-x-_ | | | /// @see https://developer.mozilla.org/docs/Web/CSS/transition /// public Property Transition @@ -933,5 +949,19 @@ public Property Transition set => _properties["transition"] = value; } + /// + /// The **`view-timeline`** CSS shorthand property is used to define a _named view progress timeline_, which is progressed through based on the change in visibility of an element (known as the _subject_) inside a scrollable element (_scroller_). `view-timeline` is set on the subject. + /// **Syntax**: `[ <'view-timeline-name'> <'view-timeline-axis'>? ]#` + /// | Chrome | Firefox | Safari | Edge | IE | + /// | :-----: | :-----: | :----: | :--: | :-: | + /// | **115** | n/a | No | n/a | No | + /// @see https://developer.mozilla.org/docs/Web/CSS/view-timeline + /// + public Property ViewTimeline + { + get => (Property) _properties["view-timeline"]; + set => _properties["view-timeline"] = value; + } + } } diff --git a/src/Css/CSSObject.VendorLonghand.cs b/src/Css/CSSObject.VendorLonghand.cs index d7502c4..9454e9a 100644 --- a/src/Css/CSSObject.VendorLonghand.cs +++ b/src/Css/CSSObject.VendorLonghand.cs @@ -101,17 +101,6 @@ public Property MozAppearance set => _properties["-moz-appearance"] = value; } - /// - /// The **`backface-visibility`** CSS property sets whether the back face of an element is visible when turned towards the user. - /// **Syntax**: `visible | hidden` - /// **Initial value**: `visible` - /// - public Property MozBackfaceVisibility - { - get => (Property) _properties["-moz-backface-visibility"]; - set => _properties["-moz-backface-visibility"] = value; - } - /// /// The **`-moz-binding`** CSS property is used by Mozilla-based applications to attach an XBL binding to a DOM element. /// **Syntax**: `<url> | none` @@ -399,47 +388,69 @@ public Property MozOsxFontSmoothing } /// - /// The **`padding-inline-end`** CSS property defines the logical inline end padding of an element, which maps to a physical padding depending on the element's writing mode, directionality, and text orientation. - /// **Syntax**: `<'padding-left'>` + /// In Mozilla applications, the **`-moz-outline-radius-bottomleft`** CSS property can be used to round the bottom-left corner of an element's `outline`. + /// **Syntax**: `<outline-radius>` /// **Initial value**: `0` /// - public Property MozPaddingEnd + public Property MozOutlineRadiusBottomleft { - get => (Property) _properties["-moz-padding-end"]; - set => _properties["-moz-padding-end"] = value; + get => (Property) _properties["-moz-outline-radius-bottomleft"]; + set => _properties["-moz-outline-radius-bottomleft"] = value; } /// - /// The **`padding-inline-start`** CSS property defines the logical inline start padding of an element, which maps to a physical padding depending on the element's writing mode, directionality, and text orientation. - /// **Syntax**: `<'padding-left'>` + /// In Mozilla applications, the **`-moz-outline-radius-bottomright`** CSS property can be used to round the bottom-right corner of an element's `outline`. + /// **Syntax**: `<outline-radius>` /// **Initial value**: `0` /// - public Property MozPaddingStart + public Property MozOutlineRadiusBottomright { - get => (Property) _properties["-moz-padding-start"]; - set => _properties["-moz-padding-start"] = value; + get => (Property) _properties["-moz-outline-radius-bottomright"]; + set => _properties["-moz-outline-radius-bottomright"] = value; } /// - /// The **`perspective`** CSS property determines the distance between the z=0 plane and the user in order to give a 3D-positioned element some perspective. - /// **Syntax**: `none | <length>` - /// **Initial value**: `none` + /// In Mozilla applications, the **`-moz-outline-radius-topleft`** CSS property can be used to round the top-left corner of an element's `outline`. + /// **Syntax**: `<outline-radius>` + /// **Initial value**: `0` /// - public Property MozPerspective + public Property MozOutlineRadiusTopleft { - get => (Property) _properties["-moz-perspective"]; - set => _properties["-moz-perspective"] = value; + get => (Property) _properties["-moz-outline-radius-topleft"]; + set => _properties["-moz-outline-radius-topleft"] = value; } /// - /// The **`perspective-origin`** CSS property determines the position at which the viewer is looking. It is used as the _vanishing point_ by the `perspective` property. - /// **Syntax**: `<position>` - /// **Initial value**: `50% 50%` + /// In Mozilla applications, the **`-moz-outline-radius-topright`** CSS property can be used to round the top-right corner of an element's `outline`. + /// **Syntax**: `<outline-radius>` + /// **Initial value**: `0` + /// + public Property MozOutlineRadiusTopright + { + get => (Property) _properties["-moz-outline-radius-topright"]; + set => _properties["-moz-outline-radius-topright"] = value; + } + + /// + /// The **`padding-inline-end`** CSS property defines the logical inline end padding of an element, which maps to a physical padding depending on the element's writing mode, directionality, and text orientation. + /// **Syntax**: `<'padding-left'>` + /// **Initial value**: `0` + /// + public Property MozPaddingEnd + { + get => (Property) _properties["-moz-padding-end"]; + set => _properties["-moz-padding-end"] = value; + } + + /// + /// The **`padding-inline-start`** CSS property defines the logical inline start padding of an element, which maps to a physical padding depending on the element's writing mode, directionality, and text orientation. + /// **Syntax**: `<'padding-left'>` + /// **Initial value**: `0` /// - public Property MozPerspectiveOrigin + public Property MozPaddingStart { - get => (Property) _properties["-moz-perspective-origin"]; - set => _properties["-moz-perspective-origin"] = value; + get => (Property) _properties["-moz-padding-start"]; + set => _properties["-moz-padding-start"] = value; } /// @@ -486,72 +497,6 @@ public Property MozTextSizeAdjust set => _properties["-moz-text-size-adjust"] = value; } - /// - /// The **`transform-origin`** CSS property sets the origin for an element's transformations. - /// **Syntax**: `[ <length-percentage> | left | center | right | top | bottom ] | [ [ <length-percentage> | left | center | right ] && [ <length-percentage> | top | center | bottom ] ] <length>?` - /// **Initial value**: `50% 50% 0` - /// - public Property MozTransformOrigin - { - get => (Property) _properties["-moz-transform-origin"]; - set => _properties["-moz-transform-origin"] = value; - } - - /// - /// The **`transform-style`** CSS property sets whether children of an element are positioned in the 3D space or are flattened in the plane of the element. - /// **Syntax**: `flat | preserve-3d` - /// **Initial value**: `flat` - /// - public Property MozTransformStyle - { - get => (Property) _properties["-moz-transform-style"]; - set => _properties["-moz-transform-style"] = value; - } - - /// - /// The **`transition-delay`** CSS property specifies the duration to wait before starting a property's transition effect when its value changes. - /// **Syntax**: `<time>#` - /// **Initial value**: `0s` - /// - public Property MozTransitionDelay - { - get => (Property) _properties["-moz-transition-delay"]; - set => _properties["-moz-transition-delay"] = value; - } - - /// - /// The **`transition-duration`** CSS property sets the length of time a transition animation should take to complete. By default, the value is `0s`, meaning that no animation will occur. - /// **Syntax**: `<time>#` - /// **Initial value**: `0s` - /// - public Property MozTransitionDuration - { - get => (Property) _properties["-moz-transition-duration"]; - set => _properties["-moz-transition-duration"] = value; - } - - /// - /// The **`transition-property`** CSS property sets the CSS properties to which a transition effect should be applied. - /// **Syntax**: `none | <single-transition-property>#` - /// **Initial value**: all - /// - public Property MozTransitionProperty - { - get => (Property) _properties["-moz-transition-property"]; - set => _properties["-moz-transition-property"] = value; - } - - /// - /// The **`transition-timing-function`** CSS property sets how intermediate values are calculated for CSS properties being affected by a transition effect. - /// **Syntax**: `<easing-function>#` - /// **Initial value**: `ease` - /// - public Property MozTransitionTimingFunction - { - get => (Property) _properties["-moz-transition-timing-function"]; - set => _properties["-moz-transition-timing-function"] = value; - } - /// /// The **`-moz-user-focus`** CSS property is used to indicate whether an element can have the focus. /// **Syntax**: `ignore | normal | select-after | select-before | select-menu | select-same | select-all | none` diff --git a/src/Css/CSSObject.VendorShorthand.cs b/src/Css/CSSObject.VendorShorthand.cs index 9e57e6b..9eb78bb 100644 --- a/src/Css/CSSObject.VendorShorthand.cs +++ b/src/Css/CSSObject.VendorShorthand.cs @@ -43,13 +43,13 @@ public Property MozColumns } /// - /// The **`transition`** CSS property is a shorthand property for `transition-property`, `transition-duration`, `transition-timing-function`, and `transition-delay`. - /// **Syntax**: `<single-transition>#` + /// In Mozilla applications like Firefox, the **`-moz-outline-radius`** CSS shorthand property can be used to give an element's `outline` rounded corners. + /// **Syntax**: `<outline-radius>{1,4} [ / <outline-radius>{1,4} ]?` /// - public Property MozTransition + public Property MozOutlineRadius { - get => (Property) _properties["-moz-transition"]; - set => _properties["-moz-transition"] = value; + get => (Property) _properties["-moz-outline-radius"]; + set => _properties["-moz-outline-radius"] = value; } /// diff --git a/src/Css/Property.cs b/src/Css/Property.cs index daf6fd9..f7649a8 100644 --- a/src/Css/Property.cs +++ b/src/Css/Property.cs @@ -422,6 +422,99 @@ public string GetValue(string key) } } + public readonly struct AnimationRange : IProperty + { + private readonly int _index; + private readonly PropertySkip _value0; + private readonly string _value1; + private readonly double _value2; + + private AnimationRange(int index, PropertySkip value0 = default, string value1 = default, double value2 = default) + { + _index = index; + _value0 = value0; + _value1 = value1; + _value2 = value2; + } + + public static implicit operator AnimationRange(PropertySkip t) => new(0, value0: t); + public static implicit operator AnimationRange(string t) => new(1, value1: t); + public static implicit operator AnimationRange(double t) => new(2, value2: t); + + public string GetValue(string key) + { + return _index switch + { + 0 => FormatValue(key, _value0), + 1 => FormatValue(key, _value1), + 2 => FormatValue(key, _value2), + _ => throw new InvalidOperationException("Unexpected index.") + }; + } + } + + public readonly struct AnimationRangeEnd : IProperty + { + private readonly int _index; + private readonly PropertySkip _value0; + private readonly string _value1; + private readonly double _value2; + + private AnimationRangeEnd(int index, PropertySkip value0 = default, string value1 = default, double value2 = default) + { + _index = index; + _value0 = value0; + _value1 = value1; + _value2 = value2; + } + + public static implicit operator AnimationRangeEnd(PropertySkip t) => new(0, value0: t); + public static implicit operator AnimationRangeEnd(string t) => new(1, value1: t); + public static implicit operator AnimationRangeEnd(double t) => new(2, value2: t); + + public string GetValue(string key) + { + return _index switch + { + 0 => FormatValue(key, _value0), + 1 => FormatValue(key, _value1), + 2 => FormatValue(key, _value2), + _ => throw new InvalidOperationException("Unexpected index.") + }; + } + } + + public readonly struct AnimationRangeStart : IProperty + { + private readonly int _index; + private readonly PropertySkip _value0; + private readonly string _value1; + private readonly double _value2; + + private AnimationRangeStart(int index, PropertySkip value0 = default, string value1 = default, double value2 = default) + { + _index = index; + _value0 = value0; + _value1 = value1; + _value2 = value2; + } + + public static implicit operator AnimationRangeStart(PropertySkip t) => new(0, value0: t); + public static implicit operator AnimationRangeStart(string t) => new(1, value1: t); + public static implicit operator AnimationRangeStart(double t) => new(2, value2: t); + + public string GetValue(string key) + { + return _index switch + { + 0 => FormatValue(key, _value0), + 1 => FormatValue(key, _value1), + 2 => FormatValue(key, _value2), + _ => throw new InvalidOperationException("Unexpected index.") + }; + } + } + public readonly struct AnimationTimeline : IProperty { private readonly int _index; @@ -4921,6 +5014,114 @@ public string GetValue(string key) } } + public readonly struct FontSynthesisPosition : IProperty + { + private readonly int _index; + private readonly PropertySkip _value0; + private readonly string _value1; + + private FontSynthesisPosition(int index, PropertySkip value0 = default, string value1 = default) + { + _index = index; + _value0 = value0; + _value1 = value1; + } + + public static implicit operator FontSynthesisPosition(PropertySkip t) => new(0, value0: t); + public static implicit operator FontSynthesisPosition(string t) => new(1, value1: t); + + public string GetValue(string key) + { + return _index switch + { + 0 => FormatValue(key, _value0), + 1 => FormatValue(key, _value1), + _ => throw new InvalidOperationException("Unexpected index.") + }; + } + } + + public readonly struct FontSynthesisSmallCaps : IProperty + { + private readonly int _index; + private readonly PropertySkip _value0; + private readonly string _value1; + + private FontSynthesisSmallCaps(int index, PropertySkip value0 = default, string value1 = default) + { + _index = index; + _value0 = value0; + _value1 = value1; + } + + public static implicit operator FontSynthesisSmallCaps(PropertySkip t) => new(0, value0: t); + public static implicit operator FontSynthesisSmallCaps(string t) => new(1, value1: t); + + public string GetValue(string key) + { + return _index switch + { + 0 => FormatValue(key, _value0), + 1 => FormatValue(key, _value1), + _ => throw new InvalidOperationException("Unexpected index.") + }; + } + } + + public readonly struct FontSynthesisStyle : IProperty + { + private readonly int _index; + private readonly PropertySkip _value0; + private readonly string _value1; + + private FontSynthesisStyle(int index, PropertySkip value0 = default, string value1 = default) + { + _index = index; + _value0 = value0; + _value1 = value1; + } + + public static implicit operator FontSynthesisStyle(PropertySkip t) => new(0, value0: t); + public static implicit operator FontSynthesisStyle(string t) => new(1, value1: t); + + public string GetValue(string key) + { + return _index switch + { + 0 => FormatValue(key, _value0), + 1 => FormatValue(key, _value1), + _ => throw new InvalidOperationException("Unexpected index.") + }; + } + } + + public readonly struct FontSynthesisWeight : IProperty + { + private readonly int _index; + private readonly PropertySkip _value0; + private readonly string _value1; + + private FontSynthesisWeight(int index, PropertySkip value0 = default, string value1 = default) + { + _index = index; + _value0 = value0; + _value1 = value1; + } + + public static implicit operator FontSynthesisWeight(PropertySkip t) => new(0, value0: t); + public static implicit operator FontSynthesisWeight(string t) => new(1, value1: t); + + public string GetValue(string key) + { + return _index switch + { + 0 => FormatValue(key, _value0), + 1 => FormatValue(key, _value1), + _ => throw new InvalidOperationException("Unexpected index.") + }; + } + } + public readonly struct FontVariant : IProperty { private readonly int _index; @@ -7604,6 +7805,33 @@ public string GetValue(string key) } } + public readonly struct MasonryAutoFlow : IProperty + { + private readonly int _index; + private readonly PropertySkip _value0; + private readonly string _value1; + + private MasonryAutoFlow(int index, PropertySkip value0 = default, string value1 = default) + { + _index = index; + _value0 = value0; + _value1 = value1; + } + + public static implicit operator MasonryAutoFlow(PropertySkip t) => new(0, value0: t); + public static implicit operator MasonryAutoFlow(string t) => new(1, value1: t); + + public string GetValue(string key) + { + return _index switch + { + 0 => FormatValue(key, _value0), + 1 => FormatValue(key, _value1), + _ => throw new InvalidOperationException("Unexpected index.") + }; + } + } + public readonly struct MathDepth : IProperty { private readonly int _index; @@ -8718,6 +8946,33 @@ public string GetValue(string key) } } + public readonly struct Overlay : IProperty + { + private readonly int _index; + private readonly PropertySkip _value0; + private readonly string _value1; + + private Overlay(int index, PropertySkip value0 = default, string value1 = default) + { + _index = index; + _value0 = value0; + _value1 = value1; + } + + public static implicit operator Overlay(PropertySkip t) => new(0, value0: t); + public static implicit operator Overlay(string t) => new(1, value1: t); + + public string GetValue(string key) + { + return _index switch + { + 0 => FormatValue(key, _value0), + 1 => FormatValue(key, _value1), + _ => throw new InvalidOperationException("Unexpected index.") + }; + } + } + public readonly struct OverscrollBehavior : IProperty { private readonly int _index; @@ -11714,6 +11969,60 @@ public string GetValue(string key) } } + public readonly struct TextWrap : IProperty + { + private readonly int _index; + private readonly PropertySkip _value0; + private readonly string _value1; + + private TextWrap(int index, PropertySkip value0 = default, string value1 = default) + { + _index = index; + _value0 = value0; + _value1 = value1; + } + + public static implicit operator TextWrap(PropertySkip t) => new(0, value0: t); + public static implicit operator TextWrap(string t) => new(1, value1: t); + + public string GetValue(string key) + { + return _index switch + { + 0 => FormatValue(key, _value0), + 1 => FormatValue(key, _value1), + _ => throw new InvalidOperationException("Unexpected index.") + }; + } + } + + public readonly struct TimelineScope : IProperty + { + private readonly int _index; + private readonly PropertySkip _value0; + private readonly string _value1; + + private TimelineScope(int index, PropertySkip value0 = default, string value1 = default) + { + _index = index; + _value0 = value0; + _value1 = value1; + } + + public static implicit operator TimelineScope(PropertySkip t) => new(0, value0: t); + public static implicit operator TimelineScope(string t) => new(1, value1: t); + + public string GetValue(string key) + { + return _index switch + { + 0 => FormatValue(key, _value0), + 1 => FormatValue(key, _value1), + _ => throw new InvalidOperationException("Unexpected index.") + }; + } + } + public readonly struct Top : IProperty { private readonly int _index; @@ -11911,6 +12220,33 @@ public string GetValue(string key) } } + public readonly struct TransitionBehavior : IProperty + { + private readonly int _index; + private readonly PropertySkip _value0; + private readonly string _value1; + + private TransitionBehavior(int index, PropertySkip value0 = default, string value1 = default) + { + _index = index; + _value0 = value0; + _value1 = value1; + } + + public static implicit operator TransitionBehavior(PropertySkip t) => new(0, value0: t); + public static implicit operator TransitionBehavior(string t) => new(1, value1: t); + + public string GetValue(string key) + { + return _index switch + { + 0 => FormatValue(key, _value0), + 1 => FormatValue(key, _value1), + _ => throw new InvalidOperationException("Unexpected index.") + }; + } + } + public readonly struct TransitionDelay : IProperty { private readonly int _index; @@ -12135,6 +12471,118 @@ public string GetValue(string key) } } + public readonly struct ViewTimeline : IProperty + { + private readonly int _index; + private readonly PropertySkip _value0; + private readonly string _value1; + + private ViewTimeline(int index, PropertySkip value0 = default, string value1 = default) + { + _index = index; + _value0 = value0; + _value1 = value1; + } + + public static implicit operator ViewTimeline(PropertySkip t) => new(0, value0: t); + public static implicit operator ViewTimeline(string t) => new(1, value1: t); + + public string GetValue(string key) + { + return _index switch + { + 0 => FormatValue(key, _value0), + 1 => FormatValue(key, _value1), + _ => throw new InvalidOperationException("Unexpected index.") + }; + } + } + + public readonly struct ViewTimelineAxis : IProperty + { + private readonly int _index; + private readonly PropertySkip _value0; + private readonly string _value1; + + private ViewTimelineAxis(int index, PropertySkip value0 = default, string value1 = default) + { + _index = index; + _value0 = value0; + _value1 = value1; + } + + public static implicit operator ViewTimelineAxis(PropertySkip t) => new(0, value0: t); + public static implicit operator ViewTimelineAxis(string t) => new(1, value1: t); + + public string GetValue(string key) + { + return _index switch + { + 0 => FormatValue(key, _value0), + 1 => FormatValue(key, _value1), + _ => throw new InvalidOperationException("Unexpected index.") + }; + } + } + + public readonly struct ViewTimelineInset : IProperty + { + private readonly int _index; + private readonly PropertySkip _value0; + private readonly string _value1; + private readonly double _value2; + + private ViewTimelineInset(int index, PropertySkip value0 = default, string value1 = default, double value2 = default) + { + _index = index; + _value0 = value0; + _value1 = value1; + _value2 = value2; + } + + public static implicit operator ViewTimelineInset(PropertySkip t) => new(0, value0: t); + public static implicit operator ViewTimelineInset(string t) => new(1, value1: t); + public static implicit operator ViewTimelineInset(double t) => new(2, value2: t); + + public string GetValue(string key) + { + return _index switch + { + 0 => FormatValue(key, _value0), + 1 => FormatValue(key, _value1), + 2 => FormatValue(key, _value2), + _ => throw new InvalidOperationException("Unexpected index.") + }; + } + } + + public readonly struct ViewTimelineName : IProperty + { + private readonly int _index; + private readonly PropertySkip _value0; + private readonly string _value1; + + private ViewTimelineName(int index, PropertySkip value0 = default, string value1 = default) + { + _index = index; + _value0 = value0; + _value1 = value1; + } + + public static implicit operator ViewTimelineName(PropertySkip t) => new(0, value0: t); + public static implicit operator ViewTimelineName(string t) => new(1, value1: t); + + public string GetValue(string key) + { + return _index switch + { + 0 => FormatValue(key, _value0), + 1 => FormatValue(key, _value1), + _ => throw new InvalidOperationException("Unexpected index.") + }; + } + } + public readonly struct ViewTransitionName : IProperty { private readonly int _index; @@ -12216,6 +12664,60 @@ public string GetValue(string key) } } + public readonly struct WhiteSpaceCollapse : IProperty + { + private readonly int _index; + private readonly PropertySkip _value0; + private readonly string _value1; + + private WhiteSpaceCollapse(int index, PropertySkip value0 = default, string value1 = default) + { + _index = index; + _value0 = value0; + _value1 = value1; + } + + public static implicit operator WhiteSpaceCollapse(PropertySkip t) => new(0, value0: t); + public static implicit operator WhiteSpaceCollapse(string t) => new(1, value1: t); + + public string GetValue(string key) + { + return _index switch + { + 0 => FormatValue(key, _value0), + 1 => FormatValue(key, _value1), + _ => throw new InvalidOperationException("Unexpected index.") + }; + } + } + + public readonly struct WhiteSpaceTrim : IProperty + { + private readonly int _index; + private readonly PropertySkip _value0; + private readonly string _value1; + + private WhiteSpaceTrim(int index, PropertySkip value0 = default, string value1 = default) + { + _index = index; + _value0 = value0; + _value1 = value1; + } + + public static implicit operator WhiteSpaceTrim(PropertySkip t) => new(0, value0: t); + public static implicit operator WhiteSpaceTrim(string t) => new(1, value1: t); + + public string GetValue(string key) + { + return _index switch + { + 0 => FormatValue(key, _value0), + 1 => FormatValue(key, _value1), + _ => throw new InvalidOperationException("Unexpected index.") + }; + } + } + public readonly struct Widows : IProperty { private readonly int _index;