using Microsoft.JSInterop; namespace ColorControl.UI.Services; public class JSHelper(IJSRuntime jsRuntime) { private IJSObjectReference? jsModule; public async Task IsFormValid(string id) { return await InvokeAsync("FormValid", id); } public async Task OpenModal(string id) { await InvokeVoidAsync("OpenModal", id); } public async Task CloseModal(string id) { await InvokeVoidAsync("CloseModal", id); } public async Task ShowToast(string id) { await InvokeVoidAsync("ShowToast", id); } private async ValueTask InvokeAsync(string identifier, params object?[]? names) where T : struct { jsModule = await LoadModule(); return await jsModule.InvokeAsync(identifier, names); } private async ValueTask InvokeVoidAsync(string identifier, params object?[]? names) { jsModule = await LoadModule(); await jsModule.InvokeVoidAsync(identifier, names); } private async Task LoadModule() { return jsModule ??= await jsRuntime.InvokeAsync("import", "./helper.js"); } }