| assets/js/router.js | ●●●●● patch | view | raw | blame | history | |
| layouts/partials/head.html | ●●●●● patch | view | raw | blame | history |
assets/js/router.js
@@ -1,25 +1,12 @@ import { router, navigate } from "https://unpkg.com/million@1.8.9-0/dist/router.mjs" export const init = (loader) => { export const attachSPARouting = (draw) => { // SPA navigation for access later window.navigate = navigate // We only mutate document.title and content within .singlePage element router(".singlePage") // We need on initial load, then subsequent redirs window.addEventListener("million:navigate", () => callback(loader)) window.addEventListener("DOMContentLoaded", () => callback(loader)) } export const callback = (loader) => { // requestAnimationFrame() delays graph draw until SPA routing is finished const draw = () => { const container = document.getElementById("graph-container") // retry if the graph is not ready if (!container) return requestAnimationFrame(draw) // clear the graph in case there is anything within it container.textContent = "" loader() } requestAnimationFrame(draw) window.addEventListener("million:navigate", () => requestAnimationFrame(draw)) window.addEventListener("DOMContentLoaded", () => requestAnimationFrame(draw)) } layouts/partials/head.html
@@ -66,9 +66,15 @@ {{ $router := resources.Get "js/router.js" | resources.Fingerprint "md5" | resources.Minify }} <script type="module"> import { init } from '{{$router.Permalink}}'; import { attachSPARouting } from '{{$router.Permalink}}'; // NOTE: everything within this callback will be executed for every page navigation. This is a good place to put JavaScript that loads or modifies data on the page. init(() => { const draw = () => { const container = document.getElementById("graph-container") // retry if the graph is not ready if (!container) return requestAnimationFrame(draw) // clear the graph in case there is anything within it container.textContent = "" drawGraph( {{strings.TrimRight "/" .Page.Permalink}}, {{strings.TrimRight "/" .Site.BaseURL}}, @@ -82,7 +88,8 @@ {{if $.Site.Data.config.enableLinkPreview}} initPopover({{strings.TrimRight "/" .Site.BaseURL }}) {{end}} }); }; attachSPARouting(draw); </script> {{else}} <script>window.navigate = (url) => window.location.href = url</script>