From d38f9bec70c7e46d9e7662ba3925abc9cdd9370a Mon Sep 17 00:00:00 2001
From: Aiden Bai <aiden.bai05@gmail.com>
Date: Tue, 03 May 2022 17:16:09 +0000
Subject: [PATCH] Rename API and generalize router API
---
assets/js/router.js | 19 +++----------------
layouts/partials/head.html | 13 ++++++++++---
2 files changed, 13 insertions(+), 19 deletions(-)
diff --git a/assets/js/router.js b/assets/js/router.js
index bf7e3c8..81c25ac 100644
--- a/assets/js/router.js
+++ b/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))
}
diff --git a/layouts/partials/head.html b/layouts/partials/head.html
index a81c9ed..58ab82e 100644
--- a/layouts/partials/head.html
+++ b/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>
--
Gitblit v1.10.0