@using SharpIDE.Application.Features.SolutionDiscovery @using SharpIDE.Application.Features.SolutionDiscovery.VsPersistence @if (SolutionModel is null) { return; } @foreach (var folder in SolutionModel.Folders) { @GetSolutionFolderFragment(folder) } @foreach(var project in SolutionModel.Projects) { @GetProjectFragment(project) } @code { [Parameter, EditorRequired] public string SolutionFilePath { get; set; } = null!; [Parameter, EditorRequired] public SharpIdeSolutionModel SolutionModel { get; set; } = null!; [Parameter, EditorRequired] public SharpIdeFile SelectedFile { get; set; } = null!; [Parameter] public EventCallback SelectedFileChanged { get; set; } private async Task InvokeSelectedFileChanged(SharpIdeFile file) { SelectedFile = file; await SelectedFileChanged.InvokeAsync(file); } private RenderFragment GetSolutionFolderFragment(SharpIdeSolutionFolder slnFolder) => @ @foreach(var childFolder in slnFolder.Folders) { @GetSolutionFolderFragment(childFolder) } @foreach(var childProject in slnFolder.Projects) { @GetProjectFragment(childProject) } ; private RenderFragment GetProjectFragment(SharpIdeProjectModel project) => @ @foreach (var folder in project.Folders) { @GetFolderFragment(folder) } @foreach(var file in project.Files) { @GetFileFragment(file) } ; private RenderFragment GetFolderFragment(SharpIdeFolder folder) => @ @foreach (var subFolder in folder.Folders) { @if (subFolder.Expanded) { @GetFolderFragment(subFolder) } } @foreach (var file in folder.Files) { @GetFileFragment(file) } ; private RenderFragment GetFileFragment(SharpIdeFile file) => @ ; }