{{ define "title" }}
    “{{ .Title | plainify }}” | {{ .Site.Title }}
{{ end }}

{{ define "main-class" }}--single layouts-blog-single{{ end }}

{{ define "header-scripts" }}
    {{ with .Params.locations }}
      <script id="Map-script" src="/js/leaflet/leaflet.js"></script>
    {{ end }}
{{ end }}

{{ define "header-styles" }}
    {{ with .Params.styles }}
      <link rel="stylesheet" type="text/css" href="{{ ( $.Page.Resources.GetMatch "style").RelPermalink }}">
    {{ end }}
    {{ with .Params.locations }}
      <link rel="stylesheet" href="/css/leaflet/leaflet.css">
    {{ end }}
{{ end }}

{{ define "footer-scripts" }}
    {{ with .Params.locations }}
        <script>
            var map = L.map('map').setView([55, -3], 13);

            L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
                maxZoom: 19,
                attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>'
            }).addTo(map);

            var latLons = [];
            {{ $locations := partialCached "util/get_location_leaf_nodes.html.tmpl" $.Site.Data.locations -}}
            {{- range . -}}
                {{- with ( index $locations ( replaceRE `, [A-Z]+` "" . ) ) -}}
                    L.marker([{{ .lat }}, {{ .lon }}]).addTo(map);
                    latLons.push([{{ .lat }}, {{ .lon }}]);
                {{- else -}}
                    {{- erroridf "missing-lat-lon" "Could not find lat-lon for %q (%q)" . $.File.Path -}}
                {{- end -}}
            {{- end }}

            map.fitBounds(latLons);
            if (map.getZoom() < 10) map.setZoom(10);
        </script>
    {{ end }}
    {{ if $.HasShortcode "chart" }}
      {{ $chartsConfigJS := $.Page.Resources.GetMatch "charts-init" | fingerprint }}
      <script id="Charts-script" src="/js/chart/chart.js"></script>
      <script id="Charts-config-script" src="{{ $chartsConfigJS.Permalink }}" integrity="{{ $chartsConfigJS.Data.Integrity }}"></script>
    {{ end }}
{{ end }}

{{ define "main-header" }}
  <header class="site-content__header">
      {{ if .Params.series }} 
        <p class="article-header__series">Part of series:
        {{ range ( .GetTerms "series" ) }}
            <a class="u-url" href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
        {{ end }}
        </p>
      {{ end }}
      {{ with .Params.featured_image }}
        <img class="u-photo" style="display: none;" src="
        {{- with ( $.Resources.GetMatch . ) -}}
          {{- if eq .MediaType.SubType "svg" -}}
            {{- .RelPermalink -}}
          {{- else }}
            {{- with .Resize "1200x webp" -}}
              {{- .RelPermalink -}}
            {{- end -}}
          {{- end -}}
        {{- else -}}
          {{- . -}}
        {{- end -}}
          " 
          itemprop="image"
        {{- with ( $.Resources.GetMatch . ) -}}
          alt="{{ .Params.alt }}"
        {{- end -}}
        />
      {{ end }}
      <div class="article-header__featured-image"
        {{ if .Params.featured_image }}
          {{ with .Resources.GetMatch .Params.featured_image }}
            {{ if eq .MediaType.SubType "svg" }}
              style="background-image: url({{ .RelPermalink }})"
            {{ else }}
              {{ with .Resize "1500x webp" }}
                style="background-image: url({{ .RelPermalink }})"
              {{ end }}
            {{ end }}
          {{ else }}
            style="background-image: url({{ .Params.featured_image }})"
          {{ end }}
        {{ end -}}
        >
        <div class=" article-header__title-wrapper">
          <p class="p-name" style="display: none;" itemprop="name"><a class="u-url u-uid" href="{{ .Permalink }}">{{ .Title | safeHTML }}{{ with .Params.subtitle }}: {{ . | safeHTML }}{{ end }}</a></p>
          <h2 class="article-header__title{{ if gt ( len ( .Title | plainify ) ) 40 }} article-header__title--long{{ end }}">
            {{- .Title | safeHTML -}}
          </h2>
          {{ with .Params.subtitle }}
            <p class="article-header__subtitle">{{ . | safeHTML }}</p>
          {{ end }}
        </div>
        {{ with .Resources.GetMatch .Params.featured_image }}
          <p class="attr">
             {{- if .Params.attrlink -}}<a href="{{ .Params.attrlink }}" target="_blank" rel="noopener">{{- end -}}
             {{- .Params.attr | safeHTML -}}
             {{- if .Params.attrlink -}}</a>{{- end -}}
             {{- if .Params.attrlicence }} (
                {{- with .Params.attrlicencelink -}}
                  <a href="{{ . }}" target="_blank" rel="noopener">
                {{- end -}}
                  {{- .Params.attrlicence -}}
                {{- with .Params.attrlicencelink -}}
                  </a>
                {{- end -}}
              )
              {{- end -}}
          <p>
        {{ end }}
      </div>
      
      <p class="article-header__word-count">~<span itemprop="wordCount">{{ .FuzzyWordCount | lang.FormatNumberCustom 0 }}</span> words</p>
      
      <p class="article-header__publish-date">Published: <time class="dt-published" datetime="{{ .PublishDate | time.Format "2006-01-02T15:04:05-07:00" }}" itemprop="datePublished">{{ .PublishDate.Format "January 2" }}<sup>{{ if in (slice 1 21 31) .PublishDate.Day}}st{{ else if in (slice 2 22) .PublishDate.Day}}nd{{ else if in (slice 3 23) .PublishDate.Day}}rd{{ else }}th{{ end }}</sup>, 1{{ .PublishDate.Format "2006" | lang.FormatNumberCustom 0 }}&nbsp;<abbr style="font-variant: small-caps; font-size: 0.8em;" title="Holocene Era">HE</abbr></time></p>
      
      <p class="article-header__modified-date">Last modified: <time class="dt-updated" datetime="{{ .Lastmod | time.Format "2006-01-02T15:04:05-07:00" }}" itemprop="dateModified">{{ .Lastmod.Format "January 2" }}<sup>{{ if in (slice 1 21 31) .Lastmod.Day}}st{{ else if in (slice 2 22) .Lastmod.Day}}nd{{ else if in (slice 3 23) .Lastmod.Day}}rd{{ else }}th{{ end }}</sup>, 1{{ .Lastmod.Format "2006" | lang.FormatNumberCustom 0 }}&nbsp;<abbr style="font-variant: small-caps; font-size: 0.8em;" title="Holocene Era">HE</abbr></time></p>
      
        <p style="display: none">Author{{ with .Params.authors }}s{{ end }}:&nbsp;
        {{- with .Params.authors -}}
          </p>
          <ul>
          {{- range . -}}
            {{- if ( eq . .Site.Params.Author.name ) -}}
              <li><p><a class="p-author" itemprop="author" rel="author" href="{{ .Site.Home.Permalink }}">{{ .Site.Params.Author.name }}</a></p></li>
            {{- else -}}
              <li><p class="p-author" itemprop="author">{{- . -}}</p></li>
            {{- end -}}
          {{- end -}}
          </ul>
        {{- else -}}
          <a class="p-author" itemprop="author" rel="author" href="{{ .Site.Home.Permalink }}">{{ .Site.Params.Author.name }}</a>
        {{- end -}}
        </p>
        
        {{ $post_age_in_years := math.Round ( div ( div ( now.Sub .PublishDate ).Hours 24 ) 365 ) }}
        {{ if ( or .Params.site .Params.controversial ( gt $post_age_in_years 2 ) ) }}
            <aside class="article-header__warnings">
               <ul>
               {{ if ( gt $post_age_in_years  2 ) }}<li>This piece was written <strong>over {{ $post_age_in_years }} years ago</strong>. It may no longer accurately reflect my views now, or may be factually outdated.</li>{{ end }}
               {{ if .Params.controversial }}<li>This piece has been marked as potentially <strong>controversial</strong>, whether due to the topic addressed, the content of the article, or both. Don't say you weren't warned.</li>{{ end }}
               {{ if .Params.site }}<li>This piece was originally written for an older version of this site. As such, it may not have transferred over properly and some images and links might be broken.</li>{{ end }}
               </ul>
            </aside>
       {{ end }}
       
       {{ if .Params.notes }}
            <aside class="article-header__notes">
               <ul>
               {{ range .Params.notes }}
                  <li>{{ . | safeHTML }}</li>
               {{ end }}
               </ul>
            </aside>
       {{ end }}
       
      {{ if and ( .TableOfContents ) ( ne .TableOfContents "<nav id=\"TableOfContents\"></nav>" ) }}
         <nav class="article-header__table-of-contents">
           <h3 class="article-header__subtitle">Table of Contents</h3>
           {{ .TableOfContents }}
           {{- if fileExists ( path.Join $.Page.File.Dir "appendices.md" ) -}}
           <ul class="toc-list--appendices">
              <li><a href="#appendices">Appendices</a>
                <ol>
                  {{ range .Params.appendices }}
                    <li><a href="#{{ . | anchorize }}">{{ . | safeHTML }}</a></li>
                  {{ end }}
                </ol>
              </li>
           </ul>
           {{- end -}}
           {{- if fileExists ( path.Join $.Page.File.Dir "corrigenda.md" ) -}}
           <ul class="toc-list--corrigenda">
             <li><a href="#corrigenda">Corrigenda</a></li>
           </ul>
           {{- end -}}
         </nav>
      {{ end }}
  </header>
{{ end }}

{{ define "main-body" }}
  <section class="site-content__body" itemprop="articleBody">
  
  {{ with .Summary }}
    <section class="article-body__summary" itemprop="abstract">
      <h2>Summary</h2>
      <p class="p-summary">{{ . }}</p>
    </section>
  {{ end }}
  
  {{- if ( or .Params.internal_links .Params.external_links ) -}}
    <section class="article__links">
    {{- with .Params.internal_links -}}
      <h3>Internal Links</h3>
      <ul>
      {{- range . -}}
        {{ if eq ( printf "%T" . ) "map[string]interface {}" }}
        <li><a href="{{ .link }}">{{ .title | safeHTML }}</a></li>
        {{ else }}
        <li><a href="{{ . }}">Link</a></li>
        {{ end }}
      {{- end -}}
      </ul>
    {{- end -}}
  
    {{- with .Params.external_links -}}
      <h3>External Links</h3>
      <ul>
      {{- range . -}}
        {{ if eq ( printf "%T" . ) "map[string]interface {}" }}
        <li><a href="{{ .link }}">{{ .title | safeHTML }}</a></li>
        {{ else }}
        <li><a href="{{ . }}">Link</a></li>
        {{ end }}
      {{- end -}}
      </ul>
    {{- end -}}
    </section>
  {{- end -}}
    
    <section class="e-content article-body__content" itemprop="articleBody">
      {{ .Content }}
    </section>
  
  {{ if fileExists ( path.Join $.Page.File.Dir "appendices.md" ) }}
    <section class="article-body__appendices">
      <h2 class="subheading subheading--appendices" id="appendices">Appendices</h2>
      {{ $file := path.Join $.Page.File.Dir "appendices.md" | readFile }}
      {{ $file | .RenderString }}
    </section>
  {{ end }}

  {{ if fileExists ( path.Join $.Page.File.Dir "corrigendum.md" ) }}
    <section class="article-body__corrigendum" itemprop="correction" itemscope itemtype="https://schema.org/CorrectionComment">
      <h2 class="subheading subheading--corrigendum" id="corrigendum">Corrigendum</h2>
      {{ $file := path.Join $.Page.File.Dir "corrigendum.md" | readFile }}
      {{ $file | .RenderString }}
    </section>
  {{ end }}
  </section>

  {{ with .Page.Resources.Get "comments.md" }}
    <section class="site-content__comments">
      <h2 class="subheading subheading--comments" id="comments">Comments</h2>
      <ul class="comment__thread">
      {{ .RenderShortcodes }}
      </ul>
    </section>
  {{ end }}
{{ end }}

{{ define "main-footer" }}
{{ partial "post-meta.html" . }}
{{ end }}