quartz-research-note/assets/js/router.js
2022-05-03 09:04:15 -07:00

26 lines
917 B
JavaScript

import { router, navigate } from "https://unpkg.com/million@1.8.9-0/dist/router.mjs"
export const init = (loader) => {
// 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)
}