{{- /* Mermaid */ -}}
{{- $mermaidBase := "" -}}
{{- $useDefaultCdn := true -}}
{{- with site.Params.mermaid.base -}}
  {{- $mermaidBase = . -}}
  {{- $useDefaultCdn = false -}}
{{- end -}}
{{- $mermaidJsAsset := "" -}}
{{- with site.Params.mermaid.js -}}
  {{- $mermaidJsAsset = . -}}
{{- end -}}
{{- /* If only js is set without base, use local asset loading */ -}}
{{- if and $useDefaultCdn (ne $mermaidJsAsset "") -}}
  {{- $useDefaultCdn = false -}}
{{- end -}}
{{- /* Set default CDN base if needed */ -}}
{{- if $useDefaultCdn -}}
  {{- $mermaidBase = "https://cdn.jsdelivr.net/npm/mermaid@latest/dist" -}}
{{- end -}}
{{- $isRemoteBase := or (strings.HasPrefix $mermaidBase "http://") (strings.HasPrefix $mermaidBase "https://") -}}
{{- $minSuffix := cond hugo.IsProduction ".min" "" -}}
{{- /* JS retrieval: get raw JS from either local asset or remote, then process */ -}}
{{- if $isRemoteBase -}}
  {{- $jsPath := cond (ne $mermaidJsAsset "") $mermaidJsAsset (printf "mermaid%s.js" $minSuffix) -}}
  {{- $mermaidJsUrl := printf "%s/%s" $mermaidBase $jsPath -}}
  {{- with try (resources.GetRemote $mermaidJsUrl) -}}
    {{- with .Err -}}
      {{- errorf "Could not retrieve Mermaid js file from %s. Reason: %s." $mermaidJsUrl . -}}
    {{- else with .Value -}}
      {{- with resources.Copy (printf "js/mermaid%s.js" $minSuffix) . -}}
        {{- $mermaidJs := . | fingerprint -}}
        
      {{- end -}}
    {{- end -}}
  {{- end -}}
{{- else if $mermaidJsAsset -}}
  {{- with resources.Get $mermaidJsAsset -}}
    {{- $mermaidJs := . | fingerprint -}}
    
  {{- else -}}
    {{- errorf "Mermaid js asset not found at %q" $mermaidJsAsset -}}
  {{- end -}}
{{- end -}}