{{- $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 not $u.IsAbs }}
  {{- $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 }}
    {{- if eq $errorlevel "warning" }}
      {{- warnf "%q: OpenAPI spec link '%s' is not a resource but linked anyways" $page.File.Filename .url }}
    {{- else if eq $errorlevel "error" }}
      {{- errorf "%q: OpenAPI spec link '%s' is not a resource" $page.File.Filename .url }}
    {{- 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 }}