Jacky Zhao
2023-02-05 7df2bb6f5e681ce3329e4faf6ac6cbcda7a3f14e
layouts/partials/head.html
@@ -50,27 +50,29 @@
  <script src="{{$s.Permalink}}"></script>
  {{end}}
  {{partial "katex.html" .}}
  <script src="https://unpkg.com/@floating-ui/core@0.7.3"></script>
  <script src="https://unpkg.com/@floating-ui/dom@0.5.4"></script>
  {{partial "mermaid.html" .}}
  <script async src="https://unpkg.com/@floating-ui/core@0.7.3"></script>
  <script async src="https://unpkg.com/@floating-ui/dom@0.5.4"></script>
  {{ $popover := resources.Get "js/popover.js" | resources.Fingerprint "md5" |
  resources.Minify }}
  <script src="{{$popover.Permalink}}"></script>
  <script async src="{{$popover.Permalink}}"></script>
  <!-- Optional scripts -->
  {{ if $data.enableCodeBlockTitle | default $.Site.Data.config.enableCallouts }}
  {{ $codeTitle := resources.Get "js/code-title.js" | resources.Fingerprint "md5" | resources.Minify }}
  <script src="{{$codeTitle.Permalink}}"></script>
  <script defer src="{{$codeTitle.Permalink}}"></script>
  {{end}}
  {{ if $data.enableCodeBlockCopy | default $.Site.Data.config.enableCodeBlockCopy }}
  {{ $clipboard := resources.Get "js/clipboard.js" | resources.Fingerprint "md5" | resources.Minify }}
  <script src="{{$clipboard.Permalink}}"></script>
  <script defer src="{{$clipboard.Permalink}}"></script>
  {{ end }}
  {{ if $data.enableCallouts | default $.Site.Data.config.enableCallouts }}
  {{ $callouts := resources.Get "js/callouts.js" | resources.Fingerprint "md5" | resources.Minify }}
  <script src="{{$callouts.Permalink}}"></script>
  <script defer src="{{$callouts.Permalink}}"></script>
  {{ end }}
  <!--  Preload page vars  -->
@@ -79,6 +81,9 @@
  "indices/contentIndex.json" | resources.Fingerprint "md5" | resources.Minify
  }}
  <script>
    const SEARCH_ENABLED = {{.Site.Data.config.search.enableSemanticSearch}}
    const LATEX_ENABLED = {{.Site.Data.config.enableLatex}}
    const PRODUCTION = {{ hugo.IsProduction }}
    const BASE_URL = {{.Site.BaseURL}}
    const fetchData = Promise.all([
          fetch("{{ $linkIndex.Permalink }}")
@@ -115,12 +120,11 @@
      {{if $data.enableCallouts | default $.Site.Data.config.enableCallouts -}}
      addCollapsibleCallouts();
      {{ end }}
      {{if $data.enableLinkPreview | default $.Site.Data.config.enableLinkPreview}}
      initPopover(
        {{strings.TrimRight "/" .Site.BaseURL }},
        {{$data.enableContextualBacklinks | default $.Site.Data.config.enableContextualBacklinks}},
        {{$data.enableLatex | default $.Site.Data.config.enableLatex}}
        {{$data.enableContextualBacklinks | default $.Site.Data.config.enableContextualBacklinks}}
      )
      {{end}}
@@ -143,6 +147,42 @@
        }
      {{end}}
      {{if $data.enableMermaid | default $.Site.Data.config.enableMermaid}}
        var els = document.getElementsByClassName("mermaid");
        if (els.length > 0) {
          import('https://unpkg.com/mermaid@9/dist/mermaid.esm.min.mjs').then(
            (obj) => {
              // init forces mermaid to render mermaid markdown without waiting
              // for DOMContentLoaded event
              obj.default.init();
            }
          )
        }
      {{end}}
      // analytics
      function clickHandler(evt) {
        const target = evt.target
        const classNames = target.className.split(" ")
        const broken = classNames.includes("broken")
        const internal = classNames.includes("internal-link")
        plausible("Link Click", {
          props: {
            href: target.href,
            broken,
            internal,
            graph: false,
          }
        })
      }
      const links = document.querySelectorAll("a")
      for (link of links) {
        if (link.className.includes("root-title")) {
          link.addEventListener('click', clickHandler, {once: true})
        }
      }
    }
    const init = (doc = document) => {
@@ -188,5 +228,7 @@
    })
  </script>
  {{end}}
  {{ $trimmedURL := trim (index (split .Site.BaseURL "://") 1) "/" }}
  <script defer data-domain="{{$trimmedURL}}" src="https://plausible.io/js/script.js"></script>
  <script>window.plausible = window.plausible || function() { (window.plausible.q = window.plausible.q || []).push(arguments) }</script>
</head>
{{ template "_internal/google_analytics.html" . }}