@layout PageLayout

@inject INoteService noteService
@implements IDisposable

@page "/notes/{href1}/{href2?}/{href3?}/{href4?}/{href5?}"


@if (!noteService.IsLoaded())
{
    <LoadingComponent/>
}
else
{
    <LayoutWithSidebarComponent>
        <Sidebar>
            <NoteNavComponent
                Connections="noteService.NoteConnectionModels"
                Notes="noteService.NoteContentModels"/>
        </Sidebar>
        <Content>
            <PaperComponent>
                @foreach (var note in noteService.NoteContentModels)
                {
                    if (!note.Href.Equals(Href))
                    {
                        continue;
                    }
                    <NoteComponent NoteContentModel="note"/>
                }
            </PaperComponent>
        </Content>
    </LayoutWithSidebarComponent>
}

<style>
    pre code {
        color: white;  
    }
    
    h1 {
    	display: block;
        font-size: 2em;
        margin-top: 0.67em;
        margin-bottom: 0.67em;
        margin-left: 0;
        margin-right: 0;
        font-weight: bold;
    }
    
    h2 {
        display: block;
        font-size: 1.5em;
        margin-top: 0.83em;
        margin-bottom: 0.83em;
        margin-left: 0;
        margin-right: 0;
        font-weight: bold;
    }
    
    li {
    	display: list-item;
    }
    
    p {
        display: block;
        margin-top: 1em;
        margin-bottom: 1em;
        margin-left: 0;
        margin-right: 0;
    }
    
    ul {
        display: block;
        list-style-type: disc;
        margin-top: 1em;
        margin-bottom: 1em;
        margin-left: 0;
        margin-right: 0;
        padding-left: 40px;
    }
    
    pre {
        background: black;
        padding: 2px;
    }
</style>

@code {

    [Parameter]
    public string? Href1 { get; set; }

    [Parameter]
    public string? Href2 { get; set; }

    [Parameter]
    public string? Href3 { get; set; }

    [Parameter]
    public string? Href4 { get; set; }

    [Parameter]
    public string? Href5 { get; set; }

    private string Href => Href5 ?? Href4 ?? Href3 ?? Href2 ?? Href1 ?? "";

    protected override void OnInitialized()
    {
        noteService.Subscribe(StateHasChanged);

        noteService.Load();
    }

    public void Dispose()
    {
        noteService.Unsubscribe(StateHasChanged);
    }

}