summaryrefslogblamecommitdiffstats
path: root/_layouts/default.html
blob: 15482bbd8e2e7ae18b9178717db48813294914d5 (plain) (tree)
1
2
3
4
5
6
7
8
9







                                                
 
      


















































                                                                                                    
 







                                                                                                 
          



































                                                                                                                                                                                                                                
                           




                                                           
                           
















































                                                                                                                                                                                        
 
                   
                  

























































                                                                                                                                                                                                                                                                                                                                                
 


                                                                                    
 


                                                                                                        
 





















                                                                                                                                                                                                  
 
                                                                              
 
 


                                                                                                           
 
     

 





                                                                                                                               




                                      

                                                                         
 
                                                                           
 

                                                                                                                                              
 
                                                                                                                                                                                                                           





                                                                                                                        





                                               

           
                                      




                                                                                 
           

      
---
layout: table_wrappers
---

<!DOCTYPE html>

<html lang="{{ site.lang | default: 'en-US' }}">
{% include head.html %}

<body>
  <svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
    <symbol id="svg-link" viewBox="0 0 24 24">
      <title>Link</title>
      <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
        stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"
        class="feather feather-link">
        <path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path>
        <path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path>
      </svg>
    </symbol>
    <symbol id="svg-search" viewBox="0 0 24 24">
      <title>Search</title>
      <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
        stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"
        class="feather feather-search">
        <circle cx="11" cy="11" r="8"></circle>
        <line x1="21" y1="21" x2="16.65" y2="16.65"></line>
      </svg>
    </symbol>
    <symbol id="svg-menu" viewBox="0 0 24 24">
      <title>Menu</title>
      <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
        stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"
        class="feather feather-menu">
        <line x1="3" y1="12" x2="21" y2="12"></line>
        <line x1="3" y1="6" x2="21" y2="6"></line>
        <line x1="3" y1="18" x2="21" y2="18"></line>
      </svg>
    </symbol>
    <symbol id="svg-arrow-right" viewBox="0 0 24 24">
      <title>Expand</title>
      <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
        stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"
        class="feather feather-chevron-right">
        <polyline points="9 18 15 12 9 6"></polyline>
      </svg>
    </symbol>
    <symbol id="svg-doc" viewBox="0 0 24 24">
      <title>Document</title>
      <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
        stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"
        class="feather feather-file">
        <path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"></path>
        <polyline points="13 2 13 9 20 9"></polyline>
      </svg>
    </symbol>
    {% include icons/alert.html %}
    {% include icons/code_copy.html %}
    {% include icons/external_link.html %}
    {% include icons/custom.html %}
  </svg>

  <div class="side-bar">
    <div class="site-header">
      <a href="{{ '/' | relative_url }}" class="site-title lh-tight">{% include title.html %}</a>
      <a href="#" id="menu-button" class="site-button">
        <svg viewBox="0 0 24 24" class="icon">
          <use xlink:href="#svg-menu"></use>
        </svg>
      </a>
    </div>
    <nav role="navigation" aria-label="Main" id="site-nav" class="site-nav">
      {% include nav/main.html %}
    </nav>
    {% capture nav_footer_custom %}	
      {%- include nav_footer_custom.html -%}	
    {% endcapture %}	
    {% if nav_footer_custom != "" %}	
      {{ nav_footer_custom }}	
    {% else %}	
      <footer class="site-footer">	
        This site uses <a href="https://github.com/just-the-docs/just-the-docs">Just the Docs</a>, a documentation theme for Jekyll.	
      </footer>	
    {% endif %}
  </div>
  <div class="main" id="top">
    <div id="main-header" class="main-header">
      {% if site.search_enabled != false %}
      {% capture search_placeholder %}{% include search_placeholder_custom.html %}{% endcapture %}
      <div class="search">	
        <div class="search-input-wrap">	
          <input type="text" id="search-input" class="search-input" tabindex="0" placeholder="{{ search_placeholder | strip_html | strip }}" aria-label="{{ search_placeholder | strip_html| strip }}" autocomplete="off">	
          <label for="search-input" class="search-label"><svg viewBox="0 0 24 24" class="search-icon"><use xlink:href="#svg-search"></use></svg></label>	
        </div>	
        <div id="search-results" class="search-results"></div>
      </div>
      {% endif %}
      {% include header_custom.html %}
      <nav class="aux-nav">
        <ul class="aux-nav-list">
          {% if site.aux_links %}
          {% for link in site.aux_links %}
          <li class="aux-nav-list-item">
            <span class="site-button">
              <a href="{{ link.link }}" class="btn btn-{{ link.color }}">{{ link.title }}
                {% if link.logo %}
                <img src="{{ link.logo }}"></img>
                {% endif %}
                {% if link.icon %}
                <svg>
                  <use xlink:href="#{{ link.icon }}"></use>
                </svg>
                </svg>
                {% endif %}
              </a>
            </span>
          </li>
          {% endfor %}
          {% endif %}
          <li class="aux-nav-list-item"><span class="site-button "><a class="btn js-toggle-dark-mode">Dark
                mode</a></span></li>
        </ul>
      </nav>
    </div>
    <div id="main-content-wrap" class="main-content-wrap">
      {% if page.parent and page.url != "/" %}	
        {% include nav/crumbs.html nodes=nav_page_ancestors %}
      {% endif %}
      <div id="main-content" class="main-content" role="main">
        <header class="page-header" role="banner">
          {% if
          site.gh_edit_link and
          site.gh_edit_link_text and
          site.gh_edit_repository and
          site.gh_edit_branch and
          site.gh_edit_view_mode
          %}
          <a class="site-button github-edit"
            href="{{ site.gh_edit_repository }}/{{ site.gh_edit_view_mode }}/{{ site.gh_edit_branch }}{% if site.gh_edit_source %}/{{ site.gh_edit_source }}{% endif %}/{{ page.path }}"
            id="edit-this-page" title="{{ site.gh_edit_link_text }}"><svg xmlns="http://www.w3.org/2000/svg"
              viewBox="0 0 24 24">
              <path
                d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z">
              </path>
            </svg></a>
          {% endif %}
          <h1 class="fs-9">{{ page.title | default: site.title | default: site.github.repository_name }}</h1>
          {% if page.alias %}
          <h2 class="fmt-0"><span class="fw-300">Also sold as: </span> {{ page.alias }}</h2>
          {% endif %}
          {% if site.last_edit_timestamp_script == true %}
          <ul class="metadata text-small">
            <li id="last-modified">Last Modified</li>
            <li><a id="contributors" data-toogle="modal" data-target="#contributors-modal">Contributor</a>
            </li>
          </ul>
          <div class="modal" data-modal="contributors-modal" id="contributors-modal">
            <div class="modal-content">
              <div class="modal-header">
                <span class="close">&times;</span>
                <h2>Contributor to this article</h2>
              </div>
              <ul class="modal-body" id="contributors-modal-list">

              </ul>
            </div>
          </div>
          {% endif %}
          {% if page.description %}
          <h2 class="fs-6 fw-300">{{ page.description }}</h2>
          {% endif %}
        </header>
        <hr>
        {% if site.heading_anchors != false %}
          {% include vendor/anchor_headings.html html=content beforeHeading="true" anchorBody="<svg viewBox=\"0 0 16 16\" aria-hidden=\"true\"><use xlink:href=\"#svg-link\"></use></svg>" anchorClass="anchor-heading" anchorAttrs="aria-labelledby=\"%html_id%\"" %}	
        {% else %}	
          {{ content }}	
        {% endif %}	
        {% unless page.has_toc == false %}	
          {% include nav/toc.html nodes=nav_page_children %}	
        {% endunless %}	
        {% capture footer_custom %}	
          {%- include footer_custom.html -%}	
        {% endcapture %}
        {% if footer_custom != "" or site.last_edit_timestamp or site.gh_edit_link %}
        <hr>	
        <footer>	
          {% if site.back_to_top %}	
            <p><a href="#top" id="back-to-top">{{ site.back_to_top_text }}</a></p>	
          {% endif %}	
          {{ footer_custom }}	
          {% if site.last_edit_timestamp or site.gh_edit_link %}	
            <div class="d-flex mt-2">	
              {% if site.last_edit_timestamp and site.last_edit_time_format and page.last_modified_date %}	
                <p class="text-small text-grey-400 mb-0 mr-2">	
                  Page last modified: <span class="d-inline-block">{{ page.last_modified_date | date: site.last_edit_time_format }}</span>.	
                </p>	
              {% endif %}	
              {% if	
                site.gh_edit_link and	
                site.gh_edit_link_text and	
                site.gh_edit_repository and	
                site.gh_edit_branch and	
                site.gh_edit_view_mode	
              %}	
                <p class="text-small text-grey-400 mb-0">	
                  <a href="{{ site.gh_edit_repository }}/{{ site.gh_edit_view_mode }}/{{ site.gh_edit_branch }}{% if site.gh_edit_source %}/{{ site.gh_edit_source }}{% endif %}{% if page.collection and site.collections_dir %}/{{ site.collections_dir }}{% endif %}/{{ page.path }}" id="edit-this-page">{{ site.gh_edit_link_text }}</a>	
                </p>	
              {% endif %}	
            </div>	
          {% endif %}	
        </footer>	
      {% endif %}	
    </div>	
  </div>	
  {% if site.search_enabled != false %}	
    {% if site.search.button %}	
      <a href="#" id="search-button" class="search-button">	
        <svg viewBox="0 0 24 24" class="icon"><use xlink:href="#svg-search"></use></svg>	
      </a>	
    {% endif %}	
    <div class="search-overlay"></div>
    {% endif %}
  </div>

</body>
<script src="{{ base.url | prepend: site.url }}/assets/js/theme-switch.js"></script>
<script src="{{ base.url | prepend: site.url }}/assets/js/modal.js"></script>

{%if site.last_edit_timestamp_script and site.gh_owner_name and site.gh_repository_name and page.path %}
<script>
  var listOfScannedFilename = [];

  async function parseFirstCommit(commit, filename) {
    return fetch(commit.url).then((response) => {
      return response.json();
    }).then(async function (commits) {
      var old_filename = commits.files.filter(it => it.filename === filename && it.status === 'renamed').map(it => it.previous_filename);
      if (old_filename[0] !== undefined && !listOfScannedFilename.includes(old_filename[0])) {
        listOfScannedFilename.push(old_filename[0]);
        return fetch("https://api.github.com/repos/{{ site.gh_owner_name }}/{{ site.gh_repository_name }}/commits?path=" + old_filename[0])
          .then((response) => {
            return response.json();
          }).then(async function (commits) {
            return parseCommitsList(commits, old_filename);
          });
      }
    });
  }
  async function parseCommitsList(commits, filename) {
    var authors = commits.flatMap(x => [{ ...x.commit.author, ...x.author }, { ...x.commit.committer, ...x.committer }]).map(({ date, ...keepAttrs }) => keepAttrs).filter((value, index, self) =>
      index === self.findIndex((t) => (
        t.login === value.login
      )) && value.login !== "web-flow"
    );

    var inner = await parseFirstCommit(commits[commits.length - 1], filename);


    if (inner) {
      inner = inner.filter(it => !authors.map(i => i.login).includes(it.login) && it.login !== "web-flow");
      authors.push(...inner);

    }


    return authors;
  }
  async function setModifiedDate() {
    if (document.getElementById('last-modified')) {
      listOfScannedFilename.push("{{ page.path }}");
      fetch("https://api.github.com/repos/{{ site.gh_owner_name }}/{{ site.gh_repository_name }}/commits?path={{ page.path }}")
      .then((response) => {
        return response.json();
      })
      .then(async function (commits) {
        try{
          var date = new Date(commits[0]['commit']['committer']['date']);
          var modified = date.toLocaleDateString(undefined);

          var authors = await parseCommitsList(commits, "{{ page.path }}");

          document.getElementById('last-modified').textContent = "Last Modified: " + modified;
          document.getElementById('contributors').textContent = authors.length + " " + (authors.length == 1 ? "Contributor" : "Contributors");

          document.getElementById('contributors-modal-list').innerHTML = authors.map(x => "<li><a href='" + x.html_url + "'><img class='avatar' src='" + x.avatar_url + "'><span>" + x.name + "</span<</a></li>").join('');
        } catch (err) {
          document.getElementById('last-modified').textContent = "Sorry, last modified not currently available";
          document.getElementById('contributors').textContent = "Contributors";
          document.getElementById('contributors-modal-list').innerHTML = "<li>Sorry, list not currently available</li>";
        }
      });
    }
  }

  window.addEventListener('load', function () {
    setModifiedDate()
  });
</script>
{% endif %}
{% if site.mermaid_enabled != false %}
<script>
  var config = {% include mermaid_config.js %};
  mermaid.initialize(config);
  window.mermaid.init(undefined, document.querySelectorAll('.language-mermaid'));
</script>
{% endif %}

</html>