{% comment %}
Copyright (C) 2017-2023  The Software Heritage developers
See the AUTHORS file at the top-level directory of this distribution
License: GNU Affero General Public License version 3, or any later version
See top-level LICENSE file for more information
{% endcomment %}

{% load swh_templatetags %}

{% include "./revision-info.html" %}
{% if snapshot_context and snapshot_context.is_empty %}
  {% include "./empty-snapshot.html" %}
{% else %}
  {% if not iframe_mode %}
    <div class="card">
      {% if filename %}
        <div class="swh-content-filename card-header swh-background-gray swh-heading-color">
          {{ filename }}
        </div>
      {% endif %}
    {% endif %}
    <div class="swh-content">
      {% if content_size > max_content_size %}
        Content is too large to be displayed (size is greater than {{ max_content_size|filesizeformat }}).
      {% elif "inode/x-empty" == mimetype %}
        <i>File is empty</i>
      {% elif mimetype in browsers_supported_image_mimes and content %}
        <img src="data:{{ mimetype }};base64,{{ content }}" alt="image" />
      {% elif "application/pdf" == mimetype %}
        <div class="text-center">
          <div class="py-2">
            <button class="btn btn-default btn-sm" id="pdf-prev">Previous</button>
            <span>Page: <span id="pdf-page-num"></span> / <span id="pdf-page-count"></span></span>
            <button class="btn btn-default btn-sm" id="pdf-next">Next</button>
          </div>
          <canvas id="pdf-canvas"></canvas>
        </div>
      {% elif filename and filename|default:""|slice:"-5:" == "ipynb" %}
        <div class="swh-ipynb"></div>
      {% elif "text/" in mimetype or "application/" in mimetype and encoding != "binary" %}
        <div class="highlightjs">
          <pre><code class="{{ language }}">{{ content }}</code></pre>
        </div>
      {% elif content %}
        Content with mime type {{ mimetype }} and encoding {{ encoding }} cannot be displayed.
      {% else %}
        {% include "includes/http-error.html" %}
      {% endif %}
    </div>
    {% if not iframe_mode %}</div>{% endif %}
  {% if content %}
    <script>
      {% if "application/pdf" == mimetype %}
        swh.webapp.renderPdf({{ top_right_link.url|jsonify }});
      {% elif filename and filename|default:""|slice:"-5:" == "ipynb" %}
        swh.webapp.renderNotebook({{ top_right_link.url|jsonify }}, '.swh-ipynb');
      {% elif content %}
        let codeContainer = $('code');
        let content = codeContainer.text();

        swh.webapp.highlightCode(true, 'code', !{{ iframe_mode|jsonify }});

        function updateLanguage(language) {
          codeContainer.text(content);
          codeContainer.removeClass();
          codeContainer.addClass(language);

          let urlParams = new URLSearchParams(window.location.search);
          urlParams.set('language', language);

          const newUrl = window.location.pathname + '?' + urlParams.toString() + window.location.hash;
          window.history.replaceState('', document.title, newUrl);

          swh.webapp.highlightCode(true, 'code', !{{ iframe_mode|jsonify }});
        }

      {% endif %}
    </script>
  {% endif %}
{% endif %}
