sleeb

an experimental input method
git clone https://tongong.net/git/sleeb.git
Log | Files | Refs | README

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