diff --git a/layouts/_partials/scripts/mermaid.html b/layouts/_partials/scripts/mermaid.html index 3e4fcbf..b4f957b 100644 --- a/layouts/_partials/scripts/mermaid.html +++ b/layouts/_partials/scripts/mermaid.html @@ -1,17 +1,52 @@ -{{/* Mermaid */}} +{{- /* Mermaid */ -}} -{{ $mermaidJsUrl := printf "https://cdn.jsdelivr.net/npm/mermaid@latest/dist/mermaid%s.js" (cond hugo.IsProduction ".min" "") -}} -{{ 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.min.js") . -}} - {{ $mermaidJs := . | fingerprint -}} - - {{ end -}} - {{ end -}} -{{ end -}} +{{- $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 -}}