AngleSharp by AngleSharp

<PackageReference Include="AngleSharp" Version="1.1.0-alpha-378" />

.NET API 955,904 bytes

 MutationHost

sealed class MutationHost
Couples the mutation events to mutation observers and the event loop.
using AngleSharp.Browser; using System.Collections.Generic; using System.Runtime.CompilerServices; namespace AngleSharp.Dom { [System.Runtime.CompilerServices.NullableContext(1)] [System.Runtime.CompilerServices.Nullable(0)] internal sealed class MutationHost { private readonly List<MutationObserver> _observers; private readonly IEventLoop _loop; private bool _queued; public IEnumerable<MutationObserver> Observers => _observers; public MutationHost(IEventLoop loop) { _observers = new List<MutationObserver>(); _queued = false; _loop = loop; } public void Register(MutationObserver observer) { if (!_observers.Contains(observer)) _observers.Add(observer); } public void Unregister(MutationObserver observer) { if (_observers.Contains(observer)) _observers.Remove(observer); } public void ScheduleCallback() { if (!_queued) { _queued = true; _loop.Enqueue(DispatchCallback, TaskPriority.Normal); } } private void DispatchCallback() { MutationObserver[] array = _observers.ToArray(); _queued = false; MutationObserver[] array2 = array; foreach (MutationObserver object in array2) { _loop.Enqueue(object.Trigger, TaskPriority.Microtask); } } } }