{{ define "book-menu" }}

{{- $first := false -}}
{{- $current_node := .current_node -}}
{{- $is_root := .is_root -}}
{{- $order_by := .order_by -}}
{{ $icon := "" }}

{{ with .sect }}
  {{ if .IsSection }}
    {{ if not $is_root }}
      {{- $first = (eq $current_node.FirstSection.Type "book") | and (eq $current_node.FirstSection .) -}}
    {{ end }}

    {{- safeHTML $current_node.FirstSection.Params.pre_nav -}}

    {{/* Get section icon. */}}
    {{ $pack := or .Params.icon_pack "fas" }}
    {{ $pack_prefix := $pack }}
    {{ if in (slice "fab" "fas" "far" "fal") $pack }}
      {{ $pack_prefix = "fa" }}
    {{ end }}
    {{ with .Params.icon }}
      {{- if eq $pack "emoji" -}}
        {{- . | emojify -}}
      {{- else if eq $pack "custom" -}}
        {{- $svg_icon := resources.Get (printf "images/icon-pack/%s.svg" .) -}}
        {{- if $svg_icon -}}
          {{ $icon = printf "<img src=\"%s\" alt=\"%s\" class=\"svg-icon svg-baseline pr-1\">" $svg_icon.RelPermalink . }}
        {{- end -}}
      {{- else -}}
        {{ $icon = printf "<i class=\"%s %s-%s pr-1\"></i>" $pack $pack_prefix . }}
      {{- end -}}
    {{ end }}

    {{ if $first }}
      <ul class="nav docs-sidenav">
        <li class="{{ if and .File $current_node.File | and (eq .File.UniqueID $current_node.File.UniqueID) }}active{{ end }}"><a href="{{ .RelPermalink }}">{{ safeHTML $icon }}{{ .LinkTitle | default .Title }}</a></li>
    {{else}}
      <div class="docs-toc-item">
        <a class="docs-toc-link {{ if and .File $current_node.File | and (eq .File.UniqueID $current_node.File.UniqueID) }} active{{ end }}" href="{{ .RelPermalink }}">{{ safeHTML $icon }}{{ .LinkTitle | default .Title }}</a>
    {{end}}

    {{- $page_count := (add (len .Pages) (len .Sections)) -}}
    {{ if ne $page_count 0 }}
      {{ if not $first }}
        <ul class="nav docs-sidenav">
      {{end}}
      {{- .Scratch.Set "pages" .Pages -}}
      {{- if .Sections -}}
        {{- .Scratch.Set "pages" (.Pages | union .Sections) -}}
      {{- end -}}
      {{- $pages := (.Scratch.Get "pages") -}}
      {{- if eq $order_by "title" -}}
        {{- range $pages.ByTitle -}}
          {{ template "book-menu" dict "sect" . "current_node" $current_node "order_by" $order_by }}
        {{- end -}}
      {{- else if eq $order_by "title_desc" -}}
        {{- range $pages.ByTitle.Reverse -}}
          {{ template "book-menu" dict "sect" . "current_node" $current_node "order_by" $order_by }}
        {{- end -}}
      {{- else -}}
        {{- range $pages.ByWeight -}}
          {{ template "book-menu" dict "sect" . "current_node" $current_node "order_by" $order_by }}
        {{- end -}}
      {{- end}}
      {{ if not $first }}
        </ul>
      {{end}}
    {{end}}

    {{ if not $first }}
      </div>
    {{else}}
      </ul>
    {{end}}

  {{- else -}}
    {{- if not .Params.Hidden -}}
      <li class="{{ if and .File $current_node.File | and (eq .File.UniqueID $current_node.File.UniqueID) }}active{{ end }}"><a href="{{ .RelPermalink }}">{{ safeHTML $icon }}{{ .LinkTitle | default .Title }}</a></li>
    {{- end -}}
  {{ end -}}
{{- end -}}

{{/* End define. */}}
{{ end -}}