Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
quarto-dev
GitHub Repository: quarto-dev/quarto-cli
Path: blob/main/src/resources/formats/html/giscus/giscus.ejs
12923 views
<input type="hidden" id="giscus-base-theme" value="<%- giscus.baseTheme %>">
<input type="hidden" id="giscus-alt-theme" value="<%- giscus.altTheme %>">
<script>
  function loadGiscus() {
    // Function to get the theme based on body class
    const getTheme = () => {
      let baseTheme = document.getElementById('giscus-base-theme').value;
      let altTheme = document.getElementById('giscus-alt-theme').value;
      <% if (darkMode !== undefined) { %>
      if (authorPrefersDark) {
          [baseTheme, altTheme] = [altTheme, baseTheme];
      }
      <% } %>
      return document.body.classList.contains('quarto-dark') ? altTheme : baseTheme;
    };
    const script = document.createElement("script");
    script.src = "https://giscus.app/client.js";
    script.async = true;
    script.dataset.repo = "<%- giscus.repo %>";
    script.dataset.repoId = "<%- giscus['repo-id'] %>";
    script.dataset.category = "<%- giscus.category %>";
    script.dataset.categoryId = "<%- giscus['category-id'] %>";
    script.dataset.mapping = "<%- giscus.mapping %>";
    script.dataset.reactionsEnabled = "<%- giscus['reactions-enabled'] ? 1 : 0 %>";
    script.dataset.emitMetadata = "0";
    script.dataset.inputPosition = "<%- giscus['input-position'] %>";
    script.dataset.theme = getTheme();
    script.dataset.lang = "<%- giscus.language %>";
    script.crossOrigin = "anonymous";

    // Append the script to the desired div instead of at the end of the body
    document.getElementById("quarto-content").appendChild(script);
  }
  loadGiscus();
</script>