Documentation
use super::*;

#[derive(Clone, Debug)]
pub struct TableOfContentsArray(pub Vec<TableOfContentsItem>);

#[derive(Clone, Debug)]
pub struct TableOfContentsItem(pub Html, pub Vec<Html>);

impl Renderable for TableOfContentsArray {
    fn render(&self) -> Html {
        let items: Html = self.0.iter().map(|e| e.render()).collect();
        html! {
        <nav class="toc">
            <div class="catalog-title">{"Table of Contents"}</div>
            <div class="catalog-body"><ul class="catalog-list">{items}</ul></div>
        </nav>
        }
    }
}

impl Renderable for TableOfContentsItem {
    fn render(&self) -> Html {
        let title = self.0.clone();
        if self.1.is_empty() {
            return html! {<li class="item d1">{title}</li>};
        }
        let items: Html = self.1.clone().into_iter().map(|e| html! {<li class="item d2">{e}</li>}).collect();
        html! {<li class="item d1">{title}<ul class="sub-list">{items}</ul></li>}
    }
}