{{/*

Apache Polaris custom redoc shortcode that takes just the file of the OpenAPI spec YAML and loads
either the in-development version from the `main` branch or a released version from the corresponding
Git tag.

This is a copy of the original Docsy redoc shortcode, except the part to calculate the URL is adopted
for Polaris in-dev/releases docs.

Copied from Docsy shortcodes/redoc.html.

*/}}

{{- $spec := .Get 0 -}}
{{- $otheroptions := .Get 1 -}}
{{- $url := "" -}}

{{- $ver := partial "releaseVersion.html" . -}}
{{- $spec := ( .Get 0 ) -}}
{{- $url := "" -}}
{{- $incubating := "" -}}
{{- if lt $ver "1.4.0" -}}
{{- $incubating = "-incubating" -}}
{{- end -}}
{{- if eq $ver "[unreleased]" -}}
{{- $url = printf "https://raw.githubusercontent.com/apache/polaris/refs/heads/main/spec/%s" $spec }}
{{- else -}}
{{- $url = printf "https://raw.githubusercontent.com/apache/polaris/refs/tags/apache-polaris-%s%s/spec/%s" $ver $incubating $spec }}
{{- end -}}

<!-- CSS style overrides for Redoc API docs -->
<style>
  #redoc input { height: 64px; }
  #redoc span[type="put"], span[type="get"], span[type="delete"], span[type="post"], span[type="options"], span[type="patch"], span[type="basic"], span[type="link"], span[type="head"] {
      border-radius: 4px;
    }
  #redoc h2 { margin-top: 0px;}
</style>

<!-- Back to top button start -->
<style>
  #myBtn {
    display: none;
    position: fixed;
    bottom: 20px;
    right: 30px;
    z-index: 99;
    font-size: 18px;
    border: none;
    outline: none;
    background-color: #30638E;
    color: white;
    cursor: pointer;
    padding: 15px;
    border-radius: 4px;
  }

  #myBtn:hover {
    background-color: #555;
  }
</style>
<button onclick="topFunction()" id="myBtn" title="Go to top">Top</button>
<script>
  //Get the button
  var mybutton = document.getElementById("myBtn");

  // When the user scrolls down 20px from the top of the document, show the button
  window.onscroll = function() {scrollFunction()};

  function scrollFunction() {
    if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) {
      mybutton.style.display = "block";
    } else {
      mybutton.style.display = "none";
    }
  }

  // When the user clicks on the button, scroll to the top of the document
  function topFunction() {
    document.body.scrollTop = 0;
    document.documentElement.scrollTop = 0;
  }
</script>
<!-- Back to top button end -->

<!--
Redoc doesn't change outer page styles
-->
<style>
  body {
    margin: 0;
    padding: 0;
  }
</style>

<!--
Redoc element with link to your OpenAPI definition
-->
<div id="redoc-container">
<redoc spec-url='{{ $url }}' hide-hostname="true" suppress-warnings="true" lazy-rendering  native-scrollbars scroll-y-offset=".js-navbar-scroll" {{ $otheroptions }}></redoc>
</div>
<!--
Link to Redoc JavaScript on CDN for rendering standalone element
-->

<meta http-equiv="refresh" content="0; url=http://editor-next.swagger.io/?url={{ $url }}" />
