From f1f8acdd62bf3779781eb2708ea85dec04d4acc9 Mon Sep 17 00:00:00 2001
From: Michael Thyregod <2386496+michaelthyregod@users.noreply.github.com>
Date: Wed, 4 Nov 2026 06:26:33 +0100
Subject: [PATCH 01/13] Build the parts of the render tree only when needed
Every element of a render tree got its ::before and ::after cascaded and
its specified style built, though most have no generated content and the
specified style is rarely read (#262).
- Cascade a pseudo-element only if a rule that may match it declares its
content; rules such as *::before { display: inline } of the default
sheet alone do not give it a box
- Build the specified style of a render node on first read, from the one
its parent had when it was built; it is published atomically
- Add tests for the declared content, the reading order, rendering again
below a parent, and concurrent first reads
---
.../Extensions/PseudoElementRenderTests.cs | 30 +++++
.../Styling/InheritanceChainTests.cs | 66 +++++++++++
.../Dom/Internal/CssStyleDeclaration.cs | 19 ++++
.../Dom/Internal/StyleRuleIndex.cs | 29 +++++
.../RenderTree/ElementRenderNode.cs | 107 +++++++++++++++++-
.../RenderTree/RenderTreeBuilder.cs | 49 ++++----
6 files changed, 278 insertions(+), 22 deletions(-)
diff --git a/src/AngleSharp.Css.Tests/Extensions/PseudoElementRenderTests.cs b/src/AngleSharp.Css.Tests/Extensions/PseudoElementRenderTests.cs
index e213ec60..036c4a6f 100644
--- a/src/AngleSharp.Css.Tests/Extensions/PseudoElementRenderTests.cs
+++ b/src/AngleSharp.Css.Tests/Extensions/PseudoElementRenderTests.cs
@@ -216,5 +216,35 @@ public void PseudoClassesBeforeAPseudoElementReferToTheOriginatingElement(string
Assert.AreEqual(expected, target.Children.Any(m => m.Ref is IPseudoElement));
}
+
+ // only a rule declaring the content gives a pseudo-element a box, wherever it comes from
+ [TestCase("*::before { color: red }", false, false)]
+ [TestCase("*::before { color: red } #target::before { content: 'X' }", true, false)]
+ [TestCase("*::before { content: 'X' }", true, true)]
+ [TestCase("#target::before { color: red } .other::before { content: 'X' }", false, true)]
+ [TestCase("#target { &::before { content: 'X' } }", true, false)]
+ [TestCase("@media screen { #target::before { content: 'X' } }", true, false)]
+ public void OnlyPseudoElementsWithDeclaredContentGenerateNodes(string css, bool target, bool other)
+ {
+ var root = Render($"
" +
+ "
A
B
");
+
+ Assert.AreEqual(target, FindElement(root, "target").Children.Any(m => m.Ref is IPseudoElement), "target");
+ Assert.AreEqual(other, FindElement(root, "other").Children.Any(m => m.Ref is IPseudoElement), "other");
+ }
+
+ [Test]
+ public void ContentAddedThroughTheObjectModelGeneratesANode()
+ {
+ var document = ParseDocument("" +
+ "
A
");
+ var window = document.DefaultView;
+ var rule = (ICssStyleRule)((ICssStyleSheet)document.StyleSheets[0]).Rules[0];
+ Assert.IsFalse(FindElement((ElementRenderNode)window.Render(new PlainRenderDevice()), "target").Children.Any(m => m.Ref is IPseudoElement));
+
+ rule.Style.SetProperty("content", "'X'");
+
+ Assert.IsTrue(FindElement((ElementRenderNode)window.Render(new PlainRenderDevice()), "target").Children.Any(m => m.Ref is IPseudoElement));
+ }
}
}
diff --git a/src/AngleSharp.Css.Tests/Styling/InheritanceChainTests.cs b/src/AngleSharp.Css.Tests/Styling/InheritanceChainTests.cs
index c9c148b8..21235472 100644
--- a/src/AngleSharp.Css.Tests/Styling/InheritanceChainTests.cs
+++ b/src/AngleSharp.Css.Tests/Styling/InheritanceChainTests.cs
@@ -184,6 +184,72 @@ public void DeepChainWithoutADeclarationKeepsTheInitialValue()
Assert.AreEqual(String.Empty, levels[0].ComputedStyle.GetPropertyValue("--undeclared"));
}
+ // The specified style is built when it is first read, from the one the parent had
+ // when it was built: the order of reading and later modifications must not matter.
+ [Test]
+ public void SpecifiedStylesAreTheSameInAnyReadingOrder()
+ {
+ var html = "
x
";
+ var tree = Parse(html).DefaultView.Render();
+ var childFirst = Find(tree, "child").SpecifiedStyle;
+ var parentAfter = Find(tree, "parent").SpecifiedStyle;
+ var other = Parse(html).DefaultView.Render();
+ var parentFirst = Find(other, "parent").SpecifiedStyle;
+ parentFirst.SetProperty("color", "blue");
+ var childAfter = Find(other, "child").SpecifiedStyle;
+
+ Assert.AreEqual("rgba(255, 0, 0, 1)", childFirst.GetPropertyValue("color"));
+ Assert.AreEqual("1px", childFirst.GetPropertyValue("--a"));
+ Assert.AreEqual(childFirst.CssText, childAfter.CssText);
+ Assert.AreEqual("2px", parentAfter.GetPropertyValue("margin-left"));
+ Assert.AreEqual("rgba(0, 0, 255, 1)", parentFirst.GetPropertyValue("color"));
+ }
+
+ [Test]
+ public void ElementRenderedAgainInheritsTheCurrentSpecifiedStyleOfItsParent()
+ {
+ var document = Parse("
x
");
+ var window = document.DefaultView;
+ var parent = Find(window.Render(), "parent");
+ parent.SpecifiedStyle.SetProperty("color", "blue");
+
+ var child = window.Render(document.GetElementById("child"), parent);
+ parent.SpecifiedStyle.SetProperty("color", "green");
+
+ Assert.AreEqual("rgba(0, 0, 255, 1)", child.SpecifiedStyle.GetPropertyValue("color"));
+ }
+
+ [Test]
+ public void ConcurrentFirstReadsOfTheSpecifiedStyleGetTheSameOne()
+ {
+ var levels = BuildChain(50, level => level == 10 ? "color: red" : null);
+ var target = levels[levels.Count - 1];
+ var results = new ICssStyleDeclaration[4];
+
+ using (var barrier = new System.Threading.Barrier(results.Length))
+ {
+ var threads = Enumerable.Range(0, results.Length).Select(i => new System.Threading.Thread(() =>
+ {
+ barrier.SignalAndWait();
+ results[i] = target.SpecifiedStyle;
+ })).ToList();
+ threads.ForEach(m => m.Start());
+ threads.ForEach(m => m.Join());
+ }
+
+ Assert.IsTrue(results.All(m => ReferenceEquals(m, results[0])));
+ Assert.AreEqual("rgba(255, 0, 0, 1)", results[0].GetPropertyValue("color"));
+ }
+
+ [Test]
+ public void CascadedStyleOfARenderedPseudoElementIsItsSpecifiedStyle()
+ {
+ var tree = Parse("
y
").DefaultView.Render();
+ var before = Find(tree, "target").Children.OfType().Single();
+
+ Assert.AreSame(before.SpecifiedStyle, ((IPseudoElement)before.Ref).GetCascadedStyle());
+ }
+
// a chain of divs built with the DOM API, with the given inline style per level
private static List BuildChain(int depth, Func style)
{
diff --git a/src/AngleSharp.Css/Dom/Internal/CssStyleDeclaration.cs b/src/AngleSharp.Css/Dom/Internal/CssStyleDeclaration.cs
index 49231163..0fd71fd5 100644
--- a/src/AngleSharp.Css/Dom/Internal/CssStyleDeclaration.cs
+++ b/src/AngleSharp.Css/Dom/Internal/CssStyleDeclaration.cs
@@ -68,6 +68,18 @@ public CssStyleDeclaration(ICssRule parent)
_parent = parent;
}
+ // shares the lists of the source until either of the two is modified
+ private CssStyleDeclaration(CssStyleDeclaration source)
+ {
+ _snapshot = source.GetSnapshot();
+ _declarations = source._declarations;
+ _declarationIndex = source._declarationIndex;
+ _inherited = source._inherited;
+ _forced = source._forced;
+ _context = source._context;
+ RootFontSize = source.RootFontSize;
+ }
+
#endregion
#region Index
@@ -486,6 +498,13 @@ internal IEnumerable GetLocalDeclarations()
return local;
}
+ ///
+ /// Creates a copy of the current declarations that later modifications of this
+ /// one do not change, e.g. for children inheriting from it later on. Nothing is
+ /// copied until either of the two is modified.
+ ///
+ internal CssStyleDeclaration Freeze() => new(this);
+
///
/// Same as UpdateDeclarations with the declarations of the parent, but without
/// copying them: the inherited declarations are looked up in the parent instead,
diff --git a/src/AngleSharp.Css/Dom/Internal/StyleRuleIndex.cs b/src/AngleSharp.Css/Dom/Internal/StyleRuleIndex.cs
index 6e860eb6..6134008e 100644
--- a/src/AngleSharp.Css/Dom/Internal/StyleRuleIndex.cs
+++ b/src/AngleSharp.Css/Dom/Internal/StyleRuleIndex.cs
@@ -22,6 +22,9 @@ sealed class StyleRuleIndex
// the rules targeting pseudo-elements, again grouped by the element they belong to
private readonly KeyedRules _pseudoKeys = new();
private readonly List _pseudo = new();
+ // the rules targeting pseudo-elements that may declare their content
+ private readonly KeyedRules _contentKeys = new();
+ private Int32 _contentCount;
#endregion
@@ -56,6 +59,21 @@ public Candidates GetCandidates(IElement element)
return Collect(element, _keys);
}
+ ///
+ /// Checks if a rule that may match the given pseudo-element declares its
+ /// content. Without content a ::before or ::after has no box, and rules
+ /// such as *::before only setting other properties do not change that.
+ ///
+ public Boolean MayDeclareContent(IElement pseudoElement)
+ {
+ if (_contentCount == 0)
+ {
+ return false;
+ }
+
+ return pseudoElement is not PseudoElement { Host: { } host } || Collect(host, _contentKeys).Count > 0;
+ }
+
#endregion
#region Helpers
@@ -78,11 +96,22 @@ private void Add(ICssStyleRule rule, Int32 index)
{
_pseudo.Add(index);
_pseudoKeys.Add(keys, index);
+
+ // a nested rule is matched on its own, so it may declare the content
+ if (hasNested || DeclaresContent(rule.Style))
+ {
+ _contentKeys.Add(keys, index);
+ _contentCount++;
+ }
}
_keys.Add(keys, index);
}
+ private static Boolean DeclaresContent(ICssStyleDeclaration style) => style is CssStyleDeclaration declaration ?
+ declaration.GetDeclaration(PropertyNames.Content) is not null :
+ style.Any(m => PropertyNames.Content.Equals(m.Name, StringComparison.OrdinalIgnoreCase));
+
private static Candidates Collect(IElement element, KeyedRules keyed)
{
// The ungrouped rules (e.g., [data-theme] or :root) are candidates for every
diff --git a/src/AngleSharp.Css/RenderTree/ElementRenderNode.cs b/src/AngleSharp.Css/RenderTree/ElementRenderNode.cs
index 6c3554f2..e1f5a844 100644
--- a/src/AngleSharp.Css/RenderTree/ElementRenderNode.cs
+++ b/src/AngleSharp.Css/RenderTree/ElementRenderNode.cs
@@ -2,7 +2,9 @@ namespace AngleSharp.Css.RenderTree
{
using AngleSharp.Css.Dom;
using AngleSharp.Dom;
+ using System;
using System.Collections.Generic;
+ using System.Threading;
///
/// Represents a rendered element.
@@ -12,9 +14,16 @@ public sealed class ElementRenderNode : IRenderNode
private readonly IElement _reference;
private readonly ElementRenderNode? _parent;
private readonly IEnumerable _children;
- private readonly ICssStyleDeclaration _specifiedStyle;
private readonly ICssStyleDeclaration _computedStyle;
+ // The specified style is only built when it is read: from the explicit style of the
+ // element and the specified style its parent had when it was built (or, for the root
+ // of a rendering, the given one).
+ private readonly ICssStyleDeclaration? _explicitStyle;
+ private readonly ICssStyleDeclaration? _inheritedStyle;
+ private readonly IBrowsingContext? _context;
+ private SpecifiedStyles? _specified;
+
///
/// Constructs a new rendered element.
///
@@ -33,7 +42,37 @@ public ElementRenderNode(
_reference = reference;
_parent = parent;
_children = children;
- _specifiedStyle = specifiedStyle;
+ _specified = new SpecifiedStyles(specifiedStyle, specifiedStyle);
+ _computedStyle = computedStyle;
+ }
+
+ ///
+ /// Constructs a rendered element whose specified style is built on first read.
+ ///
+ /// The reference to the original element.
+ /// The used parent node if any.
+ /// The contained children.
+ /// The explicit style of the element.
+ ///
+ /// The specified style to inherit from, if not the one of the parent node.
+ ///
+ /// The computed style of the element.
+ /// The context to create the specified style in.
+ internal ElementRenderNode(
+ IElement reference,
+ ElementRenderNode? parent,
+ IEnumerable children,
+ ICssStyleDeclaration explicitStyle,
+ CssStyleDeclaration? inheritedStyle,
+ ICssStyleDeclaration computedStyle,
+ IBrowsingContext context)
+ {
+ _reference = reference;
+ _parent = parent;
+ _children = children;
+ _explicitStyle = explicitStyle;
+ _inheritedStyle = inheritedStyle;
+ _context = context;
_computedStyle = computedStyle;
}
@@ -57,11 +96,73 @@ public ElementRenderNode(
///
/// Gets the cascaded style of the element.
///
- public ICssStyleDeclaration SpecifiedStyle => _specifiedStyle;
+ public ICssStyleDeclaration SpecifiedStyle => GetSpecifiedStyles().Style;
///
/// Gets the computed style of the element.
///
public ICssStyleDeclaration ComputedStyle => _computedStyle;
+
+ private Boolean InheritsFromParent => _inheritedStyle is null && _parent is not null;
+
+ private SpecifiedStyles GetSpecifiedStyles()
+ {
+ var specified = Volatile.Read(ref _specified);
+
+ if (specified is not null)
+ {
+ return specified;
+ }
+
+ // build the missing ones top-down without recursion, as the chain is as deep as the tree
+ var pending = new Stack();
+
+ for (var node = this; node is not null && Volatile.Read(ref node._specified) is null; node = node.InheritsFromParent ? node._parent : null)
+ {
+ pending.Push(node);
+ }
+
+ while (pending.Count > 0)
+ {
+ specified = pending.Pop().BuildSpecifiedStyles();
+ }
+
+ return specified!;
+ }
+
+ private SpecifiedStyles BuildSpecifiedStyles()
+ {
+ var inherited = InheritsFromParent ? Volatile.Read(ref _parent!._specified)!.ForChildren : _inheritedStyle;
+ var style = new CssStyleDeclaration(_context);
+ style.SetDeclarations(_explicitStyle!);
+
+ if (inherited is not null)
+ {
+ style.InheritFrom(inherited);
+ }
+
+ // another thread may have been faster: then its style is the one of the node
+ var specified = new SpecifiedStyles(style, style.Freeze());
+ return Interlocked.CompareExchange(ref _specified, specified, null) ?? specified;
+ }
+
+ private sealed class SpecifiedStyles
+ {
+ public SpecifiedStyles(ICssStyleDeclaration style, ICssStyleDeclaration forChildren)
+ {
+ Style = style;
+ ForChildren = forChildren;
+ }
+
+ ///
+ /// Gets the specified style handed out, which may be modified.
+ ///
+ public ICssStyleDeclaration Style { get; }
+
+ ///
+ /// Gets the specified style as it was built, which the children inherit.
+ ///
+ public ICssStyleDeclaration ForChildren { get; }
+ }
}
}
diff --git a/src/AngleSharp.Css/RenderTree/RenderTreeBuilder.cs b/src/AngleSharp.Css/RenderTree/RenderTreeBuilder.cs
index 775dcf12..44254234 100644
--- a/src/AngleSharp.Css/RenderTree/RenderTreeBuilder.cs
+++ b/src/AngleSharp.Css/RenderTree/RenderTreeBuilder.cs
@@ -20,6 +20,7 @@ sealed class RenderTreeBuilder
private readonly IWindow _window;
private readonly List _defaultSheets;
private readonly Dictionary _cascadedStyles = new();
+ private readonly Dictionary _renderedNodes = new();
private RenderTreeBuilder(IWindow window)
{
@@ -41,12 +42,18 @@ public ElementRenderNode RenderDocument(IRenderDevice? device = null)
var collection = CreateStyleCollection(device ?? DefaultDevice);
_cascadedStyles.Clear();
+ _renderedNodes.Clear();
return RenderElement(root, collection, null, null, null);
}
public ICssStyleDeclaration GetElementStyle(IElement element, IRenderDevice? device = null)
{
+ if (_renderedNodes.TryGetValue(element, out var node))
+ {
+ return node.SpecifiedStyle;
+ }
+
if (_cascadedStyles.TryGetValue(element, out var cascadedStyle))
{
return cascadedStyle;
@@ -62,10 +69,11 @@ public ElementRenderNode RenderElement(IElement element, IRenderDevice device)
{
var collection = CreateStyleCollection(device);
var parent = element.ParentElement;
- var parentSpecifiedStyle = parent is not null ? collection.GetDeclarations(parent) : null;
+ var parentSpecifiedStyle = parent is not null ? (CssStyleDeclaration)collection.GetDeclarations(parent) : null;
var parentComputedStyle = parent is not null ? collection.ComputeDeclarations(parent) : null;
_cascadedStyles.Clear();
+ _renderedNodes.Clear();
return RenderElement(element, collection, null, parentSpecifiedStyle, parentComputedStyle);
}
@@ -73,7 +81,16 @@ public ElementRenderNode RenderElement(IElement element, IRenderDevice device)
public ElementRenderNode RenderElement(IElement element, ElementRenderNode parent, IRenderDevice device)
{
var collection = CreateStyleCollection(device);
- return RenderElement(element, collection, parent, parent.SpecifiedStyle, parent.ComputedStyle);
+ // the specified style of the parent as it is now, also if modified since
+ var parentSpecifiedStyle = parent.SpecifiedStyle is CssStyleDeclaration style ? style.Freeze() : Copy(parent.SpecifiedStyle);
+ return RenderElement(element, collection, parent, parentSpecifiedStyle, parent.ComputedStyle);
+ }
+
+ private CssStyleDeclaration Copy(ICssStyleDeclaration style)
+ {
+ var copy = new CssStyleDeclaration(_context);
+ copy.SetDeclarations(style);
+ return copy;
}
private StyleCollection CreateStyleCollection(IRenderDevice device)
@@ -87,7 +104,7 @@ private ElementRenderNode RenderElement(
IElement element,
StyleCollection collection,
ElementRenderNode? parent,
- ICssStyleDeclaration? parentSpecifiedStyle,
+ CssStyleDeclaration? inheritedStyle,
ICssStyleDeclaration? parentComputedStyle,
ICssStyleDeclaration? explicitStyle = null,
StyleCollection? slottedCollection = null)
@@ -97,20 +114,13 @@ private ElementRenderNode RenderElement(
? collection.ComputeHostStyle(shadowCollection, element)
: collection.ComputeExplicitStyle(element);
- var specifiedStyle = new CssStyleDeclaration(_context);
- specifiedStyle.SetDeclarations(explicitStyle);
-
- if (parentSpecifiedStyle is not null)
- {
- specifiedStyle.InheritFrom(parentSpecifiedStyle);
- }
-
var computeContext = new CssComputeContext(collection.Device, _context, explicitStyle, parentComputedStyle);
var computedStyle = explicitStyle.PrepareComputedDeclarations(parentComputedStyle!, computeContext).Compute(computeContext).Blockify(element);
var children = new List();
- var node = new ElementRenderNode(element, parent, children, specifiedStyle, computedStyle);
+ // inherits the specified style of the parent node, unless another one is given
+ var node = new ElementRenderNode(element, parent, children, explicitStyle, inheritedStyle, computedStyle, _context);
- _cascadedStyles[element] = specifiedStyle;
+ _renderedNodes[element] = node;
if (element is IPseudoElement)
{
@@ -124,7 +134,7 @@ private ElementRenderNode RenderElement(
return node;
}
- var beforeNode = RenderPseudoElement(element, "before", collection, node, specifiedStyle, computedStyle);
+ var beforeNode = RenderPseudoElement(element, "before", collection, node, computedStyle);
if (beforeNode is not null)
{
@@ -135,7 +145,7 @@ private ElementRenderNode RenderElement(
{
if (child.Node is IElement childElement)
{
- children.Add(RenderElement(childElement, child.Collection, node, specifiedStyle, computedStyle, slottedCollection: child.SlottedCollection));
+ children.Add(RenderElement(childElement, child.Collection, node, null, computedStyle, slottedCollection: child.SlottedCollection));
}
else if (child.Node is IText childText)
{
@@ -143,7 +153,7 @@ private ElementRenderNode RenderElement(
}
}
- var afterNode = RenderPseudoElement(element, "after", collection, node, specifiedStyle, computedStyle);
+ var afterNode = RenderPseudoElement(element, "after", collection, node, computedStyle);
if (afterNode is not null)
{
@@ -245,12 +255,13 @@ public FlatChild(INode node, StyleCollection collection, StyleCollection? slotte
String name,
StyleCollection collection,
ElementRenderNode parent,
- ICssStyleDeclaration parentSpecifiedStyle,
ICssStyleDeclaration parentComputedStyle)
{
var pseudo = element.Pseudo(name);
- if (pseudo is null)
+ // Only a rule can declare `content`: without one that may match the pseudo-element
+ // (most elements have none) it has no box, and its style is not computed at all.
+ if (pseudo is null || !collection.GetIndex().MayDeclareContent(pseudo))
{
return null;
}
@@ -264,7 +275,7 @@ public FlatChild(INode node, StyleCollection collection, StyleCollection? slotte
return null;
}
- var node = RenderElement(pseudo, collection, parent, parentSpecifiedStyle, parentComputedStyle, explicitStyle);
+ var node = RenderElement(pseudo, collection, parent, null, parentComputedStyle, explicitStyle);
// Per spec, `content: none` (and the initial/unset `normal`, equivalent for these two
// pseudo-elements specifically) means no box is generated at all - not merely an empty
From 8148e86cc90e3be01529307e352352870e9d0e71 Mon Sep 17 00:00:00 2001
From: Florian Rappl
Date: Wed, 4 Nov 2026 08:23:30 +0100
Subject: [PATCH 02/13] Support for selection pseudo element
---
CHANGELOG.md | 6 ++++++
src/AngleSharp.Css.Docs/package.json | 2 +-
.../Extensions/PseudoElementRenderTests.cs | 9 +++++++++
.../Factories/DefaultPseudoElementFactory.cs | 1 +
src/Directory.Build.props | 2 +-
5 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 09068ec5..ebc76758 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+# 1.4.0
+
+Released on Friday, November 6 2026.
+
+- Added support for `::selection` pseudo elements
+
# 1.3.2
Released on Tuesday, November 3 2026.
diff --git a/src/AngleSharp.Css.Docs/package.json b/src/AngleSharp.Css.Docs/package.json
index 315c7d3d..c1920045 100644
--- a/src/AngleSharp.Css.Docs/package.json
+++ b/src/AngleSharp.Css.Docs/package.json
@@ -1,6 +1,6 @@
{
"name": "@anglesharp/css",
- "version": "1.3.2",
+ "version": "1.4.0",
"preview": true,
"description": "The doclet for the AngleSharp.Css documentation.",
"keywords": [
diff --git a/src/AngleSharp.Css.Tests/Extensions/PseudoElementRenderTests.cs b/src/AngleSharp.Css.Tests/Extensions/PseudoElementRenderTests.cs
index e213ec60..98305640 100644
--- a/src/AngleSharp.Css.Tests/Extensions/PseudoElementRenderTests.cs
+++ b/src/AngleSharp.Css.Tests/Extensions/PseudoElementRenderTests.cs
@@ -66,6 +66,15 @@ public void ElementRenderedAgainBelowItsParentTakesItsNewStyleAndInherits()
Assert.IsInstanceOf(node.Children.OfType().First().Ref);
}
+ [Test]
+ public void SelectionPseudoElementCanBeCreated()
+ {
+ var document = BrowsingContext.New(Configuration.Default.WithCss()).OpenNewAsync().Result;
+ var element = document.CreateElement("p");
+
+ Assert.AreEqual("selection", element.Pseudo("selection")?.PseudoName);
+ }
+
[Test]
public void BeforePseudoElementIsTheFirstChildWithItsGeneratedTextContent()
{
diff --git a/src/AngleSharp.Css/Factories/DefaultPseudoElementFactory.cs b/src/AngleSharp.Css/Factories/DefaultPseudoElementFactory.cs
index 93d63253..5a3c9864 100644
--- a/src/AngleSharp.Css/Factories/DefaultPseudoElementFactory.cs
+++ b/src/AngleSharp.Css/Factories/DefaultPseudoElementFactory.cs
@@ -25,6 +25,7 @@ public class DefaultPseudoElementFactory : IPseudoElementFactory
{ PseudoElementNames.After, element => new PseudoElement(element, PseudoElementNames.After) },
{ PseudoElementNames.Slotted, element => new PseudoElement(element, PseudoElementNames.Slotted) },
{ CssPseudoElementSelectorFactory.Placeholder, CreatePlaceholder },
+ { PseudoElementNames.Selection, element => new PseudoElement(element, PseudoElementNames.Selection) },
};
private static IPseudoElement CreatePlaceholder(IElement host)
diff --git a/src/Directory.Build.props b/src/Directory.Build.props
index 333dd16b..bf95587e 100644
--- a/src/Directory.Build.props
+++ b/src/Directory.Build.props
@@ -2,7 +2,7 @@
Extends the CSSOM from the core AngleSharp library.AngleSharp.Css
- 1.3.2
+ 1.4.0enablelatesttrue
From 3defd6d9f6fc250f9a513d4b95c0a6110a4eb68b Mon Sep 17 00:00:00 2001
From: Florian Rappl
Date: Wed, 4 Nov 2026 13:53:21 +0100
Subject: [PATCH 03/13] Updated changelog
---
CHANGELOG.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ebc76758..5c2ea89f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,7 @@
Released on Friday, November 6 2026.
+- Improved rendering by building pseudo-elements and specified styles only when needed
- Added support for `::selection` pseudo elements
# 1.3.2
From deb3328aa94c0b66eec8356c248e868d8f416a34 Mon Sep 17 00:00:00 2001
From: Michael Thyregod <2386496+michaelthyregod@users.noreply.github.com>
Date: Wed, 4 Nov 2026 14:13:18 +0100
Subject: [PATCH 04/13] Get the inner text from a partial render tree
GetInnerText computed the styles itself, apart from the render tree, so
both had to be optimized (#262). It now walks a render tree of the
element, which is only built as far as it is read.
- Build the children of a partial render node on first read, and its
::before and ::after only when all children are read
- Walk the element's own children, as the spec does: the shadow tree of
a host is left out, and its light children count if they are slotted
- Add GetInnerText for a render node, e.g. of an existing render tree
- Add tests for shadow hosts, generated content, completing a partial
tree, and concurrent first reads
---
.../Extensions/InnerText.cs | 49 +++
.../Styling/PartialRenderTreeTests.cs | 106 +++++
.../Extensions/ElementExtensions.cs | 368 +---------------
.../Extensions/RenderNodeExtensions.cs | 8 +
.../RenderTree/ElementRenderNode.cs | 77 +++-
src/AngleSharp.Css/RenderTree/InnerText.cs | 402 ++++++++++++++++++
.../RenderTree/RenderTreeBuilder.cs | 112 ++++-
7 files changed, 731 insertions(+), 391 deletions(-)
create mode 100644 src/AngleSharp.Css.Tests/Styling/PartialRenderTreeTests.cs
create mode 100644 src/AngleSharp.Css/RenderTree/InnerText.cs
diff --git a/src/AngleSharp.Css.Tests/Extensions/InnerText.cs b/src/AngleSharp.Css.Tests/Extensions/InnerText.cs
index 91ee01e1..ac0513eb 100644
--- a/src/AngleSharp.Css.Tests/Extensions/InnerText.cs
+++ b/src/AngleSharp.Css.Tests/Extensions/InnerText.cs
@@ -1,6 +1,7 @@
#nullable disable
namespace AngleSharp.Css.Tests.Extensions
{
+ using AngleSharp.Css.RenderTree;
using AngleSharp.Dom;
using NUnit.Framework;
using System;
@@ -96,5 +97,53 @@ public void SpanShouldNotHaveRemovedSpaces_Issue32()
Assert.AreEqual("Div with a span in it.", element.GetInnerText());
}
+
+ // the rendered text walks the element's own children: a shadow tree is left out, and
+ // a light child only counts if it is rendered, i.e. assigned to a slot
+ [TestCase("
")]
+ public void TextOfARenderedNodeIsTheTextOfItsElement(String html)
+ {
+ var document = $"
{html}
".ToHtmlDocument(Configuration.Default.WithCss());
+ var target = document.GetElementById("target");
+ var node = (ElementRenderNode)document.DefaultView.Render().Find(target);
+
+ Assert.AreEqual(target.GetInnerText(), node.GetInnerText());
+ }
+
+ // the walk of an element releases what it has walked, the walk of a rendered node does not
+ [Test]
+ public void TextOfAShadowHostIsTheTextOfItsRenderedNode()
+ {
+ var document = "
a
b
1
2
3
c
".ToHtmlDocument(Configuration.Default.WithCss());
+ var target = document.GetElementById("target");
+ document.GetElementById("host").AttachShadow().InnerHtml = "
";
+ var node = (ElementRenderNode)document.DefaultView.Render().Find(target);
+
+ Assert.AreEqual("a\n\nb\n1\t2\n3\n\nc", target.GetInnerText());
+ Assert.AreEqual(target.GetInnerText(), node.GetInnerText());
+ }
}
}
diff --git a/src/AngleSharp.Css.Tests/Styling/PartialRenderTreeTests.cs b/src/AngleSharp.Css.Tests/Styling/PartialRenderTreeTests.cs
new file mode 100644
index 00000000..f80a86ca
--- /dev/null
+++ b/src/AngleSharp.Css.Tests/Styling/PartialRenderTreeTests.cs
@@ -0,0 +1,106 @@
+#nullable disable
+namespace AngleSharp.Css.Tests.Styling
+{
+ using AngleSharp.Css.RenderTree;
+ using AngleSharp.Dom;
+ using AngleSharp.Html.Parser;
+ using NUnit.Framework;
+ using System.Linq;
+ using System.Threading;
+
+ [TestFixture]
+ public class PartialRenderTreeTests
+ {
+ private const string Html = "" +
+ "
slottedunassigned
" +
+ "
a b quote
hidden
";
+
+ private static IDocument Parse()
+ {
+ var config = Configuration.Default.WithCss().WithRenderDevice(new DefaultRenderDevice { ViewPortWidth = 1000, ViewPortHeight = 800 });
+ var document = BrowsingContext.New(config).GetService().ParseDocument(Html);
+ document.GetElementById("host").AttachShadow().InnerHtml = "shadow";
+ return document;
+ }
+
+ private static ElementRenderNode RenderPartial(IDocument document)
+ {
+ var builder = RenderTreeBuilder.GetInstance(document.DefaultView);
+ return builder.RenderPartial(document.DocumentElement, builder.DefaultDevice);
+ }
+
+ [Test]
+ public void ACompletedPartialTreeIsTheRenderedTree()
+ {
+ var document = Parse();
+ var expected = (ElementRenderNode)document.DefaultView.Render();
+ var partial = RenderPartial(document);
+
+ AssertSame(expected, partial);
+ }
+
+ [Test]
+ public void ChildrenOfAPartialTreeReadBeforeTheRestAreTheSame()
+ {
+ var document = Parse();
+ var expected = (ElementRenderNode)document.DefaultView.Render();
+ var partial = RenderPartial(document);
+ var body = partial.Content.OfType().Single(m => m.Ref.LocalName == "body");
+
+ // the children without generated content first, then all of them
+ Assert.IsTrue(body.Content.All(m => m.Ref is not IPseudoElement));
+ AssertSame(expected, partial);
+ }
+
+ [Test]
+ public void ConcurrentFirstReadsOfTheChildrenGetTheSameOnes()
+ {
+ var partial = RenderPartial(Parse());
+ var results = new object[4];
+
+ using (var barrier = new Barrier(results.Length))
+ {
+ var threads = Enumerable.Range(0, results.Length).Select(i => new Thread(() =>
+ {
+ barrier.SignalAndWait();
+ results[i] = i % 2 == 0 ? partial.Children : partial.Content;
+ })).ToList();
+ threads.ForEach(m => m.Start());
+ threads.ForEach(m => m.Join());
+ }
+
+ Assert.AreSame(results[0], results[2]);
+ Assert.AreSame(results[1], results[3]);
+ CollectionAssert.AreEqual((System.Collections.IEnumerable)results[1], partial.Children.Where(m => m.Ref is not IPseudoElement));
+ }
+
+ private static bool IsGenerated(IRenderNode node) => node.Ref is IPseudoElement || node.Ref.Parent is null;
+
+ private static void AssertSame(IRenderNode expected, IRenderNode actual)
+ {
+ // pseudo-elements and their generated text are created for every rendering
+ Assert.AreSame(IsGenerated(expected) ? null : expected.Ref, IsGenerated(actual) ? null : actual.Ref);
+ Assert.AreEqual(expected.GetType(), actual.GetType());
+
+ if (expected is ElementRenderNode element)
+ {
+ var other = (ElementRenderNode)actual;
+ Assert.AreEqual(element.ComputedStyle.CssText, other.ComputedStyle.CssText, element.Ref.LocalName);
+ Assert.AreEqual(element.SpecifiedStyle.CssText, other.SpecifiedStyle.CssText, element.Ref.LocalName);
+ }
+ else
+ {
+ Assert.AreEqual(((TextRenderNode)expected).Ref.Data, ((TextRenderNode)actual).Ref.Data);
+ }
+
+ var expectedChildren = expected.Children.ToList();
+ var actualChildren = actual.Children.ToList();
+ Assert.AreEqual(expectedChildren.Count, actualChildren.Count, expected.Ref.NodeName);
+
+ for (var i = 0; i < expectedChildren.Count; i++)
+ {
+ AssertSame(expectedChildren[i], actualChildren[i]);
+ }
+ }
+ }
+}
diff --git a/src/AngleSharp.Css/Extensions/ElementExtensions.cs b/src/AngleSharp.Css/Extensions/ElementExtensions.cs
index 46e6a498..ec4fda02 100644
--- a/src/AngleSharp.Css/Extensions/ElementExtensions.cs
+++ b/src/AngleSharp.Css/Extensions/ElementExtensions.cs
@@ -4,6 +4,7 @@ namespace AngleSharp.Dom
using AngleSharp.Attributes;
using AngleSharp.Css;
using AngleSharp.Css.Dom;
+ using AngleSharp.Css.RenderTree;
using AngleSharp.Html.Dom;
using AngleSharp.Text;
using System;
@@ -118,97 +119,7 @@ public static void RemovePseudoClass(this IElement element, String pseudoClass)
/// The computed inner text.
[DomName("innerText")]
[DomAccessor(Accessors.Getter)]
- public static String GetInnerText(this IElement element)
- {
- var hidden = new Nullable();
-
- if (element.Owner == null)
- {
- hidden = true;
- }
-
- // Build the style collection once and cache computed styles for the
- // entire traversal to avoid redundant stylesheet enumeration and
- // repeated selector matching for the same elements.
- var document = element.Owner;
- var window = document?.DefaultView;
- var device = window?.Document.Context.GetService() ?? new DefaultRenderDevice();
- var styleCollection = window is not null ? window.GetStyleCollection(device) : null;
- var styleCache = new Dictionary();
-
- if (!hidden.HasValue)
- {
- var css = ComputeCachedStyle(element, styleCollection, styleCache);
-
- if (!String.IsNullOrEmpty(css?.GetDisplay()))
- {
- hidden = css!.GetDisplay() == CssKeywords.None;
- }
- }
-
- if (!hidden.HasValue)
- {
- hidden = (element as IHtmlElement)?.IsHidden ?? false;
- }
-
- if (!hidden.Value)
- {
- var offset = 0;
- var sb = StringBuilderPool.Obtain();
- var requiredLineBreakCounts = new Dictionary();
- var textStyleCache = new Dictionary();
- var parentStyle = element.ParentElement != null
- ? ComputeCachedStyle(element.ParentElement, styleCollection, styleCache)
- : null;
- InnerTextCollection(element, sb, requiredLineBreakCounts, parentStyle, styleCollection, styleCache, textStyleCache);
-
- // Remove any runs of consecutive required line break count items at the start or end of results.
- requiredLineBreakCounts.Remove(0);
- requiredLineBreakCounts.Remove(sb.Length);
-
- // SortedDictionary would be nicer
- foreach (var keyval in requiredLineBreakCounts.OrderBy(kv => kv.Key))
- {
- var index = keyval.Key + offset;
- sb.Insert(index, new String(Symbols.LineFeed, keyval.Value));
- offset += keyval.Value;
- }
-
- return sb.ToPool();
- }
-
- return element.TextContent;
- }
-
- private static ICssStyleDeclaration? ComputeCachedStyle(IElement element, IStyleCollection? styleCollection, Dictionary cache)
- {
- if (styleCollection == null)
- {
- return null;
- }
-
- if (cache.TryGetValue(element, out var cached))
- {
- return cached;
- }
-
- ICssStyleDeclaration style;
- var parent = element.ParentElement;
-
- if (parent != null && cache.TryGetValue(parent, out var parentStyle))
- {
- // Parent already computed — use incremental computation that
- // skips the O(depth) ancestor walk.
- style = styleCollection.ComputeDeclarationsWithParent(element, parentStyle);
- }
- else
- {
- style = styleCollection.ComputeDeclarations(element);
- }
-
- cache[element] = style;
- return style;
- }
+ public static String GetInnerText(this IElement element) => InnerText.Get(element);
///
/// Sets the innerText of an element.
@@ -272,133 +183,6 @@ public static void SetInnerText(this IElement element, String? value)
}
}
- private static void InnerTextCollection(INode node, StringBuilder sb, Dictionary requiredLineBreakCounts, ICssStyleDeclaration? parentStyle, IStyleCollection? styleCollection, Dictionary styleCache, Dictionary textStyleCache)
- {
- if (HasCssBox(node))
- {
- var element = node as IElement;
- var elementCss = element != null ? ComputeCachedStyle(element, styleCollection, styleCache) : null;
- ItcInCssBox(elementCss, parentStyle, node, sb, requiredLineBreakCounts, styleCollection, styleCache, textStyleCache);
- }
- }
-
- private static void ItcInCssBox(ICssStyleDeclaration? elementStyle, ICssStyleDeclaration? parentStyle, INode node, StringBuilder sb, Dictionary requiredLineBreakCounts, IStyleCollection? styleCollection, Dictionary styleCache, Dictionary textStyleCache)
- {
- var elementHidden = new Nullable();
-
- if (elementStyle is not null)
- {
- if (!String.IsNullOrEmpty(elementStyle.GetDisplay()))
- {
- elementHidden = elementStyle.GetDisplay() == CssKeywords.None;
- }
-
- if (!String.IsNullOrEmpty(elementStyle.GetVisibility()) && elementHidden != true)
- {
- elementHidden = elementStyle.GetVisibility() != CssKeywords.Visible;
- }
- }
-
- if (!elementHidden.HasValue)
- {
- elementHidden = (node as IHtmlElement)?.IsHidden ?? false;
- }
-
- if (!elementHidden.Value)
- {
- var isBlockLevel = new Nullable();
- var startIndex = sb.Length;
-
- foreach (var child in node.ChildNodes)
- {
- InnerTextCollection(child, sb, requiredLineBreakCounts, elementStyle, styleCollection, styleCache, textStyleCache);
- }
-
- if (node is IText textElement)
- {
- var lastLine = node.NextSibling is null ||
- String.IsNullOrEmpty(node.NextSibling.TextContent) ||
- node.NextSibling is IHtmlBreakRowElement;
- var styleInfo = GetTextStyleInfo(parentStyle, textStyleCache);
- ProcessText(textElement.Data, sb, styleInfo.WhiteSpace, styleInfo.TextTransform, lastLine, requiredLineBreakCounts);
- }
- else if (node is IHtmlBreakRowElement)
- {
- sb.Append(Symbols.LineFeed);
- }
- else if (elementStyle is not null && ((node is IHtmlTableCellElement && String.IsNullOrEmpty(elementStyle.GetDisplay())) || elementStyle.GetDisplay() == CssKeywords.TableCell))
- {
- if (((IElement)node).NextElementSibling is IElement nextSibling)
- {
- var nextSiblingCss = ComputeCachedStyle(nextSibling, styleCollection, styleCache);
-
- if (nextSibling is IHtmlTableCellElement && String.IsNullOrEmpty(nextSiblingCss!.GetDisplay()) || nextSiblingCss!.GetDisplay() == CssKeywords.TableCell)
- {
- sb.Append(Symbols.Tab);
- }
- }
- }
- else if (elementStyle is not null && ((node is IHtmlTableRowElement && String.IsNullOrEmpty(elementStyle.GetDisplay())) || elementStyle.GetDisplay() == CssKeywords.TableRow))
- {
- if (((IElement)node).NextElementSibling is IElement nextSibling)
- {
- var nextSiblingCss = ComputeCachedStyle(nextSibling, styleCollection, styleCache);
-
- if (nextSibling is IHtmlTableRowElement && String.IsNullOrEmpty(nextSiblingCss!.GetDisplay()) || nextSiblingCss!.GetDisplay() == CssKeywords.TableRow)
- {
- sb.Append(Symbols.LineFeed);
- }
- }
- }
- else if (node is IHtmlParagraphElement)
- {
- requiredLineBreakCounts.TryGetValue(startIndex, out var startIndexCount);
-
- if (startIndexCount < 2)
- {
- requiredLineBreakCounts[startIndex] = 2;
- }
-
- requiredLineBreakCounts.TryGetValue(sb.Length, out var endIndexCount);
-
- if (endIndexCount < 2)
- {
- requiredLineBreakCounts[sb.Length] = 2;
- }
- }
-
- if (elementStyle is not null)
- {
- if (IsBlockLevelDisplay(elementStyle.GetDisplay()))
- {
- isBlockLevel = true;
- }
- }
-
- if (!isBlockLevel.HasValue)
- {
- isBlockLevel = IsBlockLevel(node);
- }
-
- if (isBlockLevel.Value)
- {
- requiredLineBreakCounts.TryGetValue(startIndex, out var startIndexCount);
-
- if (startIndexCount < 1)
- {
- requiredLineBreakCounts[startIndex] = 1;
- }
-
- requiredLineBreakCounts.TryGetValue(sb.Length, out var endIndexCount);
-
- if (endIndexCount < 1)
- {
- requiredLineBreakCounts[sb.Length] = 1;
- }
- }
- }
- }
-
///
/// Sets the style on all elements of the collection.
///
@@ -418,153 +202,5 @@ public static IEnumerable SetStyle(this IEnumerable false,
- _ => true,
- };
- }
-
- private static Boolean IsBlockLevelDisplay(String display)
- {
- // https://www.w3.org/TR/css-display-3/#display-value-summary
- // https://hg.mozilla.org/mozilla-central/file/0acceb224b7d/servo/components/layout/query.rs#l1016
- return display switch
- {
- "block" or "flow-root" or "flex" or "grid" or "table" or "table-caption" => true,
- _ => false,
- };
- }
-
- private static Boolean IsBlockLevel(INode node)
- {
- // https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements
- return node.NodeName switch
- {
- "ADDRESS" or "ARTICLE" or "ASIDE" or "BLOCKQUOTE" or "CANVAS" or "DD" or "DIV" or "DL" or "DT" or "FIELDSET" or "FIGCAPTION" or "FIGURE" or "FOOTER" or "FORM" or "H1" or "H2" or "H3" or "H4" or "H5" or "H6" or "HEADER" or "GROUP" or "HR" or "LI" or "MAIN" or "NAV" or "NOSCRIPT" or "OL" or "OPTION" or "OUTPUT" or "P" or "PRE" or "SECTION" or "TABLE" or "TFOOT" or "UL" or "VIDEO" => true,
- _ => false,
- };
- }
-
- private static Boolean IsWhiteSpace(Char c) => Char.IsWhiteSpace(c) && c != Symbols.NoBreakSpace;
-
- private static TextStyleInfo GetTextStyleInfo(ICssStyleDeclaration? style, Dictionary cache)
- {
- if (style is null)
- {
- return default;
- }
-
- if (cache.TryGetValue(style, out var info))
- {
- return info;
- }
-
- info = new TextStyleInfo(style.GetWhiteSpace(), style.GetTextTransform());
- cache[style] = info;
- return info;
- }
-
- private static void ProcessText(String text, StringBuilder sb, String? whiteSpace, String? textTransform, Boolean lastLine, Dictionary requiredLineBreakCounts)
- {
- var startIndex = sb.Length;
- var isWhiteSpace = startIndex <= 0 || IsWhiteSpace(sb[startIndex - 1]) || (requiredLineBreakCounts.ContainsKey(startIndex) && IsWhiteSpace(text[0]));
-
- for (var i = 0; i < text.Length; i++)
- {
- var c = text[i];
-
- if (Char.IsWhiteSpace(c) && c != Symbols.NoBreakSpace)
- {
- // https://drafts.csswg.org/css-text/#white-space-property
- switch (whiteSpace)
- {
- case "pre":
- case "pre-wrap":
- break;
- case "pre-line":
- if (c == Symbols.Space || c == Symbols.Tab)
- {
- if (isWhiteSpace)
- {
- continue;
- }
-
- c = Symbols.Space;
- }
- break;
- case "nowrap":
- case "normal":
- default:
- if (isWhiteSpace)
- {
- continue;
- }
-
- c = Symbols.Space;
- break;
- }
-
- isWhiteSpace = true;
- }
- else
- {
- // https://drafts.csswg.org/css-text/#propdef-text-transform
- switch (textTransform)
- {
- case "uppercase":
- c = Char.ToUpperInvariant(c);
- break;
- case "lowercase":
- c = Char.ToLowerInvariant(c);
- break;
- case "capitalize":
- if (isWhiteSpace)
- {
- c = Char.ToUpperInvariant(c);
- }
- break;
- case "none":
- default:
- break;
- }
-
- isWhiteSpace = false;
- }
-
- sb.Append(c);
- }
-
- // ended with whitespace
- if (isWhiteSpace && lastLine)
- {
- for (var offset = sb.Length - 1; offset >= startIndex; offset--)
- {
- var c = sb[offset];
-
- if (!Char.IsWhiteSpace(c) || c == Symbols.NoBreakSpace)
- {
- sb.Remove(offset + 1, sb.Length - 1 - offset);
- break;
- }
- }
- }
- }
-
- private readonly struct TextStyleInfo
- {
- public TextStyleInfo(String? whiteSpace, String? textTransform)
- {
- WhiteSpace = whiteSpace;
- TextTransform = textTransform;
- }
-
- public String? WhiteSpace { get; }
-
- public String? TextTransform { get; }
- }
}
}
diff --git a/src/AngleSharp.Css/Extensions/RenderNodeExtensions.cs b/src/AngleSharp.Css/Extensions/RenderNodeExtensions.cs
index 8bc928e5..80a5fdc1 100644
--- a/src/AngleSharp.Css/Extensions/RenderNodeExtensions.cs
+++ b/src/AngleSharp.Css/Extensions/RenderNodeExtensions.cs
@@ -181,6 +181,14 @@ public static Boolean IsVisible(this IRenderNode node)
return false;
}
+ ///
+ /// Gets the rendered text (innerText) of the element of the given render node,
+ /// e.g. from a render tree that is already there, without styling anything again.
+ ///
+ /// The render node of the element.
+ /// The rendered text of the element.
+ public static String GetInnerText(this ElementRenderNode node) => InnerText.Get(node ?? throw new ArgumentNullException(nameof(node)));
+
///
/// Finds a particular render node based on the given reference node.
///
diff --git a/src/AngleSharp.Css/RenderTree/ElementRenderNode.cs b/src/AngleSharp.Css/RenderTree/ElementRenderNode.cs
index e1f5a844..db3e598b 100644
--- a/src/AngleSharp.Css/RenderTree/ElementRenderNode.cs
+++ b/src/AngleSharp.Css/RenderTree/ElementRenderNode.cs
@@ -4,6 +4,7 @@ namespace AngleSharp.Css.RenderTree
using AngleSharp.Dom;
using System;
using System.Collections.Generic;
+ using System.Linq;
using System.Threading;
///
@@ -13,14 +14,18 @@ public sealed class ElementRenderNode : IRenderNode
{
private readonly IElement _reference;
private readonly ElementRenderNode? _parent;
- private readonly IEnumerable _children;
private readonly ICssStyleDeclaration _computedStyle;
+ // The children of a partial render tree are only built when they are read.
+ private readonly RenderTreeBuilder.PendingChildren? _pendingChildren;
+ private IEnumerable? _children;
+ private List? _content;
// The specified style is only built when it is read: from the explicit style of the
// element and the specified style its parent had when it was built (or, for the root
// of a rendering, the given one).
private readonly ICssStyleDeclaration? _explicitStyle;
private readonly ICssStyleDeclaration? _inheritedStyle;
+ private readonly Func? _getInheritedStyle;
private readonly IBrowsingContext? _context;
private SpecifiedStyles? _specified;
@@ -56,24 +61,32 @@ public ElementRenderNode(
///
/// The specified style to inherit from, if not the one of the parent node.
///
+ ///
+ /// Gets the specified style to inherit from, if not the one of the parent node.
+ ///
/// The computed style of the element.
/// The context to create the specified style in.
+ /// Builds the children on first read, if not given.
internal ElementRenderNode(
IElement reference,
ElementRenderNode? parent,
- IEnumerable children,
+ IEnumerable? children,
ICssStyleDeclaration explicitStyle,
CssStyleDeclaration? inheritedStyle,
+ Func? getInheritedStyle,
ICssStyleDeclaration computedStyle,
- IBrowsingContext context)
+ IBrowsingContext context,
+ RenderTreeBuilder.PendingChildren? pendingChildren)
{
_reference = reference;
_parent = parent;
_children = children;
_explicitStyle = explicitStyle;
_inheritedStyle = inheritedStyle;
+ _getInheritedStyle = getInheritedStyle;
_context = context;
_computedStyle = computedStyle;
+ _pendingChildren = pendingChildren;
}
///
@@ -86,7 +99,7 @@ internal ElementRenderNode(
///
/// Gets the contained render nodes.
///
- public IEnumerable Children => _children;
+ public IEnumerable Children => Volatile.Read(ref _children) ?? BuildChildren();
///
/// Gets the parent of the node.
@@ -103,7 +116,59 @@ internal ElementRenderNode(
///
public ICssStyleDeclaration ComputedStyle => _computedStyle;
- private Boolean InheritsFromParent => _inheritedStyle is null && _parent is not null;
+ private Boolean InheritsFromParent => _inheritedStyle is null && _getInheritedStyle is null && _parent is not null;
+
+ ///
+ /// Gets the children without the ::before and ::after, which are only built when
+ /// all children are read.
+ ///
+ internal List Content
+ {
+ get
+ {
+ var content = Volatile.Read(ref _content);
+
+ if (content is null)
+ {
+ content = _pendingChildren?.BuildContent(this) ?? Children.Where(m => m.Ref is not IPseudoElement).ToList();
+ // another thread may have been faster: then its children are the ones of the node
+ content = Interlocked.CompareExchange(ref _content, content, null) ?? content;
+ }
+
+ return content;
+ }
+ }
+
+ ///
+ /// Forgets the children without the ::before and ::after, so they can be collected
+ /// once nothing else refers to them; reading them again builds them again. Only for
+ /// a partial tree that nobody else sees.
+ ///
+ internal void ReleaseContent() => Volatile.Write(ref _content, null);
+
+ private IEnumerable BuildChildren()
+ {
+ var pending = _pendingChildren!;
+ var before = pending.BuildPseudoElement(this, "before");
+ var content = Content;
+ var after = pending.BuildPseudoElement(this, "after");
+ var children = new List(content.Count + 2);
+
+ if (before is not null)
+ {
+ children.Add(before);
+ }
+
+ children.AddRange(content);
+
+ if (after is not null)
+ {
+ children.Add(after);
+ }
+
+ // another thread may have been faster: then its children are the ones of the node
+ return Interlocked.CompareExchange(ref _children, children, null) ?? children;
+ }
private SpecifiedStyles GetSpecifiedStyles()
{
@@ -132,7 +197,7 @@ private SpecifiedStyles GetSpecifiedStyles()
private SpecifiedStyles BuildSpecifiedStyles()
{
- var inherited = InheritsFromParent ? Volatile.Read(ref _parent!._specified)!.ForChildren : _inheritedStyle;
+ var inherited = InheritsFromParent ? Volatile.Read(ref _parent!._specified)!.ForChildren : _inheritedStyle ?? _getInheritedStyle?.Invoke();
var style = new CssStyleDeclaration(_context);
style.SetDeclarations(_explicitStyle!);
diff --git a/src/AngleSharp.Css/RenderTree/InnerText.cs b/src/AngleSharp.Css/RenderTree/InnerText.cs
new file mode 100644
index 00000000..17aa169a
--- /dev/null
+++ b/src/AngleSharp.Css/RenderTree/InnerText.cs
@@ -0,0 +1,402 @@
+#nullable enable
+namespace AngleSharp.Css.RenderTree
+{
+ using AngleSharp.Css.Dom;
+ using AngleSharp.Dom;
+ using AngleSharp.Html.Dom;
+ using AngleSharp.Text;
+ using System;
+ using System.Collections.Generic;
+ using System.Linq;
+ using System.Text;
+
+ ///
+ /// Collects the rendered text of an element (innerText) from its render tree:
+ /// https://html.spec.whatwg.org/multipage/dom.html#the-innertext-idl-attribute
+ ///
+ static class InnerText
+ {
+ ///
+ /// Gets the rendered text of the element, from a partial render tree that only
+ /// styles what is needed, e.g. not the content of hidden elements.
+ ///
+ public static String Get(IElement element)
+ {
+ var window = element.Owner?.DefaultView;
+
+ if (window is null)
+ {
+ return element.TextContent;
+ }
+
+ var builder = RenderTreeBuilder.GetInstance(window);
+ // nobody else sees this tree: what has been walked can be released on the way
+ return Get(builder.RenderPartial(element, builder.DefaultDevice), true);
+ }
+
+ ///
+ /// Gets the rendered text of the element of the given render node.
+ ///
+ public static String Get(ElementRenderNode node) => Get(node, false);
+
+ ///
+ /// Gets the rendered text of the element of the given render node, releasing the
+ /// children of every node once it is walked if the tree is the walk's own: a tree
+ /// that stays reachable until the end makes the garbage collector copy all of it.
+ ///
+ private static String Get(ElementRenderNode node, Boolean release)
+ {
+ var element = node.Ref;
+ var display = node.ComputedStyle.GetDisplay();
+ var hidden = !String.IsNullOrEmpty(display) ? display == CssKeywords.None : (element as IHtmlElement)?.IsHidden ?? false;
+
+ // an element that is not being rendered gives its text content
+ if (hidden)
+ {
+ return element.TextContent;
+ }
+
+ var sb = StringBuilderPool.Obtain();
+ var requiredLineBreakCounts = new Dictionary();
+ var textStyleCache = new Dictionary();
+ Collect(node, null, sb, requiredLineBreakCounts, textStyleCache, release);
+
+ // Remove any runs of consecutive required line break count items at the start or end of results.
+ requiredLineBreakCounts.Remove(0);
+ requiredLineBreakCounts.Remove(sb.Length);
+ var offset = 0;
+
+ // SortedDictionary would be nicer
+ foreach (var keyval in requiredLineBreakCounts.OrderBy(kv => kv.Key))
+ {
+ var index = keyval.Key + offset;
+ sb.Insert(index, new String(Symbols.LineFeed, keyval.Value));
+ offset += keyval.Value;
+ }
+
+ return sb.ToPool();
+ }
+
+ private static void Collect(IRenderNode node, ElementRenderNode? nextElement, StringBuilder sb, Dictionary requiredLineBreakCounts, Dictionary textStyleCache, Boolean release)
+ {
+ if (!HasCssBox(node.Ref))
+ {
+ return;
+ }
+
+ var style = (node as ElementRenderNode)?.ComputedStyle;
+ var hidden = new Nullable();
+
+ if (style is not null)
+ {
+ var display = style.GetDisplay();
+ var visibility = style.GetVisibility();
+
+ if (!String.IsNullOrEmpty(display))
+ {
+ hidden = display == CssKeywords.None;
+ }
+
+ if (!String.IsNullOrEmpty(visibility) && hidden != true)
+ {
+ hidden = visibility != CssKeywords.Visible;
+ }
+ }
+
+ // the children of a hidden element are never read, i.e., not even built
+ if (hidden ?? (node.Ref as IHtmlElement)?.IsHidden ?? false)
+ {
+ return;
+ }
+
+ var startIndex = sb.Length;
+
+ if (node is ElementRenderNode element)
+ {
+ var children = GetChildren(element);
+
+ for (var i = 0; i < children.Count; i++)
+ {
+ Collect(children[i], NextElement(children, i), sb, requiredLineBreakCounts, textStyleCache, release);
+ }
+
+ // the siblings stay, as the next sibling's style decides on the separator
+ if (release)
+ {
+ element.ReleaseContent();
+ }
+ }
+
+ if (node is TextRenderNode text)
+ {
+ var next = text.Ref.NextSibling;
+ var lastLine = next is null || String.IsNullOrEmpty(next.TextContent) || next is IHtmlBreakRowElement;
+ var styleInfo = GetTextStyleInfo((text.Parent as ElementRenderNode)?.ComputedStyle, textStyleCache);
+ ProcessText(text.Ref.Data, sb, styleInfo.WhiteSpace, styleInfo.TextTransform, lastLine, requiredLineBreakCounts);
+ }
+ else if (node.Ref is IHtmlBreakRowElement)
+ {
+ sb.Append(Symbols.LineFeed);
+ }
+ else if (style is not null && IsTableCell(node.Ref, style))
+ {
+ if (nextElement is not null && IsTableCell(nextElement.Ref, nextElement.ComputedStyle))
+ {
+ sb.Append(Symbols.Tab);
+ }
+ }
+ else if (style is not null && IsTableRow(node.Ref, style))
+ {
+ if (nextElement is not null && IsTableRow(nextElement.Ref, nextElement.ComputedStyle))
+ {
+ sb.Append(Symbols.LineFeed);
+ }
+ }
+ else if (node.Ref is IHtmlParagraphElement)
+ {
+ RequireLineBreaks(requiredLineBreakCounts, startIndex, 2);
+ RequireLineBreaks(requiredLineBreakCounts, sb.Length, 2);
+ }
+
+ if ((style is not null && IsBlockLevelDisplay(style.GetDisplay())) || IsBlockLevel(node.Ref))
+ {
+ RequireLineBreaks(requiredLineBreakCounts, startIndex, 1);
+ RequireLineBreaks(requiredLineBreakCounts, sb.Length, 1);
+ }
+ }
+
+ ///
+ /// Gets the render nodes of the element's own child nodes, in tree order. Generated
+ /// content is left out, and so is the shadow tree of a shadow host: its light children
+ /// count if they are rendered, i.e., assigned to a slot of the shadow tree.
+ ///
+ private static List GetChildren(ElementRenderNode node)
+ {
+ var element = node.Ref;
+
+ if (element is not IPseudoElement && element.ShadowRoot is not null)
+ {
+ var rendered = FindRenderedChildren(node);
+ var children = new List();
+
+ foreach (var child in element.ChildNodes)
+ {
+ if (rendered.TryGetValue(child, out var renderNode))
+ {
+ children.Add(renderNode);
+ }
+ }
+
+ return children;
+ }
+
+ return node.Content;
+ }
+
+ ///
+ /// Finds the render nodes of the host's own child nodes, which are placed in the slots
+ /// anywhere in its shadow tree.
+ ///
+ private static Dictionary FindRenderedChildren(ElementRenderNode host)
+ {
+ var rendered = new Dictionary();
+ var pending = new Stack(host.Content);
+
+ while (pending.Count > 0)
+ {
+ var current = pending.Pop();
+
+ if (Object.ReferenceEquals(current.Ref.Parent, host.Ref))
+ {
+ rendered[current.Ref] = current;
+ }
+ else if (current is ElementRenderNode element)
+ {
+ foreach (var child in element.Content)
+ {
+ pending.Push(child);
+ }
+ }
+ }
+
+ return rendered;
+ }
+
+ private static ElementRenderNode? NextElement(List children, Int32 index)
+ {
+ for (var i = index + 1; i < children.Count; i++)
+ {
+ if (children[i] is ElementRenderNode element)
+ {
+ return element;
+ }
+ }
+
+ return null;
+ }
+
+ private static Boolean IsTableCell(INode node, ICssStyleDeclaration style) =>
+ (node is IHtmlTableCellElement && String.IsNullOrEmpty(style.GetDisplay())) || style.GetDisplay() == CssKeywords.TableCell;
+
+ private static Boolean IsTableRow(INode node, ICssStyleDeclaration style) =>
+ (node is IHtmlTableRowElement && String.IsNullOrEmpty(style.GetDisplay())) || style.GetDisplay() == CssKeywords.TableRow;
+
+ private static void RequireLineBreaks(Dictionary requiredLineBreakCounts, Int32 index, Int32 count)
+ {
+ requiredLineBreakCounts.TryGetValue(index, out var current);
+
+ if (current < count)
+ {
+ requiredLineBreakCounts[index] = count;
+ }
+ }
+
+ private static Boolean HasCssBox(INode node)
+ {
+ return node.NodeName switch
+ {
+ "CANVAS" or "COL" or "COLGROUP" or "DETAILS" or "FRAME" or "FRAMESET" or "IFRAME" or "IMG" or "INPUT" or "LINK" or "METER" or "PROGRESS" or "TEMPLATE" or "TEXTAREA" or "VIDEO" or "WBR" or "SCRIPT" or "STYLE" or "NOSCRIPT" => false,
+ _ => true,
+ };
+ }
+
+ private static Boolean IsBlockLevelDisplay(String display)
+ {
+ // https://www.w3.org/TR/css-display-3/#display-value-summary
+ // https://hg.mozilla.org/mozilla-central/file/0acceb224b7d/servo/components/layout/query.rs#l1016
+ return display switch
+ {
+ "block" or "flow-root" or "flex" or "grid" or "table" or "table-caption" => true,
+ _ => false,
+ };
+ }
+
+ private static Boolean IsBlockLevel(INode node)
+ {
+ // https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements
+ return node.NodeName switch
+ {
+ "ADDRESS" or "ARTICLE" or "ASIDE" or "BLOCKQUOTE" or "CANVAS" or "DD" or "DIV" or "DL" or "DT" or "FIELDSET" or "FIGCAPTION" or "FIGURE" or "FOOTER" or "FORM" or "H1" or "H2" or "H3" or "H4" or "H5" or "H6" or "HEADER" or "GROUP" or "HR" or "LI" or "MAIN" or "NAV" or "NOSCRIPT" or "OL" or "OPTION" or "OUTPUT" or "P" or "PRE" or "SECTION" or "TABLE" or "TFOOT" or "UL" or "VIDEO" => true,
+ _ => false,
+ };
+ }
+
+ private static Boolean IsWhiteSpace(Char c) => Char.IsWhiteSpace(c) && c != Symbols.NoBreakSpace;
+
+ private static TextStyleInfo GetTextStyleInfo(ICssStyleDeclaration? style, Dictionary cache)
+ {
+ if (style is null)
+ {
+ return default;
+ }
+
+ if (cache.TryGetValue(style, out var info))
+ {
+ return info;
+ }
+
+ info = new TextStyleInfo(style.GetWhiteSpace(), style.GetTextTransform());
+ cache[style] = info;
+ return info;
+ }
+
+ private static void ProcessText(String text, StringBuilder sb, String? whiteSpace, String? textTransform, Boolean lastLine, Dictionary requiredLineBreakCounts)
+ {
+ var startIndex = sb.Length;
+ var isWhiteSpace = startIndex <= 0 || IsWhiteSpace(sb[startIndex - 1]) || (requiredLineBreakCounts.ContainsKey(startIndex) && IsWhiteSpace(text[0]));
+
+ for (var i = 0; i < text.Length; i++)
+ {
+ var c = text[i];
+
+ if (Char.IsWhiteSpace(c) && c != Symbols.NoBreakSpace)
+ {
+ // https://drafts.csswg.org/css-text/#white-space-property
+ switch (whiteSpace)
+ {
+ case "pre":
+ case "pre-wrap":
+ break;
+ case "pre-line":
+ if (c == Symbols.Space || c == Symbols.Tab)
+ {
+ if (isWhiteSpace)
+ {
+ continue;
+ }
+
+ c = Symbols.Space;
+ }
+ break;
+ case "nowrap":
+ case "normal":
+ default:
+ if (isWhiteSpace)
+ {
+ continue;
+ }
+
+ c = Symbols.Space;
+ break;
+ }
+
+ isWhiteSpace = true;
+ }
+ else
+ {
+ // https://drafts.csswg.org/css-text/#propdef-text-transform
+ switch (textTransform)
+ {
+ case "uppercase":
+ c = Char.ToUpperInvariant(c);
+ break;
+ case "lowercase":
+ c = Char.ToLowerInvariant(c);
+ break;
+ case "capitalize":
+ if (isWhiteSpace)
+ {
+ c = Char.ToUpperInvariant(c);
+ }
+ break;
+ case "none":
+ default:
+ break;
+ }
+
+ isWhiteSpace = false;
+ }
+
+ sb.Append(c);
+ }
+
+ // ended with whitespace
+ if (isWhiteSpace && lastLine)
+ {
+ for (var offset = sb.Length - 1; offset >= startIndex; offset--)
+ {
+ var c = sb[offset];
+
+ if (!Char.IsWhiteSpace(c) || c == Symbols.NoBreakSpace)
+ {
+ sb.Remove(offset + 1, sb.Length - 1 - offset);
+ break;
+ }
+ }
+ }
+ }
+
+ private readonly struct TextStyleInfo
+ {
+ public TextStyleInfo(String? whiteSpace, String? textTransform)
+ {
+ WhiteSpace = whiteSpace;
+ TextTransform = textTransform;
+ }
+
+ public String? WhiteSpace { get; }
+
+ public String? TextTransform { get; }
+ }
+ }
+}
diff --git a/src/AngleSharp.Css/RenderTree/RenderTreeBuilder.cs b/src/AngleSharp.Css/RenderTree/RenderTreeBuilder.cs
index 44254234..414aec26 100644
--- a/src/AngleSharp.Css/RenderTree/RenderTreeBuilder.cs
+++ b/src/AngleSharp.Css/RenderTree/RenderTreeBuilder.cs
@@ -86,6 +86,21 @@ public ElementRenderNode RenderElement(IElement element, ElementRenderNode paren
return RenderElement(element, collection, parent, parentSpecifiedStyle, parent.ComputedStyle);
}
+ ///
+ /// Renders the element into a partial render tree: the children of a node are only
+ /// built when they are read, so e.g. the content of a hidden element is never styled.
+ /// The parts are built from the DOM and style sheets of the moment they are read, and
+ /// the tree is not remembered (as GetElementStyle does for complete ones).
+ ///
+ public ElementRenderNode RenderPartial(IElement element, IRenderDevice device)
+ {
+ var collection = CreateStyleCollection(device);
+ var parent = element.ParentElement;
+ var parentComputedStyle = parent is not null ? collection.ComputeDeclarations(parent) : null;
+ var getInheritedStyle = parent is not null ? () => collection.GetDeclarations(parent) : default(Func);
+ return RenderElement(element, collection, null, null, parentComputedStyle, getInheritedStyle: getInheritedStyle, partial: true);
+ }
+
private CssStyleDeclaration Copy(ICssStyleDeclaration style)
{
var copy = new CssStyleDeclaration(_context);
@@ -107,7 +122,9 @@ private ElementRenderNode RenderElement(
CssStyleDeclaration? inheritedStyle,
ICssStyleDeclaration? parentComputedStyle,
ICssStyleDeclaration? explicitStyle = null,
- StyleCollection? slottedCollection = null)
+ StyleCollection? slottedCollection = null,
+ Func? getInheritedStyle = null,
+ Boolean partial = false)
{
var shadowCollection = CreateShadowCollection(element, collection);
explicitStyle ??= shadowCollection is not null
@@ -116,11 +133,47 @@ private ElementRenderNode RenderElement(
var computeContext = new CssComputeContext(collection.Device, _context, explicitStyle, parentComputedStyle);
var computedStyle = explicitStyle.PrepareComputedDeclarations(parentComputedStyle!, computeContext).Compute(computeContext).Blockify(element);
- var children = new List();
+ var pending = partial ? new PendingChildren(this, collection, shadowCollection, slottedCollection) : null;
+ var children = partial ? null : new List();
// inherits the specified style of the parent node, unless another one is given
- var node = new ElementRenderNode(element, parent, children, explicitStyle, inheritedStyle, computedStyle, _context);
+ var node = new ElementRenderNode(element, parent, children, explicitStyle, inheritedStyle, getInheritedStyle, computedStyle, _context, pending);
+
+ if (children is not null)
+ {
+ _renderedNodes[element] = node;
+ AddChildren(node, children, collection, shadowCollection, slottedCollection, false);
+ }
+
+ return node;
+ }
+
+ private void AddChildren(ElementRenderNode node, List children, StyleCollection collection, StyleCollection? shadowCollection, StyleCollection? slottedCollection, Boolean partial)
+ {
+ var element = node.Ref;
+ var beforeNode = element is IPseudoElement ? null : RenderPseudoElement(element, "before", collection, node, node.ComputedStyle, partial);
+
+ if (beforeNode is not null)
+ {
+ children.Add(beforeNode);
+ }
+
+ AddContent(node, children, collection, shadowCollection, slottedCollection, partial);
+
+ var afterNode = element is IPseudoElement ? null : RenderPseudoElement(element, "after", collection, node, node.ComputedStyle, partial);
+
+ if (afterNode is not null)
+ {
+ children.Add(afterNode);
+ }
+ }
- _renderedNodes[element] = node;
+ ///
+ /// Adds the children of the node without its ::before and ::after.
+ ///
+ private void AddContent(ElementRenderNode node, List children, StyleCollection collection, StyleCollection? shadowCollection, StyleCollection? slottedCollection, Boolean partial)
+ {
+ var element = node.Ref;
+ var computedStyle = node.ComputedStyle;
if (element is IPseudoElement)
{
@@ -131,36 +184,56 @@ private ElementRenderNode RenderElement(
// this same element, since a pseudo-element has no attributes of its own to differ from
// its host's).
children.Add(new TextRenderNode(_window.Document.CreateTextNode(ContentDeclaration.Stringify(computedStyle, element)), node));
- return node;
- }
-
- var beforeNode = RenderPseudoElement(element, "before", collection, node, computedStyle);
-
- if (beforeNode is not null)
- {
- children.Add(beforeNode);
+ return;
}
foreach (var child in GetFlatChildren(element, collection, shadowCollection, slottedCollection))
{
if (child.Node is IElement childElement)
{
- children.Add(RenderElement(childElement, child.Collection, node, null, computedStyle, slottedCollection: child.SlottedCollection));
+ children.Add(RenderElement(childElement, child.Collection, node, null, computedStyle, slottedCollection: child.SlottedCollection, partial: partial));
}
else if (child.Node is IText childText)
{
children.Add(new TextRenderNode(childText, node));
}
}
+ }
+
+ ///
+ /// What is needed to build the children of a node later on.
+ ///
+ internal sealed class PendingChildren
+ {
+ private readonly RenderTreeBuilder _builder;
+ private readonly StyleCollection _collection;
+ private readonly StyleCollection? _shadowCollection;
+ private readonly StyleCollection? _slottedCollection;
- var afterNode = RenderPseudoElement(element, "after", collection, node, computedStyle);
+ public PendingChildren(RenderTreeBuilder builder, StyleCollection collection, StyleCollection? shadowCollection, StyleCollection? slottedCollection)
+ {
+ _builder = builder;
+ _collection = collection;
+ _shadowCollection = shadowCollection;
+ _slottedCollection = slottedCollection;
+ }
- if (afterNode is not null)
+ ///
+ /// Builds the children of the node, without its ::before and ::after.
+ ///
+ public List BuildContent(ElementRenderNode node)
{
- children.Add(afterNode);
+ var children = new List();
+ _builder.AddContent(node, children, _collection, _shadowCollection, _slottedCollection, true);
+ return children;
}
- return node;
+ ///
+ /// Builds the ::before or ::after of the node, if it has one.
+ ///
+ public ElementRenderNode? BuildPseudoElement(ElementRenderNode node, String name) => node.Ref is IPseudoElement ?
+ null :
+ _builder.RenderPseudoElement(node.Ref, name, _collection, node, node.ComputedStyle, true);
}
///
@@ -255,7 +328,8 @@ public FlatChild(INode node, StyleCollection collection, StyleCollection? slotte
String name,
StyleCollection collection,
ElementRenderNode parent,
- ICssStyleDeclaration parentComputedStyle)
+ ICssStyleDeclaration parentComputedStyle,
+ Boolean partial)
{
var pseudo = element.Pseudo(name);
@@ -275,7 +349,7 @@ public FlatChild(INode node, StyleCollection collection, StyleCollection? slotte
return null;
}
- var node = RenderElement(pseudo, collection, parent, null, parentComputedStyle, explicitStyle);
+ var node = RenderElement(pseudo, collection, parent, null, parentComputedStyle, explicitStyle, partial: partial);
// Per spec, `content: none` (and the initial/unset `normal`, equivalent for these two
// pseudo-elements specifically) means no box is generated at all - not merely an empty
From c8ee9e275c51832fc99d8d8a3fdb6fa08ef004db Mon Sep 17 00:00:00 2001
From: Michael Thyregod <2386496+michaelthyregod@users.noreply.github.com>
Date: Wed, 4 Nov 2026 16:54:43 +0100
Subject: [PATCH 05/13] Add the CHANGELOG entries
---
CHANGELOG.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ebc76758..70cc68a1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,8 @@
Released on Friday, November 6 2026.
- Added support for `::selection` pseudo elements
+- Improved rendering by building pseudo-elements and specified styles only when needed (#266) @michaelthyregod
+- Improved `GetInnerText` by using the render tree, skipping hidden content and reading shadow hosts through their slots (#267) @michaelthyregod
# 1.3.2
From 1e9430b9d6f58f5c5060ed9bb1e3472a3c4c0d78 Mon Sep 17 00:00:00 2001
From: Michael Thyregod <2386496+michaelthyregod@users.noreply.github.com>
Date: Wed, 4 Nov 2026 17:06:49 +0100
Subject: [PATCH 06/13] Keep what only a partial render tree needs out of the
render nodes
---
.../RenderTree/ElementRenderNode.cs | 45 +++++--------------
.../RenderTree/RenderTreeBuilder.cs | 42 +++++++++++++----
2 files changed, 45 insertions(+), 42 deletions(-)
diff --git a/src/AngleSharp.Css/RenderTree/ElementRenderNode.cs b/src/AngleSharp.Css/RenderTree/ElementRenderNode.cs
index db3e598b..1e1a2bc4 100644
--- a/src/AngleSharp.Css/RenderTree/ElementRenderNode.cs
+++ b/src/AngleSharp.Css/RenderTree/ElementRenderNode.cs
@@ -15,17 +15,16 @@ public sealed class ElementRenderNode : IRenderNode
private readonly IElement _reference;
private readonly ElementRenderNode? _parent;
private readonly ICssStyleDeclaration _computedStyle;
- // The children of a partial render tree are only built when they are read.
+ // The children of a partial render tree are only built when they are read; what only
+ // a partial tree needs is kept there, so a complete one has just this field in addition.
private readonly RenderTreeBuilder.PendingChildren? _pendingChildren;
private IEnumerable? _children;
- private List? _content;
// The specified style is only built when it is read: from the explicit style of the
// element and the specified style its parent had when it was built (or, for the root
// of a rendering, the given one).
private readonly ICssStyleDeclaration? _explicitStyle;
private readonly ICssStyleDeclaration? _inheritedStyle;
- private readonly Func? _getInheritedStyle;
private readonly IBrowsingContext? _context;
private SpecifiedStyles? _specified;
@@ -61,9 +60,6 @@ public ElementRenderNode(
///
/// The specified style to inherit from, if not the one of the parent node.
///
- ///
- /// Gets the specified style to inherit from, if not the one of the parent node.
- ///
/// The computed style of the element.
/// The context to create the specified style in.
/// Builds the children on first read, if not given.
@@ -73,7 +69,6 @@ internal ElementRenderNode(
IEnumerable? children,
ICssStyleDeclaration explicitStyle,
CssStyleDeclaration? inheritedStyle,
- Func? getInheritedStyle,
ICssStyleDeclaration computedStyle,
IBrowsingContext context,
RenderTreeBuilder.PendingChildren? pendingChildren)
@@ -83,7 +78,6 @@ internal ElementRenderNode(
_children = children;
_explicitStyle = explicitStyle;
_inheritedStyle = inheritedStyle;
- _getInheritedStyle = getInheritedStyle;
_context = context;
_computedStyle = computedStyle;
_pendingChildren = pendingChildren;
@@ -116,41 +110,26 @@ internal ElementRenderNode(
///
public ICssStyleDeclaration ComputedStyle => _computedStyle;
- private Boolean InheritsFromParent => _inheritedStyle is null && _getInheritedStyle is null && _parent is not null;
+ private Boolean InheritsFromParent => _inheritedStyle is null && _pendingChildren?.GetInheritedStyle is null && _parent is not null;
///
- /// Gets the children without the ::before and ::after, which are only built when
- /// all children are read.
+ /// Gets the children without the ::before and ::after. In a partial tree these are only
+ /// built when all children are read; in a complete one they are taken from them.
///
- internal List Content
- {
- get
- {
- var content = Volatile.Read(ref _content);
-
- if (content is null)
- {
- content = _pendingChildren?.BuildContent(this) ?? Children.Where(m => m.Ref is not IPseudoElement).ToList();
- // another thread may have been faster: then its children are the ones of the node
- content = Interlocked.CompareExchange(ref _content, content, null) ?? content;
- }
-
- return content;
- }
- }
+ internal List Content => _pendingChildren?.GetContent(this) ?? Children.Where(m => m.Ref is not IPseudoElement).ToList();
///
- /// Forgets the children without the ::before and ::after, so they can be collected
- /// once nothing else refers to them; reading them again builds them again. Only for
- /// a partial tree that nobody else sees.
+ /// Forgets the children without the ::before and ::after of a partial tree, so they can
+ /// be collected once nothing else refers to them; reading them again builds them again.
+ /// Only for a partial tree that nobody else sees.
///
- internal void ReleaseContent() => Volatile.Write(ref _content, null);
+ internal void ReleaseContent() => _pendingChildren?.ReleaseContent();
private IEnumerable BuildChildren()
{
var pending = _pendingChildren!;
var before = pending.BuildPseudoElement(this, "before");
- var content = Content;
+ var content = pending.GetContent(this);
var after = pending.BuildPseudoElement(this, "after");
var children = new List(content.Count + 2);
@@ -197,7 +176,7 @@ private SpecifiedStyles GetSpecifiedStyles()
private SpecifiedStyles BuildSpecifiedStyles()
{
- var inherited = InheritsFromParent ? Volatile.Read(ref _parent!._specified)!.ForChildren : _inheritedStyle ?? _getInheritedStyle?.Invoke();
+ var inherited = InheritsFromParent ? Volatile.Read(ref _parent!._specified)!.ForChildren : _inheritedStyle ?? _pendingChildren?.GetInheritedStyle?.Invoke();
var style = new CssStyleDeclaration(_context);
style.SetDeclarations(_explicitStyle!);
diff --git a/src/AngleSharp.Css/RenderTree/RenderTreeBuilder.cs b/src/AngleSharp.Css/RenderTree/RenderTreeBuilder.cs
index 414aec26..ce5a739f 100644
--- a/src/AngleSharp.Css/RenderTree/RenderTreeBuilder.cs
+++ b/src/AngleSharp.Css/RenderTree/RenderTreeBuilder.cs
@@ -11,6 +11,7 @@ namespace AngleSharp.Css.RenderTree
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
+ using System.Threading;
sealed class RenderTreeBuilder
{
@@ -133,10 +134,10 @@ private ElementRenderNode RenderElement(
var computeContext = new CssComputeContext(collection.Device, _context, explicitStyle, parentComputedStyle);
var computedStyle = explicitStyle.PrepareComputedDeclarations(parentComputedStyle!, computeContext).Compute(computeContext).Blockify(element);
- var pending = partial ? new PendingChildren(this, collection, shadowCollection, slottedCollection) : null;
+ var pending = partial ? new PendingChildren(this, collection, shadowCollection, slottedCollection, getInheritedStyle) : null;
var children = partial ? null : new List();
// inherits the specified style of the parent node, unless another one is given
- var node = new ElementRenderNode(element, parent, children, explicitStyle, inheritedStyle, getInheritedStyle, computedStyle, _context, pending);
+ var node = new ElementRenderNode(element, parent, children, explicitStyle, inheritedStyle, computedStyle, _context, pending);
if (children is not null)
{
@@ -201,7 +202,8 @@ private void AddContent(ElementRenderNode node, List children, Styl
}
///
- /// What is needed to build the children of a node later on.
+ /// What is needed to build the children of a node of a partial tree later on, and what
+ /// only such a node needs.
///
internal sealed class PendingChildren
{
@@ -209,25 +211,47 @@ internal sealed class PendingChildren
private readonly StyleCollection _collection;
private readonly StyleCollection? _shadowCollection;
private readonly StyleCollection? _slottedCollection;
+ private List? _content;
- public PendingChildren(RenderTreeBuilder builder, StyleCollection collection, StyleCollection? shadowCollection, StyleCollection? slottedCollection)
+ public PendingChildren(RenderTreeBuilder builder, StyleCollection collection, StyleCollection? shadowCollection, StyleCollection? slottedCollection, Func? getInheritedStyle)
{
_builder = builder;
_collection = collection;
_shadowCollection = shadowCollection;
_slottedCollection = slottedCollection;
+ GetInheritedStyle = getInheritedStyle;
}
///
- /// Builds the children of the node, without its ::before and ::after.
+ /// Gets the specified style to inherit from for the root of the partial tree, if
+ /// it has a parent element.
///
- public List BuildContent(ElementRenderNode node)
+ public Func? GetInheritedStyle { get; }
+
+ ///
+ /// Gets the children of the node without its ::before and ::after, which are built
+ /// on first read.
+ ///
+ public List GetContent(ElementRenderNode node)
{
- var children = new List();
- _builder.AddContent(node, children, _collection, _shadowCollection, _slottedCollection, true);
- return children;
+ var content = Volatile.Read(ref _content);
+
+ if (content is null)
+ {
+ content = new List();
+ _builder.AddContent(node, content, _collection, _shadowCollection, _slottedCollection, true);
+ // another thread may have been faster: then its children are the ones of the node
+ content = Interlocked.CompareExchange(ref _content, content, null) ?? content;
+ }
+
+ return content;
}
+ ///
+ /// Forgets the children without the ::before and ::after.
+ ///
+ public void ReleaseContent() => Volatile.Write(ref _content, null);
+
///
/// Builds the ::before or ::after of the node, if it has one.
///
From 5b1fb5d2f8d07e12689525dc519757c9d8ee1a2d Mon Sep 17 00:00:00 2001
From: Michael Thyregod <2386496+michaelthyregod@users.noreply.github.com>
Date: Wed, 4 Nov 2026 17:02:08 +0100
Subject: [PATCH 07/13] Read the quirks mode without reflection
---
.../Styling/PresentationalHintTests.cs | 13 +++++++++++++
.../Dom/Internal/PresentationalHints.cs | 12 +++++++++++-
src/AngleSharp.Css/Parser/CssBuilder.cs | 2 +-
3 files changed, 25 insertions(+), 2 deletions(-)
diff --git a/src/AngleSharp.Css.Tests/Styling/PresentationalHintTests.cs b/src/AngleSharp.Css.Tests/Styling/PresentationalHintTests.cs
index 0dbfb101..9c2a2ab3 100644
--- a/src/AngleSharp.Css.Tests/Styling/PresentationalHintTests.cs
+++ b/src/AngleSharp.Css.Tests/Styling/PresentationalHintTests.cs
@@ -91,6 +91,19 @@ public void StandardsModeHasNoneOfThem()
Assert.AreNotEqual("16px", Style("").GetPropertyValue("margin-bottom"));
}
+ // a limited-quirks document (compatMode "CSS1Compat") has no quirks
+ [TestCase("
", "text-align", "right")]
+ [TestCase("", "width", "")]
+ public void LimitedQuirksModeHasNoneOfThem(string html, string property, string expected)
+ {
+ const string doctype = "";
+ var context = BrowsingContext.New(Configuration.Default.WithCss());
+ var document = context.OpenAsync(request => request.Content($"{doctype}{html}")).Result;
+
+ Assert.AreEqual("CSS1Compat", document.CompatMode);
+ Assert.AreEqual(expected, document.GetElementById("t").ComputeCurrentStyle().GetPropertyValue(property));
+ }
+
[TestCase("", "width", "100px")]
[TestCase("", "margin-left", "20px")]
[TestCase("", "color", "rgba(0, 255, 0, 1)")]
diff --git a/src/AngleSharp.Css/Dom/Internal/PresentationalHints.cs b/src/AngleSharp.Css/Dom/Internal/PresentationalHints.cs
index d6607579..4412a468 100644
--- a/src/AngleSharp.Css/Dom/Internal/PresentationalHints.cs
+++ b/src/AngleSharp.Css/Dom/Internal/PresentationalHints.cs
@@ -1,6 +1,7 @@
namespace AngleSharp.Css.Dom
{
using AngleSharp.Dom;
+ using AngleSharp.Html.Construction;
using AngleSharp.Html.Dom;
using AngleSharp.Text;
using System;
@@ -14,6 +15,15 @@ namespace AngleSharp.Css.Dom
///
static class PresentationalHints
{
+ ///
+ /// Gets whether the document is in quirks mode, i.e. its compatMode is "BackCompat".
+ /// The mode is read directly: AngleSharp gets the compatMode string through reflection
+ /// on every read, which costs more than the rest of an element's cascade.
+ ///
+ public static Boolean IsQuirksMode(IDocument? document) => document is IConstructableDocument constructable
+ ? constructable.QuirksMode == QuirksMode.On
+ : document?.CompatMode == "BackCompat";
+
///
/// Gets the declarations the attributes of the element map to, if any.
///
@@ -26,7 +36,7 @@ static class PresentationalHints
var hints = new StringBuilder();
- if (element.Owner?.CompatMode == "BackCompat")
+ if (IsQuirksMode(element.Owner))
{
AddQuirks(hints, element);
}
diff --git a/src/AngleSharp.Css/Parser/CssBuilder.cs b/src/AngleSharp.Css/Parser/CssBuilder.cs
index 3d91e52e..64a90cd2 100644
--- a/src/AngleSharp.Css/Parser/CssBuilder.cs
+++ b/src/AngleSharp.Css/Parser/CssBuilder.cs
@@ -863,7 +863,7 @@ public void CreateDeclarationWith(ICssStyleSheet owner, ICssProperties propertie
value = ResolveRelativeUrls(owner, value);
}
- if ((owner?.OwnerNode?.Owner ?? _context.Active)?.CompatMode == "BackCompat")
+ if (PresentationalHints.IsQuirksMode(owner?.OwnerNode?.Owner ?? _context.Active))
{
value = ApplyQuirks(name, value);
}
From 53b4ec0e43eebd9aa46ca62e5365e5635c856176 Mon Sep 17 00:00:00 2001
From: Michael Thyregod <2386496+michaelthyregod@users.noreply.github.com>
Date: Thu, 5 Nov 2026 05:45:45 +0100
Subject: [PATCH 08/13] Add the CHANGELOG entry
---
CHANGELOG.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index af3c5198..e3768687 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,7 @@ Released on Friday, November 6 2026.
- Improved rendering by building pseudo-elements and specified styles only when needed
- Added support for `::selection` pseudo elements
- Improved `GetInnerText` by using the render tree, skipping hidden content and reading shadow hosts through their slots (#267) @michaelthyregod
+- Improved presentational hints by reading the quirks mode without reflection (#268) @michaelthyregod
# 1.3.2
From 35541d537fa9af11e98269582350d7b6aa1d4e46 Mon Sep 17 00:00:00 2001
From: Michael Thyregod <2386496+michaelthyregod@users.noreply.github.com>
Date: Thu, 5 Nov 2026 04:25:17 +0100
Subject: [PATCH 09/13] Keep the pending children of a render node in its
children field
A complete render node is back to the fields it had before #267: the children field holds either the children or, in a partial render tree, what builds them on first read.
---
.../RenderTree/ElementRenderNode.cs | 49 ++++++-------------
.../RenderTree/RenderTreeBuilder.cs | 34 +++++++++++++
2 files changed, 48 insertions(+), 35 deletions(-)
diff --git a/src/AngleSharp.Css/RenderTree/ElementRenderNode.cs b/src/AngleSharp.Css/RenderTree/ElementRenderNode.cs
index 1e1a2bc4..8e2e9600 100644
--- a/src/AngleSharp.Css/RenderTree/ElementRenderNode.cs
+++ b/src/AngleSharp.Css/RenderTree/ElementRenderNode.cs
@@ -15,10 +15,10 @@ public sealed class ElementRenderNode : IRenderNode
private readonly IElement _reference;
private readonly ElementRenderNode? _parent;
private readonly ICssStyleDeclaration _computedStyle;
- // The children of a partial render tree are only built when they are read; what only
- // a partial tree needs is kept there, so a complete one has just this field in addition.
- private readonly RenderTreeBuilder.PendingChildren? _pendingChildren;
- private IEnumerable? _children;
+ // Either the children (IEnumerable) or, in a partial render tree, what
+ // builds them on first read (RenderTreeBuilder.PendingChildren), which also keeps what
+ // only a partial tree needs: a complete node has no field for that.
+ private readonly Object _children;
// The specified style is only built when it is read: from the explicit style of the
// element and the specified style its parent had when it was built (or, for the root
@@ -75,12 +75,11 @@ internal ElementRenderNode(
{
_reference = reference;
_parent = parent;
- _children = children;
+ _children = (Object?)pendingChildren ?? children!;
_explicitStyle = explicitStyle;
_inheritedStyle = inheritedStyle;
_context = context;
_computedStyle = computedStyle;
- _pendingChildren = pendingChildren;
}
///
@@ -93,7 +92,11 @@ internal ElementRenderNode(
///
/// Gets the contained render nodes.
///
- public IEnumerable Children => Volatile.Read(ref _children) ?? BuildChildren();
+ public IEnumerable Children => _children is RenderTreeBuilder.PendingChildren pending
+ ? pending.GetChildren(this)
+ : (IEnumerable)_children;
+
+ private RenderTreeBuilder.PendingChildren? Pending => _children as RenderTreeBuilder.PendingChildren;
///
/// Gets the parent of the node.
@@ -110,44 +113,20 @@ internal ElementRenderNode(
///
public ICssStyleDeclaration ComputedStyle => _computedStyle;
- private Boolean InheritsFromParent => _inheritedStyle is null && _pendingChildren?.GetInheritedStyle is null && _parent is not null;
+ private Boolean InheritsFromParent => _inheritedStyle is null && Pending?.GetInheritedStyle is null && _parent is not null;
///
/// Gets the children without the ::before and ::after. In a partial tree these are only
/// built when all children are read; in a complete one they are taken from them.
///
- internal List Content => _pendingChildren?.GetContent(this) ?? Children.Where(m => m.Ref is not IPseudoElement).ToList();
+ internal List Content => Pending?.GetContent(this) ?? Children.Where(m => m.Ref is not IPseudoElement).ToList();
///
/// Forgets the children without the ::before and ::after of a partial tree, so they can
/// be collected once nothing else refers to them; reading them again builds them again.
/// Only for a partial tree that nobody else sees.
///
- internal void ReleaseContent() => _pendingChildren?.ReleaseContent();
-
- private IEnumerable BuildChildren()
- {
- var pending = _pendingChildren!;
- var before = pending.BuildPseudoElement(this, "before");
- var content = pending.GetContent(this);
- var after = pending.BuildPseudoElement(this, "after");
- var children = new List(content.Count + 2);
-
- if (before is not null)
- {
- children.Add(before);
- }
-
- children.AddRange(content);
-
- if (after is not null)
- {
- children.Add(after);
- }
-
- // another thread may have been faster: then its children are the ones of the node
- return Interlocked.CompareExchange(ref _children, children, null) ?? children;
- }
+ internal void ReleaseContent() => Pending?.ReleaseContent();
private SpecifiedStyles GetSpecifiedStyles()
{
@@ -176,7 +155,7 @@ private SpecifiedStyles GetSpecifiedStyles()
private SpecifiedStyles BuildSpecifiedStyles()
{
- var inherited = InheritsFromParent ? Volatile.Read(ref _parent!._specified)!.ForChildren : _inheritedStyle ?? _pendingChildren?.GetInheritedStyle?.Invoke();
+ var inherited = InheritsFromParent ? Volatile.Read(ref _parent!._specified)!.ForChildren : _inheritedStyle ?? Pending?.GetInheritedStyle?.Invoke();
var style = new CssStyleDeclaration(_context);
style.SetDeclarations(_explicitStyle!);
diff --git a/src/AngleSharp.Css/RenderTree/RenderTreeBuilder.cs b/src/AngleSharp.Css/RenderTree/RenderTreeBuilder.cs
index ce5a739f..d7936cd9 100644
--- a/src/AngleSharp.Css/RenderTree/RenderTreeBuilder.cs
+++ b/src/AngleSharp.Css/RenderTree/RenderTreeBuilder.cs
@@ -212,6 +212,7 @@ internal sealed class PendingChildren
private readonly StyleCollection? _shadowCollection;
private readonly StyleCollection? _slottedCollection;
private List? _content;
+ private List? _children;
public PendingChildren(RenderTreeBuilder builder, StyleCollection collection, StyleCollection? shadowCollection, StyleCollection? slottedCollection, Func? getInheritedStyle)
{
@@ -252,6 +253,39 @@ public List GetContent(ElementRenderNode node)
///
public void ReleaseContent() => Volatile.Write(ref _content, null);
+ ///
+ /// Gets all children of the node, which are built on first read.
+ ///
+ public IEnumerable GetChildren(ElementRenderNode node)
+ {
+ var children = Volatile.Read(ref _children);
+
+ if (children is null)
+ {
+ var before = BuildPseudoElement(node, "before");
+ var content = GetContent(node);
+ var after = BuildPseudoElement(node, "after");
+ children = new List(content.Count + 2);
+
+ if (before is not null)
+ {
+ children.Add(before);
+ }
+
+ children.AddRange(content);
+
+ if (after is not null)
+ {
+ children.Add(after);
+ }
+
+ // another thread may have been faster: then its children are the ones of the node
+ children = Interlocked.CompareExchange(ref _children, children, null) ?? children;
+ }
+
+ return children;
+ }
+
///
/// Builds the ::before or ::after of the node, if it has one.
///
From 577908ca6a037e36b4f985d254c6adb5c84225eb Mon Sep 17 00:00:00 2001
From: Michael Thyregod <2386496+michaelthyregod@users.noreply.github.com>
Date: Thu, 5 Nov 2026 05:51:21 +0100
Subject: [PATCH 10/13] Add the CHANGELOG entry
---
CHANGELOG.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index af3c5198..c209443f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,7 @@ Released on Friday, November 6 2026.
- Improved rendering by building pseudo-elements and specified styles only when needed
- Added support for `::selection` pseudo elements
- Improved `GetInnerText` by using the render tree, skipping hidden content and reading shadow hosts through their slots (#267) @michaelthyregod
+- Improved the memory use of render trees (#269) @michaelthyregod
# 1.3.2
From 603b2c5dfa8b7e311d0e45d6ebb5197df7ca66cd Mon Sep 17 00:00:00 2001
From: Florian Rappl
Date: Thu, 5 Nov 2026 10:37:50 +0100
Subject: [PATCH 11/13] Improved DOM compatibility
---
CHANGELOG.md | 8 +
.../Extensions/MatchMedia.cs | 161 +
src/AngleSharp.Css/Constants/InitialValues.cs | 4 +-
src/AngleSharp.Css/Dom/CssHelpers.cs | 5 +-
.../Dom/ICssUsedValueProvider.cs | 44 +
.../ConditionFunctions/SelectorCondition.cs | 31 +
.../Dom/Internal/CssStyleDeclaration.cs | 63 +-
.../Dom/StyleDeclarationExtensions.cs | 3969 +++++++++++++++++
.../Extensions/MediaQueryListExtensions.cs | 35 +
.../Extensions/WindowExtensions.cs | 24 +-
.../Parser/Micro/ConditionParser.cs | 18 +
11 files changed, 4355 insertions(+), 7 deletions(-)
create mode 100644 src/AngleSharp.Css/Dom/ICssUsedValueProvider.cs
create mode 100644 src/AngleSharp.Css/Dom/Internal/ConditionFunctions/SelectorCondition.cs
create mode 100644 src/AngleSharp.Css/Extensions/MediaQueryListExtensions.cs
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5c2ea89f..7f6f12a9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,7 +3,15 @@
Released on Friday, November 6 2026.
- Improved rendering by building pseudo-elements and specified styles only when needed
+- Fixed `maxWidth` of a style being a method for script
+- Fixed the initial values of `position` and `background-origin` being named `inline` and `border-box`
+- Fixed `getComputedStyle` giving script empty values for what was not declared instead of the initial values, e.g. `position` not being `static`
+- Fixed `CSS.supports` throwing for a condition it can't parse, and not taking a declaration without parentheses
- Added support for `::selection` pseudo elements
+- Added `addListener` and `removeListener` to `MediaQueryList`
+- Added `selector()` to supports conditions
+- Added the accessors of all style properties for script that can be applied (e.g. `gap`, `aspectRatio`, `gridTemplateColumns`, `inset`), with the names having hyphens (`style['max-width']`) and `float`
+- Added `ICssUsedValueProvider`, for `getComputedStyle` to give script what layout found
# 1.3.2
diff --git a/src/AngleSharp.Css.Tests/Extensions/MatchMedia.cs b/src/AngleSharp.Css.Tests/Extensions/MatchMedia.cs
index 4e5b98e8..f500b7dc 100644
--- a/src/AngleSharp.Css.Tests/Extensions/MatchMedia.cs
+++ b/src/AngleSharp.Css.Tests/Extensions/MatchMedia.cs
@@ -10,6 +10,167 @@ namespace AngleSharp.Css.Tests.Extensions
[TestFixture]
public class MatchMediaTests
{
+ [TestCase("selector(div)", true)]
+ [TestCase("selector(:hover)", true)]
+ [TestCase("selector(:not-a-real-pseudo-class)", false)]
+ [TestCase("not selector(:not-a-real-pseudo-class)", true)]
+ [TestCase("selector(div) and (color: red)", true)]
+ [TestCase("(color: red)", true)]
+ [TestCase("color: red", true)]
+ [TestCase("(color: notacolor)", false)]
+ [TestCase("this is ( not parseable", false)]
+ [TestCase("", false)]
+ public void SupportsAnswersWithoutThrowing(System.String condition, System.Boolean expected)
+ {
+ var window = CreateWindow(new DefaultRenderDevice { ViewPortWidth = 1000, ViewPortHeight = 800 });
+ Assert.AreEqual(expected, window.Supports(condition));
+ }
+
+ private static (IWindow Window, IElement Element) CreateStyled(System.String style)
+ {
+ var document = new HtmlParser(new HtmlParserOptions(), BrowsingContext.New(Configuration.Default.WithCss())).ParseDocument($"");
+ return (document.DefaultView, document.GetElementById("d"));
+ }
+
+ [TestCase("position", "static")]
+ [TestCase("visibility", "visible")]
+ [TestCase("overflow-x", "visible")]
+ [TestCase("overflow-y", "visible")]
+ [TestCase("overflow", "visible")]
+ [TestCase("opacity", "1")]
+ [TestCase("flex-direction", "row")]
+ public void ScriptSeesInitialValuesOfWhatWasNotDeclared(System.String property, System.String expected)
+ {
+ var (window, element) = CreateStyled("");
+ Assert.AreEqual(expected, window.GetComputedStyleOfScript(element).GetPropertyValue(property));
+ }
+
+ [Test]
+ public void ScriptSeesWhatWasDeclared()
+ {
+ var (window, element) = CreateStyled("position: absolute; overflow: hidden");
+ var style = window.GetComputedStyleOfScript(element);
+
+ Assert.AreEqual("absolute", style.GetPropertyValue("position"));
+ Assert.AreEqual("hidden", style.GetPropertyValue("overflow"));
+ Assert.AreEqual("visible", style.GetPropertyValue("visibility"));
+ }
+
+ [Test]
+ public void TheComputedStyleForDotNetStillTellsWhatWasNotDeclared()
+ {
+ var (window, element) = CreateStyled("");
+ window.GetComputedStyleOfScript(element);
+
+ Assert.AreEqual(System.String.Empty, window.GetComputedStyle(element).GetPropertyValue("position"));
+ }
+
+ private static readonly System.Collections.Generic.HashSet NotForScript = new System.Collections.Generic.HashSet
+ {
+ // pages test for these to rely on them, but nothing applies them
+ "anchor-name", "anchor-scope", "position-anchor", "position-area", "position-try-fallbacks", "position-try-order", "position-visibility",
+ "animation-timeline", "animation-range", "animation-range-start", "animation-range-end", "view-transition-name", "view-transition-class",
+ // these are not properties of a style
+ "src", "unicode-range", "font-display", "size-adjust", "ascent-override", "descent-override", "line-gap-override",
+ "min-zoom", "max-zoom", "user-zoom", "orientation", "string-set", "running", "footnote-display", "footnote-policy",
+ "bookmark-level", "bookmark-label", "bookmark-state", "background-repeat-x", "background-repeat-y", "scrollbar-base-color",
+ };
+
+ private static System.Collections.Generic.IEnumerable AllProperties() =>
+ typeof(ICssStyleDeclaration).Assembly.GetType("AngleSharp.Css.PropertyNames")
+ .GetFields(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static)
+ .Select(m => (System.String)m.GetValue(null));
+
+ private static ILookup ScriptMembers() =>
+ typeof(StyleDeclarationExtensions).GetMethods()
+ .SelectMany(m => m.GetCustomAttributes(typeof(AngleSharp.Attributes.DomNameAttribute), false)
+ .Cast()
+ .Select(n => new { n.OfficialName, Method = m }))
+ .ToLookup(m => m.OfficialName, m => m.Method);
+
+ private static System.String ToCamelCase(System.String name)
+ {
+ var parts = name.TrimStart('-').Split('-');
+ return parts[0] + System.String.Concat(parts.Skip(1).Select(m => char.ToUpperInvariant(m[0]) + m.Substring(1)));
+ }
+
+ [Test]
+ public void EveryPropertyThatCanBeAppliedHasAnAccessorAndAHyphenatedName()
+ {
+ var members = ScriptMembers();
+ var missing = AllProperties()
+ .Where(m => !NotForScript.Contains(m) && m != "float")
+ .Where(m => members[ToCamelCase(m)].Count() != 2 || members[m].Count() != 2)
+ .ToArray();
+
+ Assert.IsEmpty(missing);
+ }
+
+ [Test]
+ public void WhatCanNotBeAppliedHasNoAccessorSoThatPagesDoNotRelyOnIt()
+ {
+ var members = ScriptMembers();
+ var exposed = NotForScript.Where(m => members[ToCamelCase(m)].Any() || members[m].Any()).ToArray();
+
+ Assert.IsEmpty(exposed);
+ }
+
+ [Test]
+ public void EveryMemberIsAnAccessor()
+ {
+ var plain = typeof(StyleDeclarationExtensions).GetMethods()
+ .Where(m => m.IsDefined(typeof(AngleSharp.Attributes.DomNameAttribute), false) && !m.IsDefined(typeof(AngleSharp.Attributes.DomAccessorAttribute), false))
+ .Select(m => m.Name)
+ .ToArray();
+
+ Assert.IsEmpty(plain);
+ }
+
+ [Test]
+ public void FloatHasBothOfItsNames()
+ {
+ var members = ScriptMembers();
+
+ Assert.AreEqual(2, members["cssFloat"].Count());
+ Assert.AreEqual(2, members["float"].Count());
+ }
+
+ private sealed class FixedUsedValues : ICssUsedValueProvider
+ {
+ public System.String GetUsedValue(IElement element, System.String propertyName) => propertyName == "width" ? "123px" : null;
+ }
+
+ [Test]
+ public void ScriptSeesWhatLayoutFound()
+ {
+ var config = Configuration.Default.WithCss();
+ var context = BrowsingContext.New(config);
+ context.SetUsedValueProvider(new FixedUsedValues());
+ var document = new HtmlParser(new HtmlParserOptions(), context).ParseDocument("");
+ var element = document.GetElementById("d");
+ var style = document.DefaultView.GetComputedStyleOfScript(element);
+
+ Assert.AreEqual("123px", style.GetPropertyValue("width"));
+ Assert.AreEqual("5px", style.GetPropertyValue("height"));
+ Assert.AreEqual(System.String.Empty, document.DefaultView.GetComputedStyle(element).GetPropertyValue("width"));
+ }
+
+ [Test]
+ public void AddListenerListensToChangesUntilRemoved()
+ {
+ var window = CreateWindow(new DefaultRenderDevice { ViewPortWidth = 1000, ViewPortHeight = 800 });
+ var list = window.MatchMedia("all");
+ var calls = 0;
+ DomEventHandler listener = (_, _) => calls++;
+
+ list.AddListener(listener);
+ list.Dispatch(new AngleSharp.Dom.Events.Event("change"));
+ list.RemoveListener(listener);
+ list.Dispatch(new AngleSharp.Dom.Events.Event("change"));
+
+ Assert.AreEqual(1, calls);
+ }
+
[Test]
public void MatchMediaWithoutAnyQueryIsMatched()
{
diff --git a/src/AngleSharp.Css/Constants/InitialValues.cs b/src/AngleSharp.Css/Constants/InitialValues.cs
index eaafedbc..8d0a6403 100644
--- a/src/AngleSharp.Css/Constants/InitialValues.cs
+++ b/src/AngleSharp.Css/Constants/InitialValues.cs
@@ -21,7 +21,7 @@ static class InitialValues
public static readonly ICssValue BackgroundPositionYDecl = new CssLengthValue(0, CssLengthValue.Unit.Percent);
public static readonly ICssValue BackgroundPositionDecl = new CssTupleValue(new [] { BackgroundPositionXDecl, BackgroundPositionYDecl });
public static readonly ICssValue BackgroundSizeDecl = new CssBackgroundSizeValue(new CssConstantValue(CssKeywords.Auto, CssLengthValue.Auto), new CssConstantValue(CssKeywords.Auto, CssLengthValue.Auto));
- public static readonly ICssValue BackgroundOriginDecl = new CssConstantValue(CssKeywords.BorderBox, BoxModel.PaddingBox);
+ public static readonly ICssValue BackgroundOriginDecl = new CssConstantValue(CssKeywords.PaddingBox, BoxModel.PaddingBox);
public static readonly ICssValue BackgroundClipDecl = new CssConstantValue(CssKeywords.BorderBox, BoxModel.BorderBox);
public static readonly ICssValue BackgroundAttachmentDecl = new CssConstantValue(CssKeywords.Scroll, BackgroundAttachment.Scroll);
public static readonly ICssValue BookmarkStateDecl = new CssConstantValue(CssKeywords.Open, BookmarkState.Open);
@@ -217,7 +217,7 @@ static class InitialValues
public static readonly ICssValue RowGapDecl = new CssConstantValue(CssKeywords.Normal, CssLengthValue.Normal);
public static readonly ICssValue PerspectiveDecl = new CssConstantValue
[DomName("alignContent")]
+ [DomName("align-content")]
[DomAccessor(Accessors.Getter)]
public static String GetAlignContent(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.AlignContent);
@@ -25,6 +26,7 @@ public static String GetAlignContent(this ICssStyleDeclaration style) =>
/// perpendicular to the axis defined by the flex-direction property.
///
[DomName("alignContent")]
+ [DomName("align-content")]
[DomAccessor(Accessors.Setter)]
public static void SetAlignContent(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.AlignContent, value);
@@ -35,6 +37,7 @@ public static void SetAlignContent(this ICssStyleDeclaration style, String value
/// container.
///
[DomName("alignItems")]
+ [DomName("align-items")]
[DomAccessor(Accessors.Getter)]
public static String GetAlignItems(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.AlignItems);
@@ -45,6 +48,7 @@ public static String GetAlignItems(this ICssStyleDeclaration style) =>
/// container.
///
[DomName("alignItems")]
+ [DomName("align-items")]
[DomAccessor(Accessors.Setter)]
public static void SetAlignItems(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.AlignItems, value);
@@ -55,6 +59,7 @@ public static void SetAlignItems(this ICssStyleDeclaration style, String value)
/// container.
///
[DomName("alignSelf")]
+ [DomName("align-self")]
[DomAccessor(Accessors.Getter)]
public static String GetAlignSelf(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.AlignSelf);
@@ -65,6 +70,7 @@ public static String GetAlignSelf(this ICssStyleDeclaration style) =>
/// container.
///
[DomName("alignSelf")]
+ [DomName("align-self")]
[DomAccessor(Accessors.Setter)]
public static void SetAlignSelf(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.AlignSelf, value);
@@ -92,6 +98,7 @@ public static void SetAccelerator(this ICssStyleDeclaration style, String value)
/// the corresponding baseline of the parent.
///
[DomName("alignmentBaseline")]
+ [DomName("alignment-baseline")]
[DomAccessor(Accessors.Getter)]
public static String GetAlignmentBaseline(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.AlignBaseline);
@@ -101,6 +108,7 @@ public static String GetAlignmentBaseline(this ICssStyleDeclaration style) =>
/// the corresponding baseline of the parent.
///
[DomName("alignmentBaseline")]
+ [DomName("alignment-baseline")]
[DomAccessor(Accessors.Setter)]
public static void SetAlignmentBaseline(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.AlignBaseline, value);
@@ -134,6 +142,7 @@ public static void SetAnimation(this ICssStyleDeclaration style, String value) =
/// @keyframes at-rule specified by the animation-name property.
///
[DomName("animationDelay")]
+ [DomName("animation-delay")]
[DomAccessor(Accessors.Getter)]
public static String GetAnimationDelay(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.AnimationDelay);
@@ -145,6 +154,7 @@ public static String GetAnimationDelay(this ICssStyleDeclaration style) =>
/// @keyframes at-rule specified by the animation-name property.
///
[DomName("animationDelay")]
+ [DomName("animation-delay")]
[DomAccessor(Accessors.Setter)]
public static void SetAnimationDelay(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.AnimationDelay, value);
@@ -153,6 +163,7 @@ public static void SetAnimationDelay(this ICssStyleDeclaration style, String val
/// Gets the direction of play for an animation cycle.
///
[DomName("animationDirection")]
+ [DomName("animation-direction")]
[DomAccessor(Accessors.Getter)]
public static String GetAnimationDirection(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.AnimationDirection);
@@ -161,6 +172,7 @@ public static String GetAnimationDirection(this ICssStyleDeclaration style) =>
/// Sets the direction of play for an animation cycle.
///
[DomName("animationDirection")]
+ [DomName("animation-direction")]
[DomAccessor(Accessors.Setter)]
public static void SetAnimationDirection(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.AnimationDirection, value);
@@ -170,6 +182,7 @@ public static void SetAnimationDirection(this ICssStyleDeclaration style, String
/// animation.
///
[DomName("animationDuration")]
+ [DomName("animation-duration")]
[DomAccessor(Accessors.Getter)]
public static String GetAnimationDuration(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.AnimationDuration);
@@ -179,6 +192,7 @@ public static String GetAnimationDuration(this ICssStyleDeclaration style) =>
/// animation.
///
[DomName("animationDuration")]
+ [DomName("animation-duration")]
[DomAccessor(Accessors.Setter)]
public static void SetAnimationDuration(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.AnimationDuration, value);
@@ -188,6 +202,7 @@ public static void SetAnimationDuration(this ICssStyleDeclaration style, String
/// or after it plays.
///
[DomName("animationFillMode")]
+ [DomName("animation-fill-mode")]
[DomAccessor(Accessors.Getter)]
public static String GetAnimationFillMode(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.AnimationFillMode);
@@ -197,6 +212,7 @@ public static String GetAnimationFillMode(this ICssStyleDeclaration style) =>
/// or after it plays.
///
[DomName("animationFillMode")]
+ [DomName("animation-fill-mode")]
[DomAccessor(Accessors.Setter)]
public static void SetAnimationFillMode(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.AnimationFillMode, value);
@@ -205,6 +221,7 @@ public static void SetAnimationFillMode(this ICssStyleDeclaration style, String
/// Gets the number of times an animation cycle is played.
///
[DomName("animationIterationCount")]
+ [DomName("animation-iteration-count")]
[DomAccessor(Accessors.Getter)]
public static String GetAnimationIterationCount(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.AnimationIterationCount);
@@ -213,6 +230,7 @@ public static String GetAnimationIterationCount(this ICssStyleDeclaration style)
/// Sets the number of times an animation cycle is played.
///
[DomName("animationIterationCount")]
+ [DomName("animation-iteration-count")]
[DomAccessor(Accessors.Setter)]
public static void SetAnimationIterationCount(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.AnimationIterationCount, value);
@@ -222,6 +240,7 @@ public static void SetAnimationIterationCount(this ICssStyleDeclaration style, S
/// a CSS @keyframes at-rule.
///
[DomName("animationName")]
+ [DomName("animation-name")]
[DomAccessor(Accessors.Getter)]
public static String GetAnimationName(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.AnimationName);
@@ -231,6 +250,7 @@ public static String GetAnimationName(this ICssStyleDeclaration style) =>
/// a CSS @keyframes at-rule.
///
[DomName("animationName")]
+ [DomName("animation-name")]
[DomAccessor(Accessors.Setter)]
public static void SetAnimationName(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.AnimationName, value);
@@ -239,6 +259,7 @@ public static void SetAnimationName(this ICssStyleDeclaration style, String valu
/// Gets whether an animation is playing or paused.
///
[DomName("animationPlayState")]
+ [DomName("animation-play-state")]
[DomAccessor(Accessors.Getter)]
public static String GetAnimationPlayState(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.AnimationPlayState);
@@ -247,6 +268,7 @@ public static String GetAnimationPlayState(this ICssStyleDeclaration style) =>
/// Sets whether an animation is playing or paused.
///
[DomName("animationPlayState")]
+ [DomName("animation-play-state")]
[DomAccessor(Accessors.Setter)]
public static void SetAnimationPlayState(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.AnimationPlayState, value);
@@ -258,6 +280,7 @@ public static void SetAnimationPlayState(this ICssStyleDeclaration style, String
/// the animation-name property.
///
[DomName("animationTimingFunction")]
+ [DomName("animation-timing-function")]
[DomAccessor(Accessors.Getter)]
public static String GetAnimationTimingFunction(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.AnimationTimingFunction);
@@ -269,6 +292,7 @@ public static String GetAnimationTimingFunction(this ICssStyleDeclaration style)
/// the animation-name property.
///
[DomName("animationTimingFunction")]
+ [DomName("animation-timing-function")]
[DomAccessor(Accessors.Setter)]
public static void SetAnimationTimingFunction(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.AnimationTimingFunction, value);
@@ -278,6 +302,7 @@ public static void SetAnimationTimingFunction(this ICssStyleDeclaration style, S
/// side) of an object is visible.
///
[DomName("backfaceVisibility")]
+ [DomName("backface-visibility")]
[DomAccessor(Accessors.Getter)]
public static String GetBackfaceVisibility(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BackfaceVisibility);
@@ -287,6 +312,7 @@ public static String GetBackfaceVisibility(this ICssStyleDeclaration style) =>
/// side) of an object is visible.
///
[DomName("backfaceVisibility")]
+ [DomName("backface-visibility")]
[DomAccessor(Accessors.Setter)]
public static void SetBackfaceVisibility(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BackfaceVisibility, value);
@@ -312,6 +338,7 @@ public static void SetBackground(this ICssStyleDeclaration style, String value)
/// the object within the document.
///
[DomName("backgroundAttachment")]
+ [DomName("background-attachment")]
[DomAccessor(Accessors.Getter)]
public static String GetBackgroundAttachment(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BackgroundAttachment);
@@ -321,6 +348,7 @@ public static String GetBackgroundAttachment(this ICssStyleDeclaration style) =>
/// the object within the document.
///
[DomName("backgroundAttachment")]
+ [DomName("background-attachment")]
[DomAccessor(Accessors.Setter)]
public static void SetBackgroundAttachment(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BackgroundAttachment, value);
@@ -330,6 +358,7 @@ public static void SetBackgroundAttachment(this ICssStyleDeclaration style, Stri
/// element's bounding boxes.
///
[DomName("backgroundClip")]
+ [DomName("background-clip")]
[DomAccessor(Accessors.Getter)]
public static String GetBackgroundClip(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BackgroundClip);
@@ -339,6 +368,7 @@ public static String GetBackgroundClip(this ICssStyleDeclaration style) =>
/// element's bounding boxes.
///
[DomName("backgroundClip")]
+ [DomName("background-clip")]
[DomAccessor(Accessors.Setter)]
public static void SetBackgroundClip(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BackgroundClip, value);
@@ -347,6 +377,7 @@ public static void SetBackgroundClip(this ICssStyleDeclaration style, String val
/// Gets the color behind the content of the object.
///
[DomName("backgroundColor")]
+ [DomName("background-color")]
[DomAccessor(Accessors.Getter)]
public static String GetBackgroundColor(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BackgroundColor);
@@ -355,6 +386,7 @@ public static String GetBackgroundColor(this ICssStyleDeclaration style) =>
/// Sets the color behind the content of the object.
///
[DomName("backgroundColor")]
+ [DomName("background-color")]
[DomAccessor(Accessors.Setter)]
public static void SetBackgroundColor(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BackgroundColor, value);
@@ -363,6 +395,7 @@ public static void SetBackgroundColor(this ICssStyleDeclaration style, String va
/// Gets the background image or images of the object.
///
[DomName("backgroundImage")]
+ [DomName("background-image")]
[DomAccessor(Accessors.Getter)]
public static String GetBackgroundImage(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BackgroundImage);
@@ -371,6 +404,7 @@ public static String GetBackgroundImage(this ICssStyleDeclaration style) =>
/// Sets the background image or images of the object.
///
[DomName("backgroundImage")]
+ [DomName("background-image")]
[DomAccessor(Accessors.Setter)]
public static void SetBackgroundImage(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BackgroundImage, value);
@@ -380,6 +414,7 @@ public static void SetBackgroundImage(this ICssStyleDeclaration style, String va
/// elements.
///
[DomName("backgroundOrigin")]
+ [DomName("background-origin")]
[DomAccessor(Accessors.Getter)]
public static String GetBackgroundOrigin(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BackgroundOrigin);
@@ -389,6 +424,7 @@ public static String GetBackgroundOrigin(this ICssStyleDeclaration style) =>
/// elements.
///
[DomName("backgroundOrigin")]
+ [DomName("background-origin")]
[DomAccessor(Accessors.Setter)]
public static void SetBackgroundOrigin(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BackgroundOrigin, value);
@@ -397,6 +433,7 @@ public static void SetBackgroundOrigin(this ICssStyleDeclaration style, String v
/// Gets the position of the background of the object.
///
[DomName("backgroundPosition")]
+ [DomName("background-position")]
[DomAccessor(Accessors.Getter)]
public static String GetBackgroundPosition(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BackgroundPosition);
@@ -405,6 +442,7 @@ public static String GetBackgroundPosition(this ICssStyleDeclaration style) =>
/// Sets the position of the background of the object.
///
[DomName("backgroundPosition")]
+ [DomName("background-position")]
[DomAccessor(Accessors.Setter)]
public static void SetBackgroundPosition(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BackgroundPosition, value);
@@ -413,6 +451,7 @@ public static void SetBackgroundPosition(this ICssStyleDeclaration style, String
/// Gets the x-coordinate of the background-position property.
///
[DomName("backgroundPositionX")]
+ [DomName("background-position-x")]
[DomAccessor(Accessors.Getter)]
public static String GetBackgroundPositionX(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BackgroundPositionX);
@@ -421,6 +460,7 @@ public static String GetBackgroundPositionX(this ICssStyleDeclaration style) =>
/// Sets the x-coordinate of the background-position property.
///
[DomName("backgroundPositionX")]
+ [DomName("background-position-x")]
[DomAccessor(Accessors.Setter)]
public static void SetBackgroundPositionX(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BackgroundPositionX, value);
@@ -429,6 +469,7 @@ public static void SetBackgroundPositionX(this ICssStyleDeclaration style, Strin
/// Gets the y-coordinate of the background-position property.
///
[DomName("backgroundPositionY")]
+ [DomName("background-position-y")]
[DomAccessor(Accessors.Getter)]
public static String GetBackgroundPositionY(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BackgroundPositionY);
@@ -437,6 +478,7 @@ public static String GetBackgroundPositionY(this ICssStyleDeclaration style) =>
/// Sets the y-coordinate of the background-position property.
///
[DomName("backgroundPositionY")]
+ [DomName("background-position-y")]
[DomAccessor(Accessors.Setter)]
public static void SetBackgroundPositionY(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BackgroundPositionY, value);
@@ -446,6 +488,7 @@ public static void SetBackgroundPositionY(this ICssStyleDeclaration style, Strin
/// tiled.
///
[DomName("backgroundRepeat")]
+ [DomName("background-repeat")]
[DomAccessor(Accessors.Getter)]
public static String GetBackgroundRepeat(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BackgroundRepeat);
@@ -455,6 +498,7 @@ public static String GetBackgroundRepeat(this ICssStyleDeclaration style) =>
/// tiled.
///
[DomName("backgroundRepeat")]
+ [DomName("background-repeat")]
[DomAccessor(Accessors.Setter)]
public static void SetBackgroundRepeat(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BackgroundRepeat, value);
@@ -463,6 +507,7 @@ public static void SetBackgroundRepeat(this ICssStyleDeclaration style, String v
/// Gets the size of the background images.
///
[DomName("backgroundSize")]
+ [DomName("background-size")]
[DomAccessor(Accessors.Getter)]
public static String GetBackgroundSize(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BackgroundSize);
@@ -471,6 +516,7 @@ public static String GetBackgroundSize(this ICssStyleDeclaration style) =>
/// Sets the size of the background images.
///
[DomName("backgroundSize")]
+ [DomName("background-size")]
[DomAccessor(Accessors.Setter)]
public static void SetBackgroundSize(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BackgroundSize, value);
@@ -481,6 +527,7 @@ public static void SetBackgroundSize(this ICssStyleDeclaration style, String val
/// parent text content element.
///
[DomName("baselineShift")]
+ [DomName("baseline-shift")]
[DomAccessor(Accessors.Getter)]
public static String GetBaselineShift(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BaselineShift);
@@ -491,6 +538,7 @@ public static String GetBaselineShift(this ICssStyleDeclaration style) =>
/// parent text content element.
///
[DomName("baselineShift")]
+ [DomName("baseline-shift")]
[DomAccessor(Accessors.Setter)]
public static void SetBaselineShift(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BaselineShift, value);
@@ -551,6 +599,7 @@ public static void SetBorder(this ICssStyleDeclaration style, String value) =>
/// Gets the properties of the bottom border of the object.
///
[DomName("borderBottom")]
+ [DomName("border-bottom")]
[DomAccessor(Accessors.Getter)]
public static String GetBorderBottom(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BorderBottom);
@@ -559,6 +608,7 @@ public static String GetBorderBottom(this ICssStyleDeclaration style) =>
/// Sets the properties of the bottom border of the object.
///
[DomName("borderBottom")]
+ [DomName("border-bottom")]
[DomAccessor(Accessors.Setter)]
public static void SetBorderBottom(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BorderBottom, value);
@@ -568,6 +618,7 @@ public static void SetBorderBottom(this ICssStyleDeclaration style, String value
/// object.
///
[DomName("borderBottomColor")]
+ [DomName("border-bottom-color")]
[DomAccessor(Accessors.Getter)]
public static String GetBorderBottomColor(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BorderBottomColor);
@@ -577,6 +628,7 @@ public static String GetBorderBottomColor(this ICssStyleDeclaration style) =>
/// object.
///
[DomName("borderBottomColor")]
+ [DomName("border-bottom-color")]
[DomAccessor(Accessors.Setter)]
public static void SetBorderBottomColor(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BorderBottomColor, value);
@@ -587,6 +639,7 @@ public static void SetBorderBottomColor(this ICssStyleDeclaration style, String
/// current box.
///
[DomName("borderBottomLeftRadius")]
+ [DomName("border-bottom-left-radius")]
[DomAccessor(Accessors.Getter)]
public static String GetBorderBottomLeftRadius(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BorderBottomLeftRadius);
@@ -597,6 +650,7 @@ public static String GetBorderBottomLeftRadius(this ICssStyleDeclaration style)
/// current box.
///
[DomName("borderBottomLeftRadius")]
+ [DomName("border-bottom-left-radius")]
[DomAccessor(Accessors.Setter)]
public static void SetBorderBottomLeftRadius(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BorderBottomLeftRadius, value);
@@ -607,6 +661,7 @@ public static void SetBorderBottomLeftRadius(this ICssStyleDeclaration style, St
/// outer border edge of the current box.
///
[DomName("borderBottomRightRadius")]
+ [DomName("border-bottom-right-radius")]
[DomAccessor(Accessors.Getter)]
public static String GetBorderBottomRightRadius(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BorderBottomRightRadius);
@@ -617,6 +672,7 @@ public static String GetBorderBottomRightRadius(this ICssStyleDeclaration style)
/// outer border edge of the current box.
///
[DomName("borderBottomRightRadius")]
+ [DomName("border-bottom-right-radius")]
[DomAccessor(Accessors.Setter)]
public static void SetBorderBottomRightRadius(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BorderBottomRightRadius, value);
@@ -625,6 +681,7 @@ public static void SetBorderBottomRightRadius(this ICssStyleDeclaration style, S
/// Gets the style of the bottom border of the object.
///
[DomName("borderBottomStyle")]
+ [DomName("border-bottom-style")]
[DomAccessor(Accessors.Getter)]
public static String GetBorderBottomStyle(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BorderBottomStyle);
@@ -633,6 +690,7 @@ public static String GetBorderBottomStyle(this ICssStyleDeclaration style) =>
/// Sets the style of the bottom border of the object.
///
[DomName("borderBottomStyle")]
+ [DomName("border-bottom-style")]
[DomAccessor(Accessors.Setter)]
public static void SetBorderBottomStyle(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BorderBottomStyle, value);
@@ -641,6 +699,7 @@ public static void SetBorderBottomStyle(this ICssStyleDeclaration style, String
/// Gets the thickness of the bottom border of the object.
///
[DomName("borderBottomWidth")]
+ [DomName("border-bottom-width")]
[DomAccessor(Accessors.Getter)]
public static String GetBorderBottomWidth(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BorderBottomWidth);
@@ -649,6 +708,7 @@ public static String GetBorderBottomWidth(this ICssStyleDeclaration style) =>
/// Sets the thickness of the bottom border of the object.
///
[DomName("borderBottomWidth")]
+ [DomName("border-bottom-width")]
[DomAccessor(Accessors.Setter)]
public static void SetBorderBottomWidth(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BorderBottomWidth, value);
@@ -658,6 +718,7 @@ public static void SetBorderBottomWidth(this ICssStyleDeclaration style, String
/// in a single border or detached as in standard HTML.
///
[DomName("borderCollapse")]
+ [DomName("border-collapse")]
[DomAccessor(Accessors.Getter)]
public static String GetBorderCollapse(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BorderCollapse);
@@ -667,6 +728,7 @@ public static String GetBorderCollapse(this ICssStyleDeclaration style) =>
/// in a single border or detached as in standard HTML.
///
[DomName("borderCollapse")]
+ [DomName("border-collapse")]
[DomAccessor(Accessors.Setter)]
public static void SetBorderCollapse(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BorderCollapse, value);
@@ -675,6 +737,7 @@ public static void SetBorderCollapse(this ICssStyleDeclaration style, String val
/// Gets the border color of the object.
///
[DomName("borderColor")]
+ [DomName("border-color")]
[DomAccessor(Accessors.Getter)]
public static String GetBorderColor(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BorderColor);
@@ -683,6 +746,7 @@ public static String GetBorderColor(this ICssStyleDeclaration style) =>
/// Sets the border color of the object.
///
[DomName("borderColor")]
+ [DomName("border-color")]
[DomAccessor(Accessors.Setter)]
public static void SetBorderColor(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BorderColor, value);
@@ -691,6 +755,7 @@ public static void SetBorderColor(this ICssStyleDeclaration style, String value)
/// Gets an image to be used in place of the border styles.
///
[DomName("borderImage")]
+ [DomName("border-image")]
[DomAccessor(Accessors.Getter)]
public static String GetBorderImage(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BorderImage);
@@ -699,6 +764,7 @@ public static String GetBorderImage(this ICssStyleDeclaration style) =>
/// Sets an image to be used in place of the border styles.
///
[DomName("borderImage")]
+ [DomName("border-image")]
[DomAccessor(Accessors.Setter)]
public static void SetBorderImage(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BorderImage, value);
@@ -708,6 +774,7 @@ public static void SetBorderImage(this ICssStyleDeclaration style, String value)
/// beyond the border box.
///
[DomName("borderImageOutset")]
+ [DomName("border-image-outset")]
[DomAccessor(Accessors.Getter)]
public static String GetBorderImageOutset(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BorderImageOutset);
@@ -717,6 +784,7 @@ public static String GetBorderImageOutset(this ICssStyleDeclaration style) =>
/// beyond the border box.
///
[DomName("borderImageOutset")]
+ [DomName("border-image-outset")]
[DomAccessor(Accessors.Setter)]
public static void SetBorderImageOutset(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BorderImageOutset, value);
@@ -725,6 +793,7 @@ public static void SetBorderImageOutset(this ICssStyleDeclaration style, String
/// Gets how the image is scaled and tiled.
///
[DomName("borderImageRepeat")]
+ [DomName("border-image-repeat")]
[DomAccessor(Accessors.Getter)]
public static String GetBorderImageRepeat(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BorderImageRepeat);
@@ -733,6 +802,7 @@ public static String GetBorderImageRepeat(this ICssStyleDeclaration style) =>
/// Sets how the image is scaled and tiled.
///
[DomName("borderImageRepeat")]
+ [DomName("border-image-repeat")]
[DomAccessor(Accessors.Setter)]
public static void SetBorderImageRepeat(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BorderImageRepeat, value);
@@ -743,6 +813,7 @@ public static void SetBorderImageRepeat(this ICssStyleDeclaration style, String
/// four edges, and a central region.
///
[DomName("borderImageSlice")]
+ [DomName("border-image-slice")]
[DomAccessor(Accessors.Getter)]
public static String GetBorderImageSlice(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BorderImageSlice);
@@ -753,6 +824,7 @@ public static String GetBorderImageSlice(this ICssStyleDeclaration style) =>
/// four edges, and a central region.
///
[DomName("borderImageSlice")]
+ [DomName("border-image-slice")]
[DomAccessor(Accessors.Setter)]
public static void SetBorderImageSlice(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BorderImageSlice, value);
@@ -761,6 +833,7 @@ public static void SetBorderImageSlice(this ICssStyleDeclaration style, String v
/// Gets the path of the image to be used for the border.
///
[DomName("borderImageSource")]
+ [DomName("border-image-source")]
[DomAccessor(Accessors.Getter)]
public static String GetBorderImageSource(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BorderImageSource);
@@ -769,6 +842,7 @@ public static String GetBorderImageSource(this ICssStyleDeclaration style) =>
/// Sets the path of the image to be used for the border.
///
[DomName("borderImageSource")]
+ [DomName("border-image-source")]
[DomAccessor(Accessors.Setter)]
public static void SetBorderImageSource(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BorderImageSource, value);
@@ -777,6 +851,7 @@ public static void SetBorderImageSource(this ICssStyleDeclaration style, String
/// Gets the inward offsets from the outer border edge.
///
[DomName("borderImageWidth")]
+ [DomName("border-image-width")]
[DomAccessor(Accessors.Getter)]
public static String GetBorderImageWidth(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BorderImageWidth);
@@ -785,6 +860,7 @@ public static String GetBorderImageWidth(this ICssStyleDeclaration style) =>
/// Sets the inward offsets from the outer border edge.
///
[DomName("borderImageWidth")]
+ [DomName("border-image-width")]
[DomAccessor(Accessors.Setter)]
public static void SetBorderImageWidth(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BorderImageWidth, value);
@@ -793,6 +869,7 @@ public static void SetBorderImageWidth(this ICssStyleDeclaration style, String v
/// Gets the properties of the left border of the object.
///
[DomName("borderLeft")]
+ [DomName("border-left")]
[DomAccessor(Accessors.Getter)]
public static String GetBorderLeft(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BorderLeft);
@@ -801,6 +878,7 @@ public static String GetBorderLeft(this ICssStyleDeclaration style) =>
/// Sets the properties of the left border of the object.
///
[DomName("borderLeft")]
+ [DomName("border-left")]
[DomAccessor(Accessors.Setter)]
public static void SetBorderLeft(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BorderLeft, value);
@@ -809,6 +887,7 @@ public static void SetBorderLeft(this ICssStyleDeclaration style, String value)
/// Gets the foreground color of the left border of an object.
///
[DomName("borderLeftColor")]
+ [DomName("border-left-color")]
[DomAccessor(Accessors.Getter)]
public static String GetBorderLeftColor(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BorderLeftColor);
@@ -817,6 +896,7 @@ public static String GetBorderLeftColor(this ICssStyleDeclaration style) =>
/// Sets the foreground color of the left border of an object.
///
[DomName("borderLeftColor")]
+ [DomName("border-left-color")]
[DomAccessor(Accessors.Setter)]
public static void SetBorderLeftColor(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BorderLeftColor, value);
@@ -825,6 +905,7 @@ public static void SetBorderLeftColor(this ICssStyleDeclaration style, String va
/// Gets the style of the left border of the object.
///
[DomName("borderLeftStyle")]
+ [DomName("border-left-style")]
[DomAccessor(Accessors.Getter)]
public static String GetBorderLeftStyle(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BorderLeftStyle);
@@ -833,6 +914,7 @@ public static String GetBorderLeftStyle(this ICssStyleDeclaration style) =>
/// Sets the style of the left border of the object.
///
[DomName("borderLeftStyle")]
+ [DomName("border-left-style")]
[DomAccessor(Accessors.Setter)]
public static void SetBorderLeftStyle(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BorderLeftStyle, value);
@@ -841,6 +923,7 @@ public static void SetBorderLeftStyle(this ICssStyleDeclaration style, String va
/// Gets the thickness of the left border of the object.
///
[DomName("borderLeftWidth")]
+ [DomName("border-left-width")]
[DomAccessor(Accessors.Getter)]
public static String GetBorderLeftWidth(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BorderLeftWidth);
@@ -849,6 +932,7 @@ public static String GetBorderLeftWidth(this ICssStyleDeclaration style) =>
/// Sets the thickness of the left border of the object.
///
[DomName("borderLeftWidth")]
+ [DomName("border-left-width")]
[DomAccessor(Accessors.Setter)]
public static void SetBorderLeftWidth(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BorderLeftWidth, value);
@@ -858,6 +942,7 @@ public static void SetBorderLeftWidth(this ICssStyleDeclaration style, String va
/// of the corners for the outer border edge of the current box.
///
[DomName("borderRadius")]
+ [DomName("border-radius")]
[DomAccessor(Accessors.Getter)]
public static String GetBorderRadius(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BorderRadius);
@@ -867,6 +952,7 @@ public static String GetBorderRadius(this ICssStyleDeclaration style) =>
/// of the corners for the outer border edge of the current box.
///
[DomName("borderRadius")]
+ [DomName("border-radius")]
[DomAccessor(Accessors.Setter)]
public static void SetBorderRadius(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BorderRadius, value);
@@ -875,6 +961,7 @@ public static void SetBorderRadius(this ICssStyleDeclaration style, String value
/// Gets the properties of the right border of the object.
///
[DomName("borderRight")]
+ [DomName("border-right")]
[DomAccessor(Accessors.Getter)]
public static String GetBorderRight(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BorderRight);
@@ -883,6 +970,7 @@ public static String GetBorderRight(this ICssStyleDeclaration style) =>
/// Sets the properties of the right border of the object.
///
[DomName("borderRight")]
+ [DomName("border-right")]
[DomAccessor(Accessors.Setter)]
public static void SetBorderRight(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BorderRight, value);
@@ -891,6 +979,7 @@ public static void SetBorderRight(this ICssStyleDeclaration style, String value)
/// Gets the foreground color of the right border of an object.
///
[DomName("borderRightColor")]
+ [DomName("border-right-color")]
[DomAccessor(Accessors.Getter)]
public static String GetBorderRightColor(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BorderRightColor);
@@ -899,6 +988,7 @@ public static String GetBorderRightColor(this ICssStyleDeclaration style) =>
/// Sets the foreground color of the right border of an object.
///
[DomName("borderRightColor")]
+ [DomName("border-right-color")]
[DomAccessor(Accessors.Setter)]
public static void SetBorderRightColor(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BorderRightColor, value);
@@ -907,6 +997,7 @@ public static void SetBorderRightColor(this ICssStyleDeclaration style, String v
/// Gets the style of the right border of the object.
///
[DomName("borderRightStyle")]
+ [DomName("border-right-style")]
[DomAccessor(Accessors.Getter)]
public static String GetBorderRightStyle(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BorderRightStyle);
@@ -915,6 +1006,7 @@ public static String GetBorderRightStyle(this ICssStyleDeclaration style) =>
/// Sets the style of the right border of the object.
///
[DomName("borderRightStyle")]
+ [DomName("border-right-style")]
[DomAccessor(Accessors.Setter)]
public static void SetBorderRightStyle(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BorderRightStyle, value);
@@ -923,6 +1015,7 @@ public static void SetBorderRightStyle(this ICssStyleDeclaration style, String v
/// Gets the thickness of the right border of the object.
///
[DomName("borderRightWidth")]
+ [DomName("border-right-width")]
[DomAccessor(Accessors.Getter)]
public static String GetBorderRightWidth(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BorderRightWidth);
@@ -931,6 +1024,7 @@ public static String GetBorderRightWidth(this ICssStyleDeclaration style) =>
/// Sets the thickness of the right border of the object.
///
[DomName("borderRightWidth")]
+ [DomName("border-right-width")]
[DomAccessor(Accessors.Setter)]
public static void SetBorderRightWidth(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BorderRightWidth, value);
@@ -940,6 +1034,7 @@ public static void SetBorderRightWidth(this ICssStyleDeclaration style, String v
/// a table.
///
[DomName("borderSpacing")]
+ [DomName("border-spacing")]
[DomAccessor(Accessors.Getter)]
public static String GetBorderSpacing(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BorderSpacing);
@@ -949,6 +1044,7 @@ public static String GetBorderSpacing(this ICssStyleDeclaration style) =>
/// a table.
///
[DomName("borderSpacing")]
+ [DomName("border-spacing")]
[DomAccessor(Accessors.Setter)]
public static void SetBorderSpacing(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BorderSpacing, value);
@@ -958,6 +1054,7 @@ public static void SetBorderSpacing(this ICssStyleDeclaration style, String valu
/// of the object.
///
[DomName("borderStyle")]
+ [DomName("border-style")]
[DomAccessor(Accessors.Getter)]
public static String GetBorderStyle(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BorderStyle);
@@ -967,6 +1064,7 @@ public static String GetBorderStyle(this ICssStyleDeclaration style) =>
/// of the object.
///
[DomName("borderStyle")]
+ [DomName("border-style")]
[DomAccessor(Accessors.Setter)]
public static void SetBorderStyle(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BorderStyle, value);
@@ -975,6 +1073,7 @@ public static void SetBorderStyle(this ICssStyleDeclaration style, String value)
/// Gets the properties of the top border of the object.
///
[DomName("borderTop")]
+ [DomName("border-top")]
[DomAccessor(Accessors.Getter)]
public static String GetBorderTop(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BorderTop);
@@ -983,6 +1082,7 @@ public static String GetBorderTop(this ICssStyleDeclaration style) =>
/// Sets the properties of the top border of the object.
///
[DomName("borderTop")]
+ [DomName("border-top")]
[DomAccessor(Accessors.Setter)]
public static void SetBorderTop(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BorderTop, value);
@@ -991,6 +1091,7 @@ public static void SetBorderTop(this ICssStyleDeclaration style, String value) =
/// Gets the foreground color of the top border of an object.
///
[DomName("borderTopColor")]
+ [DomName("border-top-color")]
[DomAccessor(Accessors.Getter)]
public static String GetBorderTopColor(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BorderTopColor);
@@ -999,6 +1100,7 @@ public static String GetBorderTopColor(this ICssStyleDeclaration style) =>
/// Sets the foreground color of the top border of an object.
///
[DomName("borderTopColor")]
+ [DomName("border-top-color")]
[DomAccessor(Accessors.Setter)]
public static void SetBorderTopColor(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BorderTopColor, value);
@@ -1009,6 +1111,7 @@ public static void SetBorderTopColor(this ICssStyleDeclaration style, String val
/// the outer border edge of the current box.
///
[DomName("borderTopLeftRadius")]
+ [DomName("border-top-left-radius")]
[DomAccessor(Accessors.Getter)]
public static String GetBorderTopLeftRadius(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BorderTopLeftRadius);
@@ -1019,6 +1122,7 @@ public static String GetBorderTopLeftRadius(this ICssStyleDeclaration style) =>
/// the outer border edge of the current box.
///
[DomName("borderTopLeftRadius")]
+ [DomName("border-top-left-radius")]
[DomAccessor(Accessors.Setter)]
public static void SetBorderTopLeftRadius(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BorderTopLeftRadius, value);
@@ -1029,6 +1133,7 @@ public static void SetBorderTopLeftRadius(this ICssStyleDeclaration style, Strin
/// outer border edge of the current box.
///
[DomName("borderTopRightRadius")]
+ [DomName("border-top-right-radius")]
[DomAccessor(Accessors.Getter)]
public static String GetBorderTopRightRadius(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BorderTopRightRadius);
@@ -1039,6 +1144,7 @@ public static String GetBorderTopRightRadius(this ICssStyleDeclaration style) =>
/// outer border edge of the current box.
///
[DomName("borderTopRightRadius")]
+ [DomName("border-top-right-radius")]
[DomAccessor(Accessors.Setter)]
public static void SetBorderTopRightRadius(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BorderTopRightRadius, value);
@@ -1047,6 +1153,7 @@ public static void SetBorderTopRightRadius(this ICssStyleDeclaration style, Stri
/// Gets the style of the top border of the object.
///
[DomName("borderTopStyle")]
+ [DomName("border-top-style")]
[DomAccessor(Accessors.Getter)]
public static String GetBorderTopStyle(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BorderTopStyle);
@@ -1055,6 +1162,7 @@ public static String GetBorderTopStyle(this ICssStyleDeclaration style) =>
/// Sets the style of the top border of the object.
///
[DomName("borderTopStyle")]
+ [DomName("border-top-style")]
[DomAccessor(Accessors.Setter)]
public static void SetBorderTopStyle(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BorderTopStyle, value);
@@ -1063,6 +1171,7 @@ public static void SetBorderTopStyle(this ICssStyleDeclaration style, String val
/// Gets the thickness of the top border of the object.
///
[DomName("borderTopWidth")]
+ [DomName("border-top-width")]
[DomAccessor(Accessors.Getter)]
public static String GetBorderTopWidth(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BorderTopWidth);
@@ -1071,6 +1180,7 @@ public static String GetBorderTopWidth(this ICssStyleDeclaration style) =>
/// Sets the thickness of the top border of the object.
///
[DomName("borderTopWidth")]
+ [DomName("border-top-width")]
[DomAccessor(Accessors.Setter)]
public static void SetBorderTopWidth(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BorderTopWidth, value);
@@ -1080,6 +1190,7 @@ public static void SetBorderTopWidth(this ICssStyleDeclaration style, String val
/// borders of an object.
///
[DomName("borderWidth")]
+ [DomName("border-width")]
[DomAccessor(Accessors.Getter)]
public static String GetBorderWidth(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BorderWidth);
@@ -1089,6 +1200,7 @@ public static String GetBorderWidth(this ICssStyleDeclaration style) =>
/// borders of an object.
///
[DomName("borderWidth")]
+ [DomName("border-width")]
[DomAccessor(Accessors.Setter)]
public static void SetBorderWidth(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BorderWidth, value);
@@ -1098,6 +1210,7 @@ public static void SetBorderWidth(this ICssStyleDeclaration style, String value)
/// more drop shadows to the current box.
///
[DomName("boxShadow")]
+ [DomName("box-shadow")]
[DomAccessor(Accessors.Getter)]
public static String GetBoxShadow(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BoxShadow);
@@ -1107,6 +1220,7 @@ public static String GetBoxShadow(this ICssStyleDeclaration style) =>
/// more drop shadows to the current box.
///
[DomName("boxShadow")]
+ [DomName("box-shadow")]
[DomAccessor(Accessors.Setter)]
public static void SetBoxShadow(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BoxShadow, value);
@@ -1115,6 +1229,7 @@ public static void SetBoxShadow(this ICssStyleDeclaration style, String value) =
/// Gets the box model to use for object sizing.
///
[DomName("boxSizing")]
+ [DomName("box-sizing")]
[DomAccessor(Accessors.Getter)]
public static String GetBoxSizing(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BoxSizing);
@@ -1123,6 +1238,7 @@ public static String GetBoxSizing(this ICssStyleDeclaration style) =>
/// Sets the box model to use for object sizing.
///
[DomName("boxSizing")]
+ [DomName("box-sizing")]
[DomAccessor(Accessors.Setter)]
public static void SetBoxSizing(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BoxSizing, value);
@@ -1132,6 +1248,7 @@ public static void SetBoxSizing(this ICssStyleDeclaration style, String value) =
/// in a multi-column element.
///
[DomName("breakAfter")]
+ [DomName("break-after")]
[DomAccessor(Accessors.Getter)]
public static String GetBreakAfter(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BreakAfter);
@@ -1141,6 +1258,7 @@ public static String GetBreakAfter(this ICssStyleDeclaration style) =>
/// in a multi-column element.
///
[DomName("breakAfter")]
+ [DomName("break-after")]
[DomAccessor(Accessors.Setter)]
public static void SetBreakAfter(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BreakAfter, value);
@@ -1150,6 +1268,7 @@ public static void SetBreakAfter(this ICssStyleDeclaration style, String value)
/// block in a multi-column element.
///
[DomName("breakBefore")]
+ [DomName("break-before")]
[DomAccessor(Accessors.Getter)]
public static String GetBreakBefore(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BreakBefore);
@@ -1159,6 +1278,7 @@ public static String GetBreakBefore(this ICssStyleDeclaration style) =>
/// block in a multi-column element.
///
[DomName("breakBefore")]
+ [DomName("break-before")]
[DomAccessor(Accessors.Setter)]
public static void SetBreakBefore(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BreakBefore, value);
@@ -1168,6 +1288,7 @@ public static void SetBreakBefore(this ICssStyleDeclaration style, String value)
/// content block in a multi-column element.
///
[DomName("breakInside")]
+ [DomName("break-inside")]
[DomAccessor(Accessors.Getter)]
public static String GetBreakInside(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.BreakInside);
@@ -1177,6 +1298,7 @@ public static String GetBreakInside(this ICssStyleDeclaration style) =>
/// content block in a multi-column element.
///
[DomName("breakInside")]
+ [DomName("break-inside")]
[DomAccessor(Accessors.Setter)]
public static void SetBreakInside(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.BreakInside, value);
@@ -1185,6 +1307,7 @@ public static void SetBreakInside(this ICssStyleDeclaration style, String value)
/// Gets where the caption of a table is located.
///
[DomName("captionSide")]
+ [DomName("caption-side")]
[DomAccessor(Accessors.Getter)]
public static String GetCaptionSide(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.CaptionSide);
@@ -1193,6 +1316,7 @@ public static String GetCaptionSide(this ICssStyleDeclaration style) =>
/// Sets where the caption of a table is located.
///
[DomName("captionSide")]
+ [DomName("caption-side")]
[DomAccessor(Accessors.Setter)]
public static void SetCaptionSide(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.CaptionSide, value);
@@ -1237,6 +1361,7 @@ public static void SetClip(this ICssStyleDeclaration style, String value) =>
/// Gets the bottom coordinate of the object clipping region.
///
[DomName("clipBottom")]
+ [DomName("clip-bottom")]
[DomAccessor(Accessors.Getter)]
public static String GetClipBottom(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.ClipBottom);
@@ -1245,6 +1370,7 @@ public static String GetClipBottom(this ICssStyleDeclaration style) =>
/// Sets the bottom coordinate of the object clipping region.
///
[DomName("clipBottom")]
+ [DomName("clip-bottom")]
[DomAccessor(Accessors.Setter)]
public static void SetClipBottom(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.ClipBottom, value);
@@ -1253,6 +1379,7 @@ public static void SetClipBottom(this ICssStyleDeclaration style, String value)
/// Gets the left coordinate of the object clipping region.
///
[DomName("clipLeft")]
+ [DomName("clip-left")]
[DomAccessor(Accessors.Getter)]
public static String GetClipLeft(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.ClipLeft);
@@ -1261,6 +1388,7 @@ public static String GetClipLeft(this ICssStyleDeclaration style) =>
/// Sets the left coordinate of the object clipping region.
///
[DomName("clipLeft")]
+ [DomName("clip-left")]
[DomAccessor(Accessors.Setter)]
public static void SetClipLeft(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.ClipLeft, value);
@@ -1270,6 +1398,7 @@ public static void SetClipLeft(this ICssStyleDeclaration style, String value) =>
/// that will be used as the clipping path.
///
[DomName("clipPath")]
+ [DomName("clip-path")]
[DomAccessor(Accessors.Getter)]
public static String GetClipPath(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.ClipPath);
@@ -1279,6 +1408,7 @@ public static String GetClipPath(this ICssStyleDeclaration style) =>
/// that will be used as the clipping path.
///
[DomName("clipPath")]
+ [DomName("clip-path")]
[DomAccessor(Accessors.Setter)]
public static void SetClipPath(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.ClipPath, value);
@@ -1287,6 +1417,7 @@ public static void SetClipPath(this ICssStyleDeclaration style, String value) =>
/// Gets the right coordinate of the object clipping region.
///
[DomName("clipRight")]
+ [DomName("clip-right")]
[DomAccessor(Accessors.Getter)]
public static String GetClipRight(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.ClipRight);
@@ -1295,6 +1426,7 @@ public static String GetClipRight(this ICssStyleDeclaration style) =>
/// Sets the right coordinate of the object clipping region.
///
[DomName("clipRight")]
+ [DomName("clip-right")]
[DomAccessor(Accessors.Setter)]
public static void SetClipRight(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.ClipRight, value);
@@ -1304,6 +1436,7 @@ public static void SetClipRight(this ICssStyleDeclaration style, String value) =
/// canvas are affected by the fill operation.
///
[DomName("clipRule")]
+ [DomName("clip-rule")]
[DomAccessor(Accessors.Getter)]
public static String GetClipRule(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.ClipRule);
@@ -1313,6 +1446,7 @@ public static String GetClipRule(this ICssStyleDeclaration style) =>
/// canvas are affected by the fill operation.
///
[DomName("clipRule")]
+ [DomName("clip-rule")]
[DomAccessor(Accessors.Setter)]
public static void SetClipRule(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.ClipRule, value);
@@ -1321,6 +1455,7 @@ public static void SetClipRule(this ICssStyleDeclaration style, String value) =>
/// Gets the top coordinate of the object clipping region.
///
[DomName("clipTop")]
+ [DomName("clip-top")]
[DomAccessor(Accessors.Getter)]
public static String GetClipTop(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.ClipTop);
@@ -1329,6 +1464,7 @@ public static String GetClipTop(this ICssStyleDeclaration style) =>
/// Sets the top coordinate of the object clipping region.
///
[DomName("clipTop")]
+ [DomName("clip-top")]
[DomAccessor(Accessors.Setter)]
public static void SetClipTop(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.ClipTop, value);
@@ -1353,6 +1489,7 @@ public static void SetColor(this ICssStyleDeclaration style, String value) =>
/// Gets which color space to use for filter effects.
///
[DomName("colorInterpolationFilters")]
+ [DomName("color-interpolation-filters")]
[DomAccessor(Accessors.Getter)]
public static String GetColorInterpolationFilters(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.ColorInterpolationFilters);
@@ -1361,6 +1498,7 @@ public static String GetColorInterpolationFilters(this ICssStyleDeclaration styl
/// Sets which color space to use for filter effects.
///
[DomName("colorInterpolationFilters")]
+ [DomName("color-interpolation-filters")]
[DomAccessor(Accessors.Setter)]
public static void SetColorInterpolationFilters(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.ColorInterpolationFilters, value);
@@ -1370,6 +1508,7 @@ public static void SetColorInterpolationFilters(this ICssStyleDeclaration style,
/// element.
///
[DomName("columnCount")]
+ [DomName("column-count")]
[DomAccessor(Accessors.Getter)]
public static String GetColumnCount(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.ColumnCount);
@@ -1379,6 +1518,7 @@ public static String GetColumnCount(this ICssStyleDeclaration style) =>
/// element.
///
[DomName("columnCount")]
+ [DomName("column-count")]
[DomAccessor(Accessors.Setter)]
public static void SetColumnCount(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.ColumnCount, value);
@@ -1388,6 +1528,7 @@ public static void SetColumnCount(this ICssStyleDeclaration style, String value)
/// multi-column element are affected by the content flow.
///
[DomName("columnFill")]
+ [DomName("column-fill")]
[DomAccessor(Accessors.Getter)]
public static String GetColumnFill(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.ColumnFill);
@@ -1397,6 +1538,7 @@ public static String GetColumnFill(this ICssStyleDeclaration style) =>
/// multi-column element are affected by the content flow.
///
[DomName("columnFill")]
+ [DomName("column-fill")]
[DomAccessor(Accessors.Setter)]
public static void SetColumnFill(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.ColumnFill, value);
@@ -1406,6 +1548,7 @@ public static void SetColumnFill(this ICssStyleDeclaration style, String value)
/// element.
///
[DomName("columnGap")]
+ [DomName("column-gap")]
[DomAccessor(Accessors.Getter)]
public static String GetColumnGap(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.ColumnGap);
@@ -1415,6 +1558,7 @@ public static String GetColumnGap(this ICssStyleDeclaration style) =>
/// element.
///
[DomName("columnGap")]
+ [DomName("column-gap")]
[DomAccessor(Accessors.Setter)]
public static void SetColumnGap(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.ColumnGap, value);
@@ -1425,6 +1569,7 @@ public static void SetColumnGap(this ICssStyleDeclaration style, String value) =
/// multi-column element.
///
[DomName("columnRule")]
+ [DomName("column-rule")]
[DomAccessor(Accessors.Getter)]
public static String GetColumnRule(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.ColumnRule);
@@ -1435,6 +1580,7 @@ public static String GetColumnRule(this ICssStyleDeclaration style) =>
/// multi-column element.
///
[DomName("columnRule")]
+ [DomName("column-rule")]
[DomAccessor(Accessors.Setter)]
public static void SetColumnRule(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.ColumnRule, value);
@@ -1444,6 +1590,7 @@ public static void SetColumnRule(this ICssStyleDeclaration style, String value)
/// element.
///
[DomName("columnRuleColor")]
+ [DomName("column-rule-color")]
[DomAccessor(Accessors.Getter)]
public static String GetColumnRuleColor(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.ColumnRuleColor);
@@ -1453,6 +1600,7 @@ public static String GetColumnRuleColor(this ICssStyleDeclaration style) =>
/// element.
///
[DomName("columnRuleColor")]
+ [DomName("column-rule-color")]
[DomAccessor(Accessors.Setter)]
public static void SetColumnRuleColor(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.ColumnRuleColor, value);
@@ -1462,6 +1610,7 @@ public static void SetColumnRuleColor(this ICssStyleDeclaration style, String va
/// element.
///
[DomName("columnRuleStyle")]
+ [DomName("column-rule-style")]
[DomAccessor(Accessors.Getter)]
public static String GetColumnRuleStyle(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.ColumnRuleStyle);
@@ -1471,6 +1620,7 @@ public static String GetColumnRuleStyle(this ICssStyleDeclaration style) =>
/// element.
///
[DomName("columnRuleStyle")]
+ [DomName("column-rule-style")]
[DomAccessor(Accessors.Setter)]
public static void SetColumnRuleStyle(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.ColumnRuleStyle, value);
@@ -1480,6 +1630,7 @@ public static void SetColumnRuleStyle(this ICssStyleDeclaration style, String va
/// element.
///
[DomName("columnRuleWidth")]
+ [DomName("column-rule-width")]
[DomAccessor(Accessors.Getter)]
public static String GetColumnRuleWidth(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.ColumnRuleWidth);
@@ -1489,6 +1640,7 @@ public static String GetColumnRuleWidth(this ICssStyleDeclaration style) =>
/// element.
///
[DomName("columnRuleWidth")]
+ [DomName("column-rule-width")]
[DomAccessor(Accessors.Setter)]
public static void SetColumnRuleWidth(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.ColumnRuleWidth, value);
@@ -1516,6 +1668,7 @@ public static void SetColumns(this ICssStyleDeclaration style, String value) =>
/// spans in a multi-column element.
///
[DomName("columnSpan")]
+ [DomName("column-span")]
[DomAccessor(Accessors.Getter)]
public static String GetColumnSpan(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.ColumnSpan);
@@ -1525,6 +1678,7 @@ public static String GetColumnSpan(this ICssStyleDeclaration style) =>
/// spans in a multi-column element.
///
[DomName("columnSpan")]
+ [DomName("column-span")]
[DomAccessor(Accessors.Setter)]
public static void SetColumnSpan(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.ColumnSpan, value);
@@ -1534,6 +1688,7 @@ public static void SetColumnSpan(this ICssStyleDeclaration style, String value)
/// element.
///
[DomName("columnWidth")]
+ [DomName("column-width")]
[DomAccessor(Accessors.Getter)]
public static String GetColumnWidth(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.ColumnWidth);
@@ -1543,6 +1698,7 @@ public static String GetColumnWidth(this ICssStyleDeclaration style) =>
/// element.
///
[DomName("columnWidth")]
+ [DomName("column-width")]
[DomAccessor(Accessors.Setter)]
public static void SetColumnWidth(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.ColumnWidth, value);
@@ -1569,6 +1725,7 @@ public static void SetContent(this ICssStyleDeclaration style, String value) =>
/// Gets a list of counters to increment.
///
[DomName("counterIncrement")]
+ [DomName("counter-increment")]
[DomAccessor(Accessors.Getter)]
public static String GetCounterIncrement(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.CounterIncrement);
@@ -1577,6 +1734,7 @@ public static String GetCounterIncrement(this ICssStyleDeclaration style) =>
/// Sets a list of counters to increment.
///
[DomName("counterIncrement")]
+ [DomName("counter-increment")]
[DomAccessor(Accessors.Setter)]
public static void SetCounterIncrement(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.CounterIncrement, value);
@@ -1585,6 +1743,7 @@ public static void SetCounterIncrement(this ICssStyleDeclaration style, String v
/// Gets a list of counters to create or reset to zero.
///
[DomName("counterReset")]
+ [DomName("counter-reset")]
[DomAccessor(Accessors.Getter)]
public static String GetCounterReset(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.CounterReset);
@@ -1593,6 +1752,7 @@ public static String GetCounterReset(this ICssStyleDeclaration style) =>
/// Sets a list of counters to create or reset to zero.
///
[DomName("counterReset")]
+ [DomName("counter-reset")]
[DomAccessor(Accessors.Setter)]
public static void SetCounterReset(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.CounterReset, value);
@@ -1602,6 +1762,7 @@ public static void SetCounterReset(this ICssStyleDeclaration style, String value
/// the left, right, or not at all.
///
[DomName("cssFloat")]
+ [DomName("float")]
[DomAccessor(Accessors.Getter)]
public static String GetFloat(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.Float);
@@ -1611,6 +1772,7 @@ public static String GetFloat(this ICssStyleDeclaration style) =>
/// the left, right, or not at all.
///
[DomName("cssFloat")]
+ [DomName("float")]
[DomAccessor(Accessors.Setter)]
public static void SetFloat(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.Float, value);
@@ -1672,6 +1834,7 @@ public static void SetDisplay(this ICssStyleDeclaration style, String value) =>
/// scaled-baseline table.
///
[DomName("dominantBaseline")]
+ [DomName("dominant-baseline")]
[DomAccessor(Accessors.Getter)]
public static String GetDominantBaseline(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.DominantBaseline);
@@ -1681,6 +1844,7 @@ public static String GetDominantBaseline(this ICssStyleDeclaration style) =>
/// scaled-baseline table.
///
[DomName("dominantBaseline")]
+ [DomName("dominant-baseline")]
[DomAccessor(Accessors.Setter)]
public static void SetDominantBaseline(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.DominantBaseline, value);
@@ -1689,6 +1853,7 @@ public static void SetDominantBaseline(this ICssStyleDeclaration style, String v
/// Gets whether to show or hide a cell without content.
///
[DomName("emptyCells")]
+ [DomName("empty-cells")]
[DomAccessor(Accessors.Getter)]
public static String GetEmptyCells(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.EmptyCells);
@@ -1697,6 +1862,7 @@ public static String GetEmptyCells(this ICssStyleDeclaration style) =>
/// Sets whether to show or hide a cell without content.
///
[DomName("emptyCells")]
+ [DomName("empty-cells")]
[DomAccessor(Accessors.Setter)]
public static void SetEmptyCells(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.EmptyCells, value);
@@ -1706,6 +1872,7 @@ public static void SetEmptyCells(this ICssStyleDeclaration style, String value)
/// container.
///
[DomName("enableBackground")]
+ [DomName("enable-background")]
[DomAccessor(Accessors.Getter)]
public static String GetEnableBackground(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.EnableBackground);
@@ -1715,6 +1882,7 @@ public static String GetEnableBackground(this ICssStyleDeclaration style) =>
/// container.
///
[DomName("enableBackground")]
+ [DomName("enable-background")]
[DomAccessor(Accessors.Setter)]
public static void SetEnableBackground(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.EnableBackground, value);
@@ -1742,6 +1910,7 @@ public static void SetFill(this ICssStyleDeclaration style, String value) =>
/// operation that is used to paint the interior of the current object.
///
[DomName("fillOpacity")]
+ [DomName("fill-opacity")]
[DomAccessor(Accessors.Getter)]
public static String GetFillOpacity(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.FillOpacity);
@@ -1751,6 +1920,7 @@ public static String GetFillOpacity(this ICssStyleDeclaration style) =>
/// operation that is used to paint the interior of the current object.
///
[DomName("fillOpacity")]
+ [DomName("fill-opacity")]
[DomAccessor(Accessors.Setter)]
public static void SetFillOpacity(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.FillOpacity, value);
@@ -1761,6 +1931,7 @@ public static void SetFillOpacity(this ICssStyleDeclaration style, String value)
/// shape.
///
[DomName("fillRule")]
+ [DomName("fill-rule")]
[DomAccessor(Accessors.Getter)]
public static String GetFillRule(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.FillRule);
@@ -1771,6 +1942,7 @@ public static String GetFillRule(this ICssStyleDeclaration style) =>
/// shape.
///
[DomName("fillRule")]
+ [DomName("fill-rule")]
[DomAccessor(Accessors.Setter)]
public static void SetFillRule(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.FillRule, value);
@@ -1815,6 +1987,7 @@ public static void SetFlex(this ICssStyleDeclaration style, String value) =>
/// Gets the initial main size of the flex item.
///
[DomName("flexBasis")]
+ [DomName("flex-basis")]
[DomAccessor(Accessors.Getter)]
public static String GetFlexBasis(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.FlexBasis);
@@ -1823,6 +1996,7 @@ public static String GetFlexBasis(this ICssStyleDeclaration style) =>
/// Sets the initial main size of the flex item.
///
[DomName("flexBasis")]
+ [DomName("flex-basis")]
[DomAccessor(Accessors.Setter)]
public static void SetFlexBasis(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.FlexBasis, value);
@@ -1832,6 +2006,7 @@ public static void SetFlexBasis(this ICssStyleDeclaration style, String value) =
/// flex items are displayed in the flex container.
///
[DomName("flexDirection")]
+ [DomName("flex-direction")]
[DomAccessor(Accessors.Getter)]
public static String GetFlexDirection(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.FlexDirection);
@@ -1841,6 +2016,7 @@ public static String GetFlexDirection(this ICssStyleDeclaration style) =>
/// flex items are displayed in the flex container.
///
[DomName("flexDirection")]
+ [DomName("flex-direction")]
[DomAccessor(Accessors.Setter)]
public static void SetFlexDirection(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.FlexDirection, value);
@@ -1850,6 +2026,7 @@ public static void SetFlexDirection(this ICssStyleDeclaration style, String valu
/// and flex-wrap properties of a flex container.
///
[DomName("flexFlow")]
+ [DomName("flex-flow")]
[DomAccessor(Accessors.Getter)]
public static String GetFlexFlow(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.FlexFlow);
@@ -1859,6 +2036,7 @@ public static String GetFlexFlow(this ICssStyleDeclaration style) =>
/// and flex-wrap properties of a flex container.
///
[DomName("flexFlow")]
+ [DomName("flex-flow")]
[DomAccessor(Accessors.Setter)]
public static void SetFlexFlow(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.FlexFlow, value);
@@ -1867,6 +2045,7 @@ public static void SetFlexFlow(this ICssStyleDeclaration style, String value) =>
/// Gets the flex grow factor for the flex item.
///
[DomName("flexGrow")]
+ [DomName("flex-grow")]
[DomAccessor(Accessors.Getter)]
public static String GetFlexGrow(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.FlexGrow);
@@ -1875,6 +2054,7 @@ public static String GetFlexGrow(this ICssStyleDeclaration style) =>
/// Sets the flex grow factor for the flex item.
///
[DomName("flexGrow")]
+ [DomName("flex-grow")]
[DomAccessor(Accessors.Setter)]
public static void SetFlexGrow(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.FlexGrow, value);
@@ -1883,6 +2063,7 @@ public static void SetFlexGrow(this ICssStyleDeclaration style, String value) =>
/// Gets the flex shrink factor for the flex item.
///
[DomName("flexShrink")]
+ [DomName("flex-shrink")]
[DomAccessor(Accessors.Getter)]
public static String GetFlexShrink(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.FlexShrink);
@@ -1891,6 +2072,7 @@ public static String GetFlexShrink(this ICssStyleDeclaration style) =>
/// Sets the flex shrink factor for the flex item.
///
[DomName("flexShrink")]
+ [DomName("flex-shrink")]
[DomAccessor(Accessors.Setter)]
public static void SetFlexShrink(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.FlexShrink, value);
@@ -1901,6 +2083,7 @@ public static void SetFlexShrink(this ICssStyleDeclaration style, String value)
/// flex container.
///
[DomName("flexWrap")]
+ [DomName("flex-wrap")]
[DomAccessor(Accessors.Getter)]
public static String GetFlexWrap(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.FlexWrap);
@@ -1911,6 +2094,7 @@ public static String GetFlexWrap(this ICssStyleDeclaration style) =>
/// flex container.
///
[DomName("flexWrap")]
+ [DomName("flex-wrap")]
[DomAccessor(Accessors.Setter)]
public static void SetFlexWrap(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.FlexWrap, value);
@@ -1939,6 +2123,7 @@ public static void SetFont(this ICssStyleDeclaration style, String value) =>
/// Gets the name of the font used for text in the object.
///
[DomName("fontFamily")]
+ [DomName("font-family")]
[DomAccessor(Accessors.Getter)]
public static String GetFontFamily(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.FontFamily);
@@ -1947,6 +2132,7 @@ public static String GetFontFamily(this ICssStyleDeclaration style) =>
/// Sets the name of the font used for text in the object.
///
[DomName("fontFamily")]
+ [DomName("font-family")]
[DomAccessor(Accessors.Setter)]
public static void SetFontFamily(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.FontFamily, value);
@@ -1956,6 +2142,7 @@ public static void SetFontFamily(this ICssStyleDeclaration style, String value)
/// positioning in fonts that include OpenType layout features.
///
[DomName("fontFeatureSettings")]
+ [DomName("font-feature-settings")]
[DomAccessor(Accessors.Getter)]
public static String GetFontFeatureSettings(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.FontFeatureSettings);
@@ -1965,6 +2152,7 @@ public static String GetFontFeatureSettings(this ICssStyleDeclaration style) =>
/// positioning in fonts that include OpenType layout features.
///
[DomName("fontFeatureSettings")]
+ [DomName("font-feature-settings")]
[DomAccessor(Accessors.Setter)]
public static void SetFontFeatureSettings(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.FontFeatureSettings, value);
@@ -1974,6 +2162,7 @@ public static void SetFontFeatureSettings(this ICssStyleDeclaration style, Strin
/// the object.
///
[DomName("fontSize")]
+ [DomName("font-size")]
[DomAccessor(Accessors.Getter)]
public static String GetFontSize(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.FontSize);
@@ -1983,6 +2172,7 @@ public static String GetFontSize(this ICssStyleDeclaration style) =>
/// the object.
///
[DomName("fontSize")]
+ [DomName("font-size")]
[DomAccessor(Accessors.Setter)]
public static void SetFontSize(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.FontSize, value);
@@ -1993,6 +2183,7 @@ public static void SetFontSize(this ICssStyleDeclaration style, String value) =>
/// font, whether it is substituted or not.
///
[DomName("fontSizeAdjust")]
+ [DomName("font-size-adjust")]
[DomAccessor(Accessors.Getter)]
public static String GetFontSizeAdjust(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.FontSizeAdjust);
@@ -2003,6 +2194,7 @@ public static String GetFontSizeAdjust(this ICssStyleDeclaration style) =>
/// font, whether it is substituted or not.
///
[DomName("fontSizeAdjust")]
+ [DomName("font-size-adjust")]
[DomAccessor(Accessors.Setter)]
public static void SetFontSizeAdjust(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.FontSizeAdjust, value);
@@ -2012,6 +2204,7 @@ public static void SetFontSizeAdjust(this ICssStyleDeclaration style, String val
/// expanded face of a font family.
///
[DomName("fontStretch")]
+ [DomName("font-stretch")]
[DomAccessor(Accessors.Getter)]
public static String GetFontStretch(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.FontStretch);
@@ -2021,6 +2214,7 @@ public static String GetFontStretch(this ICssStyleDeclaration style) =>
/// expanded face of a font family.
///
[DomName("fontStretch")]
+ [DomName("font-stretch")]
[DomAccessor(Accessors.Setter)]
public static void SetFontStretch(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.FontStretch, value);
@@ -2030,6 +2224,7 @@ public static void SetFontStretch(this ICssStyleDeclaration style, String value)
/// oblique.
///
[DomName("fontStyle")]
+ [DomName("font-style")]
[DomAccessor(Accessors.Getter)]
public static String GetFontStyle(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.FontStyle);
@@ -2039,6 +2234,7 @@ public static String GetFontStyle(this ICssStyleDeclaration style) =>
/// oblique.
///
[DomName("fontStyle")]
+ [DomName("font-style")]
[DomAccessor(Accessors.Setter)]
public static void SetFontStyle(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.FontStyle, value);
@@ -2048,6 +2244,7 @@ public static void SetFontStyle(this ICssStyleDeclaration style, String value) =
/// letters.
///
[DomName("fontVariant")]
+ [DomName("font-variant")]
[DomAccessor(Accessors.Getter)]
public static String GetFontVariant(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.FontVariant);
@@ -2057,6 +2254,7 @@ public static String GetFontVariant(this ICssStyleDeclaration style) =>
/// letters.
///
[DomName("fontVariant")]
+ [DomName("font-variant")]
[DomAccessor(Accessors.Setter)]
public static void SetFontVariant(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.FontVariant, value);
@@ -2065,6 +2263,7 @@ public static void SetFontVariant(this ICssStyleDeclaration style, String value)
/// Gets of sets the weight of the font of the object.
///
[DomName("fontWeight")]
+ [DomName("font-weight")]
[DomAccessor(Accessors.Getter)]
public static String GetFontWeight(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.FontWeight);
@@ -2073,6 +2272,7 @@ public static String GetFontWeight(this ICssStyleDeclaration style) =>
/// Sets of sets the weight of the font of the object.
///
[DomName("fontWeight")]
+ [DomName("font-weight")]
[DomAccessor(Accessors.Setter)]
public static void SetFontWeight(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.FontWeight, value);
@@ -2083,6 +2283,7 @@ public static void SetFontWeight(this ICssStyleDeclaration style, String value)
/// horizontal.
///
[DomName("glyphOrientationHorizontal")]
+ [DomName("glyph-orientation-horizontal")]
[DomAccessor(Accessors.Getter)]
public static String GetGlyphOrientationHorizontal(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.GlyphOrientationHorizontal);
@@ -2093,6 +2294,7 @@ public static String GetGlyphOrientationHorizontal(this ICssStyleDeclaration sty
/// horizontal.
///
[DomName("glyphOrientationHorizontal")]
+ [DomName("glyph-orientation-horizontal")]
[DomAccessor(Accessors.Setter)]
public static void SetGlyphOrientationHorizontal(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.GlyphOrientationHorizontal, value);
@@ -2103,6 +2305,7 @@ public static void SetGlyphOrientationHorizontal(this ICssStyleDeclaration style
/// vertical.
///
[DomName("glyphOrientationVertical")]
+ [DomName("glyph-orientation-vertical")]
[DomAccessor(Accessors.Getter)]
public static String GetGlyphOrientationVertical(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.GlyphOrientationVertical);
@@ -2113,6 +2316,7 @@ public static String GetGlyphOrientationVertical(this ICssStyleDeclaration style
/// vertical.
///
[DomName("glyphOrientationVertical")]
+ [DomName("glyph-orientation-vertical")]
[DomAccessor(Accessors.Setter)]
public static void SetGlyphOrientationVertical(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.GlyphOrientationVertical, value);
@@ -2137,6 +2341,7 @@ public static void SetHeight(this ICssStyleDeclaration style, String value) =>
/// Gets the state of an IME.
///
[DomName("imeMode")]
+ [DomName("ime-mode")]
[DomAccessor(Accessors.Getter)]
public static String GetImeMode(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.ImeMode);
@@ -2145,6 +2350,7 @@ public static String GetImeMode(this ICssStyleDeclaration style) =>
/// Sets the state of an IME.
///
[DomName("imeMode")]
+ [DomName("ime-mode")]
[DomAccessor(Accessors.Setter)]
public static void SetImeMode(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.ImeMode, value);
@@ -2155,6 +2361,7 @@ public static void SetImeMode(this ICssStyleDeclaration style, String value) =>
/// resolved.
///
[DomName("justifyContent")]
+ [DomName("justify-content")]
[DomAccessor(Accessors.Getter)]
public static String GetJustifyContent(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.JustifyContent);
@@ -2165,6 +2372,7 @@ public static String GetJustifyContent(this ICssStyleDeclaration style) =>
/// resolved.
///
[DomName("justifyContent")]
+ [DomName("justify-content")]
[DomAccessor(Accessors.Setter)]
public static void SetJustifyContent(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.JustifyContent, value);
@@ -2174,6 +2382,7 @@ public static void SetJustifyContent(this ICssStyleDeclaration style, String val
/// the layout of text characters.
///
[DomName("layoutGrid")]
+ [DomName("layout-grid")]
[DomAccessor(Accessors.Getter)]
public static String GetLayoutGrid(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.LayoutGrid);
@@ -2183,6 +2392,7 @@ public static String GetLayoutGrid(this ICssStyleDeclaration style) =>
/// the layout of text characters.
///
[DomName("layoutGrid")]
+ [DomName("layout-grid")]
[DomAccessor(Accessors.Setter)]
public static void SetLayoutGrid(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.LayoutGrid, value);
@@ -2192,6 +2402,7 @@ public static void SetLayoutGrid(this ICssStyleDeclaration style, String value)
/// the text content of an element.
///
[DomName("layoutGridChar")]
+ [DomName("layout-grid-char")]
[DomAccessor(Accessors.Getter)]
public static String GetLayoutGridChar(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.LayoutGridChar);
@@ -2201,6 +2412,7 @@ public static String GetLayoutGridChar(this ICssStyleDeclaration style) =>
/// the text content of an element.
///
[DomName("layoutGridChar")]
+ [DomName("layout-grid-char")]
[DomAccessor(Accessors.Setter)]
public static void SetLayoutGridChar(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.LayoutGridChar, value);
@@ -2210,6 +2422,7 @@ public static void SetLayoutGridChar(this ICssStyleDeclaration style, String val
/// of an element.
///
[DomName("layoutGridLine")]
+ [DomName("layout-grid-line")]
[DomAccessor(Accessors.Getter)]
public static String GetLayoutGridLine(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.LayoutGridLine);
@@ -2219,6 +2432,7 @@ public static String GetLayoutGridLine(this ICssStyleDeclaration style) =>
/// of an element.
///
[DomName("layoutGridLine")]
+ [DomName("layout-grid-line")]
[DomAccessor(Accessors.Setter)]
public static void SetLayoutGridLine(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.LayoutGridLine, value);
@@ -2227,6 +2441,7 @@ public static void SetLayoutGridLine(this ICssStyleDeclaration style, String val
/// Gets whether the text layout grid uses two dimensions.
///
[DomName("layoutGridMode")]
+ [DomName("layout-grid-mode")]
[DomAccessor(Accessors.Getter)]
public static String GetLayoutGridMode(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.LayoutGridMode);
@@ -2235,6 +2450,7 @@ public static String GetLayoutGridMode(this ICssStyleDeclaration style) =>
/// Sets whether the text layout grid uses two dimensions.
///
[DomName("layoutGridMode")]
+ [DomName("layout-grid-mode")]
[DomAccessor(Accessors.Setter)]
public static void SetLayoutGridMode(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.LayoutGridMode, value);
@@ -2244,6 +2460,7 @@ public static void SetLayoutGridMode(this ICssStyleDeclaration style, String val
/// of an element.
///
[DomName("layoutGridType")]
+ [DomName("layout-grid-type")]
[DomAccessor(Accessors.Getter)]
public static String GetLayoutGridType(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.LayoutGridType);
@@ -2253,6 +2470,7 @@ public static String GetLayoutGridType(this ICssStyleDeclaration style) =>
/// of an element.
///
[DomName("layoutGridType")]
+ [DomName("layout-grid-type")]
[DomAccessor(Accessors.Setter)]
public static void SetLayoutGridType(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.LayoutGridType, value);
@@ -2280,6 +2498,7 @@ public static void SetLeft(this ICssStyleDeclaration style, String value) =>
/// object.
///
[DomName("letterSpacing")]
+ [DomName("letter-spacing")]
[DomAccessor(Accessors.Getter)]
public static String GetLetterSpacing(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.LetterSpacing);
@@ -2289,6 +2508,7 @@ public static String GetLetterSpacing(this ICssStyleDeclaration style) =>
/// object.
///
[DomName("letterSpacing")]
+ [DomName("letter-spacing")]
[DomAccessor(Accessors.Setter)]
public static void SetLetterSpacing(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.LetterSpacing, value);
@@ -2297,6 +2517,7 @@ public static void SetLetterSpacing(this ICssStyleDeclaration style, String valu
/// Gets the distance between lines in the object.
///
[DomName("lineHeight")]
+ [DomName("line-height")]
[DomAccessor(Accessors.Getter)]
public static String GetLineHeight(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.LineHeight);
@@ -2305,6 +2526,7 @@ public static String GetLineHeight(this ICssStyleDeclaration style) =>
/// Sets the distance between lines in the object.
///
[DomName("lineHeight")]
+ [DomName("line-height")]
[DomAccessor(Accessors.Setter)]
public static void SetLineHeight(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.LineHeight, value);
@@ -2314,6 +2536,7 @@ public static void SetLineHeight(this ICssStyleDeclaration style, String value)
/// object.
///
[DomName("listStyle")]
+ [DomName("list-style")]
[DomAccessor(Accessors.Getter)]
public static String GetListStyle(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.ListStyle);
@@ -2323,6 +2546,7 @@ public static String GetListStyle(this ICssStyleDeclaration style) =>
/// object.
///
[DomName("listStyle")]
+ [DomName("list-style")]
[DomAccessor(Accessors.Setter)]
public static void SetListStyle(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.ListStyle, value);
@@ -2332,6 +2556,7 @@ public static void SetListStyle(this ICssStyleDeclaration style, String value) =
/// list-item marker for the object.
///
[DomName("listStyleImage")]
+ [DomName("list-style-image")]
[DomAccessor(Accessors.Getter)]
public static String GetListStyleImage(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.ListStyleImage);
@@ -2341,6 +2566,7 @@ public static String GetListStyleImage(this ICssStyleDeclaration style) =>
/// list-item marker for the object.
///
[DomName("listStyleImage")]
+ [DomName("list-style-image")]
[DomAccessor(Accessors.Setter)]
public static void SetListStyleImage(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.ListStyleImage, value);
@@ -2350,6 +2576,7 @@ public static void SetListStyleImage(this ICssStyleDeclaration style, String val
/// drawn relative to the content of the object.
///
[DomName("listStylePosition")]
+ [DomName("list-style-position")]
[DomAccessor(Accessors.Getter)]
public static String GetListStylePosition(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.ListStylePosition);
@@ -2359,6 +2586,7 @@ public static String GetListStylePosition(this ICssStyleDeclaration style) =>
/// drawn relative to the content of the object.
///
[DomName("listStylePosition")]
+ [DomName("list-style-position")]
[DomAccessor(Accessors.Setter)]
public static void SetListStylePosition(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.ListStylePosition, value);
@@ -2368,6 +2596,7 @@ public static void SetListStylePosition(this ICssStyleDeclaration style, String
/// object.
///
[DomName("listStyleType")]
+ [DomName("list-style-type")]
[DomAccessor(Accessors.Getter)]
public static String GetListStyleType(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.ListStyleType);
@@ -2377,6 +2606,7 @@ public static String GetListStyleType(this ICssStyleDeclaration style) =>
/// object.
///
[DomName("listStyleType")]
+ [DomName("list-style-type")]
[DomAccessor(Accessors.Setter)]
public static void SetListStyleType(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.ListStyleType, value);
@@ -2403,6 +2633,7 @@ public static void SetMargin(this ICssStyleDeclaration style, String value) =>
/// Gets the height of the bottom margin of the object.
///
[DomName("marginBottom")]
+ [DomName("margin-bottom")]
[DomAccessor(Accessors.Getter)]
public static String GetMarginBottom(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.MarginBottom);
@@ -2411,6 +2642,7 @@ public static String GetMarginBottom(this ICssStyleDeclaration style) =>
/// Sets the height of the bottom margin of the object.
///
[DomName("marginBottom")]
+ [DomName("margin-bottom")]
[DomAccessor(Accessors.Setter)]
public static void SetMarginBottom(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.MarginBottom, value);
@@ -2419,6 +2651,7 @@ public static void SetMarginBottom(this ICssStyleDeclaration style, String value
/// Gets the width of the left margin of the object.
///
[DomName("marginLeft")]
+ [DomName("margin-left")]
[DomAccessor(Accessors.Getter)]
public static String GetMarginLeft(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.MarginLeft);
@@ -2427,6 +2660,7 @@ public static String GetMarginLeft(this ICssStyleDeclaration style) =>
/// Sets the width of the left margin of the object.
///
[DomName("marginLeft")]
+ [DomName("margin-left")]
[DomAccessor(Accessors.Setter)]
public static void SetMarginLeft(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.MarginLeft, value);
@@ -2435,6 +2669,7 @@ public static void SetMarginLeft(this ICssStyleDeclaration style, String value)
/// Gets the width of the right margin of the object.
///
[DomName("marginRight")]
+ [DomName("margin-right")]
[DomAccessor(Accessors.Getter)]
public static String GetMarginRight(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.MarginRight);
@@ -2443,6 +2678,7 @@ public static String GetMarginRight(this ICssStyleDeclaration style) =>
/// Sets the width of the right margin of the object.
///
[DomName("marginRight")]
+ [DomName("margin-right")]
[DomAccessor(Accessors.Setter)]
public static void SetMarginRight(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.MarginRight, value);
@@ -2451,6 +2687,7 @@ public static void SetMarginRight(this ICssStyleDeclaration style, String value)
/// Gets the height of the top margin of the object.
///
[DomName("marginTop")]
+ [DomName("margin-top")]
[DomAccessor(Accessors.Getter)]
public static String GetMarginTop(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.MarginTop);
@@ -2459,6 +2696,7 @@ public static String GetMarginTop(this ICssStyleDeclaration style) =>
/// Sets the height of the top margin of the object.
///
[DomName("marginTop")]
+ [DomName("margin-top")]
[DomAccessor(Accessors.Setter)]
public static void SetMarginTop(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.MarginTop, value);
@@ -2487,6 +2725,7 @@ public static void SetMarker(this ICssStyleDeclaration style, String value) =>
/// shape.
///
[DomName("markerEnd")]
+ [DomName("marker-end")]
[DomAccessor(Accessors.Getter)]
public static String GetMarkerEnd(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.MarkerEnd);
@@ -2497,6 +2736,7 @@ public static String GetMarkerEnd(this ICssStyleDeclaration style) =>
/// shape.
///
[DomName("markerEnd")]
+ [DomName("marker-end")]
[DomAccessor(Accessors.Setter)]
public static void SetMarkerEnd(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.MarkerEnd, value);
@@ -2507,6 +2747,7 @@ public static void SetMarkerEnd(this ICssStyleDeclaration style, String value) =
/// first and last) of a given path element or basic shape.
///
[DomName("markerMid")]
+ [DomName("marker-mid")]
[DomAccessor(Accessors.Getter)]
public static String GetMarkerMid(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.MarkerMid);
@@ -2517,6 +2758,7 @@ public static String GetMarkerMid(this ICssStyleDeclaration style) =>
/// first and last) of a given path element or basic shape.
///
[DomName("markerMid")]
+ [DomName("marker-mid")]
[DomAccessor(Accessors.Setter)]
public static void SetMarkerMid(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.MarkerMid, value);
@@ -2527,6 +2769,7 @@ public static void SetMarkerMid(this ICssStyleDeclaration style, String value) =
/// shape.
///
[DomName("markerStart")]
+ [DomName("marker-start")]
[DomAccessor(Accessors.Getter)]
public static String GetMarkerStart(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.MarkerStart);
@@ -2537,6 +2780,7 @@ public static String GetMarkerStart(this ICssStyleDeclaration style) =>
/// shape.
///
[DomName("markerStart")]
+ [DomName("marker-start")]
[DomAccessor(Accessors.Setter)]
public static void SetMarkerStart(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.MarkerStart, value);
@@ -2561,6 +2805,7 @@ public static void SetMask(this ICssStyleDeclaration style, String value) =>
/// Gets the maximum height for an element.
///
[DomName("maxHeight")]
+ [DomName("max-height")]
[DomAccessor(Accessors.Getter)]
public static String GetMaxHeight(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.MaxHeight);
@@ -2569,6 +2814,7 @@ public static String GetMaxHeight(this ICssStyleDeclaration style) =>
/// Sets the maximum height for an element.
///
[DomName("maxHeight")]
+ [DomName("max-height")]
[DomAccessor(Accessors.Setter)]
public static void SetMaxHeight(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.MaxHeight, value);
@@ -2577,6 +2823,8 @@ public static void SetMaxHeight(this ICssStyleDeclaration style, String value) =
/// Gets the maximum width for an element.
///
[DomName("maxWidth")]
+ [DomName("max-width")]
+ [DomAccessor(Accessors.Getter)]
public static String GetMaxWidth(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.MaxWidth);
@@ -2584,6 +2832,7 @@ public static String GetMaxWidth(this ICssStyleDeclaration style) =>
/// Sets the maximum width for an element.
///
[DomName("maxWidth")]
+ [DomName("max-width")]
[DomAccessor(Accessors.Setter)]
public static void SetMaxWidth(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.MaxWidth, value);
@@ -2592,6 +2841,7 @@ public static void SetMaxWidth(this ICssStyleDeclaration style, String value) =>
/// Gets the minimum height for an element.
///
[DomName("minHeight")]
+ [DomName("min-height")]
[DomAccessor(Accessors.Getter)]
public static String GetMinHeight(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.MinHeight);
@@ -2600,6 +2850,7 @@ public static String GetMinHeight(this ICssStyleDeclaration style) =>
/// Sets the minimum height for an element.
///
[DomName("minHeight")]
+ [DomName("min-height")]
[DomAccessor(Accessors.Setter)]
public static void SetMinHeight(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.MinHeight, value);
@@ -2608,6 +2859,7 @@ public static void SetMinHeight(this ICssStyleDeclaration style, String value) =
/// Gets the minimum width for an element.
///
[DomName("minWidth")]
+ [DomName("min-width")]
[DomAccessor(Accessors.Getter)]
public static String GetMinWidth(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.MinWidth);
@@ -2616,6 +2868,7 @@ public static String GetMinWidth(this ICssStyleDeclaration style) =>
/// Sets the minimum width for an element.
///
[DomName("minWidth")]
+ [DomName("min-width")]
[DomAccessor(Accessors.Setter)]
public static void SetMinWidth(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.MinWidth, value);
@@ -2698,6 +2951,7 @@ public static void SetOutline(this ICssStyleDeclaration style, String value) =>
/// Gets the color of the outline frame.
///
[DomName("outlineColor")]
+ [DomName("outline-color")]
[DomAccessor(Accessors.Getter)]
public static String GetOutlineColor(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.OutlineColor);
@@ -2706,6 +2960,7 @@ public static String GetOutlineColor(this ICssStyleDeclaration style) =>
/// Sets the color of the outline frame.
///
[DomName("outlineColor")]
+ [DomName("outline-color")]
[DomAccessor(Accessors.Setter)]
public static void SetOutlineColor(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.OutlineColor, value);
@@ -2714,6 +2969,7 @@ public static void SetOutlineColor(this ICssStyleDeclaration style, String value
/// Gets the style of the outline frame.
///
[DomName("outlineStyle")]
+ [DomName("outline-style")]
[DomAccessor(Accessors.Getter)]
public static String GetOutlineStyle(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.OutlineStyle);
@@ -2722,6 +2978,7 @@ public static String GetOutlineStyle(this ICssStyleDeclaration style) =>
/// Sets the style of the outline frame.
///
[DomName("outlineStyle")]
+ [DomName("outline-style")]
[DomAccessor(Accessors.Setter)]
public static void SetOutlineStyle(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.OutlineStyle, value);
@@ -2730,6 +2987,7 @@ public static void SetOutlineStyle(this ICssStyleDeclaration style, String value
/// Gets the width of the outline frame.
///
[DomName("outlineWidth")]
+ [DomName("outline-width")]
[DomAccessor(Accessors.Getter)]
public static String GetOutlineWidth(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.OutlineWidth);
@@ -2738,6 +2996,7 @@ public static String GetOutlineWidth(this ICssStyleDeclaration style) =>
/// Sets the width of the outline frame.
///
[DomName("outlineWidth")]
+ [DomName("outline-width")]
[DomAccessor(Accessors.Setter)]
public static void SetOutlineWidth(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.OutlineWidth, value);
@@ -2765,6 +3024,7 @@ public static void SetOverflow(this ICssStyleDeclaration style, String value) =>
/// content exceeds the width of the object.
///
[DomName("overflowX")]
+ [DomName("overflow-x")]
[DomAccessor(Accessors.Getter)]
public static String GetOverflowX(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.OverflowX);
@@ -2774,6 +3034,7 @@ public static String GetOverflowX(this ICssStyleDeclaration style) =>
/// content exceeds the width of the object.
///
[DomName("overflowX")]
+ [DomName("overflow-x")]
[DomAccessor(Accessors.Setter)]
public static void SetOverflowX(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.OverflowX, value);
@@ -2783,6 +3044,7 @@ public static void SetOverflowX(this ICssStyleDeclaration style, String value) =
/// content exceeds the height of the object.
///
[DomName("overflowY")]
+ [DomName("overflow-y")]
[DomAccessor(Accessors.Getter)]
public static String GetOverflowY(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.OverflowY);
@@ -2792,6 +3054,7 @@ public static String GetOverflowY(this ICssStyleDeclaration style) =>
/// content exceeds the height of the object.
///
[DomName("overflowY")]
+ [DomName("overflow-y")]
[DomAccessor(Accessors.Setter)]
public static void SetOverflowY(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.OverflowY, value);
@@ -2821,6 +3084,7 @@ public static void SetPadding(this ICssStyleDeclaration style, String value) =>
/// border of the object and the content.
///
[DomName("paddingBottom")]
+ [DomName("padding-bottom")]
[DomAccessor(Accessors.Getter)]
public static String GetPaddingBottom(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.PaddingBottom);
@@ -2830,6 +3094,7 @@ public static String GetPaddingBottom(this ICssStyleDeclaration style) =>
/// border of the object and the content.
///
[DomName("paddingBottom")]
+ [DomName("padding-bottom")]
[DomAccessor(Accessors.Setter)]
public static void SetPaddingBottom(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.PaddingBottom, value);
@@ -2839,6 +3104,7 @@ public static void SetPaddingBottom(this ICssStyleDeclaration style, String valu
/// border of the object and the content.
///
[DomName("paddingLeft")]
+ [DomName("padding-left")]
[DomAccessor(Accessors.Getter)]
public static String GetPaddingLeft(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.PaddingLeft);
@@ -2848,6 +3114,7 @@ public static String GetPaddingLeft(this ICssStyleDeclaration style) =>
/// border of the object and the content.
///
[DomName("paddingLeft")]
+ [DomName("padding-left")]
[DomAccessor(Accessors.Setter)]
public static void SetPaddingLeft(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.PaddingLeft, value);
@@ -2857,6 +3124,7 @@ public static void SetPaddingLeft(this ICssStyleDeclaration style, String value)
/// of the object and the content.
///
[DomName("paddingRight")]
+ [DomName("padding-right")]
[DomAccessor(Accessors.Getter)]
public static String GetPaddingRight(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.PaddingRight);
@@ -2866,6 +3134,7 @@ public static String GetPaddingRight(this ICssStyleDeclaration style) =>
/// of the object and the content.
///
[DomName("paddingRight")]
+ [DomName("padding-right")]
[DomAccessor(Accessors.Setter)]
public static void SetPaddingRight(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.PaddingRight, value);
@@ -2875,6 +3144,7 @@ public static void SetPaddingRight(this ICssStyleDeclaration style, String value
/// of the object and the content.
///
[DomName("paddingTop")]
+ [DomName("padding-top")]
[DomAccessor(Accessors.Getter)]
public static String GetPaddingTop(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.PaddingTop);
@@ -2884,6 +3154,7 @@ public static String GetPaddingTop(this ICssStyleDeclaration style) =>
/// of the object and the content.
///
[DomName("paddingTop")]
+ [DomName("padding-top")]
[DomAccessor(Accessors.Setter)]
public static void SetPaddingTop(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.PaddingTop, value);
@@ -2893,6 +3164,7 @@ public static void SetPaddingTop(this ICssStyleDeclaration style, String value)
/// the object.
///
[DomName("pageBreakAfter")]
+ [DomName("page-break-after")]
[DomAccessor(Accessors.Getter)]
public static String GetPageBreakAfter(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.PageBreakAfter);
@@ -2902,6 +3174,7 @@ public static String GetPageBreakAfter(this ICssStyleDeclaration style) =>
/// the object.
///
[DomName("pageBreakAfter")]
+ [DomName("page-break-after")]
[DomAccessor(Accessors.Setter)]
public static void SetPageBreakAfter(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.PageBreakAfter, value);
@@ -2911,6 +3184,7 @@ public static void SetPageBreakAfter(this ICssStyleDeclaration style, String val
/// the object.
///
[DomName("pageBreakBefore")]
+ [DomName("page-break-before")]
[DomAccessor(Accessors.Getter)]
public static String GetPageBreakBefore(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.PageBreakBefore);
@@ -2920,6 +3194,7 @@ public static String GetPageBreakBefore(this ICssStyleDeclaration style) =>
/// the object.
///
[DomName("pageBreakBefore")]
+ [DomName("page-break-before")]
[DomAccessor(Accessors.Setter)]
public static void SetPageBreakBefore(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.PageBreakBefore, value);
@@ -2929,6 +3204,7 @@ public static void SetPageBreakBefore(this ICssStyleDeclaration style, String va
/// occur inside the object.
///
[DomName("pageBreakInside")]
+ [DomName("page-break-inside")]
[DomAccessor(Accessors.Getter)]
public static String GetPageBreakInside(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.PageBreakInside);
@@ -2938,6 +3214,7 @@ public static String GetPageBreakInside(this ICssStyleDeclaration style) =>
/// occur inside the object.
///
[DomName("pageBreakInside")]
+ [DomName("page-break-inside")]
[DomAccessor(Accessors.Setter)]
public static void SetPageBreakInside(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.PageBreakInside, value);
@@ -2966,6 +3243,7 @@ public static void SetPerspective(this ICssStyleDeclaration style, String value)
/// property declaration.
///
[DomName("perspectiveOrigin")]
+ [DomName("perspective-origin")]
[DomAccessor(Accessors.Getter)]
public static String GetPerspectiveOrigin(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.PerspectiveOrigin);
@@ -2976,6 +3254,7 @@ public static String GetPerspectiveOrigin(this ICssStyleDeclaration style) =>
/// property declaration.
///
[DomName("perspectiveOrigin")]
+ [DomName("perspective-origin")]
[DomAccessor(Accessors.Setter)]
public static void SetPerspectiveOrigin(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.PerspectiveOrigin, value);
@@ -2986,6 +3265,7 @@ public static void SetPerspectiveOrigin(this ICssStyleDeclaration style, String
/// event in SVG.
///
[DomName("pointerEvents")]
+ [DomName("pointer-events")]
[DomAccessor(Accessors.Getter)]
public static String GetPointerEvents(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.PointerEvents);
@@ -2996,6 +3276,7 @@ public static String GetPointerEvents(this ICssStyleDeclaration style) =>
/// event in SVG.
///
[DomName("pointerEvents")]
+ [DomName("pointer-events")]
[DomAccessor(Accessors.Setter)]
public static void SetPointerEvents(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.PointerEvents, value);
@@ -3057,6 +3338,7 @@ public static void SetRight(this ICssStyleDeclaration style, String value) =>
/// content.
///
[DomName("rubyAlign")]
+ [DomName("ruby-align")]
[DomAccessor(Accessors.Getter)]
public static String GetRubyAlign(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.RubyAlign);
@@ -3066,6 +3348,7 @@ public static String GetRubyAlign(this ICssStyleDeclaration style) =>
/// content.
///
[DomName("rubyAlign")]
+ [DomName("ruby-align")]
[DomAccessor(Accessors.Setter)]
public static void SetRubyAlign(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.RubyAlign, value);
@@ -3077,6 +3360,7 @@ public static void SetRubyAlign(this ICssStyleDeclaration style, String value) =
/// ruby base.
///
[DomName("rubyOverhang")]
+ [DomName("ruby-overhang")]
[DomAccessor(Accessors.Getter)]
public static String GetRubyOverhang(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.RubyOverhang);
@@ -3088,6 +3372,7 @@ public static String GetRubyOverhang(this ICssStyleDeclaration style) =>
/// ruby base.
///
[DomName("rubyOverhang")]
+ [DomName("ruby-overhang")]
[DomAccessor(Accessors.Setter)]
public static void SetRubyOverhang(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.RubyOverhang, value);
@@ -3097,6 +3382,7 @@ public static void SetRubyOverhang(this ICssStyleDeclaration style, String value
/// with respect to its base.
///
[DomName("rubyPosition")]
+ [DomName("ruby-position")]
[DomAccessor(Accessors.Getter)]
public static String GetRubyPosition(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.RubyPosition);
@@ -3106,6 +3392,7 @@ public static String GetRubyPosition(this ICssStyleDeclaration style) =>
/// with respect to its base.
///
[DomName("rubyPosition")]
+ [DomName("ruby-position")]
[DomAccessor(Accessors.Setter)]
public static void SetRubyPosition(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.RubyPosition, value);
@@ -3115,6 +3402,7 @@ public static void SetRubyPosition(this ICssStyleDeclaration style, String value
/// box and scroll arrows of a scroll bar.
///
[DomName("scrollbar3dLightColor")]
+ [DomName("scrollbar3d-light-color")]
[DomAccessor(Accessors.Getter)]
public static String GetScrollbar3dLightColor(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.Scrollbar3dLightColor);
@@ -3124,6 +3412,7 @@ public static String GetScrollbar3dLightColor(this ICssStyleDeclaration style) =
/// box and scroll arrows of a scroll bar.
///
[DomName("scrollbar3dLightColor")]
+ [DomName("scrollbar3d-light-color")]
[DomAccessor(Accessors.Setter)]
public static void SetScrollbar3dLightColor(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.Scrollbar3dLightColor, value);
@@ -3132,6 +3421,7 @@ public static void SetScrollbar3dLightColor(this ICssStyleDeclaration style, Str
/// Gets the color of the arrow elements of a scroll arrow.
///
[DomName("scrollbarArrowColor")]
+ [DomName("scrollbar-arrow-color")]
[DomAccessor(Accessors.Getter)]
public static String GetScrollbarArrowColor(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.ScrollbarArrowColor);
@@ -3140,6 +3430,7 @@ public static String GetScrollbarArrowColor(this ICssStyleDeclaration style) =>
/// Sets the color of the arrow elements of a scroll arrow.
///
[DomName("scrollbarArrowColor")]
+ [DomName("scrollbar-arrow-color")]
[DomAccessor(Accessors.Setter)]
public static void SetScrollbarArrowColor(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.ScrollbarArrowColor, value);
@@ -3148,6 +3439,7 @@ public static void SetScrollbarArrowColor(this ICssStyleDeclaration style, Strin
/// Gets the color of the gutter of a scroll bar.
///
[DomName("scrollbarDarkShadowColor")]
+ [DomName("scrollbar-dark-shadow-color")]
[DomAccessor(Accessors.Getter)]
public static String GetScrollbarDarkShadowColor(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.ScrollbarDarkShadowColor);
@@ -3156,6 +3448,7 @@ public static String GetScrollbarDarkShadowColor(this ICssStyleDeclaration style
/// Sets the color of the gutter of a scroll bar.
///
[DomName("scrollbarDarkShadowColor")]
+ [DomName("scrollbar-dark-shadow-color")]
[DomAccessor(Accessors.Setter)]
public static void SetScrollbarDarkShadowColor(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.ScrollbarDarkShadowColor, value);
@@ -3165,6 +3458,7 @@ public static void SetScrollbarDarkShadowColor(this ICssStyleDeclaration style,
/// scroll bar.
///
[DomName("scrollbarFaceColor")]
+ [DomName("scrollbar-face-color")]
[DomAccessor(Accessors.Getter)]
public static String GetScrollbarFaceColor(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.ScrollbarFaceColor);
@@ -3174,6 +3468,7 @@ public static String GetScrollbarFaceColor(this ICssStyleDeclaration style) =>
/// scroll bar.
///
[DomName("scrollbarFaceColor")]
+ [DomName("scrollbar-face-color")]
[DomAccessor(Accessors.Setter)]
public static void SetScrollbarFaceColor(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.ScrollbarFaceColor, value);
@@ -3183,6 +3478,7 @@ public static void SetScrollbarFaceColor(this ICssStyleDeclaration style, String
/// and scroll arrows of a scroll bar.
///
[DomName("scrollbarHighlightColor")]
+ [DomName("scrollbar-highlight-color")]
[DomAccessor(Accessors.Getter)]
public static String GetScrollbarHighlightColor(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.ScrollbarHighlightColor);
@@ -3192,6 +3488,7 @@ public static String GetScrollbarHighlightColor(this ICssStyleDeclaration style)
/// and scroll arrows of a scroll bar.
///
[DomName("scrollbarHighlightColor")]
+ [DomName("scrollbar-highlight-color")]
[DomAccessor(Accessors.Setter)]
public static void SetScrollbarHighlightColor(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.ScrollbarHighlightColor, value);
@@ -3201,6 +3498,7 @@ public static void SetScrollbarHighlightColor(this ICssStyleDeclaration style, S
/// box and scroll arrows of a scroll bar.
///
[DomName("scrollbarShadowColor")]
+ [DomName("scrollbar-shadow-color")]
[DomAccessor(Accessors.Getter)]
public static String GetScrollbarShadowColor(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.ScrollbarShadowColor);
@@ -3210,6 +3508,7 @@ public static String GetScrollbarShadowColor(this ICssStyleDeclaration style) =>
/// box and scroll arrows of a scroll bar.
///
[DomName("scrollbarShadowColor")]
+ [DomName("scrollbar-shadow-color")]
[DomAccessor(Accessors.Setter)]
public static void SetScrollbarShadowColor(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.ScrollbarShadowColor, value);
@@ -3218,6 +3517,7 @@ public static void SetScrollbarShadowColor(this ICssStyleDeclaration style, Stri
/// Gets the color of the track element of a scroll bar.
///
[DomName("scrollbarTrackColor")]
+ [DomName("scrollbar-track-color")]
[DomAccessor(Accessors.Getter)]
public static String GetScrollbarTrackColor(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.ScrollbarTrackColor);
@@ -3226,6 +3526,7 @@ public static String GetScrollbarTrackColor(this ICssStyleDeclaration style) =>
/// Sets the color of the track element of a scroll bar.
///
[DomName("scrollbarTrackColor")]
+ [DomName("scrollbar-track-color")]
[DomAccessor(Accessors.Setter)]
public static void SetScrollbarTrackColor(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.ScrollbarTrackColor, value);
@@ -3253,6 +3554,7 @@ public static void SetStroke(this ICssStyleDeclaration style, String value) =>
/// and gaps used to stroke paths.
///
[DomName("strokeDasharray")]
+ [DomName("stroke-dasharray")]
[DomAccessor(Accessors.Getter)]
public static String GetStrokeDashArray(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.StrokeDasharray);
@@ -3262,6 +3564,7 @@ public static String GetStrokeDashArray(this ICssStyleDeclaration style) =>
/// and gaps used to stroke paths.
///
[DomName("strokeDasharray")]
+ [DomName("stroke-dasharray")]
[DomAccessor(Accessors.Setter)]
public static void SetStrokeDashArray(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.StrokeDasharray, value);
@@ -3271,6 +3574,7 @@ public static void SetStrokeDashArray(this ICssStyleDeclaration style, String va
/// pattern to start the dash.
///
[DomName("strokeDashoffset")]
+ [DomName("stroke-dashoffset")]
[DomAccessor(Accessors.Getter)]
public static String GetStrokeDashOffset(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.StrokeDashoffset);
@@ -3280,6 +3584,7 @@ public static String GetStrokeDashOffset(this ICssStyleDeclaration style) =>
/// pattern to start the dash.
///
[DomName("strokeDashoffset")]
+ [DomName("stroke-dashoffset")]
[DomAccessor(Accessors.Setter)]
public static void SetStrokeDashOffset(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.StrokeDashoffset, value);
@@ -3289,6 +3594,7 @@ public static void SetStrokeDashOffset(this ICssStyleDeclaration style, String v
/// of open subpaths when they are stroked.
///
[DomName("strokeLinecap")]
+ [DomName("stroke-linecap")]
[DomAccessor(Accessors.Getter)]
public static String GetStrokeLineCap(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.StrokeLinecap);
@@ -3298,6 +3604,7 @@ public static String GetStrokeLineCap(this ICssStyleDeclaration style) =>
/// of open subpaths when they are stroked.
///
[DomName("strokeLinecap")]
+ [DomName("stroke-linecap")]
[DomAccessor(Accessors.Setter)]
public static void SetStrokeLineCap(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.StrokeLinecap, value);
@@ -3307,6 +3614,7 @@ public static void SetStrokeLineCap(this ICssStyleDeclaration style, String valu
/// corners of paths or basic shapes when they are stroked.
///
[DomName("strokeLinejoin")]
+ [DomName("stroke-linejoin")]
[DomAccessor(Accessors.Getter)]
public static String GetStrokeLineJoin(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.StrokeLinejoin);
@@ -3316,6 +3624,7 @@ public static String GetStrokeLineJoin(this ICssStyleDeclaration style) =>
/// corners of paths or basic shapes when they are stroked.
///
[DomName("strokeLinejoin")]
+ [DomName("stroke-linejoin")]
[DomAccessor(Accessors.Setter)]
public static void SetStrokeLineJoin(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.StrokeLinejoin, value);
@@ -3326,6 +3635,7 @@ public static void SetStrokeLineJoin(this ICssStyleDeclaration style, String val
/// property).
///
[DomName("strokeMiterlimit")]
+ [DomName("stroke-miterlimit")]
[DomAccessor(Accessors.Getter)]
public static String GetStrokeMiterLimit(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.StrokeMiterlimit);
@@ -3336,6 +3646,7 @@ public static String GetStrokeMiterLimit(this ICssStyleDeclaration style) =>
/// property).
///
[DomName("strokeMiterlimit")]
+ [DomName("stroke-miterlimit")]
[DomAccessor(Accessors.Setter)]
public static void SetStrokeMiterLimit(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.StrokeMiterlimit, value);
@@ -3345,6 +3656,7 @@ public static void SetStrokeMiterLimit(this ICssStyleDeclaration style, String v
/// operation that is used to stroke the current object.
///
[DomName("strokeOpacity")]
+ [DomName("stroke-opacity")]
[DomAccessor(Accessors.Getter)]
public static String GetStrokeOpacity(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.StrokeOpacity);
@@ -3354,6 +3666,7 @@ public static String GetStrokeOpacity(this ICssStyleDeclaration style) =>
/// operation that is used to stroke the current object.
///
[DomName("strokeOpacity")]
+ [DomName("stroke-opacity")]
[DomAccessor(Accessors.Setter)]
public static void SetStrokeOpacity(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.StrokeOpacity, value);
@@ -3363,6 +3676,7 @@ public static void SetStrokeOpacity(this ICssStyleDeclaration style, String valu
/// current object.
///
[DomName("strokeWidth")]
+ [DomName("stroke-width")]
[DomAccessor(Accessors.Getter)]
public static String GetStrokeWidth(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.StrokeWidth);
@@ -3372,6 +3686,7 @@ public static String GetStrokeWidth(this ICssStyleDeclaration style) =>
/// current object.
///
[DomName("strokeWidth")]
+ [DomName("stroke-width")]
[DomAccessor(Accessors.Setter)]
public static void SetStrokeWidth(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.StrokeWidth, value);
@@ -3381,6 +3696,7 @@ public static void SetStrokeWidth(this ICssStyleDeclaration style, String value)
/// fixed.
///
[DomName("tableLayout")]
+ [DomName("table-layout")]
[DomAccessor(Accessors.Getter)]
public static String GetTableLayout(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.TableLayout);
@@ -3390,6 +3706,7 @@ public static String GetTableLayout(this ICssStyleDeclaration style) =>
/// fixed.
///
[DomName("tableLayout")]
+ [DomName("table-layout")]
[DomAccessor(Accessors.Setter)]
public static void SetTableLayout(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.TableLayout, value);
@@ -3399,6 +3716,7 @@ public static void SetTableLayout(this ICssStyleDeclaration style, String value)
/// right-aligned, centered, or justified.
///
[DomName("textAlign")]
+ [DomName("text-align")]
[DomAccessor(Accessors.Getter)]
public static String GetTextAlign(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.TextAlign);
@@ -3408,6 +3726,7 @@ public static String GetTextAlign(this ICssStyleDeclaration style) =>
/// right-aligned, centered, or justified.
///
[DomName("textAlign")]
+ [DomName("text-align")]
[DomAccessor(Accessors.Setter)]
public static void SetTextAlign(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.TextAlign, value);
@@ -3418,6 +3737,7 @@ public static void SetTextAlign(this ICssStyleDeclaration style, String value) =
/// only line of text in the specified object.
///
[DomName("textAlignLast")]
+ [DomName("text-align-last")]
[DomAccessor(Accessors.Getter)]
public static String GetTextAlignLast(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.TextAlignLast);
@@ -3428,6 +3748,7 @@ public static String GetTextAlignLast(this ICssStyleDeclaration style) =>
/// only line of text in the specified object.
///
[DomName("textAlignLast")]
+ [DomName("text-align-last")]
[DomAccessor(Accessors.Setter)]
public static void SetTextAlignLast(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.TextAlignLast, value);
@@ -3436,6 +3757,7 @@ public static void SetTextAlignLast(this ICssStyleDeclaration style, String valu
/// Gets aligns a string of text relative to the specified point.
///
[DomName("textAnchor")]
+ [DomName("text-anchor")]
[DomAccessor(Accessors.Getter)]
public static String GetTextAnchor(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.TextAnchor);
@@ -3444,6 +3766,7 @@ public static String GetTextAnchor(this ICssStyleDeclaration style) =>
/// Sets aligns a string of text relative to the specified point.
///
[DomName("textAnchor")]
+ [DomName("text-anchor")]
[DomAccessor(Accessors.Setter)]
public static void SetTextAnchor(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.TextAnchor, value);
@@ -3453,6 +3776,7 @@ public static void SetTextAnchor(this ICssStyleDeclaration style, String value)
/// text.
///
[DomName("textAutospace")]
+ [DomName("text-autospace")]
[DomAccessor(Accessors.Getter)]
public static String GetTextAutospace(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.TextAutospace);
@@ -3462,6 +3786,7 @@ public static String GetTextAutospace(this ICssStyleDeclaration style) =>
/// text.
///
[DomName("textAutospace")]
+ [DomName("text-autospace")]
[DomAccessor(Accessors.Setter)]
public static void SetTextAutospace(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.TextAutospace, value);
@@ -3471,6 +3796,7 @@ public static void SetTextAutospace(this ICssStyleDeclaration style, String valu
/// has blink, line-through, overline, or underline decorations.
///
[DomName("textDecoration")]
+ [DomName("text-decoration")]
[DomAccessor(Accessors.Getter)]
public static String GetTextDecoration(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.TextDecoration);
@@ -3480,6 +3806,7 @@ public static String GetTextDecoration(this ICssStyleDeclaration style) =>
/// has blink, line-through, overline, or underline decorations.
///
[DomName("textDecoration")]
+ [DomName("text-decoration")]
[DomAccessor(Accessors.Setter)]
public static void SetTextDecoration(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.TextDecoration, value);
@@ -3488,6 +3815,7 @@ public static void SetTextDecoration(this ICssStyleDeclaration style, String val
/// Gets a value that indicates the style of the text decoration.
///
[DomName("textDecorationStyle")]
+ [DomName("text-decoration-style")]
[DomAccessor(Accessors.Getter)]
public static String GetTextDecorationStyle(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.TextDecorationStyle);
@@ -3496,6 +3824,7 @@ public static String GetTextDecorationStyle(this ICssStyleDeclaration style) =>
/// Sets a value that indicates the style of the text decoration.
///
[DomName("textDecorationStyle")]
+ [DomName("text-decoration-style")]
[DomAccessor(Accessors.Setter)]
public static void SetTextDecorationStyle(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.TextDecorationStyle, value);
@@ -3504,6 +3833,7 @@ public static void SetTextDecorationStyle(this ICssStyleDeclaration style, Strin
/// Gets a value that indicates the line of the text decoration.
///
[DomName("textDecorationLine")]
+ [DomName("text-decoration-line")]
[DomAccessor(Accessors.Getter)]
public static String GetTextDecorationLine(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.TextDecorationLine);
@@ -3512,6 +3842,7 @@ public static String GetTextDecorationLine(this ICssStyleDeclaration style) =>
/// Sets a value that indicates the line of the text decoration.
///
[DomName("textDecorationLine")]
+ [DomName("text-decoration-line")]
[DomAccessor(Accessors.Setter)]
public static void SetTextDecorationLine(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.TextDecorationLine, value);
@@ -3520,6 +3851,7 @@ public static void SetTextDecorationLine(this ICssStyleDeclaration style, String
/// Gets a value that indicates the color of the text decoration.
///
[DomName("textDecorationColor")]
+ [DomName("text-decoration-color")]
[DomAccessor(Accessors.Getter)]
public static String GetTextDecorationColor(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.TextDecorationColor);
@@ -3528,6 +3860,7 @@ public static String GetTextDecorationColor(this ICssStyleDeclaration style) =>
/// Sets a value that indicates the color of the text decoration.
///
[DomName("textDecorationColor")]
+ [DomName("text-decoration-color")]
[DomAccessor(Accessors.Setter)]
public static void SetTextDecorationColor(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.TextDecorationColor, value);
@@ -3537,6 +3870,7 @@ public static void SetTextDecorationColor(this ICssStyleDeclaration style, Strin
/// object.
///
[DomName("textIndent")]
+ [DomName("text-indent")]
[DomAccessor(Accessors.Getter)]
public static String GetTextIndent(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.TextIndent);
@@ -3546,6 +3880,7 @@ public static String GetTextIndent(this ICssStyleDeclaration style) =>
/// object.
///
[DomName("textIndent")]
+ [DomName("text-indent")]
[DomAccessor(Accessors.Setter)]
public static void SetTextIndent(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.TextIndent, value);
@@ -3555,6 +3890,7 @@ public static void SetTextIndent(this ICssStyleDeclaration style, String value)
/// object.
///
[DomName("textJustify")]
+ [DomName("text-justify")]
[DomAccessor(Accessors.Getter)]
public static String GetTextJustify(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.TextJustify);
@@ -3564,6 +3900,7 @@ public static String GetTextJustify(this ICssStyleDeclaration style) =>
/// object.
///
[DomName("textJustify")]
+ [DomName("text-justify")]
[DomAccessor(Accessors.Setter)]
public static void SetTextJustify(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.TextJustify, value);
@@ -3573,6 +3910,7 @@ public static void SetTextJustify(this ICssStyleDeclaration style, String value)
/// (...) to indicate text overflow.
///
[DomName("textOverflow")]
+ [DomName("text-overflow")]
[DomAccessor(Accessors.Getter)]
public static String GetTextOverflow(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.TextOverflow);
@@ -3582,6 +3920,7 @@ public static String GetTextOverflow(this ICssStyleDeclaration style) =>
/// (...) to indicate text overflow.
///
[DomName("textOverflow")]
+ [DomName("text-overflow")]
[DomAccessor(Accessors.Setter)]
public static void SetTextOverflow(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.TextOverflow, value);
@@ -3591,6 +3930,7 @@ public static void SetTextOverflow(this ICssStyleDeclaration style, String value
/// more drop shadows to the specified text.
///
[DomName("textShadow")]
+ [DomName("text-shadow")]
[DomAccessor(Accessors.Getter)]
public static String GetTextShadow(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.TextShadow);
@@ -3600,6 +3940,7 @@ public static String GetTextShadow(this ICssStyleDeclaration style) =>
/// more drop shadows to the specified text.
///
[DomName("textShadow")]
+ [DomName("text-shadow")]
[DomAccessor(Accessors.Setter)]
public static void SetTextShadow(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.TextShadow, value);
@@ -3608,6 +3949,7 @@ public static void SetTextShadow(this ICssStyleDeclaration style, String value)
/// Gets the rendering of the text in the object.
///
[DomName("textTransform")]
+ [DomName("text-transform")]
[DomAccessor(Accessors.Getter)]
public static String GetTextTransform(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.TextTransform);
@@ -3616,6 +3958,7 @@ public static String GetTextTransform(this ICssStyleDeclaration style) =>
/// Sets the rendering of the text in the object.
///
[DomName("textTransform")]
+ [DomName("text-transform")]
[DomAccessor(Accessors.Setter)]
public static void SetTextTransform(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.TextTransform, value);
@@ -3625,6 +3968,7 @@ public static void SetTextTransform(this ICssStyleDeclaration style, String valu
/// through the text-decoration property of the object.
///
[DomName("textUnderlinePosition")]
+ [DomName("text-underline-position")]
[DomAccessor(Accessors.Getter)]
public static String GetTextUnderlinePosition(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.TextUnderlinePosition);
@@ -3634,6 +3978,7 @@ public static String GetTextUnderlinePosition(this ICssStyleDeclaration style) =
/// through the text-decoration property of the object.
///
[DomName("textUnderlinePosition")]
+ [DomName("text-underline-position")]
[DomAccessor(Accessors.Setter)]
public static void SetTextUnderlinePosition(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.TextUnderlinePosition, value);
@@ -3679,6 +4024,7 @@ public static void SetTransform(this ICssStyleDeclaration style, String value) =
/// transformation for an element.
///
[DomName("transformOrigin")]
+ [DomName("transform-origin")]
[DomAccessor(Accessors.Getter)]
public static String GetTransformOrigin(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.TransformOrigin);
@@ -3688,6 +4034,7 @@ public static String GetTransformOrigin(this ICssStyleDeclaration style) =>
/// transformation for an element.
///
[DomName("transformOrigin")]
+ [DomName("transform-origin")]
[DomAccessor(Accessors.Setter)]
public static void SetTransformOrigin(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.TransformOrigin, value);
@@ -3697,6 +4044,7 @@ public static void SetTransformOrigin(this ICssStyleDeclaration style, String va
/// object are rendered in 3-D space.
///
[DomName("transformStyle")]
+ [DomName("transform-style")]
[DomAccessor(Accessors.Getter)]
public static String GetTransformStyle(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.TransformStyle);
@@ -3706,6 +4054,7 @@ public static String GetTransformStyle(this ICssStyleDeclaration style) =>
/// object are rendered in 3-D space.
///
[DomName("transformStyle")]
+ [DomName("transform-style")]
[DomAccessor(Accessors.Setter)]
public static void SetTransformStyle(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.TransformStyle, value);
@@ -3737,6 +4086,7 @@ public static void SetTransition(this ICssStyleDeclaration style, String value)
/// object properties identified in the transition property.
///
[DomName("transitionDelay")]
+ [DomName("transition-delay")]
[DomAccessor(Accessors.Getter)]
public static String GetTransitionDelay(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.TransitionDelay);
@@ -3748,6 +4098,7 @@ public static String GetTransitionDelay(this ICssStyleDeclaration style) =>
/// object properties identified in the transition property.
///
[DomName("transitionDelay")]
+ [DomName("transition-delay")]
[DomAccessor(Accessors.Setter)]
public static void SetTransitionDelay(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.TransitionDelay, value);
@@ -3758,6 +4109,7 @@ public static void SetTransitionDelay(this ICssStyleDeclaration style, String va
/// in the transition-property property.
///
[DomName("transitionDuration")]
+ [DomName("transition-duration")]
[DomAccessor(Accessors.Getter)]
public static String GetTransitionDuration(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.TransitionDuration);
@@ -3768,6 +4120,7 @@ public static String GetTransitionDuration(this ICssStyleDeclaration style) =>
/// in the transition-property property.
///
[DomName("transitionDuration")]
+ [DomName("transition-duration")]
[DomAccessor(Accessors.Setter)]
public static void SetTransitionDuration(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.TransitionDuration, value);
@@ -3779,6 +4132,7 @@ public static void SetTransitionDuration(this ICssStyleDeclaration style, String
/// applied when a new property value is specified.
///
[DomName("transitionProperty")]
+ [DomName("transition-property")]
[DomAccessor(Accessors.Getter)]
public static String GetTransitionProperty(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.TransitionProperty);
@@ -3790,6 +4144,7 @@ public static String GetTransitionProperty(this ICssStyleDeclaration style) =>
/// applied when a new property value is specified.
///
[DomName("transitionProperty")]
+ [DomName("transition-property")]
[DomAccessor(Accessors.Setter)]
public static void SetTransitionProperty(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.TransitionProperty, value);
@@ -3801,6 +4156,7 @@ public static void SetTransitionProperty(this ICssStyleDeclaration style, String
/// transition-property property.
///
[DomName("transitionTimingFunction")]
+ [DomName("transition-timing-function")]
[DomAccessor(Accessors.Getter)]
public static String GetTransitionTimingFunction(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.TransitionTimingFunction);
@@ -3812,6 +4168,7 @@ public static String GetTransitionTimingFunction(this ICssStyleDeclaration style
/// transition-property property.
///
[DomName("transitionTimingFunction")]
+ [DomName("transition-timing-function")]
[DomAccessor(Accessors.Setter)]
public static void SetTransitionTimingFunction(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.TransitionTimingFunction, value);
@@ -3821,6 +4178,7 @@ public static void SetTransitionTimingFunction(this ICssStyleDeclaration style,
/// bidirectional algorithm.
///
[DomName("unicodeBidi")]
+ [DomName("unicode-bidi")]
[DomAccessor(Accessors.Getter)]
public static String GetUnicodeBidi(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.UnicodeBidi);
@@ -3830,6 +4188,7 @@ public static String GetUnicodeBidi(this ICssStyleDeclaration style) =>
/// bidirectional algorithm.
///
[DomName("unicodeBidi")]
+ [DomName("unicode-bidi")]
[DomAccessor(Accessors.Setter)]
public static void SetUnicodeBidi(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.UnicodeBidi, value);
@@ -3838,6 +4197,7 @@ public static void SetUnicodeBidi(this ICssStyleDeclaration style, String value)
/// Gets the vertical alignment of the object.
///
[DomName("verticalAlign")]
+ [DomName("vertical-align")]
[DomAccessor(Accessors.Getter)]
public static String GetVerticalAlign(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.VerticalAlign);
@@ -3846,6 +4206,7 @@ public static String GetVerticalAlign(this ICssStyleDeclaration style) =>
/// Sets the vertical alignment of the object.
///
[DomName("verticalAlign")]
+ [DomName("vertical-align")]
[DomAccessor(Accessors.Setter)]
public static void SetVerticalAlign(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.VerticalAlign, value);
@@ -3871,6 +4232,7 @@ public static void SetVisibility(this ICssStyleDeclaration style, String value)
/// broken inside the object.
///
[DomName("whiteSpace")]
+ [DomName("white-space")]
[DomAccessor(Accessors.Getter)]
public static String GetWhiteSpace(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.WhiteSpace);
@@ -3880,6 +4242,7 @@ public static String GetWhiteSpace(this ICssStyleDeclaration style) =>
/// broken inside the object.
///
[DomName("whiteSpace")]
+ [DomName("white-space")]
[DomAccessor(Accessors.Setter)]
public static void SetWhiteSpace(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.WhiteSpace, value);
@@ -3923,6 +4286,7 @@ public static void SetWidth(this ICssStyleDeclaration style, String value) =>
/// where multiple languages appear in the object.
///
[DomName("wordBreak")]
+ [DomName("word-break")]
[DomAccessor(Accessors.Getter)]
public static String GetWordBreak(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.WordBreak);
@@ -3932,6 +4296,7 @@ public static String GetWordBreak(this ICssStyleDeclaration style) =>
/// where multiple languages appear in the object.
///
[DomName("wordBreak")]
+ [DomName("word-break")]
[DomAccessor(Accessors.Setter)]
public static void SetWordBreak(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.WordBreak, value);
@@ -3941,6 +4306,7 @@ public static void SetWordBreak(this ICssStyleDeclaration style, String value) =
/// object.
///
[DomName("wordSpacing")]
+ [DomName("word-spacing")]
[DomAccessor(Accessors.Getter)]
public static String GetWordSpacing(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.WordSpacing);
@@ -3950,6 +4316,7 @@ public static String GetWordSpacing(this ICssStyleDeclaration style) =>
/// object.
///
[DomName("wordSpacing")]
+ [DomName("word-spacing")]
[DomAccessor(Accessors.Setter)]
public static void SetWordSpacing(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.WordSpacing, value);
@@ -3959,6 +4326,7 @@ public static void SetWordSpacing(this ICssStyleDeclaration style, String value)
/// boundaries of its container.
///
[DomName("wordWrap")]
+ [DomName("word-wrap")]
[DomAccessor(Accessors.Getter)]
public static String GetWordWrap(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.WordWrap);
@@ -3968,6 +4336,7 @@ public static String GetWordWrap(this ICssStyleDeclaration style) =>
/// boundaries of its container.
///
[DomName("wordWrap")]
+ [DomName("word-wrap")]
[DomAccessor(Accessors.Setter)]
public static void SetWordWrap(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.WordWrap, value);
@@ -3976,6 +4345,7 @@ public static void SetWordWrap(this ICssStyleDeclaration style, String value) =>
/// Gets the overflow-wrap value.
///
[DomName("overflowWrap")]
+ [DomName("overflow-wrap")]
[DomAccessor(Accessors.Getter)]
public static String GetOverflowWrap(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.OverflowWrap);
@@ -3984,6 +4354,7 @@ public static String GetOverflowWrap(this ICssStyleDeclaration style) =>
/// Sets the overflow-wrap value.
///
[DomName("overflowWrap")]
+ [DomName("overflow-wrap")]
[DomAccessor(Accessors.Setter)]
public static void SetOverflowWrap(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.OverflowWrap, value);
@@ -3992,6 +4363,7 @@ public static void SetOverflowWrap(this ICssStyleDeclaration style, String value
/// Gets the direction and flow of the content in the object.
///
[DomName("writingMode")]
+ [DomName("writing-mode")]
[DomAccessor(Accessors.Getter)]
public static String GetWritingMode(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.WritingMode);
@@ -4000,6 +4372,7 @@ public static String GetWritingMode(this ICssStyleDeclaration style) =>
/// Sets the direction and flow of the content in the object.
///
[DomName("writingMode")]
+ [DomName("writing-mode")]
[DomAccessor(Accessors.Setter)]
public static void SetWritingMode(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.WritingMode, value);
@@ -4008,6 +4381,7 @@ public static void SetWritingMode(this ICssStyleDeclaration style, String value)
/// Gets the stacking order of positioned objects.
///
[DomName("zIndex")]
+ [DomName("z-index")]
[DomAccessor(Accessors.Getter)]
public static String GetZIndex(this ICssStyleDeclaration style) =>
style.GetPropertyValue(PropertyNames.ZIndex);
@@ -4016,6 +4390,7 @@ public static String GetZIndex(this ICssStyleDeclaration style) =>
/// Sets the stacking order of positioned objects.
///
[DomName("zIndex")]
+ [DomName("z-index")]
[DomAccessor(Accessors.Setter)]
public static void SetZIndex(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.ZIndex, value);
@@ -4035,5 +4410,3599 @@ public static String GetZoom(this ICssStyleDeclaration style) =>
[DomAccessor(Accessors.Setter)]
public static void SetZoom(this ICssStyleDeclaration style, String value) =>
style.SetProperty(PropertyNames.Zoom, value);
+
+ ///
+ /// Gets the value of aspect-ratio.
+ ///
+ [DomName("aspectRatio")]
+ [DomName("aspect-ratio")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetAspectRatio(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.AspectRatio);
+
+ ///
+ /// Sets the value of aspect-ratio.
+ ///
+ [DomName("aspectRatio")]
+ [DomName("aspect-ratio")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetAspectRatio(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.AspectRatio, value);
+
+ ///
+ /// Gets the value of animation-composition.
+ ///
+ [DomName("animationComposition")]
+ [DomName("animation-composition")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetAnimationComposition(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.AnimationComposition);
+
+ ///
+ /// Sets the value of animation-composition.
+ ///
+ [DomName("animationComposition")]
+ [DomName("animation-composition")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetAnimationComposition(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.AnimationComposition, value);
+
+ ///
+ /// Gets the value of accent-color.
+ ///
+ [DomName("accentColor")]
+ [DomName("accent-color")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetAccentColor(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.AccentColor);
+
+ ///
+ /// Sets the value of accent-color.
+ ///
+ [DomName("accentColor")]
+ [DomName("accent-color")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetAccentColor(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.AccentColor, value);
+
+ ///
+ /// Gets the value of appearance.
+ ///
+ [DomName("appearance")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetAppearance(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.Appearance);
+
+ ///
+ /// Sets the value of appearance.
+ ///
+ [DomName("appearance")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetAppearance(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.Appearance, value);
+
+ ///
+ /// Gets the value of background-blend-mode.
+ ///
+ [DomName("backgroundBlendMode")]
+ [DomName("background-blend-mode")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetBackgroundBlendMode(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.BackgroundBlendMode);
+
+ ///
+ /// Sets the value of background-blend-mode.
+ ///
+ [DomName("backgroundBlendMode")]
+ [DomName("background-blend-mode")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetBackgroundBlendMode(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.BackgroundBlendMode, value);
+
+ ///
+ /// Gets the value of backdrop-filter.
+ ///
+ [DomName("backdropFilter")]
+ [DomName("backdrop-filter")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetBackdropFilter(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.BackdropFilter);
+
+ ///
+ /// Sets the value of backdrop-filter.
+ ///
+ [DomName("backdropFilter")]
+ [DomName("backdrop-filter")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetBackdropFilter(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.BackdropFilter, value);
+
+ ///
+ /// Gets the value of box-decoration-break.
+ ///
+ [DomName("boxDecorationBreak")]
+ [DomName("box-decoration-break")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetBoxDecorationBreak(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.BoxDecorationBreak);
+
+ ///
+ /// Sets the value of box-decoration-break.
+ ///
+ [DomName("boxDecorationBreak")]
+ [DomName("box-decoration-break")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetBoxDecorationBreak(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.BoxDecorationBreak, value);
+
+ ///
+ /// Gets the value of border-block.
+ ///
+ [DomName("borderBlock")]
+ [DomName("border-block")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetBorderBlock(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.BorderBlock);
+
+ ///
+ /// Sets the value of border-block.
+ ///
+ [DomName("borderBlock")]
+ [DomName("border-block")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetBorderBlock(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.BorderBlock, value);
+
+ ///
+ /// Gets the value of border-block-start.
+ ///
+ [DomName("borderBlockStart")]
+ [DomName("border-block-start")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetBorderBlockStart(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.BorderBlockStart);
+
+ ///
+ /// Sets the value of border-block-start.
+ ///
+ [DomName("borderBlockStart")]
+ [DomName("border-block-start")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetBorderBlockStart(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.BorderBlockStart, value);
+
+ ///
+ /// Gets the value of border-block-end.
+ ///
+ [DomName("borderBlockEnd")]
+ [DomName("border-block-end")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetBorderBlockEnd(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.BorderBlockEnd);
+
+ ///
+ /// Sets the value of border-block-end.
+ ///
+ [DomName("borderBlockEnd")]
+ [DomName("border-block-end")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetBorderBlockEnd(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.BorderBlockEnd, value);
+
+ ///
+ /// Gets the value of border-block-color.
+ ///
+ [DomName("borderBlockColor")]
+ [DomName("border-block-color")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetBorderBlockColor(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.BorderBlockColor);
+
+ ///
+ /// Sets the value of border-block-color.
+ ///
+ [DomName("borderBlockColor")]
+ [DomName("border-block-color")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetBorderBlockColor(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.BorderBlockColor, value);
+
+ ///
+ /// Gets the value of border-block-style.
+ ///
+ [DomName("borderBlockStyle")]
+ [DomName("border-block-style")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetBorderBlockStyle(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.BorderBlockStyle);
+
+ ///
+ /// Sets the value of border-block-style.
+ ///
+ [DomName("borderBlockStyle")]
+ [DomName("border-block-style")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetBorderBlockStyle(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.BorderBlockStyle, value);
+
+ ///
+ /// Gets the value of border-block-width.
+ ///
+ [DomName("borderBlockWidth")]
+ [DomName("border-block-width")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetBorderBlockWidth(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.BorderBlockWidth);
+
+ ///
+ /// Sets the value of border-block-width.
+ ///
+ [DomName("borderBlockWidth")]
+ [DomName("border-block-width")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetBorderBlockWidth(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.BorderBlockWidth, value);
+
+ ///
+ /// Gets the value of border-block-start-color.
+ ///
+ [DomName("borderBlockStartColor")]
+ [DomName("border-block-start-color")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetBorderBlockStartColor(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.BorderBlockStartColor);
+
+ ///
+ /// Sets the value of border-block-start-color.
+ ///
+ [DomName("borderBlockStartColor")]
+ [DomName("border-block-start-color")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetBorderBlockStartColor(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.BorderBlockStartColor, value);
+
+ ///
+ /// Gets the value of border-block-start-style.
+ ///
+ [DomName("borderBlockStartStyle")]
+ [DomName("border-block-start-style")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetBorderBlockStartStyle(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.BorderBlockStartStyle);
+
+ ///
+ /// Sets the value of border-block-start-style.
+ ///
+ [DomName("borderBlockStartStyle")]
+ [DomName("border-block-start-style")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetBorderBlockStartStyle(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.BorderBlockStartStyle, value);
+
+ ///
+ /// Gets the value of border-block-start-width.
+ ///
+ [DomName("borderBlockStartWidth")]
+ [DomName("border-block-start-width")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetBorderBlockStartWidth(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.BorderBlockStartWidth);
+
+ ///
+ /// Sets the value of border-block-start-width.
+ ///
+ [DomName("borderBlockStartWidth")]
+ [DomName("border-block-start-width")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetBorderBlockStartWidth(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.BorderBlockStartWidth, value);
+
+ ///
+ /// Gets the value of border-block-end-color.
+ ///
+ [DomName("borderBlockEndColor")]
+ [DomName("border-block-end-color")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetBorderBlockEndColor(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.BorderBlockEndColor);
+
+ ///
+ /// Sets the value of border-block-end-color.
+ ///
+ [DomName("borderBlockEndColor")]
+ [DomName("border-block-end-color")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetBorderBlockEndColor(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.BorderBlockEndColor, value);
+
+ ///
+ /// Gets the value of border-block-end-style.
+ ///
+ [DomName("borderBlockEndStyle")]
+ [DomName("border-block-end-style")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetBorderBlockEndStyle(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.BorderBlockEndStyle);
+
+ ///
+ /// Sets the value of border-block-end-style.
+ ///
+ [DomName("borderBlockEndStyle")]
+ [DomName("border-block-end-style")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetBorderBlockEndStyle(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.BorderBlockEndStyle, value);
+
+ ///
+ /// Gets the value of border-block-end-width.
+ ///
+ [DomName("borderBlockEndWidth")]
+ [DomName("border-block-end-width")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetBorderBlockEndWidth(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.BorderBlockEndWidth);
+
+ ///
+ /// Sets the value of border-block-end-width.
+ ///
+ [DomName("borderBlockEndWidth")]
+ [DomName("border-block-end-width")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetBorderBlockEndWidth(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.BorderBlockEndWidth, value);
+
+ ///
+ /// Gets the value of border-inline.
+ ///
+ [DomName("borderInline")]
+ [DomName("border-inline")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetBorderInline(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.BorderInline);
+
+ ///
+ /// Sets the value of border-inline.
+ ///
+ [DomName("borderInline")]
+ [DomName("border-inline")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetBorderInline(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.BorderInline, value);
+
+ ///
+ /// Gets the value of border-inline-start.
+ ///
+ [DomName("borderInlineStart")]
+ [DomName("border-inline-start")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetBorderInlineStart(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.BorderInlineStart);
+
+ ///
+ /// Sets the value of border-inline-start.
+ ///
+ [DomName("borderInlineStart")]
+ [DomName("border-inline-start")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetBorderInlineStart(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.BorderInlineStart, value);
+
+ ///
+ /// Gets the value of border-inline-end.
+ ///
+ [DomName("borderInlineEnd")]
+ [DomName("border-inline-end")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetBorderInlineEnd(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.BorderInlineEnd);
+
+ ///
+ /// Sets the value of border-inline-end.
+ ///
+ [DomName("borderInlineEnd")]
+ [DomName("border-inline-end")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetBorderInlineEnd(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.BorderInlineEnd, value);
+
+ ///
+ /// Gets the value of border-inline-color.
+ ///
+ [DomName("borderInlineColor")]
+ [DomName("border-inline-color")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetBorderInlineColor(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.BorderInlineColor);
+
+ ///
+ /// Sets the value of border-inline-color.
+ ///
+ [DomName("borderInlineColor")]
+ [DomName("border-inline-color")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetBorderInlineColor(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.BorderInlineColor, value);
+
+ ///
+ /// Gets the value of border-inline-style.
+ ///
+ [DomName("borderInlineStyle")]
+ [DomName("border-inline-style")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetBorderInlineStyle(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.BorderInlineStyle);
+
+ ///
+ /// Sets the value of border-inline-style.
+ ///
+ [DomName("borderInlineStyle")]
+ [DomName("border-inline-style")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetBorderInlineStyle(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.BorderInlineStyle, value);
+
+ ///
+ /// Gets the value of border-inline-width.
+ ///
+ [DomName("borderInlineWidth")]
+ [DomName("border-inline-width")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetBorderInlineWidth(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.BorderInlineWidth);
+
+ ///
+ /// Sets the value of border-inline-width.
+ ///
+ [DomName("borderInlineWidth")]
+ [DomName("border-inline-width")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetBorderInlineWidth(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.BorderInlineWidth, value);
+
+ ///
+ /// Gets the value of border-inline-start-color.
+ ///
+ [DomName("borderInlineStartColor")]
+ [DomName("border-inline-start-color")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetBorderInlineStartColor(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.BorderInlineStartColor);
+
+ ///
+ /// Sets the value of border-inline-start-color.
+ ///
+ [DomName("borderInlineStartColor")]
+ [DomName("border-inline-start-color")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetBorderInlineStartColor(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.BorderInlineStartColor, value);
+
+ ///
+ /// Gets the value of border-inline-start-style.
+ ///
+ [DomName("borderInlineStartStyle")]
+ [DomName("border-inline-start-style")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetBorderInlineStartStyle(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.BorderInlineStartStyle);
+
+ ///
+ /// Sets the value of border-inline-start-style.
+ ///
+ [DomName("borderInlineStartStyle")]
+ [DomName("border-inline-start-style")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetBorderInlineStartStyle(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.BorderInlineStartStyle, value);
+
+ ///
+ /// Gets the value of border-inline-start-width.
+ ///
+ [DomName("borderInlineStartWidth")]
+ [DomName("border-inline-start-width")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetBorderInlineStartWidth(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.BorderInlineStartWidth);
+
+ ///
+ /// Sets the value of border-inline-start-width.
+ ///
+ [DomName("borderInlineStartWidth")]
+ [DomName("border-inline-start-width")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetBorderInlineStartWidth(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.BorderInlineStartWidth, value);
+
+ ///
+ /// Gets the value of border-inline-end-color.
+ ///
+ [DomName("borderInlineEndColor")]
+ [DomName("border-inline-end-color")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetBorderInlineEndColor(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.BorderInlineEndColor);
+
+ ///
+ /// Sets the value of border-inline-end-color.
+ ///
+ [DomName("borderInlineEndColor")]
+ [DomName("border-inline-end-color")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetBorderInlineEndColor(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.BorderInlineEndColor, value);
+
+ ///
+ /// Gets the value of border-inline-end-style.
+ ///
+ [DomName("borderInlineEndStyle")]
+ [DomName("border-inline-end-style")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetBorderInlineEndStyle(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.BorderInlineEndStyle);
+
+ ///
+ /// Sets the value of border-inline-end-style.
+ ///
+ [DomName("borderInlineEndStyle")]
+ [DomName("border-inline-end-style")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetBorderInlineEndStyle(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.BorderInlineEndStyle, value);
+
+ ///
+ /// Gets the value of border-inline-end-width.
+ ///
+ [DomName("borderInlineEndWidth")]
+ [DomName("border-inline-end-width")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetBorderInlineEndWidth(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.BorderInlineEndWidth);
+
+ ///
+ /// Sets the value of border-inline-end-width.
+ ///
+ [DomName("borderInlineEndWidth")]
+ [DomName("border-inline-end-width")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetBorderInlineEndWidth(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.BorderInlineEndWidth, value);
+
+ ///
+ /// Gets the value of border-start-start-radius.
+ ///
+ [DomName("borderStartStartRadius")]
+ [DomName("border-start-start-radius")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetBorderStartStartRadius(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.BorderStartStartRadius);
+
+ ///
+ /// Sets the value of border-start-start-radius.
+ ///
+ [DomName("borderStartStartRadius")]
+ [DomName("border-start-start-radius")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetBorderStartStartRadius(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.BorderStartStartRadius, value);
+
+ ///
+ /// Gets the value of border-start-end-radius.
+ ///
+ [DomName("borderStartEndRadius")]
+ [DomName("border-start-end-radius")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetBorderStartEndRadius(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.BorderStartEndRadius);
+
+ ///
+ /// Sets the value of border-start-end-radius.
+ ///
+ [DomName("borderStartEndRadius")]
+ [DomName("border-start-end-radius")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetBorderStartEndRadius(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.BorderStartEndRadius, value);
+
+ ///
+ /// Gets the value of border-end-start-radius.
+ ///
+ [DomName("borderEndStartRadius")]
+ [DomName("border-end-start-radius")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetBorderEndStartRadius(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.BorderEndStartRadius);
+
+ ///
+ /// Sets the value of border-end-start-radius.
+ ///
+ [DomName("borderEndStartRadius")]
+ [DomName("border-end-start-radius")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetBorderEndStartRadius(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.BorderEndStartRadius, value);
+
+ ///
+ /// Gets the value of border-end-end-radius.
+ ///
+ [DomName("borderEndEndRadius")]
+ [DomName("border-end-end-radius")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetBorderEndEndRadius(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.BorderEndEndRadius);
+
+ ///
+ /// Sets the value of border-end-end-radius.
+ ///
+ [DomName("borderEndEndRadius")]
+ [DomName("border-end-end-radius")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetBorderEndEndRadius(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.BorderEndEndRadius, value);
+
+ ///
+ /// Gets the value of block-size.
+ ///
+ [DomName("blockSize")]
+ [DomName("block-size")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetBlockSize(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.BlockSize);
+
+ ///
+ /// Sets the value of block-size.
+ ///
+ [DomName("blockSize")]
+ [DomName("block-size")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetBlockSize(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.BlockSize, value);
+
+ ///
+ /// Gets the value of row-gap.
+ ///
+ [DomName("rowGap")]
+ [DomName("row-gap")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetRowGap(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.RowGap);
+
+ ///
+ /// Sets the value of row-gap.
+ ///
+ [DomName("rowGap")]
+ [DomName("row-gap")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetRowGap(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.RowGap, value);
+
+ ///
+ /// Gets the value of gap.
+ ///
+ [DomName("gap")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetGap(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.Gap);
+
+ ///
+ /// Sets the value of gap.
+ ///
+ [DomName("gap")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetGap(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.Gap, value);
+
+ ///
+ /// Gets the value of caret-color.
+ ///
+ [DomName("caretColor")]
+ [DomName("caret-color")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetCaretColor(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.CaretColor);
+
+ ///
+ /// Sets the value of caret-color.
+ ///
+ [DomName("caretColor")]
+ [DomName("caret-color")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetCaretColor(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.CaretColor, value);
+
+ ///
+ /// Gets the value of color-scheme.
+ ///
+ [DomName("colorScheme")]
+ [DomName("color-scheme")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetColorScheme(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ColorScheme);
+
+ ///
+ /// Sets the value of color-scheme.
+ ///
+ [DomName("colorScheme")]
+ [DomName("color-scheme")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetColorScheme(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ColorScheme, value);
+
+ ///
+ /// Gets the value of container.
+ ///
+ [DomName("container")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetContainer(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.Container);
+
+ ///
+ /// Sets the value of container.
+ ///
+ [DomName("container")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetContainer(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.Container, value);
+
+ ///
+ /// Gets the value of container-name.
+ ///
+ [DomName("containerName")]
+ [DomName("container-name")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetContainerName(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ContainerName);
+
+ ///
+ /// Sets the value of container-name.
+ ///
+ [DomName("containerName")]
+ [DomName("container-name")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetContainerName(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ContainerName, value);
+
+ ///
+ /// Gets the value of container-type.
+ ///
+ [DomName("containerType")]
+ [DomName("container-type")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetContainerType(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ContainerType);
+
+ ///
+ /// Sets the value of container-type.
+ ///
+ [DomName("containerType")]
+ [DomName("container-type")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetContainerType(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ContainerType, value);
+
+ ///
+ /// Gets the value of contain.
+ ///
+ [DomName("contain")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetContain(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.Contain);
+
+ ///
+ /// Sets the value of contain.
+ ///
+ [DomName("contain")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetContain(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.Contain, value);
+
+ ///
+ /// Gets the value of contain-intrinsic-size.
+ ///
+ [DomName("containIntrinsicSize")]
+ [DomName("contain-intrinsic-size")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetContainIntrinsicSize(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ContainIntrinsicSize);
+
+ ///
+ /// Sets the value of contain-intrinsic-size.
+ ///
+ [DomName("containIntrinsicSize")]
+ [DomName("contain-intrinsic-size")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetContainIntrinsicSize(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ContainIntrinsicSize, value);
+
+ ///
+ /// Gets the value of contain-intrinsic-width.
+ ///
+ [DomName("containIntrinsicWidth")]
+ [DomName("contain-intrinsic-width")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetContainIntrinsicWidth(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ContainIntrinsicWidth);
+
+ ///
+ /// Sets the value of contain-intrinsic-width.
+ ///
+ [DomName("containIntrinsicWidth")]
+ [DomName("contain-intrinsic-width")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetContainIntrinsicWidth(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ContainIntrinsicWidth, value);
+
+ ///
+ /// Gets the value of contain-intrinsic-height.
+ ///
+ [DomName("containIntrinsicHeight")]
+ [DomName("contain-intrinsic-height")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetContainIntrinsicHeight(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ContainIntrinsicHeight);
+
+ ///
+ /// Sets the value of contain-intrinsic-height.
+ ///
+ [DomName("containIntrinsicHeight")]
+ [DomName("contain-intrinsic-height")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetContainIntrinsicHeight(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ContainIntrinsicHeight, value);
+
+ ///
+ /// Gets the value of contain-intrinsic-block-size.
+ ///
+ [DomName("containIntrinsicBlockSize")]
+ [DomName("contain-intrinsic-block-size")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetContainIntrinsicBlockSize(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ContainIntrinsicBlockSize);
+
+ ///
+ /// Sets the value of contain-intrinsic-block-size.
+ ///
+ [DomName("containIntrinsicBlockSize")]
+ [DomName("contain-intrinsic-block-size")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetContainIntrinsicBlockSize(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ContainIntrinsicBlockSize, value);
+
+ ///
+ /// Gets the value of contain-intrinsic-inline-size.
+ ///
+ [DomName("containIntrinsicInlineSize")]
+ [DomName("contain-intrinsic-inline-size")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetContainIntrinsicInlineSize(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ContainIntrinsicInlineSize);
+
+ ///
+ /// Sets the value of contain-intrinsic-inline-size.
+ ///
+ [DomName("containIntrinsicInlineSize")]
+ [DomName("contain-intrinsic-inline-size")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetContainIntrinsicInlineSize(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ContainIntrinsicInlineSize, value);
+
+ ///
+ /// Gets the value of content-visibility.
+ ///
+ [DomName("contentVisibility")]
+ [DomName("content-visibility")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetContentVisibility(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ContentVisibility);
+
+ ///
+ /// Sets the value of content-visibility.
+ ///
+ [DomName("contentVisibility")]
+ [DomName("content-visibility")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetContentVisibility(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ContentVisibility, value);
+
+ ///
+ /// Gets the value of counter-set.
+ ///
+ [DomName("counterSet")]
+ [DomName("counter-set")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetCounterSet(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.CounterSet);
+
+ ///
+ /// Sets the value of counter-set.
+ ///
+ [DomName("counterSet")]
+ [DomName("counter-set")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetCounterSet(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.CounterSet, value);
+
+ ///
+ /// Gets the value of forced-color-adjust.
+ ///
+ [DomName("forcedColorAdjust")]
+ [DomName("forced-color-adjust")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetForcedColorAdjust(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ForcedColorAdjust);
+
+ ///
+ /// Sets the value of forced-color-adjust.
+ ///
+ [DomName("forcedColorAdjust")]
+ [DomName("forced-color-adjust")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetForcedColorAdjust(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ForcedColorAdjust, value);
+
+ ///
+ /// Gets the value of font-variant-caps.
+ ///
+ [DomName("fontVariantCaps")]
+ [DomName("font-variant-caps")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetFontVariantCaps(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.FontVariantCaps);
+
+ ///
+ /// Sets the value of font-variant-caps.
+ ///
+ [DomName("fontVariantCaps")]
+ [DomName("font-variant-caps")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetFontVariantCaps(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.FontVariantCaps, value);
+
+ ///
+ /// Gets the value of font-variant-numeric.
+ ///
+ [DomName("fontVariantNumeric")]
+ [DomName("font-variant-numeric")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetFontVariantNumeric(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.FontVariantNumeric);
+
+ ///
+ /// Sets the value of font-variant-numeric.
+ ///
+ [DomName("fontVariantNumeric")]
+ [DomName("font-variant-numeric")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetFontVariantNumeric(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.FontVariantNumeric, value);
+
+ ///
+ /// Gets the value of font-variant-ligatures.
+ ///
+ [DomName("fontVariantLigatures")]
+ [DomName("font-variant-ligatures")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetFontVariantLigatures(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.FontVariantLigatures);
+
+ ///
+ /// Sets the value of font-variant-ligatures.
+ ///
+ [DomName("fontVariantLigatures")]
+ [DomName("font-variant-ligatures")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetFontVariantLigatures(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.FontVariantLigatures, value);
+
+ ///
+ /// Gets the value of font-variant-east-asian.
+ ///
+ [DomName("fontVariantEastAsian")]
+ [DomName("font-variant-east-asian")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetFontVariantEastAsian(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.FontVariantEastAsian);
+
+ ///
+ /// Sets the value of font-variant-east-asian.
+ ///
+ [DomName("fontVariantEastAsian")]
+ [DomName("font-variant-east-asian")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetFontVariantEastAsian(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.FontVariantEastAsian, value);
+
+ ///
+ /// Gets the value of font-kerning.
+ ///
+ [DomName("fontKerning")]
+ [DomName("font-kerning")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetFontKerning(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.FontKerning);
+
+ ///
+ /// Sets the value of font-kerning.
+ ///
+ [DomName("fontKerning")]
+ [DomName("font-kerning")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetFontKerning(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.FontKerning, value);
+
+ ///
+ /// Gets the value of font-language-override.
+ ///
+ [DomName("fontLanguageOverride")]
+ [DomName("font-language-override")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetFontLanguageOverride(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.FontLanguageOverride);
+
+ ///
+ /// Sets the value of font-language-override.
+ ///
+ [DomName("fontLanguageOverride")]
+ [DomName("font-language-override")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetFontLanguageOverride(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.FontLanguageOverride, value);
+
+ ///
+ /// Gets the value of font-optical-sizing.
+ ///
+ [DomName("fontOpticalSizing")]
+ [DomName("font-optical-sizing")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetFontOpticalSizing(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.FontOpticalSizing);
+
+ ///
+ /// Sets the value of font-optical-sizing.
+ ///
+ [DomName("fontOpticalSizing")]
+ [DomName("font-optical-sizing")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetFontOpticalSizing(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.FontOpticalSizing, value);
+
+ ///
+ /// Gets the value of font-palette.
+ ///
+ [DomName("fontPalette")]
+ [DomName("font-palette")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetFontPalette(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.FontPalette);
+
+ ///
+ /// Sets the value of font-palette.
+ ///
+ [DomName("fontPalette")]
+ [DomName("font-palette")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetFontPalette(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.FontPalette, value);
+
+ ///
+ /// Gets the value of font-synthesis.
+ ///
+ [DomName("fontSynthesis")]
+ [DomName("font-synthesis")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetFontSynthesis(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.FontSynthesis);
+
+ ///
+ /// Sets the value of font-synthesis.
+ ///
+ [DomName("fontSynthesis")]
+ [DomName("font-synthesis")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetFontSynthesis(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.FontSynthesis, value);
+
+ ///
+ /// Gets the value of font-synthesis-weight.
+ ///
+ [DomName("fontSynthesisWeight")]
+ [DomName("font-synthesis-weight")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetFontSynthesisWeight(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.FontSynthesisWeight);
+
+ ///
+ /// Sets the value of font-synthesis-weight.
+ ///
+ [DomName("fontSynthesisWeight")]
+ [DomName("font-synthesis-weight")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetFontSynthesisWeight(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.FontSynthesisWeight, value);
+
+ ///
+ /// Gets the value of font-synthesis-style.
+ ///
+ [DomName("fontSynthesisStyle")]
+ [DomName("font-synthesis-style")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetFontSynthesisStyle(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.FontSynthesisStyle);
+
+ ///
+ /// Sets the value of font-synthesis-style.
+ ///
+ [DomName("fontSynthesisStyle")]
+ [DomName("font-synthesis-style")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetFontSynthesisStyle(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.FontSynthesisStyle, value);
+
+ ///
+ /// Gets the value of font-synthesis-small-caps.
+ ///
+ [DomName("fontSynthesisSmallCaps")]
+ [DomName("font-synthesis-small-caps")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetFontSynthesisSmallCaps(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.FontSynthesisSmallCaps);
+
+ ///
+ /// Sets the value of font-synthesis-small-caps.
+ ///
+ [DomName("fontSynthesisSmallCaps")]
+ [DomName("font-synthesis-small-caps")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetFontSynthesisSmallCaps(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.FontSynthesisSmallCaps, value);
+
+ ///
+ /// Gets the value of font-variation-settings.
+ ///
+ [DomName("fontVariationSettings")]
+ [DomName("font-variation-settings")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetFontVariationSettings(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.FontVariationSettings);
+
+ ///
+ /// Sets the value of font-variation-settings.
+ ///
+ [DomName("fontVariationSettings")]
+ [DomName("font-variation-settings")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetFontVariationSettings(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.FontVariationSettings, value);
+
+ ///
+ /// Gets the value of hanging-punctuation.
+ ///
+ [DomName("hangingPunctuation")]
+ [DomName("hanging-punctuation")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetHangingPunctuation(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.HangingPunctuation);
+
+ ///
+ /// Sets the value of hanging-punctuation.
+ ///
+ [DomName("hangingPunctuation")]
+ [DomName("hanging-punctuation")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetHangingPunctuation(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.HangingPunctuation, value);
+
+ ///
+ /// Gets the value of hyphenate-character.
+ ///
+ [DomName("hyphenateCharacter")]
+ [DomName("hyphenate-character")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetHyphenateCharacter(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.HyphenateCharacter);
+
+ ///
+ /// Sets the value of hyphenate-character.
+ ///
+ [DomName("hyphenateCharacter")]
+ [DomName("hyphenate-character")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetHyphenateCharacter(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.HyphenateCharacter, value);
+
+ ///
+ /// Gets the value of hyphenate-limit-chars.
+ ///
+ [DomName("hyphenateLimitChars")]
+ [DomName("hyphenate-limit-chars")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetHypenatateLimitChars(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.HypenatateLimitChars);
+
+ ///
+ /// Sets the value of hyphenate-limit-chars.
+ ///
+ [DomName("hyphenateLimitChars")]
+ [DomName("hyphenate-limit-chars")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetHypenatateLimitChars(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.HypenatateLimitChars, value);
+
+ ///
+ /// Gets the value of hyphens.
+ ///
+ [DomName("hyphens")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetHyphens(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.Hyphens);
+
+ ///
+ /// Sets the value of hyphens.
+ ///
+ [DomName("hyphens")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetHyphens(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.Hyphens, value);
+
+ ///
+ /// Gets the value of initial-letter.
+ ///
+ [DomName("initialLetter")]
+ [DomName("initial-letter")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetInitialLetter(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.InitialLetter);
+
+ ///
+ /// Sets the value of initial-letter.
+ ///
+ [DomName("initialLetter")]
+ [DomName("initial-letter")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetInitialLetter(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.InitialLetter, value);
+
+ ///
+ /// Gets the value of initial-letter-align.
+ ///
+ [DomName("initialLetterAlign")]
+ [DomName("initial-letter-align")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetInitialLetterAlign(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.InitialLetterAlign);
+
+ ///
+ /// Sets the value of initial-letter-align.
+ ///
+ [DomName("initialLetterAlign")]
+ [DomName("initial-letter-align")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetInitialLetterAlign(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.InitialLetterAlign, value);
+
+ ///
+ /// Gets the value of image-orientation.
+ ///
+ [DomName("imageOrientation")]
+ [DomName("image-orientation")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetImageOrientation(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ImageOrientation);
+
+ ///
+ /// Sets the value of image-orientation.
+ ///
+ [DomName("imageOrientation")]
+ [DomName("image-orientation")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetImageOrientation(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ImageOrientation, value);
+
+ ///
+ /// Gets the value of image-rendering.
+ ///
+ [DomName("imageRendering")]
+ [DomName("image-rendering")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetImageRendering(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ImageRendering);
+
+ ///
+ /// Sets the value of image-rendering.
+ ///
+ [DomName("imageRendering")]
+ [DomName("image-rendering")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetImageRendering(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ImageRendering, value);
+
+ ///
+ /// Gets the value of inline-size.
+ ///
+ [DomName("inlineSize")]
+ [DomName("inline-size")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetInlineSize(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.InlineSize);
+
+ ///
+ /// Sets the value of inline-size.
+ ///
+ [DomName("inlineSize")]
+ [DomName("inline-size")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetInlineSize(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.InlineSize, value);
+
+ ///
+ /// Gets the value of isolation.
+ ///
+ [DomName("isolation")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetIsolation(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.Isolation);
+
+ ///
+ /// Sets the value of isolation.
+ ///
+ [DomName("isolation")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetIsolation(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.Isolation, value);
+
+ ///
+ /// Gets the value of inset.
+ ///
+ [DomName("inset")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetInset(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.Inset);
+
+ ///
+ /// Sets the value of inset.
+ ///
+ [DomName("inset")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetInset(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.Inset, value);
+
+ ///
+ /// Gets the value of inset-block.
+ ///
+ [DomName("insetBlock")]
+ [DomName("inset-block")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetInsetBlock(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.InsetBlock);
+
+ ///
+ /// Sets the value of inset-block.
+ ///
+ [DomName("insetBlock")]
+ [DomName("inset-block")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetInsetBlock(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.InsetBlock, value);
+
+ ///
+ /// Gets the value of inset-block-start.
+ ///
+ [DomName("insetBlockStart")]
+ [DomName("inset-block-start")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetInsetBlockStart(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.InsetBlockStart);
+
+ ///
+ /// Sets the value of inset-block-start.
+ ///
+ [DomName("insetBlockStart")]
+ [DomName("inset-block-start")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetInsetBlockStart(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.InsetBlockStart, value);
+
+ ///
+ /// Gets the value of inset-block-end.
+ ///
+ [DomName("insetBlockEnd")]
+ [DomName("inset-block-end")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetInsetBlockEnd(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.InsetBlockEnd);
+
+ ///
+ /// Sets the value of inset-block-end.
+ ///
+ [DomName("insetBlockEnd")]
+ [DomName("inset-block-end")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetInsetBlockEnd(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.InsetBlockEnd, value);
+
+ ///
+ /// Gets the value of inset-inline.
+ ///
+ [DomName("insetInline")]
+ [DomName("inset-inline")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetInsetInline(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.InsetInline);
+
+ ///
+ /// Sets the value of inset-inline.
+ ///
+ [DomName("insetInline")]
+ [DomName("inset-inline")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetInsetInline(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.InsetInline, value);
+
+ ///
+ /// Gets the value of inset-inline-start.
+ ///
+ [DomName("insetInlineStart")]
+ [DomName("inset-inline-start")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetInsetInlineStart(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.InsetInlineStart);
+
+ ///
+ /// Sets the value of inset-inline-start.
+ ///
+ [DomName("insetInlineStart")]
+ [DomName("inset-inline-start")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetInsetInlineStart(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.InsetInlineStart, value);
+
+ ///
+ /// Gets the value of inset-inline-end.
+ ///
+ [DomName("insetInlineEnd")]
+ [DomName("inset-inline-end")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetInsetInlineEnd(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.InsetInlineEnd);
+
+ ///
+ /// Sets the value of inset-inline-end.
+ ///
+ [DomName("insetInlineEnd")]
+ [DomName("inset-inline-end")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetInsetInlineEnd(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.InsetInlineEnd, value);
+
+ ///
+ /// Gets the value of justify-items.
+ ///
+ [DomName("justifyItems")]
+ [DomName("justify-items")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetJustifyItems(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.JustifyItems);
+
+ ///
+ /// Sets the value of justify-items.
+ ///
+ [DomName("justifyItems")]
+ [DomName("justify-items")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetJustifyItems(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.JustifyItems, value);
+
+ ///
+ /// Gets the value of justify-self.
+ ///
+ [DomName("justifySelf")]
+ [DomName("justify-self")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetJustifySelf(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.JustifySelf);
+
+ ///
+ /// Sets the value of justify-self.
+ ///
+ [DomName("justifySelf")]
+ [DomName("justify-self")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetJustifySelf(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.JustifySelf, value);
+
+ ///
+ /// Gets the value of grid-template-rows.
+ ///
+ [DomName("gridTemplateRows")]
+ [DomName("grid-template-rows")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetGridTemplateRows(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.GridTemplateRows);
+
+ ///
+ /// Sets the value of grid-template-rows.
+ ///
+ [DomName("gridTemplateRows")]
+ [DomName("grid-template-rows")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetGridTemplateRows(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.GridTemplateRows, value);
+
+ ///
+ /// Gets the value of grid-template-columns.
+ ///
+ [DomName("gridTemplateColumns")]
+ [DomName("grid-template-columns")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetGridTemplateColumns(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.GridTemplateColumns);
+
+ ///
+ /// Sets the value of grid-template-columns.
+ ///
+ [DomName("gridTemplateColumns")]
+ [DomName("grid-template-columns")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetGridTemplateColumns(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.GridTemplateColumns, value);
+
+ ///
+ /// Gets the value of grid-template-areas.
+ ///
+ [DomName("gridTemplateAreas")]
+ [DomName("grid-template-areas")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetGridTemplateAreas(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.GridTemplateAreas);
+
+ ///
+ /// Sets the value of grid-template-areas.
+ ///
+ [DomName("gridTemplateAreas")]
+ [DomName("grid-template-areas")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetGridTemplateAreas(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.GridTemplateAreas, value);
+
+ ///
+ /// Gets the value of grid-template.
+ ///
+ [DomName("gridTemplate")]
+ [DomName("grid-template")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetGridTemplate(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.GridTemplate);
+
+ ///
+ /// Sets the value of grid-template.
+ ///
+ [DomName("gridTemplate")]
+ [DomName("grid-template")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetGridTemplate(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.GridTemplate, value);
+
+ ///
+ /// Gets the value of grid-auto-columns.
+ ///
+ [DomName("gridAutoColumns")]
+ [DomName("grid-auto-columns")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetGridAutoColumns(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.GridAutoColumns);
+
+ ///
+ /// Sets the value of grid-auto-columns.
+ ///
+ [DomName("gridAutoColumns")]
+ [DomName("grid-auto-columns")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetGridAutoColumns(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.GridAutoColumns, value);
+
+ ///
+ /// Gets the value of grid-auto-rows.
+ ///
+ [DomName("gridAutoRows")]
+ [DomName("grid-auto-rows")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetGridAutoRows(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.GridAutoRows);
+
+ ///
+ /// Sets the value of grid-auto-rows.
+ ///
+ [DomName("gridAutoRows")]
+ [DomName("grid-auto-rows")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetGridAutoRows(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.GridAutoRows, value);
+
+ ///
+ /// Gets the value of grid-auto-flow.
+ ///
+ [DomName("gridAutoFlow")]
+ [DomName("grid-auto-flow")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetGridAutoFlow(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.GridAutoFlow);
+
+ ///
+ /// Sets the value of grid-auto-flow.
+ ///
+ [DomName("gridAutoFlow")]
+ [DomName("grid-auto-flow")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetGridAutoFlow(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.GridAutoFlow, value);
+
+ ///
+ /// Gets the value of grid.
+ ///
+ [DomName("grid")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetGrid(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.Grid);
+
+ ///
+ /// Sets the value of grid.
+ ///
+ [DomName("grid")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetGrid(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.Grid, value);
+
+ ///
+ /// Gets the value of grid-row-start.
+ ///
+ [DomName("gridRowStart")]
+ [DomName("grid-row-start")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetGridRowStart(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.GridRowStart);
+
+ ///
+ /// Sets the value of grid-row-start.
+ ///
+ [DomName("gridRowStart")]
+ [DomName("grid-row-start")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetGridRowStart(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.GridRowStart, value);
+
+ ///
+ /// Gets the value of grid-column-start.
+ ///
+ [DomName("gridColumnStart")]
+ [DomName("grid-column-start")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetGridColumnStart(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.GridColumnStart);
+
+ ///
+ /// Sets the value of grid-column-start.
+ ///
+ [DomName("gridColumnStart")]
+ [DomName("grid-column-start")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetGridColumnStart(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.GridColumnStart, value);
+
+ ///
+ /// Gets the value of grid-row-end.
+ ///
+ [DomName("gridRowEnd")]
+ [DomName("grid-row-end")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetGridRowEnd(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.GridRowEnd);
+
+ ///
+ /// Sets the value of grid-row-end.
+ ///
+ [DomName("gridRowEnd")]
+ [DomName("grid-row-end")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetGridRowEnd(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.GridRowEnd, value);
+
+ ///
+ /// Gets the value of grid-column-end.
+ ///
+ [DomName("gridColumnEnd")]
+ [DomName("grid-column-end")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetGridColumnEnd(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.GridColumnEnd);
+
+ ///
+ /// Sets the value of grid-column-end.
+ ///
+ [DomName("gridColumnEnd")]
+ [DomName("grid-column-end")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetGridColumnEnd(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.GridColumnEnd, value);
+
+ ///
+ /// Gets the value of grid-row.
+ ///
+ [DomName("gridRow")]
+ [DomName("grid-row")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetGridRow(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.GridRow);
+
+ ///
+ /// Sets the value of grid-row.
+ ///
+ [DomName("gridRow")]
+ [DomName("grid-row")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetGridRow(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.GridRow, value);
+
+ ///
+ /// Gets the value of grid-column.
+ ///
+ [DomName("gridColumn")]
+ [DomName("grid-column")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetGridColumn(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.GridColumn);
+
+ ///
+ /// Sets the value of grid-column.
+ ///
+ [DomName("gridColumn")]
+ [DomName("grid-column")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetGridColumn(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.GridColumn, value);
+
+ ///
+ /// Gets the value of grid-area.
+ ///
+ [DomName("gridArea")]
+ [DomName("grid-area")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetGridArea(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.GridArea);
+
+ ///
+ /// Sets the value of grid-area.
+ ///
+ [DomName("gridArea")]
+ [DomName("grid-area")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetGridArea(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.GridArea, value);
+
+ ///
+ /// Gets the value of grid-row-gap.
+ ///
+ [DomName("gridRowGap")]
+ [DomName("grid-row-gap")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetGridRowGap(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.GridRowGap);
+
+ ///
+ /// Sets the value of grid-row-gap.
+ ///
+ [DomName("gridRowGap")]
+ [DomName("grid-row-gap")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetGridRowGap(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.GridRowGap, value);
+
+ ///
+ /// Gets the value of grid-column-gap.
+ ///
+ [DomName("gridColumnGap")]
+ [DomName("grid-column-gap")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetGridColumnGap(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.GridColumnGap);
+
+ ///
+ /// Sets the value of grid-column-gap.
+ ///
+ [DomName("gridColumnGap")]
+ [DomName("grid-column-gap")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetGridColumnGap(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.GridColumnGap, value);
+
+ ///
+ /// Gets the value of grid-gap.
+ ///
+ [DomName("gridGap")]
+ [DomName("grid-gap")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetGridGap(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.GridGap);
+
+ ///
+ /// Sets the value of grid-gap.
+ ///
+ [DomName("gridGap")]
+ [DomName("grid-gap")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetGridGap(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.GridGap, value);
+
+ ///
+ /// Gets the value of line-break.
+ ///
+ [DomName("lineBreak")]
+ [DomName("line-break")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetLineBreak(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.LineBreak);
+
+ ///
+ /// Sets the value of line-break.
+ ///
+ [DomName("lineBreak")]
+ [DomName("line-break")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetLineBreak(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.LineBreak, value);
+
+ ///
+ /// Gets the value of margin-block.
+ ///
+ [DomName("marginBlock")]
+ [DomName("margin-block")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetMarginBlock(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.MarginBlock);
+
+ ///
+ /// Sets the value of margin-block.
+ ///
+ [DomName("marginBlock")]
+ [DomName("margin-block")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetMarginBlock(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.MarginBlock, value);
+
+ ///
+ /// Gets the value of margin-block-end.
+ ///
+ [DomName("marginBlockEnd")]
+ [DomName("margin-block-end")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetMarginBlockEnd(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.MarginBlockEnd);
+
+ ///
+ /// Sets the value of margin-block-end.
+ ///
+ [DomName("marginBlockEnd")]
+ [DomName("margin-block-end")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetMarginBlockEnd(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.MarginBlockEnd, value);
+
+ ///
+ /// Gets the value of margin-block-start.
+ ///
+ [DomName("marginBlockStart")]
+ [DomName("margin-block-start")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetMarginBlockStart(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.MarginBlockStart);
+
+ ///
+ /// Sets the value of margin-block-start.
+ ///
+ [DomName("marginBlockStart")]
+ [DomName("margin-block-start")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetMarginBlockStart(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.MarginBlockStart, value);
+
+ ///
+ /// Gets the value of margin-inline.
+ ///
+ [DomName("marginInline")]
+ [DomName("margin-inline")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetMarginInline(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.MarginInline);
+
+ ///
+ /// Sets the value of margin-inline.
+ ///
+ [DomName("marginInline")]
+ [DomName("margin-inline")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetMarginInline(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.MarginInline, value);
+
+ ///
+ /// Gets the value of margin-inline-end.
+ ///
+ [DomName("marginInlineEnd")]
+ [DomName("margin-inline-end")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetMarginInlineEnd(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.MarginInlineEnd);
+
+ ///
+ /// Sets the value of margin-inline-end.
+ ///
+ [DomName("marginInlineEnd")]
+ [DomName("margin-inline-end")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetMarginInlineEnd(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.MarginInlineEnd, value);
+
+ ///
+ /// Gets the value of margin-inline-start.
+ ///
+ [DomName("marginInlineStart")]
+ [DomName("margin-inline-start")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetMarginInlineStart(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.MarginInlineStart);
+
+ ///
+ /// Sets the value of margin-inline-start.
+ ///
+ [DomName("marginInlineStart")]
+ [DomName("margin-inline-start")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetMarginInlineStart(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.MarginInlineStart, value);
+
+ ///
+ /// Gets the value of mix-blend-mode.
+ ///
+ [DomName("mixBlendMode")]
+ [DomName("mix-blend-mode")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetMixBlendMode(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.MixBlendMode);
+
+ ///
+ /// Sets the value of mix-blend-mode.
+ ///
+ [DomName("mixBlendMode")]
+ [DomName("mix-blend-mode")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetMixBlendMode(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.MixBlendMode, value);
+
+ ///
+ /// Gets the value of mask-border.
+ ///
+ [DomName("maskBorder")]
+ [DomName("mask-border")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetMaskBorder(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.MaskBorder);
+
+ ///
+ /// Sets the value of mask-border.
+ ///
+ [DomName("maskBorder")]
+ [DomName("mask-border")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetMaskBorder(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.MaskBorder, value);
+
+ ///
+ /// Gets the value of mask-border-mode.
+ ///
+ [DomName("maskBorderMode")]
+ [DomName("mask-border-mode")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetMaskBorderMode(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.MaskBorderMode);
+
+ ///
+ /// Sets the value of mask-border-mode.
+ ///
+ [DomName("maskBorderMode")]
+ [DomName("mask-border-mode")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetMaskBorderMode(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.MaskBorderMode, value);
+
+ ///
+ /// Gets the value of mask-border-outset.
+ ///
+ [DomName("maskBorderOutset")]
+ [DomName("mask-border-outset")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetMaskBorderOutset(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.MaskBorderOutset);
+
+ ///
+ /// Sets the value of mask-border-outset.
+ ///
+ [DomName("maskBorderOutset")]
+ [DomName("mask-border-outset")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetMaskBorderOutset(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.MaskBorderOutset, value);
+
+ ///
+ /// Gets the value of mask-border-repeat.
+ ///
+ [DomName("maskBorderRepeat")]
+ [DomName("mask-border-repeat")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetMaskBorderRepeat(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.MaskBorderRepeat);
+
+ ///
+ /// Sets the value of mask-border-repeat.
+ ///
+ [DomName("maskBorderRepeat")]
+ [DomName("mask-border-repeat")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetMaskBorderRepeat(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.MaskBorderRepeat, value);
+
+ ///
+ /// Gets the value of mask-border-slice.
+ ///
+ [DomName("maskBorderSlice")]
+ [DomName("mask-border-slice")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetMaskBorderSlice(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.MaskBorderSlice);
+
+ ///
+ /// Sets the value of mask-border-slice.
+ ///
+ [DomName("maskBorderSlice")]
+ [DomName("mask-border-slice")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetMaskBorderSlice(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.MaskBorderSlice, value);
+
+ ///
+ /// Gets the value of mask-border-source.
+ ///
+ [DomName("maskBorderSource")]
+ [DomName("mask-border-source")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetMaskBorderSource(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.MaskBorderSource);
+
+ ///
+ /// Sets the value of mask-border-source.
+ ///
+ [DomName("maskBorderSource")]
+ [DomName("mask-border-source")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetMaskBorderSource(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.MaskBorderSource, value);
+
+ ///
+ /// Gets the value of mask-border-width.
+ ///
+ [DomName("maskBorderWidth")]
+ [DomName("mask-border-width")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetMaskBorderWidth(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.MaskBorderWidth);
+
+ ///
+ /// Sets the value of mask-border-width.
+ ///
+ [DomName("maskBorderWidth")]
+ [DomName("mask-border-width")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetMaskBorderWidth(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.MaskBorderWidth, value);
+
+ ///
+ /// Gets the value of mask-clip.
+ ///
+ [DomName("maskClip")]
+ [DomName("mask-clip")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetMaskClip(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.MaskClip);
+
+ ///
+ /// Sets the value of mask-clip.
+ ///
+ [DomName("maskClip")]
+ [DomName("mask-clip")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetMaskClip(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.MaskClip, value);
+
+ ///
+ /// Gets the value of mask-composite.
+ ///
+ [DomName("maskComposite")]
+ [DomName("mask-composite")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetMaskComposite(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.MaskComposite);
+
+ ///
+ /// Sets the value of mask-composite.
+ ///
+ [DomName("maskComposite")]
+ [DomName("mask-composite")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetMaskComposite(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.MaskComposite, value);
+
+ ///
+ /// Gets the value of mask-image.
+ ///
+ [DomName("maskImage")]
+ [DomName("mask-image")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetMaskImage(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.MaskImage);
+
+ ///
+ /// Sets the value of mask-image.
+ ///
+ [DomName("maskImage")]
+ [DomName("mask-image")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetMaskImage(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.MaskImage, value);
+
+ ///
+ /// Gets the value of mask-mode.
+ ///
+ [DomName("maskMode")]
+ [DomName("mask-mode")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetMaskMode(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.MaskMode);
+
+ ///
+ /// Sets the value of mask-mode.
+ ///
+ [DomName("maskMode")]
+ [DomName("mask-mode")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetMaskMode(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.MaskMode, value);
+
+ ///
+ /// Gets the value of mask-origin.
+ ///
+ [DomName("maskOrigin")]
+ [DomName("mask-origin")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetMaskOrigin(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.MaskOrigin);
+
+ ///
+ /// Sets the value of mask-origin.
+ ///
+ [DomName("maskOrigin")]
+ [DomName("mask-origin")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetMaskOrigin(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.MaskOrigin, value);
+
+ ///
+ /// Gets the value of mask-position.
+ ///
+ [DomName("maskPosition")]
+ [DomName("mask-position")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetMaskPosition(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.MaskPosition);
+
+ ///
+ /// Sets the value of mask-position.
+ ///
+ [DomName("maskPosition")]
+ [DomName("mask-position")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetMaskPosition(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.MaskPosition, value);
+
+ ///
+ /// Gets the value of mask-repeat.
+ ///
+ [DomName("maskRepeat")]
+ [DomName("mask-repeat")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetMaskRepeat(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.MaskRepeat);
+
+ ///
+ /// Sets the value of mask-repeat.
+ ///
+ [DomName("maskRepeat")]
+ [DomName("mask-repeat")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetMaskRepeat(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.MaskRepeat, value);
+
+ ///
+ /// Gets the value of mask-size.
+ ///
+ [DomName("maskSize")]
+ [DomName("mask-size")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetMaskSize(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.MaskSize);
+
+ ///
+ /// Sets the value of mask-size.
+ ///
+ [DomName("maskSize")]
+ [DomName("mask-size")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetMaskSize(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.MaskSize, value);
+
+ ///
+ /// Gets the value of mask-type.
+ ///
+ [DomName("maskType")]
+ [DomName("mask-type")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetMaskType(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.MaskType);
+
+ ///
+ /// Sets the value of mask-type.
+ ///
+ [DomName("maskType")]
+ [DomName("mask-type")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetMaskType(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.MaskType, value);
+
+ ///
+ /// Gets the value of max-block-size.
+ ///
+ [DomName("maxBlockSize")]
+ [DomName("max-block-size")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetMaxBlockSize(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.MaxBlockSize);
+
+ ///
+ /// Sets the value of max-block-size.
+ ///
+ [DomName("maxBlockSize")]
+ [DomName("max-block-size")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetMaxBlockSize(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.MaxBlockSize, value);
+
+ ///
+ /// Gets the value of max-inline-size.
+ ///
+ [DomName("maxInlineSize")]
+ [DomName("max-inline-size")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetMaxInlineSize(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.MaxInlineSize);
+
+ ///
+ /// Sets the value of max-inline-size.
+ ///
+ [DomName("maxInlineSize")]
+ [DomName("max-inline-size")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetMaxInlineSize(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.MaxInlineSize, value);
+
+ ///
+ /// Gets the value of min-block-size.
+ ///
+ [DomName("minBlockSize")]
+ [DomName("min-block-size")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetMinBlockSize(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.MinBlockSize);
+
+ ///
+ /// Sets the value of min-block-size.
+ ///
+ [DomName("minBlockSize")]
+ [DomName("min-block-size")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetMinBlockSize(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.MinBlockSize, value);
+
+ ///
+ /// Gets the value of min-inline-size.
+ ///
+ [DomName("minInlineSize")]
+ [DomName("min-inline-size")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetMinInlineSize(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.MinInlineSize);
+
+ ///
+ /// Sets the value of min-inline-size.
+ ///
+ [DomName("minInlineSize")]
+ [DomName("min-inline-size")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetMinInlineSize(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.MinInlineSize, value);
+
+ ///
+ /// Gets the value of outline-offset.
+ ///
+ [DomName("outlineOffset")]
+ [DomName("outline-offset")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetOutlineOffset(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.OutlineOffset);
+
+ ///
+ /// Sets the value of outline-offset.
+ ///
+ [DomName("outlineOffset")]
+ [DomName("outline-offset")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetOutlineOffset(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.OutlineOffset, value);
+
+ ///
+ /// Gets the value of overflow-clip-margin.
+ ///
+ [DomName("overflowClipMargin")]
+ [DomName("overflow-clip-margin")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetOverflowClipMargin(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.OverflowClipMargin);
+
+ ///
+ /// Sets the value of overflow-clip-margin.
+ ///
+ [DomName("overflowClipMargin")]
+ [DomName("overflow-clip-margin")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetOverflowClipMargin(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.OverflowClipMargin, value);
+
+ ///
+ /// Gets the value of overflow-anchor.
+ ///
+ [DomName("overflowAnchor")]
+ [DomName("overflow-anchor")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetOverflowAnchor(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.OverflowAnchor);
+
+ ///
+ /// Sets the value of overflow-anchor.
+ ///
+ [DomName("overflowAnchor")]
+ [DomName("overflow-anchor")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetOverflowAnchor(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.OverflowAnchor, value);
+
+ ///
+ /// Gets the value of padding-block.
+ ///
+ [DomName("paddingBlock")]
+ [DomName("padding-block")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetPaddingBlock(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.PaddingBlock);
+
+ ///
+ /// Sets the value of padding-block.
+ ///
+ [DomName("paddingBlock")]
+ [DomName("padding-block")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetPaddingBlock(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.PaddingBlock, value);
+
+ ///
+ /// Gets the value of padding-block-end.
+ ///
+ [DomName("paddingBlockEnd")]
+ [DomName("padding-block-end")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetPaddingBlockEnd(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.PaddingBlockEnd);
+
+ ///
+ /// Sets the value of padding-block-end.
+ ///
+ [DomName("paddingBlockEnd")]
+ [DomName("padding-block-end")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetPaddingBlockEnd(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.PaddingBlockEnd, value);
+
+ ///
+ /// Gets the value of padding-block-start.
+ ///
+ [DomName("paddingBlockStart")]
+ [DomName("padding-block-start")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetPaddingBlockStart(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.PaddingBlockStart);
+
+ ///
+ /// Sets the value of padding-block-start.
+ ///
+ [DomName("paddingBlockStart")]
+ [DomName("padding-block-start")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetPaddingBlockStart(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.PaddingBlockStart, value);
+
+ ///
+ /// Gets the value of padding-inline.
+ ///
+ [DomName("paddingInline")]
+ [DomName("padding-inline")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetPaddingInline(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.PaddingInline);
+
+ ///
+ /// Sets the value of padding-inline.
+ ///
+ [DomName("paddingInline")]
+ [DomName("padding-inline")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetPaddingInline(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.PaddingInline, value);
+
+ ///
+ /// Gets the value of padding-inline-end.
+ ///
+ [DomName("paddingInlineEnd")]
+ [DomName("padding-inline-end")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetPaddingInlineEnd(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.PaddingInlineEnd);
+
+ ///
+ /// Sets the value of padding-inline-end.
+ ///
+ [DomName("paddingInlineEnd")]
+ [DomName("padding-inline-end")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetPaddingInlineEnd(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.PaddingInlineEnd, value);
+
+ ///
+ /// Gets the value of padding-inline-start.
+ ///
+ [DomName("paddingInlineStart")]
+ [DomName("padding-inline-start")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetPaddingInlineStart(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.PaddingInlineStart);
+
+ ///
+ /// Sets the value of padding-inline-start.
+ ///
+ [DomName("paddingInlineStart")]
+ [DomName("padding-inline-start")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetPaddingInlineStart(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.PaddingInlineStart, value);
+
+ ///
+ /// Gets the value of place-content.
+ ///
+ [DomName("placeContent")]
+ [DomName("place-content")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetPlaceContent(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.PlaceContent);
+
+ ///
+ /// Sets the value of place-content.
+ ///
+ [DomName("placeContent")]
+ [DomName("place-content")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetPlaceContent(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.PlaceContent, value);
+
+ ///
+ /// Gets the value of place-items.
+ ///
+ [DomName("placeItems")]
+ [DomName("place-items")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetPlaceItems(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.PlaceItems);
+
+ ///
+ /// Sets the value of place-items.
+ ///
+ [DomName("placeItems")]
+ [DomName("place-items")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetPlaceItems(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.PlaceItems, value);
+
+ ///
+ /// Gets the value of place-self.
+ ///
+ [DomName("placeSelf")]
+ [DomName("place-self")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetPlaceSelf(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.PlaceSelf);
+
+ ///
+ /// Sets the value of place-self.
+ ///
+ [DomName("placeSelf")]
+ [DomName("place-self")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetPlaceSelf(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.PlaceSelf, value);
+
+ ///
+ /// Gets the value of print-color-adjust.
+ ///
+ [DomName("printColorAdjust")]
+ [DomName("print-color-adjust")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetPrintColorAdjust(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.PrintColorAdjust);
+
+ ///
+ /// Sets the value of print-color-adjust.
+ ///
+ [DomName("printColorAdjust")]
+ [DomName("print-color-adjust")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetPrintColorAdjust(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.PrintColorAdjust, value);
+
+ ///
+ /// Gets the value of resize.
+ ///
+ [DomName("resize")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetResize(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.Resize);
+
+ ///
+ /// Sets the value of resize.
+ ///
+ [DomName("resize")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetResize(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.Resize, value);
+
+ ///
+ /// Gets the value of rotate.
+ ///
+ [DomName("rotate")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetRotate(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.Rotate);
+
+ ///
+ /// Sets the value of rotate.
+ ///
+ [DomName("rotate")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetRotate(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.Rotate, value);
+
+ ///
+ /// Gets the value of scale.
+ ///
+ [DomName("scale")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetScale(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.Scale);
+
+ ///
+ /// Sets the value of scale.
+ ///
+ [DomName("scale")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetScale(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.Scale, value);
+
+ ///
+ /// Gets the value of scrollbar-width.
+ ///
+ [DomName("scrollbarWidth")]
+ [DomName("scrollbar-width")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetScrollbarWidth(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ScrollbarWidth);
+
+ ///
+ /// Sets the value of scrollbar-width.
+ ///
+ [DomName("scrollbarWidth")]
+ [DomName("scrollbar-width")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetScrollbarWidth(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ScrollbarWidth, value);
+
+ ///
+ /// Gets the value of scrollbar-color.
+ ///
+ [DomName("scrollbarColor")]
+ [DomName("scrollbar-color")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetScrollbarColor(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ScrollbarColor);
+
+ ///
+ /// Sets the value of scrollbar-color.
+ ///
+ [DomName("scrollbarColor")]
+ [DomName("scrollbar-color")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetScrollbarColor(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ScrollbarColor, value);
+
+ ///
+ /// Gets the value of scrollbar-gutter.
+ ///
+ [DomName("scrollbarGutter")]
+ [DomName("scrollbar-gutter")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetScrollbarGutter(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ScrollbarGutter);
+
+ ///
+ /// Sets the value of scrollbar-gutter.
+ ///
+ [DomName("scrollbarGutter")]
+ [DomName("scrollbar-gutter")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetScrollbarGutter(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ScrollbarGutter, value);
+
+ ///
+ /// Gets the value of scroll-behavior.
+ ///
+ [DomName("scrollBehavior")]
+ [DomName("scroll-behavior")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetScrollBehavior(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ScrollBehavior);
+
+ ///
+ /// Sets the value of scroll-behavior.
+ ///
+ [DomName("scrollBehavior")]
+ [DomName("scroll-behavior")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetScrollBehavior(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ScrollBehavior, value);
+
+ ///
+ /// Gets the value of scroll-snap-stop.
+ ///
+ [DomName("scrollSnapStop")]
+ [DomName("scroll-snap-stop")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetScrollSnapStop(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ScrollSnapStop);
+
+ ///
+ /// Sets the value of scroll-snap-stop.
+ ///
+ [DomName("scrollSnapStop")]
+ [DomName("scroll-snap-stop")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetScrollSnapStop(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ScrollSnapStop, value);
+
+ ///
+ /// Gets the value of scroll-snap-type.
+ ///
+ [DomName("scrollSnapType")]
+ [DomName("scroll-snap-type")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetScrollSnapType(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ScrollSnapType);
+
+ ///
+ /// Sets the value of scroll-snap-type.
+ ///
+ [DomName("scrollSnapType")]
+ [DomName("scroll-snap-type")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetScrollSnapType(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ScrollSnapType, value);
+
+ ///
+ /// Gets the value of scroll-margin.
+ ///
+ [DomName("scrollMargin")]
+ [DomName("scroll-margin")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetScrollMargin(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ScrollMargin);
+
+ ///
+ /// Sets the value of scroll-margin.
+ ///
+ [DomName("scrollMargin")]
+ [DomName("scroll-margin")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetScrollMargin(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ScrollMargin, value);
+
+ ///
+ /// Gets the value of scroll-margin-top.
+ ///
+ [DomName("scrollMarginTop")]
+ [DomName("scroll-margin-top")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetScrollMarginTop(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ScrollMarginTop);
+
+ ///
+ /// Sets the value of scroll-margin-top.
+ ///
+ [DomName("scrollMarginTop")]
+ [DomName("scroll-margin-top")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetScrollMarginTop(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ScrollMarginTop, value);
+
+ ///
+ /// Gets the value of scroll-margin-right.
+ ///
+ [DomName("scrollMarginRight")]
+ [DomName("scroll-margin-right")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetScrollMarginRight(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ScrollMarginRight);
+
+ ///
+ /// Sets the value of scroll-margin-right.
+ ///
+ [DomName("scrollMarginRight")]
+ [DomName("scroll-margin-right")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetScrollMarginRight(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ScrollMarginRight, value);
+
+ ///
+ /// Gets the value of scroll-margin-bottom.
+ ///
+ [DomName("scrollMarginBottom")]
+ [DomName("scroll-margin-bottom")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetScrollMarginBottom(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ScrollMarginBottom);
+
+ ///
+ /// Sets the value of scroll-margin-bottom.
+ ///
+ [DomName("scrollMarginBottom")]
+ [DomName("scroll-margin-bottom")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetScrollMarginBottom(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ScrollMarginBottom, value);
+
+ ///
+ /// Gets the value of scroll-margin-left.
+ ///
+ [DomName("scrollMarginLeft")]
+ [DomName("scroll-margin-left")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetScrollMarginLeft(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ScrollMarginLeft);
+
+ ///
+ /// Sets the value of scroll-margin-left.
+ ///
+ [DomName("scrollMarginLeft")]
+ [DomName("scroll-margin-left")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetScrollMarginLeft(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ScrollMarginLeft, value);
+
+ ///
+ /// Gets the value of scroll-margin-block.
+ ///
+ [DomName("scrollMarginBlock")]
+ [DomName("scroll-margin-block")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetScrollMarginBlock(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ScrollMarginBlock);
+
+ ///
+ /// Sets the value of scroll-margin-block.
+ ///
+ [DomName("scrollMarginBlock")]
+ [DomName("scroll-margin-block")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetScrollMarginBlock(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ScrollMarginBlock, value);
+
+ ///
+ /// Gets the value of scroll-margin-block-start.
+ ///
+ [DomName("scrollMarginBlockStart")]
+ [DomName("scroll-margin-block-start")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetScrollMarginBlockStart(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ScrollMarginBlockStart);
+
+ ///
+ /// Sets the value of scroll-margin-block-start.
+ ///
+ [DomName("scrollMarginBlockStart")]
+ [DomName("scroll-margin-block-start")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetScrollMarginBlockStart(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ScrollMarginBlockStart, value);
+
+ ///
+ /// Gets the value of scroll-margin-block-end.
+ ///
+ [DomName("scrollMarginBlockEnd")]
+ [DomName("scroll-margin-block-end")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetScrollMarginBlockEnd(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ScrollMarginBlockEnd);
+
+ ///
+ /// Sets the value of scroll-margin-block-end.
+ ///
+ [DomName("scrollMarginBlockEnd")]
+ [DomName("scroll-margin-block-end")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetScrollMarginBlockEnd(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ScrollMarginBlockEnd, value);
+
+ ///
+ /// Gets the value of scroll-margin-inline.
+ ///
+ [DomName("scrollMarginInline")]
+ [DomName("scroll-margin-inline")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetScrollMarginInline(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ScrollMarginInline);
+
+ ///
+ /// Sets the value of scroll-margin-inline.
+ ///
+ [DomName("scrollMarginInline")]
+ [DomName("scroll-margin-inline")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetScrollMarginInline(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ScrollMarginInline, value);
+
+ ///
+ /// Gets the value of scroll-margin-inline-start.
+ ///
+ [DomName("scrollMarginInlineStart")]
+ [DomName("scroll-margin-inline-start")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetScrollMarginInlineStart(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ScrollMarginInlineStart);
+
+ ///
+ /// Sets the value of scroll-margin-inline-start.
+ ///
+ [DomName("scrollMarginInlineStart")]
+ [DomName("scroll-margin-inline-start")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetScrollMarginInlineStart(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ScrollMarginInlineStart, value);
+
+ ///
+ /// Gets the value of scroll-margin-inline-end.
+ ///
+ [DomName("scrollMarginInlineEnd")]
+ [DomName("scroll-margin-inline-end")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetScrollMarginInlineEnd(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ScrollMarginInlineEnd);
+
+ ///
+ /// Sets the value of scroll-margin-inline-end.
+ ///
+ [DomName("scrollMarginInlineEnd")]
+ [DomName("scroll-margin-inline-end")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetScrollMarginInlineEnd(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ScrollMarginInlineEnd, value);
+
+ ///
+ /// Gets the value of shape-outside.
+ ///
+ [DomName("shapeOutside")]
+ [DomName("shape-outside")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetShapeOutside(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ShapeOutside);
+
+ ///
+ /// Sets the value of shape-outside.
+ ///
+ [DomName("shapeOutside")]
+ [DomName("shape-outside")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetShapeOutside(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ShapeOutside, value);
+
+ ///
+ /// Gets the value of shape-margin.
+ ///
+ [DomName("shapeMargin")]
+ [DomName("shape-margin")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetShapeMargin(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ShapeMargin);
+
+ ///
+ /// Sets the value of shape-margin.
+ ///
+ [DomName("shapeMargin")]
+ [DomName("shape-margin")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetShapeMargin(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ShapeMargin, value);
+
+ ///
+ /// Gets the value of shape-image-threshold.
+ ///
+ [DomName("shapeImageThreshold")]
+ [DomName("shape-image-threshold")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetShapeImageThreshold(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ShapeImageThreshold);
+
+ ///
+ /// Sets the value of shape-image-threshold.
+ ///
+ [DomName("shapeImageThreshold")]
+ [DomName("shape-image-threshold")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetShapeImageThreshold(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ShapeImageThreshold, value);
+
+ ///
+ /// Gets the value of shape-rendering.
+ ///
+ [DomName("shapeRendering")]
+ [DomName("shape-rendering")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetShapeRendering(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ShapeRendering);
+
+ ///
+ /// Sets the value of shape-rendering.
+ ///
+ [DomName("shapeRendering")]
+ [DomName("shape-rendering")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetShapeRendering(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ShapeRendering, value);
+
+ ///
+ /// Gets the value of scroll-padding.
+ ///
+ [DomName("scrollPadding")]
+ [DomName("scroll-padding")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetScrollPadding(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ScrollPadding);
+
+ ///
+ /// Sets the value of scroll-padding.
+ ///
+ [DomName("scrollPadding")]
+ [DomName("scroll-padding")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetScrollPadding(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ScrollPadding, value);
+
+ ///
+ /// Gets the value of scroll-padding-top.
+ ///
+ [DomName("scrollPaddingTop")]
+ [DomName("scroll-padding-top")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetScrollPaddingTop(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ScrollPaddingTop);
+
+ ///
+ /// Sets the value of scroll-padding-top.
+ ///
+ [DomName("scrollPaddingTop")]
+ [DomName("scroll-padding-top")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetScrollPaddingTop(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ScrollPaddingTop, value);
+
+ ///
+ /// Gets the value of scroll-padding-right.
+ ///
+ [DomName("scrollPaddingRight")]
+ [DomName("scroll-padding-right")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetScrollPaddingRight(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ScrollPaddingRight);
+
+ ///
+ /// Sets the value of scroll-padding-right.
+ ///
+ [DomName("scrollPaddingRight")]
+ [DomName("scroll-padding-right")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetScrollPaddingRight(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ScrollPaddingRight, value);
+
+ ///
+ /// Gets the value of scroll-padding-bottom.
+ ///
+ [DomName("scrollPaddingBottom")]
+ [DomName("scroll-padding-bottom")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetScrollPaddingBottom(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ScrollPaddingBottom);
+
+ ///
+ /// Sets the value of scroll-padding-bottom.
+ ///
+ [DomName("scrollPaddingBottom")]
+ [DomName("scroll-padding-bottom")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetScrollPaddingBottom(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ScrollPaddingBottom, value);
+
+ ///
+ /// Gets the value of scroll-padding-left.
+ ///
+ [DomName("scrollPaddingLeft")]
+ [DomName("scroll-padding-left")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetScrollPaddingLeft(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ScrollPaddingLeft);
+
+ ///
+ /// Sets the value of scroll-padding-left.
+ ///
+ [DomName("scrollPaddingLeft")]
+ [DomName("scroll-padding-left")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetScrollPaddingLeft(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ScrollPaddingLeft, value);
+
+ ///
+ /// Gets the value of scroll-padding-block.
+ ///
+ [DomName("scrollPaddingBlock")]
+ [DomName("scroll-padding-block")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetScrollPaddingBlock(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ScrollPaddingBlock);
+
+ ///
+ /// Sets the value of scroll-padding-block.
+ ///
+ [DomName("scrollPaddingBlock")]
+ [DomName("scroll-padding-block")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetScrollPaddingBlock(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ScrollPaddingBlock, value);
+
+ ///
+ /// Gets the value of scroll-padding-block-start.
+ ///
+ [DomName("scrollPaddingBlockStart")]
+ [DomName("scroll-padding-block-start")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetScrollPaddingBlockStart(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ScrollPaddingBlockStart);
+
+ ///
+ /// Sets the value of scroll-padding-block-start.
+ ///
+ [DomName("scrollPaddingBlockStart")]
+ [DomName("scroll-padding-block-start")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetScrollPaddingBlockStart(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ScrollPaddingBlockStart, value);
+
+ ///
+ /// Gets the value of scroll-padding-block-end.
+ ///
+ [DomName("scrollPaddingBlockEnd")]
+ [DomName("scroll-padding-block-end")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetScrollPaddingBlockEnd(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ScrollPaddingBlockEnd);
+
+ ///
+ /// Sets the value of scroll-padding-block-end.
+ ///
+ [DomName("scrollPaddingBlockEnd")]
+ [DomName("scroll-padding-block-end")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetScrollPaddingBlockEnd(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ScrollPaddingBlockEnd, value);
+
+ ///
+ /// Gets the value of scroll-padding-inline.
+ ///
+ [DomName("scrollPaddingInline")]
+ [DomName("scroll-padding-inline")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetScrollPaddingInline(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ScrollPaddingInline);
+
+ ///
+ /// Sets the value of scroll-padding-inline.
+ ///
+ [DomName("scrollPaddingInline")]
+ [DomName("scroll-padding-inline")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetScrollPaddingInline(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ScrollPaddingInline, value);
+
+ ///
+ /// Gets the value of scroll-padding-inline-start.
+ ///
+ [DomName("scrollPaddingInlineStart")]
+ [DomName("scroll-padding-inline-start")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetScrollPaddingInlineStart(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ScrollPaddingInlineStart);
+
+ ///
+ /// Sets the value of scroll-padding-inline-start.
+ ///
+ [DomName("scrollPaddingInlineStart")]
+ [DomName("scroll-padding-inline-start")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetScrollPaddingInlineStart(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ScrollPaddingInlineStart, value);
+
+ ///
+ /// Gets the value of scroll-padding-inline-end.
+ ///
+ [DomName("scrollPaddingInlineEnd")]
+ [DomName("scroll-padding-inline-end")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetScrollPaddingInlineEnd(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ScrollPaddingInlineEnd);
+
+ ///
+ /// Sets the value of scroll-padding-inline-end.
+ ///
+ [DomName("scrollPaddingInlineEnd")]
+ [DomName("scroll-padding-inline-end")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetScrollPaddingInlineEnd(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ScrollPaddingInlineEnd, value);
+
+ ///
+ /// Gets the value of overscroll-behavior.
+ ///
+ [DomName("overscrollBehavior")]
+ [DomName("overscroll-behavior")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetOverscrollBehavior(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.OverscrollBehavior);
+
+ ///
+ /// Sets the value of overscroll-behavior.
+ ///
+ [DomName("overscrollBehavior")]
+ [DomName("overscroll-behavior")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetOverscrollBehavior(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.OverscrollBehavior, value);
+
+ ///
+ /// Gets the value of overscroll-behavior-x.
+ ///
+ [DomName("overscrollBehaviorX")]
+ [DomName("overscroll-behavior-x")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetOverscrollBehaviorX(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.OverscrollBehaviorX);
+
+ ///
+ /// Sets the value of overscroll-behavior-x.
+ ///
+ [DomName("overscrollBehaviorX")]
+ [DomName("overscroll-behavior-x")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetOverscrollBehaviorX(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.OverscrollBehaviorX, value);
+
+ ///
+ /// Gets the value of overscroll-behavior-y.
+ ///
+ [DomName("overscrollBehaviorY")]
+ [DomName("overscroll-behavior-y")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetOverscrollBehaviorY(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.OverscrollBehaviorY);
+
+ ///
+ /// Sets the value of overscroll-behavior-y.
+ ///
+ [DomName("overscrollBehaviorY")]
+ [DomName("overscroll-behavior-y")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetOverscrollBehaviorY(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.OverscrollBehaviorY, value);
+
+ ///
+ /// Gets the value of overscroll-behavior-block.
+ ///
+ [DomName("overscrollBehaviorBlock")]
+ [DomName("overscroll-behavior-block")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetOverscrollBehaviorBlock(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.OverscrollBehaviorBlock);
+
+ ///
+ /// Sets the value of overscroll-behavior-block.
+ ///
+ [DomName("overscrollBehaviorBlock")]
+ [DomName("overscroll-behavior-block")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetOverscrollBehaviorBlock(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.OverscrollBehaviorBlock, value);
+
+ ///
+ /// Gets the value of overscroll-behavior-inline.
+ ///
+ [DomName("overscrollBehaviorInline")]
+ [DomName("overscroll-behavior-inline")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetOverscrollBehaviorInline(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.OverscrollBehaviorInline);
+
+ ///
+ /// Sets the value of overscroll-behavior-inline.
+ ///
+ [DomName("overscrollBehaviorInline")]
+ [DomName("overscroll-behavior-inline")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetOverscrollBehaviorInline(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.OverscrollBehaviorInline, value);
+
+ ///
+ /// Gets the value of scroll-snap-align.
+ ///
+ [DomName("scrollSnapAlign")]
+ [DomName("scroll-snap-align")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetScrollSnapAlign(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ScrollSnapAlign);
+
+ ///
+ /// Sets the value of scroll-snap-align.
+ ///
+ [DomName("scrollSnapAlign")]
+ [DomName("scroll-snap-align")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetScrollSnapAlign(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ScrollSnapAlign, value);
+
+ ///
+ /// Gets the value of tab-size.
+ ///
+ [DomName("tabSize")]
+ [DomName("tab-size")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetTabSize(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.TabSize);
+
+ ///
+ /// Sets the value of tab-size.
+ ///
+ [DomName("tabSize")]
+ [DomName("tab-size")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetTabSize(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.TabSize, value);
+
+ ///
+ /// Gets the value of text-decoration-skip-ink.
+ ///
+ [DomName("textDecorationSkipInk")]
+ [DomName("text-decoration-skip-ink")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetTextDecorationSkipInk(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.TextDecorationSkipInk);
+
+ ///
+ /// Sets the value of text-decoration-skip-ink.
+ ///
+ [DomName("textDecorationSkipInk")]
+ [DomName("text-decoration-skip-ink")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetTextDecorationSkipInk(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.TextDecorationSkipInk, value);
+
+ ///
+ /// Gets the value of text-decoration-thickness.
+ ///
+ [DomName("textDecorationThickness")]
+ [DomName("text-decoration-thickness")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetTextDecorationThickness(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.TextDecorationThickness);
+
+ ///
+ /// Sets the value of text-decoration-thickness.
+ ///
+ [DomName("textDecorationThickness")]
+ [DomName("text-decoration-thickness")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetTextDecorationThickness(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.TextDecorationThickness, value);
+
+ ///
+ /// Gets the value of text-orientation.
+ ///
+ [DomName("textOrientation")]
+ [DomName("text-orientation")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetTextOrientation(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.TextOrientation);
+
+ ///
+ /// Sets the value of text-orientation.
+ ///
+ [DomName("textOrientation")]
+ [DomName("text-orientation")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetTextOrientation(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.TextOrientation, value);
+
+ ///
+ /// Gets the value of text-underline-offset.
+ ///
+ [DomName("textUnderlineOffset")]
+ [DomName("text-underline-offset")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetTextUnderlineOffset(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.TextUnderlineOffset);
+
+ ///
+ /// Sets the value of text-underline-offset.
+ ///
+ [DomName("textUnderlineOffset")]
+ [DomName("text-underline-offset")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetTextUnderlineOffset(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.TextUnderlineOffset, value);
+
+ ///
+ /// Gets the value of text-wrap.
+ ///
+ [DomName("textWrap")]
+ [DomName("text-wrap")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetTextWrap(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.TextWrap);
+
+ ///
+ /// Sets the value of text-wrap.
+ ///
+ [DomName("textWrap")]
+ [DomName("text-wrap")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetTextWrap(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.TextWrap, value);
+
+ ///
+ /// Gets the value of text-wrap-mode.
+ ///
+ [DomName("textWrapMode")]
+ [DomName("text-wrap-mode")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetTextWrapMode(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.TextWrapMode);
+
+ ///
+ /// Sets the value of text-wrap-mode.
+ ///
+ [DomName("textWrapMode")]
+ [DomName("text-wrap-mode")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetTextWrapMode(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.TextWrapMode, value);
+
+ ///
+ /// Gets the value of text-wrap-style.
+ ///
+ [DomName("textWrapStyle")]
+ [DomName("text-wrap-style")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetTextWrapStyle(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.TextWrapStyle);
+
+ ///
+ /// Sets the value of text-wrap-style.
+ ///
+ [DomName("textWrapStyle")]
+ [DomName("text-wrap-style")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetTextWrapStyle(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.TextWrapStyle, value);
+
+ ///
+ /// Gets the value of transform-box.
+ ///
+ [DomName("transformBox")]
+ [DomName("transform-box")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetTransformBox(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.TransformBox);
+
+ ///
+ /// Sets the value of transform-box.
+ ///
+ [DomName("transformBox")]
+ [DomName("transform-box")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetTransformBox(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.TransformBox, value);
+
+ ///
+ /// Gets the value of translate.
+ ///
+ [DomName("translate")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetTranslate(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.Translate);
+
+ ///
+ /// Sets the value of translate.
+ ///
+ [DomName("translate")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetTranslate(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.Translate, value);
+
+ ///
+ /// Gets the value of transition-behavior.
+ ///
+ [DomName("transitionBehavior")]
+ [DomName("transition-behavior")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetTransitionBehavior(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.TransitionBehavior);
+
+ ///
+ /// Sets the value of transition-behavior.
+ ///
+ [DomName("transitionBehavior")]
+ [DomName("transition-behavior")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetTransitionBehavior(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.TransitionBehavior, value);
+
+ ///
+ /// Gets the value of touch-action.
+ ///
+ [DomName("touchAction")]
+ [DomName("touch-action")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetTouchAction(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.TouchAction);
+
+ ///
+ /// Sets the value of touch-action.
+ ///
+ [DomName("touchAction")]
+ [DomName("touch-action")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetTouchAction(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.TouchAction, value);
+
+ ///
+ /// Gets the value of user-select.
+ ///
+ [DomName("userSelect")]
+ [DomName("user-select")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetUserSelect(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.UserSelect);
+
+ ///
+ /// Sets the value of user-select.
+ ///
+ [DomName("userSelect")]
+ [DomName("user-select")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetUserSelect(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.UserSelect, value);
+
+ ///
+ /// Gets the value of white-space-collapse.
+ ///
+ [DomName("whiteSpaceCollapse")]
+ [DomName("white-space-collapse")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetWhiteSpaceCollapse(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.WhiteSpaceCollapse);
+
+ ///
+ /// Sets the value of white-space-collapse.
+ ///
+ [DomName("whiteSpaceCollapse")]
+ [DomName("white-space-collapse")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetWhiteSpaceCollapse(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.WhiteSpaceCollapse, value);
+
+ ///
+ /// Gets the value of will-change.
+ ///
+ [DomName("willChange")]
+ [DomName("will-change")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetWillChange(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.WillChange);
+
+ ///
+ /// Sets the value of will-change.
+ ///
+ [DomName("willChange")]
+ [DomName("will-change")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetWillChange(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.WillChange, value);
+
+ ///
+ /// Gets the value of object-fit.
+ ///
+ [DomName("objectFit")]
+ [DomName("object-fit")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetObjectFit(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ObjectFit);
+
+ ///
+ /// Sets the value of object-fit.
+ ///
+ [DomName("objectFit")]
+ [DomName("object-fit")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetObjectFit(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ObjectFit, value);
+
+ ///
+ /// Gets the value of object-position.
+ ///
+ [DomName("objectPosition")]
+ [DomName("object-position")]
+ [DomAccessor(Accessors.Getter)]
+ public static String GetObjectPosition(this ICssStyleDeclaration style) =>
+ style.GetPropertyValue(PropertyNames.ObjectPosition);
+
+ ///
+ /// Sets the value of object-position.
+ ///
+ [DomName("objectPosition")]
+ [DomName("object-position")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetObjectPosition(this ICssStyleDeclaration style, String value) =>
+ style.SetProperty(PropertyNames.ObjectPosition, value);
}
}
diff --git a/src/AngleSharp.Css/Extensions/MediaQueryListExtensions.cs b/src/AngleSharp.Css/Extensions/MediaQueryListExtensions.cs
new file mode 100644
index 00000000..e44947d8
--- /dev/null
+++ b/src/AngleSharp.Css/Extensions/MediaQueryListExtensions.cs
@@ -0,0 +1,35 @@
+#nullable enable
+namespace AngleSharp.Dom
+{
+ using AngleSharp.Attributes;
+ using AngleSharp.Css.Dom;
+ using System;
+
+ ///
+ /// The members of a MediaQueryList kept by the standard for pages from before it was an
+ /// event target.
+ ///
+ [DomExposed("MediaQueryList")]
+ public static class MediaQueryListExtensions
+ {
+ private const String ChangeEvent = "change";
+
+ ///
+ /// Adds a listener for changes of the query, like listening to its change event.
+ ///
+ /// The list to listen to.
+ /// The listener.
+ [DomName("addListener")]
+ public static void AddListener(this IMediaQueryList list, DomEventHandler? callback) =>
+ list.AddEventListener(ChangeEvent, callback);
+
+ ///
+ /// Removes a listener for changes of the query.
+ ///
+ /// The list to stop listening to.
+ /// The listener.
+ [DomName("removeListener")]
+ public static void RemoveListener(this IMediaQueryList list, DomEventHandler? callback) =>
+ list.RemoveEventListener(ChangeEvent, callback);
+ }
+}
diff --git a/src/AngleSharp.Css/Extensions/WindowExtensions.cs b/src/AngleSharp.Css/Extensions/WindowExtensions.cs
index 0433e11f..5d1df9d1 100644
--- a/src/AngleSharp.Css/Extensions/WindowExtensions.cs
+++ b/src/AngleSharp.Css/Extensions/WindowExtensions.cs
@@ -111,7 +111,6 @@ public static Double DevicePixelRatio(this IWindow window)
/// The element to compute the style for.
/// The optional pseudo selector to use.
/// The style declaration describing the element.
- [DomName("getComputedStyle")]
public static ICssStyleDeclaration GetComputedStyle(this IWindow window, IElement element, String? pseudo = null)
{
var device = window.GetRenderDevice();
@@ -119,6 +118,29 @@ public static ICssStyleDeclaration GetComputedStyle(this IWindow window, IElemen
return styleCollection.ComputeDeclarations(element, pseudo);
}
+ ///
+ /// Gets the computed style as script sees it, where a property that was not declared has
+ /// its initial value instead of being empty.
+ ///
+ /// The window to extend with the functionality.
+ /// The element to compute the style for.
+ /// The optional pseudo selector to use.
+ /// The style declaration describing the element.
+ [DomName("getComputedStyle")]
+ public static ICssStyleDeclaration GetComputedStyleOfScript(this IWindow window, IElement element, String? pseudo = null)
+ {
+ var style = window.GetComputedStyle(element, pseudo);
+
+ if (style is not CssStyleDeclaration declaration)
+ {
+ return style;
+ }
+
+ // what is known from layout is what script gets to see (CSSOM 9), which a pseudo element has none of
+ var provider = String.IsNullOrEmpty(pseudo) ? element.Owner?.Context.GetUsedValueProvider() : null;
+ return declaration.WithInitialValues(provider != null ? name => provider.GetUsedValue(element, name) : null);
+ }
+
///
/// Computes the element's default style. This ignores any transitions or animations.
/// Presentational hints such as bgColor are also ignored, as well as inline styles.
diff --git a/src/AngleSharp.Css/Parser/Micro/ConditionParser.cs b/src/AngleSharp.Css/Parser/Micro/ConditionParser.cs
index bbcd23bb..513ec5c7 100644
--- a/src/AngleSharp.Css/Parser/Micro/ConditionParser.cs
+++ b/src/AngleSharp.Css/Parser/Micro/ConditionParser.cs
@@ -81,6 +81,24 @@ private static IConditionFunction ConjunctionOrDisjunction(this StringSource sou
private static IConditionFunction Group(this StringSource source, IBrowsingContext context, Int32 depth)
{
+ var start = source.Index;
+
+ if (source.ParseIdent() is String name && name.Isi("selector") && source.Current == Symbols.RoundBracketOpen)
+ {
+ source.SkipCurrentAndSpaces();
+ var selector = source.TakeUntilClosed();
+
+ if (selector != null && source.Current == Symbols.RoundBracketClose)
+ {
+ source.SkipCurrentAndSpaces();
+ return new SelectorCondition(context, selector);
+ }
+
+ return null;
+ }
+
+ source.BackTo(start);
+
// each parenthesis recurses, so beyond the limit the condition is invalid
if (source.Current == Symbols.RoundBracketOpen && depth < ValueNesting.Limit)
{
From a0920212a1a21596b14682677553f79f7f94a146 Mon Sep 17 00:00:00 2001
From: Florian Rappl
Date: Fri, 6 Nov 2026 01:10:06 +0100
Subject: [PATCH 12/13] Added stylesheet adoption
---
CHANGELOG.md | 1 +
.../Extensions/ShadowTreeRenderTests.cs | 22 ++
.../Styling/ConstructedStyleSheets.cs | 112 +++++++++++
.../Dom/AdoptedStyleSheetExtensions.cs | 188 ++++++++++++++++++
.../Dom/CssStyleSheetExtensions.cs | 49 +++++
.../Dom/Internal/CssStyleSheet.cs | 175 +++++++++++++++-
.../Extensions/CssApiExtensions.cs | 2 +-
.../Extensions/StyleCollectionExtensions.cs | 2 +-
src/AngleSharp.Css/Parser/CssBuilder.cs | 11 +-
src/AngleSharp.Css/Parser/CssParser.cs | 6 +-
.../RenderTree/RenderTreeBuilder.cs | 4 +-
11 files changed, 559 insertions(+), 13 deletions(-)
create mode 100644 src/AngleSharp.Css.Tests/Styling/ConstructedStyleSheets.cs
create mode 100644 src/AngleSharp.Css/Dom/AdoptedStyleSheetExtensions.cs
create mode 100644 src/AngleSharp.Css/Dom/CssStyleSheetExtensions.cs
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b474bfd3..0a2f3dd9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -15,6 +15,7 @@ Released on Friday, November 6 2026.
- Added `selector()` to supports conditions
- Added the accessors of all style properties for script that can be applied (e.g. `gap`, `aspectRatio`, `gridTemplateColumns`, `inset`), with the names having hyphens (`style['max-width']`) and `float`
- Added `ICssUsedValueProvider`, for `getComputedStyle` to give script what layout found
+- Added `CSSStyleSheet` and `adoptedStyleSheets` to the document
# 1.3.2
diff --git a/src/AngleSharp.Css.Tests/Extensions/ShadowTreeRenderTests.cs b/src/AngleSharp.Css.Tests/Extensions/ShadowTreeRenderTests.cs
index 5658d5bf..fd62618c 100644
--- a/src/AngleSharp.Css.Tests/Extensions/ShadowTreeRenderTests.cs
+++ b/src/AngleSharp.Css.Tests/Extensions/ShadowTreeRenderTests.cs
@@ -149,5 +149,27 @@ public void ShadowTreesAreStyledByTheirOwnStyleSheets()
Assert.AreEqual("rgba(0, 128, 0, 1)", shadow.ComputedStyle.GetColor());
Assert.AreEqual("rgba(255, 0, 0, 1)", light.ComputedStyle.GetColor());
}
+
+ [Test]
+ public void AdoptedSheetsAreScopedToTheirShadowRootAndStyleItsHost()
+ {
+ AssumeHostIsSupported();
+
+ var document = CreateHost("Light", "Shadow");
+ var host = document.GetElementById("host");
+ var shadowRoot = host.ShadowRoot;
+ var sheet = new CssStyleSheet(document.DefaultView);
+ sheet.ReplaceSync(":host { display: inline-block } span { color: green }");
+ shadowRoot.SetAdoptedStyleSheets(new[] { sheet });
+
+ var nodes = Flatten(Render(document)).ToList();
+ var renderedHost = nodes.First(m => m.Ref.Id == "host");
+ var shadow = nodes.First(m => m.Ref.Id == "shadow");
+ var light = nodes.First(m => m.Ref.Id == "light");
+
+ Assert.AreEqual("inline-block", renderedHost.ComputedStyle.GetDisplay());
+ Assert.AreEqual("rgba(0, 128, 0, 1)", shadow.ComputedStyle.GetColor());
+ Assert.AreEqual("rgba(255, 0, 0, 1)", light.ComputedStyle.GetColor());
+ }
}
}
diff --git a/src/AngleSharp.Css.Tests/Styling/ConstructedStyleSheets.cs b/src/AngleSharp.Css.Tests/Styling/ConstructedStyleSheets.cs
new file mode 100644
index 00000000..f03e88e5
--- /dev/null
+++ b/src/AngleSharp.Css.Tests/Styling/ConstructedStyleSheets.cs
@@ -0,0 +1,112 @@
+#nullable disable
+namespace AngleSharp.Css.Tests.Styling
+{
+ using AngleSharp;
+ using AngleSharp.Css.Dom;
+ using AngleSharp.Dom;
+ using NUnit.Framework;
+ using System;
+ using System.Threading.Tasks;
+ using static CssConstructionFunctions;
+
+ [TestFixture]
+ public class ConstructedStyleSheetsTests
+ {
+ [Test]
+ public async Task ConstructedSheetSupportsOptionsAndReplacement()
+ {
+ var document = ParseDocument("
Text
");
+ var sheet = new CssStyleSheet(document.DefaultView, "https://example.com/styles/", "screen", true);
+
+ Assert.IsNull(sheet.OwnerNode);
+ Assert.IsNull(sheet.Href);
+ Assert.AreEqual("screen", sheet.Media.MediaText);
+ Assert.IsTrue(sheet.IsDisabled);
+
+ sheet.ReplaceSync("p { background-image: url(image.png) } @import 'ignored.css';");
+
+ Assert.AreEqual(1, sheet.Rules.Length);
+ StringAssert.Contains("https://example.com/styles/image.png", sheet.ToCss());
+
+ var replaced = await sheet.Replace("p { color: blue }");
+
+ Assert.AreSame(sheet, replaced);
+ Assert.AreEqual(1, sheet.Rules.Length);
+ Assert.AreEqual("rgba(0, 0, 255, 1)", ((ICssStyleRule)sheet.Rules[0]).Style.GetPropertyValue("color"));
+ }
+
+ [Test]
+ public async Task ReplaceMethodsRequireAConstructedSheet()
+ {
+ var sheet = ParseStyleSheet("p { color: red }");
+ var syncError = Assert.Throws(() => sheet.ReplaceSync(String.Empty));
+ Assert.AreEqual("NotAllowedError", syncError.Name);
+
+ var asyncError = Assert.ThrowsAsync(async () => await sheet.Replace(String.Empty));
+ Assert.AreEqual("NotAllowedError", asyncError.Name);
+ }
+
+ [Test]
+ public void InsertRuleRejectsImportOnConstructedSheet()
+ {
+ var document = ParseDocument(String.Empty);
+ var sheet = new CssStyleSheet(document.DefaultView);
+
+ var error = Assert.Throws(() => sheet.Insert("@import url(styles.css);", 0));
+
+ Assert.AreEqual("SyntaxError", error.Name);
+ Assert.AreEqual(0, sheet.Rules.Length);
+ }
+
+ [Test]
+ public async Task ConstructedSheetUsesDocumentAddressAsItsDefaultBaseUrl()
+ {
+ var context = BrowsingContext.New(Configuration.Default.WithCss());
+ var document = await context.OpenAsync(m => m.Content("
Text
").Address("https://example.com/page/"));
+ var sheet = new CssStyleSheet(document.DefaultView);
+
+ sheet.ReplaceSync("p { background-image: url(image.png) }");
+
+ StringAssert.Contains("https://example.com/page/image.png", sheet.ToCss());
+ }
+
+ [Test]
+ public void AdoptedSheetsApplyAfterDocumentSheetsAndCanBeMutated()
+ {
+ var document = ParseDocument("
Text
");
+ var sheet = new CssStyleSheet(document.DefaultView);
+ sheet.ReplaceSync("p { color: blue }");
+ document.SetAdoptedStyleSheets(new[] { sheet });
+ Assert.AreEqual(1, document.StyleSheets.Length);
+
+ var paragraph = document.QuerySelector("p");
+ Assert.AreEqual("rgba(0, 0, 255, 1)", document.DefaultView.GetComputedStyle(paragraph).GetColor());
+
+ sheet.ReplaceSync("p { color: green }");
+ Assert.AreEqual("rgba(0, 128, 0, 1)", document.DefaultView.GetComputedStyle(paragraph).GetColor());
+
+ sheet.IsDisabled = true;
+ Assert.AreEqual("rgba(255, 0, 0, 1)", document.DefaultView.GetComputedStyle(paragraph).GetColor());
+
+ sheet.IsDisabled = false;
+ Assert.AreEqual("rgba(0, 128, 0, 1)", document.DefaultView.GetComputedStyle(paragraph).GetColor());
+
+ document.GetAdoptedStyleSheets().RemoveAt(0);
+
+ Assert.AreEqual("rgba(255, 0, 0, 1)", document.DefaultView.GetComputedStyle(paragraph).GetColor());
+ }
+
+ [Test]
+ public void AdoptedSheetsMustBeConstructedForTheSameDocument()
+ {
+ var firstDocument = ParseDocument(String.Empty);
+ var secondDocument = ParseDocument(String.Empty);
+ var sheet = new CssStyleSheet(firstDocument.DefaultView);
+
+ var error = Assert.Throws(() => secondDocument.SetAdoptedStyleSheets(new[] { sheet }));
+
+ Assert.AreEqual("NotAllowedError", error.Name);
+ Assert.AreEqual(0, secondDocument.GetAdoptedStyleSheets().Count);
+ }
+ }
+}
diff --git a/src/AngleSharp.Css/Dom/AdoptedStyleSheetExtensions.cs b/src/AngleSharp.Css/Dom/AdoptedStyleSheetExtensions.cs
new file mode 100644
index 00000000..5eecedcd
--- /dev/null
+++ b/src/AngleSharp.Css/Dom/AdoptedStyleSheetExtensions.cs
@@ -0,0 +1,188 @@
+namespace AngleSharp.Dom
+{
+ using AngleSharp.Attributes;
+ using AngleSharp.Css.Dom;
+ using System;
+ using System.Collections;
+ using System.Collections.Generic;
+ using System.Linq;
+ using System.Runtime.CompilerServices;
+
+ ///
+ /// Provides adopted stylesheet access for documents.
+ ///
+ [DomExposed("Document")]
+ public static class DocumentAdoptedStyleSheetExtensions
+ {
+ ///
+ /// Gets the adopted stylesheets of the document.
+ ///
+ /// The document.
+ /// The live adopted stylesheet collection.
+ [DomName("adoptedStyleSheets")]
+ [DomAccessor(Accessors.Getter)]
+ public static IList GetAdoptedStyleSheets(this IDocument document) =>
+ AdoptedStyleSheetStore.Get(document);
+
+ ///
+ /// Sets the adopted stylesheets of the document.
+ ///
+ /// The document.
+ /// The stylesheets to adopt.
+ [DomName("adoptedStyleSheets")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetAdoptedStyleSheets(this IDocument document, IEnumerable sheets) =>
+ AdoptedStyleSheetStore.Set(document, sheets);
+ }
+
+ ///
+ /// Provides adopted stylesheet access for shadow roots.
+ ///
+ [DomExposed("ShadowRoot")]
+ public static class ShadowRootAdoptedStyleSheetExtensions
+ {
+ ///
+ /// Gets the adopted stylesheets of the shadow root.
+ ///
+ /// The shadow root.
+ /// The live adopted stylesheet collection.
+ [DomName("adoptedStyleSheets")]
+ [DomAccessor(Accessors.Getter)]
+ public static IList GetAdoptedStyleSheets(this IShadowRoot shadowRoot) =>
+ AdoptedStyleSheetStore.Get(shadowRoot);
+
+ ///
+ /// Sets the adopted stylesheets of the shadow root.
+ ///
+ /// The shadow root.
+ /// The stylesheets to adopt.
+ [DomName("adoptedStyleSheets")]
+ [DomAccessor(Accessors.Setter)]
+ public static void SetAdoptedStyleSheets(this IShadowRoot shadowRoot, IEnumerable sheets) =>
+ AdoptedStyleSheetStore.Set(shadowRoot, sheets);
+
+ internal static IDocument GetOwnerDocument(IShadowRoot shadowRoot) =>
+ shadowRoot.Host.Owner ?? throw new InvalidOperationException("The shadow root's host must be associated with a document.");
+ }
+
+ ///
+ /// Provides the effective stylesheet sequence for each style root.
+ ///
+ public static class EffectiveStyleSheetExtensions
+ {
+ ///
+ /// Gets a document's own stylesheets followed by its adopted stylesheets.
+ ///
+ /// The document.
+ /// The stylesheets in cascade order.
+ public static IEnumerable GetEffectiveStyleSheets(this IDocument document) =>
+ document.GetStyleSheets().OfType().Concat(document.GetAdoptedStyleSheets());
+
+ ///
+ /// Gets a shadow root's own stylesheets followed by its adopted stylesheets.
+ ///
+ /// The shadow root.
+ /// The stylesheets in cascade order.
+ public static IEnumerable GetEffectiveStyleSheets(this IShadowRoot shadowRoot) =>
+ shadowRoot.StyleSheets.OfType().Concat(shadowRoot.GetAdoptedStyleSheets());
+ }
+
+ static class AdoptedStyleSheetStore
+ {
+ private static readonly ConditionalWeakTable _collections = new();
+
+ public static IList Get(Object root) =>
+ _collections.GetValue(root, key => new AdoptedStyleSheetList(key));
+
+ public static void Set(Object root, IEnumerable sheets)
+ {
+ ((AdoptedStyleSheetList)Get(root)).Replace(sheets);
+ }
+ }
+
+ sealed class AdoptedStyleSheetList : IList
+ {
+ private readonly Object _root;
+ private readonly List _sheets = new();
+
+ public AdoptedStyleSheetList(Object root)
+ {
+ _root = root;
+ }
+
+ public ICssStyleSheet this[Int32 index]
+ {
+ get => _sheets[index];
+ set
+ {
+ Validate(value);
+ _sheets[index] = value;
+ }
+ }
+
+ public Int32 Count => _sheets.Count;
+
+ public Boolean IsReadOnly => false;
+
+ public void Add(ICssStyleSheet item)
+ {
+ Validate(item);
+ _sheets.Add(item);
+ }
+
+ public void Clear() => _sheets.Clear();
+
+ public Boolean Contains(ICssStyleSheet item) => _sheets.Contains(item);
+
+ public void CopyTo(ICssStyleSheet[] array, Int32 arrayIndex) => _sheets.CopyTo(array, arrayIndex);
+
+ public IEnumerator GetEnumerator() => _sheets.GetEnumerator();
+
+ public Int32 IndexOf(ICssStyleSheet item) => _sheets.IndexOf(item);
+
+ public void Insert(Int32 index, ICssStyleSheet item)
+ {
+ Validate(item);
+ _sheets.Insert(index, item);
+ }
+
+ public Boolean Remove(ICssStyleSheet item) => _sheets.Remove(item);
+
+ public void RemoveAt(Int32 index) => _sheets.RemoveAt(index);
+
+ IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
+
+ public void Replace(IEnumerable sheets)
+ {
+ if (sheets is null)
+ {
+ throw new ArgumentNullException(nameof(sheets));
+ }
+
+ var replacement = sheets.ToList();
+
+ foreach (var sheet in replacement)
+ {
+ Validate(sheet);
+ }
+
+ _sheets.Clear();
+ _sheets.AddRange(replacement);
+ }
+
+ private void Validate(ICssStyleSheet sheet)
+ {
+ if (sheet is not CssStyleSheet { IsConstructed: true } constructedSheet ||
+ !ReferenceEquals(constructedSheet.OwnerDocument, GetOwnerDocument()))
+ {
+ throw new DomException("NotAllowedError");
+ }
+ }
+
+ private IDocument GetOwnerDocument() => _root is IDocument document
+ ? document
+ : _root is IShadowRoot shadowRoot
+ ? ShadowRootAdoptedStyleSheetExtensions.GetOwnerDocument(shadowRoot)
+ : throw new InvalidOperationException("The style root must be a document or shadow root.");
+ }
+}
diff --git a/src/AngleSharp.Css/Dom/CssStyleSheetExtensions.cs b/src/AngleSharp.Css/Dom/CssStyleSheetExtensions.cs
new file mode 100644
index 00000000..dc384ec3
--- /dev/null
+++ b/src/AngleSharp.Css/Dom/CssStyleSheetExtensions.cs
@@ -0,0 +1,49 @@
+namespace AngleSharp.Dom
+{
+ using AngleSharp.Attributes;
+ using AngleSharp.Css.Dom;
+ using System;
+ using System.Threading.Tasks;
+
+ ///
+ /// Adds constructed stylesheet operations to CSSStyleSheet without changing its interface.
+ ///
+ [DomExposed("CSSStyleSheet")]
+ public static class CssStyleSheetExtensions
+ {
+ ///
+ /// Replaces all rules in a constructed stylesheet.
+ ///
+ /// The stylesheet to update.
+ /// The stylesheet text to parse.
+ [DomName("replaceSync")]
+ public static void ReplaceSync(this ICssStyleSheet sheet, String text)
+ {
+ GetConstructedSheet(sheet).ReplaceSync(text);
+ }
+
+ ///
+ /// Replaces all rules in a constructed stylesheet asynchronously.
+ ///
+ /// The stylesheet to update.
+ /// The stylesheet text to parse.
+ /// A task that resolves with the stylesheet.
+ [DomName("replace")]
+ public static Task Replace(this ICssStyleSheet sheet, String text)
+ {
+ return sheet is CssStyleSheet constructedSheet
+ ? constructedSheet.Replace(text)
+ : Task.FromException(new DomException("NotAllowedError"));
+ }
+
+ private static CssStyleSheet GetConstructedSheet(ICssStyleSheet sheet)
+ {
+ if (sheet is CssStyleSheet constructedSheet && constructedSheet.IsConstructed)
+ {
+ return constructedSheet;
+ }
+
+ throw new DomException("NotAllowedError");
+ }
+ }
+}
diff --git a/src/AngleSharp.Css/Dom/Internal/CssStyleSheet.cs b/src/AngleSharp.Css/Dom/Internal/CssStyleSheet.cs
index 422949ff..63739d67 100644
--- a/src/AngleSharp.Css/Dom/Internal/CssStyleSheet.cs
+++ b/src/AngleSharp.Css/Dom/Internal/CssStyleSheet.cs
@@ -1,6 +1,7 @@
#nullable disable
namespace AngleSharp.Css.Dom
{
+ using AngleSharp.Attributes;
using AngleSharp.Css.Parser;
using AngleSharp.Dom;
using AngleSharp.Io;
@@ -8,18 +9,22 @@ namespace AngleSharp.Css.Dom
using System;
using System.IO;
using System.Linq;
+ using System.Threading.Tasks;
///
/// Represents a CSS Stylesheet.
///
- sealed class CssStyleSheet : ICssStyleSheet
+ [DomName("CSSStyleSheet")]
+ public sealed class CssStyleSheet : ICssStyleSheet
{
#region Fields
private readonly IBrowsingContext _context;
- private readonly TextSource _source;
+ private TextSource _source;
private readonly MediaList _media;
private readonly CssRuleList _rules;
+ private readonly IDocument _ownerDocument;
+ private readonly Url _baseUrl;
private ICssStyleSheet _parent;
private ICssRule _owner;
private IElement _element;
@@ -36,34 +41,101 @@ internal CssStyleSheet(IBrowsingContext context, TextSource source)
_rules = new CssRuleList();
}
+ ///
+ /// Creates a constructed stylesheet for the current window.
+ ///
+ /// The window that creates the stylesheet.
+ /// The base URL for relative URLs in the stylesheet.
+ /// The media queries for the stylesheet.
+ /// Whether the stylesheet is disabled.
+ [DomConstructor]
+ [DomInitDict(offset: 1, optional: true)]
+ public CssStyleSheet(IWindow window, String baseURL = null, String media = null, Boolean disabled = false)
+ : this(window.Document.Context, new TextSource(String.Empty), true, window.Document, ResolveBaseUrl(window.Document, baseURL))
+ {
+ IsDisabled = disabled;
+
+ if (!String.IsNullOrEmpty(media))
+ {
+ _media.SetMediaText(media, throwOnError: true);
+ }
+ }
+
+ internal CssStyleSheet(IBrowsingContext context, TextSource source, Boolean isConstructed, IDocument ownerDocument, Url baseUrl)
+ : this(context, source)
+ {
+ IsConstructed = isConstructed;
+ _ownerDocument = ownerDocument;
+ _baseUrl = baseUrl;
+ }
+
#endregion
#region Properties
+ ///
+ /// Gets the MIME type of the stylesheet.
+ ///
public String Type => MimeTypeNames.Css;
+ ///
+ /// Gets the title of the stylesheet, if it has an owner node.
+ ///
public String Title => OwnerNode?.GetAttribute(AttributeNames.Title);
+ ///
+ /// Gets the media queries associated with the stylesheet.
+ ///
public IMediaList Media => _media;
+ ///
+ /// Gets the rules in the stylesheet.
+ ///
public ICssRuleList Rules => _rules;
+ ///
+ /// Gets the browsing context associated with the stylesheet.
+ ///
public IBrowsingContext Context => _context;
+ ///
+ /// Gets the source that was used to parse the stylesheet.
+ ///
public TextSource Source => _source;
+ ///
+ /// Gets or sets whether the stylesheet is disabled.
+ ///
public Boolean IsDisabled
{
get;
set;
}
+ internal Boolean IsConstructed { get; }
+
+ internal IDocument OwnerDocument => _ownerDocument;
+
+ internal Url BaseUrl => _baseUrl;
+
+ ///
+ /// Gets the element that owns the stylesheet, if any.
+ ///
public IElement OwnerNode => _element;
+ ///
+ /// Gets the parent stylesheet, if any.
+ ///
public ICssStyleSheet Parent => _parent;
+ ///
+ /// Gets the rule that imports the stylesheet, if any.
+ ///
public ICssRule OwnerRule => _owner;
+ ///
+ /// Gets or sets the URL of the stylesheet.
+ ///
public String Href
{
get;
@@ -74,23 +146,32 @@ public String Href
#region Methods
+ ///
+ /// Writes the stylesheet using the specified formatter.
+ ///
+ /// The destination writer.
+ /// The formatter to use.
public void ToCss(TextWriter writer, IStyleFormatter formatter)
{
writer.Write(formatter.Sheet(_rules.GetFormattables()));
}
- public void Add(ICssRule rule)
+ internal void Add(ICssRule rule)
{
_rules.Add(rule);
rule.SetOwner(this);
}
- public void Remove(ICssRule rule)
+ internal void Remove(ICssRule rule)
{
_rules.Remove(rule);
rule.SetOwner(null);
}
+ ///
+ /// Removes a rule at the specified index.
+ ///
+ /// The index of the rule to remove.
public void RemoveAt(Int32 index)
{
if (index >= 0 && index < _rules.Length)
@@ -100,15 +181,31 @@ public void RemoveAt(Int32 index)
}
}
+ ///
+ /// Inserts a rule at the specified index.
+ ///
+ /// The text of the rule to insert.
+ /// The index at which to insert the rule.
+ /// The index at which the rule was inserted.
public Int32 Insert(String ruleText, Int32 index)
{
var parser = _context.GetService();
var rule = parser.ParseRule(this, ruleText);
+
+ if (IsConstructed && rule is ICssImportRule)
+ {
+ throw new DomException("SyntaxError");
+ }
+
_rules.Insert(index, rule);
rule.SetOwner(this);
return index;
}
+ ///
+ /// Sets the importing rule that owns the stylesheet.
+ ///
+ /// The owner rule.
public void SetOwner(ICssRule rule)
{
_owner = rule;
@@ -116,6 +213,10 @@ public void SetOwner(ICssRule rule)
_element = _parent?.OwnerNode;
}
+ ///
+ /// Sets the parent stylesheet.
+ ///
+ /// The parent stylesheet.
public void SetParent(ICssStyleSheet parent)
{
_owner = null;
@@ -123,6 +224,10 @@ public void SetParent(ICssStyleSheet parent)
_element = parent?.OwnerNode;
}
+ ///
+ /// Sets the owner element of the stylesheet.
+ ///
+ /// The owner element.
public void SetOwner(IElement element)
{
_owner = null;
@@ -130,6 +235,11 @@ public void SetOwner(IElement element)
_element = element;
}
+ ///
+ /// Finds a namespace URI by its prefix.
+ ///
+ /// The prefix to find.
+ /// The namespace URI, if found.
public String LocateNamespace(String prefix)
{
if (!IsDisabled)
@@ -146,6 +256,63 @@ public String LocateNamespace(String prefix)
return null;
}
+ internal void ReplaceSync(String text)
+ {
+ if (!IsConstructed)
+ {
+ throw new DomException("NotAllowedError");
+ }
+
+ var parser = _context.GetService() as CssParser ??
+ throw new InvalidOperationException("The browsing context does not provide a CSS parser.");
+ var source = new TextSource(text ?? String.Empty);
+ var parsed = new CssStyleSheet(_context, source, true, _ownerDocument, _baseUrl);
+ parser.ParseStylesheet(source, parsed);
+ ReplaceRulesFrom(parsed);
+ }
+
+ internal Task Replace(String text)
+ {
+ if (!IsConstructed)
+ {
+ return Task.FromException(new DomException("NotAllowedError"));
+ }
+
+ ReplaceSync(text);
+ return Task.FromResult(this);
+ }
+
+ private void ReplaceRulesFrom(CssStyleSheet parsed)
+ {
+ foreach (var oldRule in _rules.GetFormattables().OfType())
+ {
+ oldRule.SetOwner(null);
+ }
+
+ _rules.Clear();
+ _source = parsed.Source;
+
+ foreach (var rule in parsed._rules.GetFormattables().OfType())
+ {
+ if (rule is not ICssImportRule)
+ {
+ Add(rule);
+ }
+ }
+ }
+
+ private static Url ResolveBaseUrl(IDocument document, String baseURL)
+ {
+ if (String.IsNullOrEmpty(baseURL))
+ {
+ return document.BaseUrl;
+ }
+
+ return document.BaseUrl is Url documentBase
+ ? new Url(documentBase, baseURL)
+ : new Url(baseURL);
+ }
+
#endregion
}
}
diff --git a/src/AngleSharp.Css/Extensions/CssApiExtensions.cs b/src/AngleSharp.Css/Extensions/CssApiExtensions.cs
index ab3f69a3..2aa17335 100644
--- a/src/AngleSharp.Css/Extensions/CssApiExtensions.cs
+++ b/src/AngleSharp.Css/Extensions/CssApiExtensions.cs
@@ -32,7 +32,7 @@ public static ICssStyleDeclaration ComputeCurrentStyle(this IElement element)
var device = ctx?.GetService();
var defaultStyleSheetProvider = ctx?.GetServices() ?? Enumerable.Empty();
var defaultSheets = defaultStyleSheetProvider.Select(m => m.Default).Where(m => m != null);
- var currentSheets = document?.GetStyleSheets().OfType() ?? Enumerable.Empty();
+ var currentSheets = document?.GetEffectiveStyleSheets() ?? Enumerable.Empty();
var styleCollection = new StyleCollection(defaultSheets, currentSheets, device!);
return styleCollection.ComputeDeclarations(element);
}
diff --git a/src/AngleSharp.Css/Extensions/StyleCollectionExtensions.cs b/src/AngleSharp.Css/Extensions/StyleCollectionExtensions.cs
index c3c7aae8..af47d2a7 100644
--- a/src/AngleSharp.Css/Extensions/StyleCollectionExtensions.cs
+++ b/src/AngleSharp.Css/Extensions/StyleCollectionExtensions.cs
@@ -30,7 +30,7 @@ public static IStyleCollection GetStyleCollection(this IWindow window, IRenderDe
var ctx = document.Context;
var defaultStyleSheetProvider = ctx.GetServices();
var defaultSheets = defaultStyleSheetProvider.Select(m => m.Default).Where(m => m != null);
- var currentSheets = document.GetStyleSheets().OfType();
+ var currentSheets = document.GetEffectiveStyleSheets();
return new StyleCollection(defaultSheets, currentSheets, renderDevice);
}
diff --git a/src/AngleSharp.Css/Parser/CssBuilder.cs b/src/AngleSharp.Css/Parser/CssBuilder.cs
index 64a90cd2..721f1659 100644
--- a/src/AngleSharp.Css/Parser/CssBuilder.cs
+++ b/src/AngleSharp.Css/Parser/CssBuilder.cs
@@ -1084,16 +1084,19 @@ private String CreateValue(ref CssToken token, out Boolean important)
///
private static String ResolveRelativeUrls(ICssStyleSheet owner, String value)
{
+ var constructedSheet = owner as CssStyleSheet;
+ var isConstructed = constructedSheet?.IsConstructed == true;
+
if (value.IndexOf("url(", StringComparison.OrdinalIgnoreCase) < 0 ||
- String.IsNullOrEmpty(owner?.Href) ||
- owner.OwnerNode is IHtmlStyleElement)
+ (!isConstructed && String.IsNullOrEmpty(owner?.Href)) ||
+ (!isConstructed && owner.OwnerNode is IHtmlStyleElement))
{
return value;
}
- var baseUrl = new Url(owner.Href);
+ var baseUrl = isConstructed ? constructedSheet.BaseUrl : new Url(owner.Href);
- if (baseUrl.IsInvalid)
+ if (baseUrl is null || baseUrl.IsInvalid)
{
return value;
}
diff --git a/src/AngleSharp.Css/Parser/CssParser.cs b/src/AngleSharp.Css/Parser/CssParser.cs
index d2ebee8b..106b6a59 100644
--- a/src/AngleSharp.Css/Parser/CssParser.cs
+++ b/src/AngleSharp.Css/Parser/CssParser.cs
@@ -202,7 +202,11 @@ public Task ParseStyleSheetAsync(ICssStyleSheet sheet, Cancellat
internal ICssStyleSheet ParseStylesheet(TextSource source)
{
- var sheet = new CssStyleSheet(_context, source);
+ return ParseStylesheet(source, new CssStyleSheet(_context, source));
+ }
+
+ internal ICssStyleSheet ParseStylesheet(TextSource source, CssStyleSheet sheet)
+ {
var tokenizer = CreateTokenizer(source);
var builder = new CssBuilder(_options, tokenizer, _context);
InvokeEventListener(new CssParseEvent(sheet, completed: false));
diff --git a/src/AngleSharp.Css/RenderTree/RenderTreeBuilder.cs b/src/AngleSharp.Css/RenderTree/RenderTreeBuilder.cs
index d7936cd9..0868ccba 100644
--- a/src/AngleSharp.Css/RenderTree/RenderTreeBuilder.cs
+++ b/src/AngleSharp.Css/RenderTree/RenderTreeBuilder.cs
@@ -112,7 +112,7 @@ private CssStyleDeclaration Copy(ICssStyleDeclaration style)
private StyleCollection CreateStyleCollection(IRenderDevice device)
{
var document = _window.Document;
- var currentSheets = document.GetStyleSheets().OfType();
+ var currentSheets = document.GetEffectiveStyleSheets();
return new StyleCollection(_defaultSheets, currentSheets.ToList(), device);
}
@@ -324,7 +324,7 @@ private static IEnumerable GetFlatChildren(
return null;
}
- var shadowSheets = shadowRoot.StyleSheets.OfType().ToList();
+ var shadowSheets = shadowRoot.GetEffectiveStyleSheets().ToList();
return new StyleCollection(_defaultSheets, shadowSheets, collection.Device, element);
}
From 44a76a1e9fae7187acc7a336f0a1618daeb3dc57 Mon Sep 17 00:00:00 2001
From: Florian Rappl
Date: Fri, 6 Nov 2026 01:31:13 +0100
Subject: [PATCH 13/13] Added popover
---
.github/workflows/ci.yml | 8 +-
AGENTS.md | 4 +-
CHANGELOG.md | 2 +
.../Styling/Configuration.cs | 4 +-
.../Styling/PopoverTests.cs | 158 ++++++++++++++++++
src/AngleSharp.Css/AngleSharp.Css.csproj | 2 +-
.../CssConfigurationExtensions.cs | 4 +-
.../CssDefaultStyleSheetProvider.cs | 4 +
.../PopoverOpenPseudoClassSelector.cs | 22 +++
.../CssPseudoClassSelectorFactory.cs | 39 +++++
.../CssPseudoElementSelectorFactory.cs | 19 ++-
.../Factories/DefaultPseudoElementFactory.cs | 12 ++
.../AngleSharp.Performance.Css.csproj | 2 +-
13 files changed, 268 insertions(+), 12 deletions(-)
create mode 100644 src/AngleSharp.Css.Tests/Styling/PopoverTests.cs
create mode 100644 src/AngleSharp.Css/Dom/Internal/PopoverOpenPseudoClassSelector.cs
create mode 100644 src/AngleSharp.Css/Factories/CssPseudoClassSelectorFactory.cs
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 2d27f5b2..e37164c1 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -56,7 +56,7 @@ jobs:
10.0.x
- name: Build
- run: ./build.sh -AngleSharpVersion 1.9.0
+ run: ./build.sh -AngleSharpVersion 1.10.0
windows:
runs-on: windows-latest
@@ -87,9 +87,9 @@ jobs:
NUGET_API_KEY: ${{ steps.nuget_login.outputs.NUGET_API_KEY }}
run: |
if ($env:GITHUB_REF -eq "refs/heads/main") {
- .\build.ps1 -Target Publish -AngleSharpVersion 1.9.0
+ .\build.ps1 -Target Publish -AngleSharpVersion 1.10.0
} elseif ($env:GITHUB_REF -eq "refs/heads/devel") {
- .\build.ps1 -Target PrePublish -AngleSharpVersion 1.9.0
+ .\build.ps1 -Target PrePublish -AngleSharpVersion 1.10.0
} else {
- .\build.ps1 -AngleSharpVersion 1.9.0
+ .\build.ps1 -AngleSharpVersion 1.10.0
}
diff --git a/AGENTS.md b/AGENTS.md
index 22bd99c3..2f06d9ee 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -35,7 +35,7 @@ dotnet run --project src/AngleSharp.Performance.Css/AngleSharp.Performance.Css.c
Notes:
-- CI invokes `./build.sh -AngleSharpVersion 1.9.0` on Linux and `./build.ps1` on Windows.
+- CI invokes `./build.sh -AngleSharpVersion 1.10.0` on Linux and `./build.ps1` on Windows.
- Treat warnings as errors is enabled in `src/Directory.Build.props`.
## 3) Build and target framework facts
@@ -43,7 +43,7 @@ Notes:
- Library project: `src/AngleSharp.Css/AngleSharp.Css.csproj`
- Targets: `netstandard2.0;net8.0;net10.0`
- Additional Windows-only targets: `net462;net472`
- - The AngleSharp dependency defaults to version `1.9.0` and allows versions below `2.0.0`.
+ - The AngleSharp dependency defaults to version `1.10.0` and allows versions below `2.0.0`.
- The `net8.0` and `net10.0` targets set `IsAotCompatible`, so trim and AOT analyzer warnings fail the build.
- Test project: `src/AngleSharp.Css.Tests/AngleSharp.Css.Tests.csproj`
- Targets: `net8.0`
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0a2f3dd9..07627178 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,7 @@
Released on Friday, November 6 2026.
+- Updated to use a minimum of AngleSharp 1.10
- Improved rendering by building pseudo-elements and specified styles only when needed
- Improved presentational hints by reading the quirks mode without reflection (#268) @michaelthyregod
- Improved `GetInnerText` by using the render tree, skipping hidden content and reading shadow hosts through their slots (#267) @michaelthyregod
@@ -16,6 +17,7 @@ Released on Friday, November 6 2026.
- Added the accessors of all style properties for script that can be applied (e.g. `gap`, `aspectRatio`, `gridTemplateColumns`, `inset`), with the names having hyphens (`style['max-width']`) and `float`
- Added `ICssUsedValueProvider`, for `getComputedStyle` to give script what layout found
- Added `CSSStyleSheet` and `adoptedStyleSheets` to the document
+- Added support for the popover API using the `:popover-open` pseudo-class, the `::backdrop` pseudo-element
# 1.3.2
diff --git a/src/AngleSharp.Css.Tests/Styling/Configuration.cs b/src/AngleSharp.Css.Tests/Styling/Configuration.cs
index 0891fc5c..a973cd49 100644
--- a/src/AngleSharp.Css.Tests/Styling/Configuration.cs
+++ b/src/AngleSharp.Css.Tests/Styling/Configuration.cs
@@ -50,7 +50,9 @@ public void ObtainDefaultSheet()
// 80, not 73: the UA stylesheet now also has rules of its own for text areas, selects,
// list boxes, file, search and date/time inputs, progress bars and meters.
// 81, not 80: the UA stylesheet now also gives `iframe` its default border.
- Assert.AreEqual(81, sheet.Rules.Length);
+ // 85, not 81: the UA stylesheet now also carries the popover rules (hidden unless
+ // shown, centered in the viewport, and the `::backdrop` of a shown popover).
+ Assert.AreEqual(85, sheet.Rules.Length);
}
}
}
diff --git a/src/AngleSharp.Css.Tests/Styling/PopoverTests.cs b/src/AngleSharp.Css.Tests/Styling/PopoverTests.cs
new file mode 100644
index 00000000..f7ce3528
--- /dev/null
+++ b/src/AngleSharp.Css.Tests/Styling/PopoverTests.cs
@@ -0,0 +1,158 @@
+#nullable disable
+namespace AngleSharp.Css.Tests.Styling
+{
+ using AngleSharp.Dom;
+ using AngleSharp.Html.Dom;
+ using NUnit.Framework;
+ using static CssConstructionFunctions;
+
+ ///
+ /// The CSS part of the popover API (HTML, "The popover attribute"): the `:popover-open`
+ /// pseudo-class, the `::backdrop` pseudo-element and the user-agent styles that hide a
+ /// popover until it is shown and then center it in the viewport. The DOM part (the
+ /// `popover` attribute, `ShowPopover` and friends) lives in AngleSharp itself.
+ ///
+ [TestFixture]
+ public class PopoverTests
+ {
+ private static IHtmlDocument ParsePopoverDocument() =>
+ ParseDocument("
Hello
");
+
+ [Test]
+ public void PopoverOpenDoesNotMatchAClosedPopover()
+ {
+ var document = ParsePopoverDocument();
+ var menu = document.GetElementById("menu");
+
+ Assert.IsFalse(menu.Matches(":popover-open"));
+ Assert.IsTrue(menu.Matches(":not(:popover-open)"));
+ }
+
+ [Test]
+ public void PopoverOpenMatchesAShownPopover()
+ {
+ var document = ParsePopoverDocument();
+ var menu = document.GetElementById("menu") as IHtmlElement;
+
+ menu.ShowPopover();
+
+ Assert.IsTrue(menu.Matches(":popover-open"));
+ Assert.IsFalse(menu.Matches(":not(:popover-open)"));
+ }
+
+ [Test]
+ public void PopoverOpenStopsMatchingAHiddenPopover()
+ {
+ var document = ParsePopoverDocument();
+ var menu = document.GetElementById("menu") as IHtmlElement;
+
+ menu.ShowPopover();
+ menu.HidePopover();
+
+ Assert.IsFalse(menu.Matches(":popover-open"));
+ }
+
+ [Test]
+ public void PopoverOpenDoesNotMatchANonPopoverElement()
+ {
+ var document = ParseDocument("
x
");
+ var target = document.GetElementById("target");
+
+ Assert.IsFalse(target.Matches(":popover-open"));
+ }
+
+ [Test]
+ public void PopoverOpenCanBeForcedLikeOtherPseudoClasses()
+ {
+ var document = ParsePopoverDocument();
+ var menu = document.GetElementById("menu");
+
+ menu.SetPseudoClass("popover-open");
+
+ Assert.IsTrue(menu.Matches(":popover-open"));
+ }
+
+ [Test]
+ public void ClosedPopoverIsHiddenByDefault()
+ {
+ var document = ParsePopoverDocument();
+ var menu = document.GetElementById("menu");
+
+ Assert.AreEqual("none", menu.ComputeCurrentStyle().GetPropertyValue("display"));
+ }
+
+ [Test]
+ public void ShownPopoverIsDisplayedAndCenteredInTheViewport()
+ {
+ var document = ParsePopoverDocument();
+ var menu = document.GetElementById("menu") as IHtmlElement;
+
+ menu.ShowPopover();
+ var style = menu.ComputeCurrentStyle();
+
+ Assert.AreEqual("block", style.GetPropertyValue("display"));
+ Assert.AreEqual("fixed", style.GetPropertyValue("position"));
+ Assert.AreEqual("0px", style.GetPropertyValue("top"));
+ Assert.AreEqual("0px", style.GetPropertyValue("right"));
+ Assert.AreEqual("0px", style.GetPropertyValue("bottom"));
+ Assert.AreEqual("0px", style.GetPropertyValue("left"));
+ Assert.AreEqual("auto", style.GetPropertyValue("margin-top"));
+ Assert.AreEqual("auto", style.GetPropertyValue("margin-left"));
+ Assert.AreEqual("fit-content", style.GetPropertyValue("width"));
+ Assert.AreEqual("fit-content", style.GetPropertyValue("height"));
+ Assert.AreEqual("auto", style.GetPropertyValue("overflow-x"));
+ Assert.AreEqual("solid", style.GetPropertyValue("border-top-style"));
+ }
+
+ [Test]
+ public void HiddenAttributeStillHidesAShownPopover()
+ {
+ var document = ParseDocument("
Hello
");
+ var menu = document.GetElementById("menu");
+
+ Assert.AreEqual("none", menu.ComputeCurrentStyle().GetPropertyValue("display"));
+ }
+
+ [Test]
+ public void AuthorStylesCanOverrideThePopoverDefaults()
+ {
+ var document = ParseDocument(@"
Hello
");
+ var menu = document.GetElementById("menu") as IHtmlElement;
+
+ menu.ShowPopover();
+
+ Assert.AreEqual("rgba(255, 0, 0, 1)", menu.ComputeCurrentStyle().GetPropertyValue("background-color"));
+ }
+
+ [Test]
+ public void ShownPopoverHasATransparentBackdrop()
+ {
+ var document = ParsePopoverDocument();
+ var menu = document.GetElementById("menu") as IHtmlElement;
+
+ menu.ShowPopover();
+ var style = document.DefaultView.GetComputedStyle(menu, "::backdrop");
+
+ Assert.AreEqual("fixed", style.GetPropertyValue("position"));
+ Assert.AreEqual("0px", style.GetPropertyValue("top"));
+ Assert.AreEqual("none", style.GetPropertyValue("pointer-events"));
+ Assert.AreEqual("rgba(0, 0, 0, 0)", style.GetPropertyValue("background-color"));
+ }
+
+ [Test]
+ public void BackdropStylesOfAuthorsApply()
+ {
+ var document = ParseDocument(@"
Hello
");
+ var menu = document.GetElementById("menu") as IHtmlElement;
+
+ menu.ShowPopover();
+ var style = document.DefaultView.GetComputedStyle(menu, "::backdrop");
+
+ Assert.AreEqual("rgba(0, 0, 255, 1)", style.GetPropertyValue("background-color"));
+ }
+ }
+}
diff --git a/src/AngleSharp.Css/AngleSharp.Css.csproj b/src/AngleSharp.Css/AngleSharp.Css.csproj
index be708955..3a93345c 100644
--- a/src/AngleSharp.Css/AngleSharp.Css.csproj
+++ b/src/AngleSharp.Css/AngleSharp.Css.csproj
@@ -40,7 +40,7 @@
truetruesnupkg
- 1.9.0
+ 1.10.0
diff --git a/src/AngleSharp.Css/CssConfigurationExtensions.cs b/src/AngleSharp.Css/CssConfigurationExtensions.cs
index d6001743..89473d65 100644
--- a/src/AngleSharp.Css/CssConfigurationExtensions.cs
+++ b/src/AngleSharp.Css/CssConfigurationExtensions.cs
@@ -54,13 +54,15 @@ public static IConfiguration WithCss(this IConfiguration configuration, CssParse
}
// Wraps whatever pseudo-class selector factory is registered so that pseudo-classes
+ // only supported with CSS (e.g. :popover-open) are recognized, and so that pseudo-classes
// it recognizes (e.g. :hover, :active) can be forced per element via
// ElementExtensions.SetPseudoClass, regardless of which factory instance is in use.
var pseudoClassFactory = configuration.Services.OfType().FirstOrDefault();
if (pseudoClassFactory is not null && pseudoClassFactory is not ForcingPseudoClassSelectorFactory)
{
- configuration = configuration.WithOnly(new ForcingPseudoClassSelectorFactory(pseudoClassFactory));
+ configuration = configuration.WithOnly(
+ new ForcingPseudoClassSelectorFactory(new CssPseudoClassSelectorFactory(pseudoClassFactory)));
}
// Wraps whatever pseudo-element selector factory is registered so that pseudo-elements
diff --git a/src/AngleSharp.Css/CssDefaultStyleSheetProvider.cs b/src/AngleSharp.Css/CssDefaultStyleSheetProvider.cs
index 5ea4a117..fab842c7 100644
--- a/src/AngleSharp.Css/CssDefaultStyleSheetProvider.cs
+++ b/src/AngleSharp.Css/CssDefaultStyleSheetProvider.cs
@@ -83,6 +83,10 @@ private static ICssStyleSheet Parse(String source)
style, template,
title { display: none }
[hidden] { display: none }
+[popover]:not(:popover-open):not(dialog[open]) { display: none }
+dialog:popover-open { display: block }
+[popover] { position: fixed; inset: 0; width: fit-content; height: fit-content; margin: auto; border: solid; padding: 0.25em; overflow: auto; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255) }
+:popover-open::backdrop { position: fixed; inset: 0; pointer-events: none !important; background-color: transparent }
table { display: table }
tr { display: table-row }
thead { display: table-header-group }
diff --git a/src/AngleSharp.Css/Dom/Internal/PopoverOpenPseudoClassSelector.cs b/src/AngleSharp.Css/Dom/Internal/PopoverOpenPseudoClassSelector.cs
new file mode 100644
index 00000000..d790889e
--- /dev/null
+++ b/src/AngleSharp.Css/Dom/Internal/PopoverOpenPseudoClassSelector.cs
@@ -0,0 +1,22 @@
+#nullable enable
+namespace AngleSharp.Css.Dom
+{
+ using AngleSharp.Dom;
+ using AngleSharp.Html.Dom;
+ using System;
+
+ ///
+ /// Matches the `:popover-open` pseudo-class (HTML, "The popover attribute"), i.e., an element
+ /// whose popover is currently being shown.
+ ///
+ sealed class PopoverOpenPseudoClassSelector : ISelector
+ {
+ public Priority Specificity => Priority.OneClass;
+
+ public String Text => PseudoClassNames.Separator + CssPseudoClassSelectorFactory.PopoverOpen;
+
+ public void Accept(ISelectorVisitor visitor) => visitor.PseudoClass(CssPseudoClassSelectorFactory.PopoverOpen);
+
+ public Boolean Match(IElement element, IElement? scope) => element is IHtmlElement html && html.IsPopoverOpen();
+ }
+}
diff --git a/src/AngleSharp.Css/Factories/CssPseudoClassSelectorFactory.cs b/src/AngleSharp.Css/Factories/CssPseudoClassSelectorFactory.cs
new file mode 100644
index 00000000..9085328d
--- /dev/null
+++ b/src/AngleSharp.Css/Factories/CssPseudoClassSelectorFactory.cs
@@ -0,0 +1,39 @@
+#nullable enable
+namespace AngleSharp.Css
+{
+ using AngleSharp.Css.Dom;
+ using System;
+
+ ///
+ /// Decorates another pseudo-class selector factory with the pseudo-classes
+ /// that are supported by AngleSharp.Css, but not recognized by the decorated one.
+ ///
+ sealed class CssPseudoClassSelectorFactory : IPseudoClassSelectorFactory
+ {
+ ///
+ /// The name of the `:popover-open` pseudo-class (HTML, "The popover attribute").
+ ///
+ public static readonly String PopoverOpen = "popover-open";
+
+ private static readonly ISelector PopoverOpenSelector = new PopoverOpenPseudoClassSelector();
+
+ private readonly IPseudoClassSelectorFactory _inner;
+
+ public CssPseudoClassSelectorFactory(IPseudoClassSelectorFactory inner)
+ {
+ _inner = inner;
+ }
+
+ public ISelector? Create(String name)
+ {
+ var selector = _inner.Create(name);
+
+ if (selector is null && name.Equals(PopoverOpen, StringComparison.OrdinalIgnoreCase))
+ {
+ return PopoverOpenSelector;
+ }
+
+ return selector;
+ }
+ }
+}
diff --git a/src/AngleSharp.Css/Factories/CssPseudoElementSelectorFactory.cs b/src/AngleSharp.Css/Factories/CssPseudoElementSelectorFactory.cs
index b96e990a..d005c9c7 100644
--- a/src/AngleSharp.Css/Factories/CssPseudoElementSelectorFactory.cs
+++ b/src/AngleSharp.Css/Factories/CssPseudoElementSelectorFactory.cs
@@ -15,8 +15,15 @@ sealed class CssPseudoElementSelectorFactory : IPseudoElementSelectorFactory
///
public static readonly String Placeholder = "placeholder";
+ ///
+ /// The name of the `::backdrop` pseudo-element (CSS Position 4 §4.2).
+ ///
+ public static readonly String Backdrop = "backdrop";
+
private static readonly ISelector PlaceholderSelector = new CssPseudoElementSelector(Placeholder);
+ private static readonly ISelector BackdropSelector = new CssPseudoElementSelector(Backdrop);
+
private readonly IPseudoElementSelectorFactory _inner;
public CssPseudoElementSelectorFactory(IPseudoElementSelectorFactory inner)
@@ -28,9 +35,17 @@ public ISelector Create(String name)
{
var selector = _inner.Create(name);
- if (selector is null && name.Equals(Placeholder, StringComparison.OrdinalIgnoreCase))
+ if (selector is null)
{
- return PlaceholderSelector;
+ if (name.Equals(Placeholder, StringComparison.OrdinalIgnoreCase))
+ {
+ return PlaceholderSelector;
+ }
+
+ if (name.Equals(Backdrop, StringComparison.OrdinalIgnoreCase))
+ {
+ return BackdropSelector;
+ }
}
return selector;
diff --git a/src/AngleSharp.Css/Factories/DefaultPseudoElementFactory.cs b/src/AngleSharp.Css/Factories/DefaultPseudoElementFactory.cs
index 5a3c9864..61e76179 100644
--- a/src/AngleSharp.Css/Factories/DefaultPseudoElementFactory.cs
+++ b/src/AngleSharp.Css/Factories/DefaultPseudoElementFactory.cs
@@ -25,6 +25,7 @@ public class DefaultPseudoElementFactory : IPseudoElementFactory
{ PseudoElementNames.After, element => new PseudoElement(element, PseudoElementNames.After) },
{ PseudoElementNames.Slotted, element => new PseudoElement(element, PseudoElementNames.Slotted) },
{ CssPseudoElementSelectorFactory.Placeholder, CreatePlaceholder },
+ { CssPseudoElementSelectorFactory.Backdrop, CreateBackdrop },
{ PseudoElementNames.Selection, element => new PseudoElement(element, PseudoElementNames.Selection) },
};
@@ -39,6 +40,17 @@ private static IPseudoElement CreatePlaceholder(IElement host)
return null;
}
+ private static IPseudoElement CreateBackdrop(IElement host)
+ {
+ // Only an element in the top layer has a backdrop; for now that is a shown popover.
+ if (host is IHtmlElement html && html.IsPopoverOpen())
+ {
+ return new PseudoElement(host, CssPseudoElementSelectorFactory.Backdrop);
+ }
+
+ return null;
+ }
+
///
/// Registers a new creator for the specified pseudo type.
/// Throws an exception if another creator for the given
diff --git a/src/AngleSharp.Performance.Css/AngleSharp.Performance.Css.csproj b/src/AngleSharp.Performance.Css/AngleSharp.Performance.Css.csproj
index a687ec4c..2dfa0b18 100644
--- a/src/AngleSharp.Performance.Css/AngleSharp.Performance.Css.csproj
+++ b/src/AngleSharp.Performance.Css/AngleSharp.Performance.Css.csproj
@@ -3,7 +3,7 @@
net472;net10.0Exefalse
- 1.*
+ 1.10.0