2022-05-03 23:04:15 +07:00
|
|
|
import { router, navigate } from "https://unpkg.com/million@1.8.9-0/dist/router.mjs"
|
2022-05-03 22:47:42 +07:00
|
|
|
|
|
|
|
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)
|
|
|
|
}
|