main.js (1101B)
1 const m = require("mithril"); 2 const layout = require("./components/layout.js"); 3 const pageInput = require("./components/page-input.js"); 4 const pageTrainer = require("./components/page-trainer.js"); 5 const pageAbout = require("./components/page-about.js"); 6 7 // ugly workaround to fix scrolling on route change 8 // https://github.com/MithrilJS/mithril.js/issues/1655 9 m.mount( 10 // Don't attach to the document 11 document.createDocumentFragment(), 12 { 13 // We need a valid view for Mithril to behave 14 view : () => '', 15 // Will execute on the DOM ready phase of every draw 16 onupdate(){ 17 const route = m.route.get(); 18 if (route != this.route) scrollTo(0, 0); 19 this.route = route; 20 } 21 } 22 ) 23 24 let resolver = (component) => ({ 25 onmatch: () => { 26 return component; 27 }, 28 render: (vnode) => { 29 return m(layout, {pages: ["input", "trainer", "about"]}, vnode); 30 } 31 }); 32 33 m.route(document.body, "/input", { 34 "/input": resolver(pageInput), 35 "/trainer": resolver(pageTrainer), 36 "/about": resolver(pageAbout) 37 });