You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
26 lines
909 B
JavaScript
26 lines
909 B
JavaScript
import { router, navigate } from "https://unpkg.com/million/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)
|
|
}
|