<script>
  volantis.layoutHelper("comments",`<div id="beaudar_container"></div>`)

  volantis.beaudar = {};

  function check_beaudar() {
    if (volantis.dark.mode === "dark") {
      volantis.beaudar.Theme = '<%- theme.comments.beaudar.theme.dark %>';
    } else {
      volantis.beaudar.Theme = '<%- theme.comments.beaudar.theme.light %>';
    }

    return document.getElementById("beaudar_container");
  }

  function pjax_beaudar() {
    const HEAD = check_beaudar();
    if (!HEAD) return;

    const script = document.createElement('script');
    let issuenumber = "<%- theme.comments.beaudar['issue-number'] %>";
    if (issuenumber) {
      script.setAttribute('issue-number', issuenumber);
    } else {
      script.setAttribute('issue-term', "<%- theme.comments.beaudar['issue-term'] %>");
    }
    script.setAttribute('src', 'https://beaudar.lipk.org/client.js');
    script.setAttribute('repo', '<%- theme.comments.beaudar.repo %>');
    script.setAttribute('input-position', '<%- theme.comments.beaudar.position %>');
    script.setAttribute('branch', '<%- theme.comments.beaudar.branch %>');
    script.setAttribute('comment-order', '<%- theme.comments.beaudar.order %>');
    script.setAttribute('label', '<%- theme.comments.beaudar.label %>');
    script.setAttribute('theme', volantis.beaudar.Theme);
    script.setAttribute('crossorigin', "anonymous");
    HEAD.appendChild(script);
  }

  function dark_beaudar() {
    const HEAD = check_beaudar();
    if (!HEAD) return;

    const message = {
      type: 'set-theme',
      theme: volantis.beaudar.Theme
    };
    const beaudarIframe = document.querySelector('iframe');
    beaudarIframe.contentWindow.postMessage(message, 'https://beaudar.lipk.org');
  }

  function check_beaudar_style() {
    // Beaudar 会往 HEAD 的首节点追加样式元素，而这个追加没有添加判断
    // 所以 Pjax 下会多次添加样式文件，略微麻烦。
    const checkStyle = document.querySelector('head').firstElementChild;
    if(checkStyle.innerText.includes('beaudar')) checkStyle.remove();
  }

  pjax_beaudar();
  volantis.pjax.push(check_beaudar_style,"check_beaudar_style");
  volantis.pjax.push(pjax_beaudar,"pjax_beaudar");
  volantis.dark.push(dark_beaudar,"dark_beaudar");
</script>
