using Microsoft.JSInterop; namespace DouwcoWebsite; public class ScrollService : IDisposable { private readonly IJSRuntime _jsRuntime; private DotNetObjectReference? _dotNetObjectReference; private IJSObjectReference? _module; public event Action? OnSectionChanged; public ScrollService(IJSRuntime jsRuntime) { _jsRuntime = jsRuntime; _dotNetObjectReference = DotNetObjectReference.Create(this); } public async Task InitializeAsync() { _module = await _jsRuntime.InvokeAsync( "import", "./js/scrollService.js"); await _module.InvokeVoidAsync("initialize", _dotNetObjectReference); } [JSInvokable] public void HandleSectionChange(string sectionId) { OnSectionChanged?.Invoke(sectionId); } public async Task ScrollToSection(string sectionId) { if (_module != null) { await _module.InvokeVoidAsync("scrollToSection", sectionId); } } public void Dispose() { _dotNetObjectReference?.Dispose(); if (_module != null) { _module.InvokeVoidAsync("dispose"); } } }