AngleSharp by AngleSharp

<PackageReference Include="AngleSharp" Version="0.9.7" />

.NET API 1,204,224 bytes

 ShadowRoot

Represents a shadow root.
using AngleSharp.Dom.Collections; using AngleSharp.Extensions; using AngleSharp.Html; using System.Diagnostics; using System.IO; using System.Linq; using System.Text; namespace AngleSharp.Dom { [DebuggerStepThrough] internal sealed class ShadowRoot : Node, IShadowRoot, IDocumentFragment, INode, IEventTarget, IMarkupFormattable, IParentNode, INonElementParentNode { private readonly Element _host; private readonly IStyleSheetList _styleSheets; private readonly ShadowRootMode _mode; private HtmlElementCollection _elements; public IElement ActiveElement => (from m in this.GetDescendants().OfType<Element>() where m.IsFocused select m).FirstOrDefault(); public IElement Host => _host; public string InnerHtml { get { return base.ChildNodes.ToHtml(HtmlMarkupFormatter.Instance); } set { ReplaceAll(new DocumentFragment(_host, value), false); } } public IStyleSheetList StyleSheets => _styleSheets; public int ChildElementCount => base.ChildNodes.OfType<Element>().Count(); public IHtmlCollection<IElement> Children => _elements ?? (_elements = new HtmlElementCollection(this, false, null)); public IElement FirstElementChild { get { NodeList childNodes = base.ChildNodes; int length = childNodes.Length; for (int i = 0; i < length; i++) { IElement element = childNodes[i] as IElement; if (element != null) return element; } return null; } } public IElement LastElementChild { get { NodeList childNodes = base.ChildNodes; for (int num = childNodes.Length - 1; num >= 0; num--) { IElement element = childNodes[num] as IElement; if (element != null) return element; } return null; } } public override string TextContent { get { StringBuilder stringBuilder = Pool.NewStringBuilder(); foreach (IText item in this.GetDescendants().OfType<IText>()) { stringBuilder.Append(item.Data); } return stringBuilder.ToPool(); } set { TextNode node = (!string.IsNullOrEmpty(value)) ? new TextNode(base.Owner, value) : null; ReplaceAll(node, false); } } internal ShadowRoot(Element host, ShadowRootMode mode) : base(host.Owner, "#shadow-root", NodeType.DocumentFragment, NodeFlags.None) { _host = host; _styleSheets = this.CreateStyleSheets(); _mode = mode; } public override INode Clone(bool deep = true) { ShadowRoot shadowRoot = new ShadowRoot(_host, _mode); CloneNode(shadowRoot, deep); return shadowRoot; } public void Prepend(params INode[] nodes) { this.PrependNodes(nodes); } public void Append(params INode[] nodes) { this.AppendNodes(nodes); } public IElement QuerySelector(string selectors) { return base.ChildNodes.QuerySelector(selectors); } public IHtmlCollection<IElement> QuerySelectorAll(string selectors) { return base.ChildNodes.QuerySelectorAll(selectors); } public IHtmlCollection<IElement> GetElementsByClassName(string classNames) { return base.ChildNodes.GetElementsByClassName(classNames); } public IHtmlCollection<IElement> GetElementsByTagName(string tagName) { return base.ChildNodes.GetElementsByTagName(tagName); } public IHtmlCollection<IElement> GetElementsByTagNameNS(string namespaceURI, string tagName) { return base.ChildNodes.GetElementsByTagName(namespaceURI, tagName); } public IElement GetElementById(string elementId) { return base.ChildNodes.GetElementById(elementId); } public override void ToHtml(TextWriter writer, IMarkupFormatter formatter) { base.ChildNodes.ToHtml(writer, formatter); } } }