<!-- JS selector for site. -->

<!-- commons -->

{% assign urls = site.data.origin[type].search.js %}

<!-- layout specified -->

{% if page.layout == 'post' or page.layout == 'page' or page.layout == 'home' %}
  {% assign urls = urls | append: ',' | append: site.data.origin[type]['lazy-polyfill'].js %}

  {% unless page.layout == 'home' %}
    <!-- image lazy-loading & popup & clipboard -->
    {% assign urls = urls
      | append: ','
      | append: site.data.origin[type].glightbox.js
      | append: ','
      | append: site.data.origin[type].clipboard.js
    %}
  {% endunless %}
{% endif %}

{% if page.layout == 'home'
  or page.layout == 'post'
  or page.layout == 'archives'
  or page.layout == 'category'
  or page.layout == 'tag'
%}
  {% assign locale = include.lang | split: '-' | first %}

  {% assign urls = urls
    | append: ','
    | append: site.data.origin[type].dayjs.js.common
    | append: ','
    | append: site.data.origin[type].dayjs.js.locale
    | replace: ':LOCALE', locale
    | append: ','
    | append: site.data.origin[type].dayjs.js.relativeTime
    | append: ','
    | append: site.data.origin[type].dayjs.js.localizedFormat
  %}
{% endif %}

{% if page.content contains '<h2' or page.content contains '<h3' and site.toc and page.toc %}
  {% assign urls = urls | append: ',' | append: site.data.origin[type].toc.js %}
{% endif %}

{% if page.mermaid %}
  {% assign urls = urls | append: ',' | append: site.data.origin[type].mermaid.js %}
{% endif %}

{% include jsdelivr-combine.html urls=urls %}

{% case page.layout %}
  {% when 'home', 'categories', 'post', 'page' %}
    {% assign js = page.layout %}
  {% when 'archives', 'category', 'tag' %}
    {% assign js = 'misc' %}
  {% else %}
    {% assign js = 'commons' %}
{% endcase %}

{% capture script %}/assets/js/dist/{{ js }}.min.js{% endcapture %}

<script defer src="{{ script | relative_url }}"></script>

  <!-- MathJax -->
  <script src="{{ '/assets/js/data/mathjax.js' | relative_url }}"></script>
  <script>
    /* see: <https://docs.mathjax.org/en/latest/options/input/tex.html#tex-options> */
    MathJax = {
      tex: {
        /* start/end delimiter pairs for in-line math */
        inlineMath: [
          ['$', '$'],
          ['\\(', '\\)']
        ],
        /* start/end delimiter pairs for display math */
        displayMath: [
          ['$$', '$$'],
          ['\\[', '\\]']
        ],
        macros: {
          ds: "\\displaystyle",

          /* font styles */
          rm: ["\\mathrm{#1}", 1],
          mf: ["\\mathfrak{#1}", 1],
          mc: ["\\mathcal{#1}", 1],
          bb: ["\\mathbb{#1}", 1],
          bf: ["\\mathbf{#1}", 1],
          tt: ["\\texttt{#1}", 1],

          inv: "^{-1}",
          conj: "^\\ast",
          trans: "^\\top",
          cross: "^\\times",
          bs: "\\setminus",
          nsub: "\\unlhd",
          pnsub: "\\lhd",

          floor: ["\\left\\lfloor #1 \\right\\rfloor", 1],
          ceil: ["\\left\\lceil #1 \\right\\rceil", 1],
          round: ["\\left\\lfloor #1 \\right\\rceil", 1],
          norm: ["\\left\\lVert #1 \\right\\rVert", 1],
          abs: ["\\left\\lvert #1 \\right\\rvert", 1],
          paren: ["\\left( #1 \\right)", 1],
          braces: ["\\left\\{ #1 \\right\\}", 1],
          span: ["\\left\\langle #1 \\right\\rangle", 1],
          bar: ["\\overline{#1 \\vphantom{l}}", 1],

          lcm: ["\\mathrm{lcm}"],

          ra: "\\rightarrow",
          la: "\\leftarrow",
          lra: "\\leftrightarrow",
          imp: "\\implies",
          pll: "\\parallel",

          N: "\\mathbb{N}",
          Z: "\\mathbb{Z}",
          Q: "\\mathbb{Q}",
          R: "\\mathbb{R}",
          C: "\\mathbb{C}",
          F: "\\mathbb{F}",

          Adv: ["\\mathrm{Adv}_{\\mathrm{#1}}[#2]", 2, ""],

          im: "\\operatorname\{im\}",
          ch: "\\operatorname\{char\}",

          Aut: "\\mathrm{Aut}",
          Gal: "\\mathrm{Gal}",
          GF: "\\mathrm{GF}",

          exists: "∃\\,",

          tilde: ["\\widetilde{#1}", 1],
          hat: ["\\widehat{#1}", 1]
        },
        tags: 'ams'
      }
    };
  </script>
  <script async src="https://cdnjs.cloudflare.com/polyfill/v3/polyfill.min.js?features=es6"></script>
  <script id="MathJax-script" async src="{{ site.data.origin[type].mathjax.js | relative_url }}"></script>

<!-- Pageviews -->
{% if page.layout == 'post' %}
  {% assign provider = site.pageviews.provider %}

  {% if provider and provider != empty %}
    {% case provider %}
      {% when 'goatcounter' %}
        {% if site.analytics[provider].id != empty and site.analytics[provider].id %}
          {% include pageviews/{{ provider }}.html %}
        {% endif %}
    {% endcase %}
  {% endif %}
{% endif %}

{% if page.mermaid %}
  {% include mermaid.html %}
{% endif %}

{% if jekyll.environment == 'production' %}
  <!-- PWA -->
  {% if site.pwa.enabled %}
    <script
      defer
      src="{{ 'app.min.js' | relative_url }}?baseurl={{ site.baseurl | default: '' }}&register={{ site.pwa.cache.enabled }}"
    ></script>
  {% endif %}

  <!-- Web Analytics -->
  {% for analytics in site.analytics %}
    {% capture str %}{{ analytics }}{% endcapture %}
    {% assign type = str | split: '{' | first %}
    {% if site.analytics[type].id and site.analytics[type].id != empty %}
      {% include analytics/{{ type }}.html %}
    {% endif %}
  {% endfor %}
{% endif %}
