@implements IDisposable @inject IJSRuntime JsRuntime
@for (int i = 0; i < Model.Level; i++) {
}
@code { [CascadingParameter] private ScriptWorkspace Workspace { get; set; } = null!; [CascadingParameter(Name = "HierachyItemRadioName")] protected string RadioName { get; set; } = "script-explorer-item"; [Parameter, EditorRequired] public ScriptFileModel Model { get; set; } = default!; Guid ItemId = Guid.NewGuid(); private string Icon => "mdi-language-csharp"; protected override void OnAfterRender(bool firstRender) { base.OnAfterRender(firstRender); if (!firstRender) return; Model.OnModified += OnModified; Model.OnDiagnosticsChanged += OnDiagnosticsChanged; } private void OnModified() { this.InvokeAsync(() => { StateHasChanged(); }); } private void OnDiagnosticsChanged(int warningCount, int errorCount) { this.InvokeAsync(() => { StateHasChanged(); }); } private async Task Click() { await JsRuntime.InvokeVoidAsync("SetRadioChecked", ItemId); await Workspace.SelectFile(this.Model); } public void Dispose() { Model.OnModified -= OnModified; Model.OnDiagnosticsChanged -= OnDiagnosticsChanged; GC.SuppressFinalize(this); } }