From 0a088f9f5ad58131c9388aec4aaa3cd2365c0330 Mon Sep 17 00:00:00 2001 From: Gandalf-the-Bot Date: Wed, 7 Dec 2016 12:59:18 +0000 Subject: [PATCH 1/2] Bundled output for commit f1f52445ec62a3a8b96a14ed5489f26c9887d59d [skip ci] --- README.md | 2 +- mithril.js | 11 ++++--- mithril.min.js | 82 +++++++++++++++++++++++++------------------------- 3 files changed, 48 insertions(+), 47 deletions(-) diff --git a/README.md b/README.md index 11a87ed7..4b900337 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,6 @@ There are over 4000 assertions in the test suite, and tests cover even difficult ## Modularity -Despite the huge improvements in performance and modularity, the new codebase is smaller than v0.2.x, currently clocking at 7.47 KB min+gzip +Despite the huge improvements in performance and modularity, the new codebase is smaller than v0.2.x, currently clocking at 7.49 KB min+gzip In addition, Mithril is now completely modular: you can import only the modules that you need and easily integrate 3rd party modules if you wish to use a different library for routing, ajax, and even rendering diff --git a/mithril.js b/mithril.js index d4cb36b8..b190fda0 100644 --- a/mithril.js +++ b/mithril.js @@ -1085,13 +1085,16 @@ var _20 = function($window, redrawService0) { var route = function(root, defaultRoute, routes) { if (root == null) throw new Error("Ensure the DOM element that was passed to `m.route` is not undefined") var update = function(routeResolver, comp, params, path) { - component = comp || "div", attrs3 = params, currentPath = path, resolve = null + component = comp != null && typeof comp.view === "function" ? comp : "div", attrs3 = params, currentPath = path, resolve = null render1 = (routeResolver.render || identity).bind(routeResolver) run1() } var run1 = function() { if (render1 != null) redrawService0.render(root, render1(Vnode(component, attrs3.key, attrs3))) } + var bail = function() { + routeService.setPath(defaultRoute) + } routeService.defineRoutes(routes, function(payload, params, path) { if (payload.view) update({}, payload, params, path) else { @@ -1103,14 +1106,12 @@ var _20 = function($window, redrawService0) { } Promise.resolve(payload.onmatch(params, path)).then(function(resolved) { if (resolve != null) resolve(resolved) - }) + }, bail) } } else update(payload, "div", params, path) } - }, function() { - routeService.setPath(defaultRoute) - }) + }, bail) redrawService0.subscribe(root, run1) } route.set = function(path, data, options) { diff --git a/mithril.min.js b/mithril.min.js index af119c16..ea220c93 100644 --- a/mithril.min.js +++ b/mithril.min.js @@ -1,41 +1,41 @@ -new function(){function v(a,c,h,d,g,m){return{tag:a,key:c,attrs:h,children:d,text:g,dom:m,domSize:void 0,state:{},events:void 0,instance:void 0,skip:!1}}function z(a){if(null==a||"string"!==typeof a&&null==a.view)throw Error("The selector must be either a string or a component.");if("string"===typeof a&&void 0===K[a]){for(var c,h,d=[],g={};c=P.exec(a);){var m=c[1],l=c[2];""===m&&""!==l?h=l:"#"===m?g.id=l:"."===m?d.push(l):"["===c[3][0]&&((m=c[6])&&(m=m.replace(/\\(["'])/g,"$1").replace(/\\\\/g,"\\")), -"class"===c[4]?d.push(m):g[c[4]]=m||!0)}0a.indexOf("?")?"?":"&";a+=d+b}return a}function l(a){try{return""!==a?JSON.parse(a):null}catch(D){throw Error(a);}}function n(a){return a.responseText}function p(a, -c){if("function"===typeof a)if(c instanceof Array)for(var b=0;bk.status||304===k.status)c(p(b.type,a));else{var g=Error(k.responseText),h;for(h in a)g[h]=a[h];d(g)}}catch(G){d(G)}};h&&null!=b.data?k.send(b.data):k.send()});return!0===b.background?t:r(t)},jsonp:function(b,l){var n=h();b=d(b,l);var t=new c(function(c, -d){var h=b.callbackName||"_mithril_"+Math.round(1E16*Math.random())+"_"+k++,l=a.document.createElement("script");a[h]=function(d){l.parentNode.removeChild(l);c(p(b.type,d));delete a[h]};l.onerror=function(){l.parentNode.removeChild(l);d(Error("JSONP request failed"));delete a[h]};null==b.data&&(b.data={});b.url=g(b.url,b.data);b.data[b.callbackKey||"callback"]=h;l.src=m(b.url,b.data);a.document.documentElement.appendChild(l)});return!0===b.background?t:n(t)},setCompletionCallback:function(a){r=a}}}(window, -H),O=function(a){function c(e,f,a,b,c,d,g){for(;a=k&&t>=A;){var w=f[k],u=a[A];if(w!==u||q)if(null==w)k++;else if(null==u)A++;else if(w.key===u.key)k++,A++,m(e,w,u,b,n(f,k,d),q,g),q&&w.tag===u.tag&&p(e,l(w),d);else if(w=f[x],w!==u||q)if(null==w)x--;else if(null==u)A++;else if(w.key===u.key)m(e,w,u,b,n(f,x+1,d),q,g),(q||A=k&&t>=A;){w=f[x];u=a[t];if(w!==u||q)if(null==w)x--;else{if(null!= -u)if(w.key===u.key)m(e,w,u,b,n(f,x+1,d),q,g),q&&w.tag===u.tag&&p(e,l(w),d),null!=w.dom&&(d=w.dom),x--;else{if(!D){D=f;var w=x,C={},E;for(E=0;Ea.indexOf("?")?"?":"&";a+=d+b}return a}function k(a){try{return""!==a?JSON.parse(a):null}catch(r){throw Error(a);}}function n(a){return a.responseText}function m(a, +c){if("function"===typeof a)if(c instanceof Array)for(var b=0;bz.status||304===z.status)c(m(b.type,a));else{var g=Error(z.responseText),h;for(h in a)g[h]=a[h];d(g)}}catch(F){d(F)}};h&&null!=b.data?z.send(b.data):z.send()});return!0===b.background?w:t(w)},jsonp:function(b,k){var n=h();b=d(b,k);var w=new c(function(c, +d){var h=b.callbackName||"_mithril_"+Math.round(1E16*Math.random())+"_"+p++,k=a.document.createElement("script");a[h]=function(d){k.parentNode.removeChild(k);c(m(b.type,d));delete a[h]};k.onerror=function(){k.parentNode.removeChild(k);d(Error("JSONP request failed"));delete a[h]};null==b.data&&(b.data={});b.url=g(b.url,b.data);b.data[b.callbackKey||"callback"]=h;k.src=l(b.url,b.data);a.document.documentElement.appendChild(k)});return!0===b.background?w:n(w)},setCompletionCallback:function(a){t=a}}}(window, +H),O=function(a){function c(e,f,a,b,c,d,g){for(;a=u&&w>=A;){var r=f[u],v=a[A];if(r!==v||q)if(null==r)u++;else if(null==v)A++;else if(r.key===v.key)u++,A++,l(e,r,v,b,n(f,u,d),q,g),q&&r.tag===v.tag&&m(e,k(r),d);else if(r=f[p],r!==v||q)if(null==r)p--;else if(null==v)A++;else if(r.key===v.key)l(e,r,v,b,n(f,p+1,d),q,g),(q||A=u&&w>=A;){r=f[p];v=a[w];if(r!==v||q)if(null==r)p--;else{if(null!= +v)if(r.key===v.key)l(e,r,v,b,n(f,p+1,d),q,g),q&&r.tag===v.tag&&m(e,k(r),d),null!=r.dom&&(d=r.dom),p--;else{if(!z){z=f;var r=p,D={},y;for(y=0;y Date: Wed, 7 Dec 2016 07:57:32 -0700 Subject: [PATCH 2/2] Update route docs to reference state var --- docs/route.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/route.md b/docs/route.md index e98a8070..0f8592cc 100644 --- a/docs/route.md +++ b/docs/route.md @@ -429,7 +429,7 @@ var state = { m.route(document.body, "/user/list", { "/user/list": { - onmatch: loadUsers, + onmatch: state.loadUsers, render: function() { return state.users.length > 0 ? state.users.map(function() { return m("div", user.id)