{{- $page := .page }}
{{- if and (not $page) .context }}
  {{- $page = .context }}
  {{- warnf "%q: DEPRECATED parameter 'context' for shortcode 'openapi' found, use 'page' instead; see https://mcshelby.github.io/hugo-theme-relearn/introduction/releasenotes/5/#5-18-0" $page.File.Filename }}
{{- end }}
{{- $u := urls.Parse .src }}
{{- $src := $u.String }}
{{- $spec := "" }}
{{- $id := cond (or (eq .id nil) (eq .id "")) (partial "_relearn/makeRandomMd5.gotmpl" $page) .id }}
{{- if $u.IsAbs }}
  {{- partialCached "_relearn/urlExists.gotmpl" (dict "url" .src "page" $page "type" "OpenAPI spec link") $u.String }}
{{- else }}
  {{- $path := strings.TrimPrefix "./" $u.Path }}
  {{- with or
    ($page.Resources.Get $path)
    (resources.Get $path)
  }}
    {{- $src = "" }}
    {{- $spec = .Content }}
  {{- else }}
    {{- $errorlevel := or $page.Params.openapi.errorlevel $page.Site.Params.openapi.errorlevel }}
    {{- $msg := printf "%q: OpenAPI spec '%s' is not a resource" $page.File.Filename .src }}
    {{- if eq $errorlevel "warning" }}
      {{- warnf $msg }}
    {{- else if eq $errorlevel "error" }}
      {{- errorf $msg }}
    {{- end }}
  {{- end }}
{{- end }}
{{- with $page -}}
<div class="sc-openapi-wrapper is-loading helper-loading-container">
  <div
    class="sc-openapi-container"
    id="R-openapi-{{ $id }}"
    data-openapi-url="{{ $src }}"
    data-openapi-spec="{{ $spec | safeHTMLAttr }}"
  ></div>
</div>
{{- .Store.Set "hasOpenApi" true }}
{{- end }}