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)
 | 
						|
}
 |