🤖 Pull request created from `various-fixes` containing PageHead
breadcrumbs and navigation alignment fixes, Umami analytics proxy, and
infrastructure updates.
54 lines
2.9 KiB
HTML
54 lines
2.9 KiB
HTML
{{- /* 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 -}}
|
|
<script defer src="{{ $mermaidJs.RelPermalink }}" integrity="{{ $mermaidJs.Data.Integrity }}" crossorigin="anonymous"></script>
|
|
{{- end -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
{{- else if $mermaidJsAsset -}}
|
|
{{- with resources.Get $mermaidJsAsset -}}
|
|
{{- $mermaidJs := . | fingerprint -}}
|
|
<script defer src="{{ $mermaidJs.RelPermalink }}" integrity="{{ $mermaidJs.Data.Integrity }}" crossorigin="anonymous"></script>
|
|
{{- else -}}
|
|
{{- errorf "Mermaid js asset not found at %q" $mermaidJsAsset -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{- $mermaidInitCode := `document.addEventListener("DOMContentLoaded",function(){document.querySelectorAll(".mermaid").forEach(function(el){el.dataset.original=el.innerHTML});var theme=document.documentElement.classList.contains("dark")?"dark":"default";mermaid.initialize({startOnLoad:true,theme:theme});var timeout;new MutationObserver(function(){clearTimeout(timeout);timeout=setTimeout(function(){var currentTheme=document.documentElement.classList.contains("dark")?"dark":"default";document.querySelectorAll(".mermaid").forEach(function(el){el.innerHTML=el.dataset.original;el.removeAttribute("data-processed")});mermaid.initialize({startOnLoad:true,theme:currentTheme});mermaid.init()},150)}).observe(document.documentElement,{attributes:true,attributeFilter:["class"]})});` -}}
|
|
{{- $mermaidInitResource := resources.FromString "js/mermaid-init.js" $mermaidInitCode | minify | fingerprint -}}
|
|
<script defer src="{{ $mermaidInitResource.RelPermalink }}" integrity="{{ $mermaidInitResource.Data.Integrity }}"></script>
|