diff --git a/README.md b/README.md index 21055536..d931eeb5 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ mithril.js [![NPM Version](https://img.shields.io/npm/v/mithril.svg)](https://ww ## What is Mithril? -A modern client-side Javascript framework for building Single Page Applications. It's small (8.42 KB gzipped), fast and provides routing and XHR utilities out of the box. +A modern client-side Javascript framework for building Single Page Applications. It's small (8.44 KB gzipped), fast and provides routing and XHR utilities out of the box. Mithril is used by companies like Vimeo and Nike, and open source platforms like Lichess 👍. diff --git a/mithril.js b/mithril.js index 91e870e5..3d5c1d1b 100644 --- a/mithril.js +++ b/mithril.js @@ -1264,7 +1264,7 @@ var _20 = function($window, redrawService0) { } route.get = function() {return currentPath} route.prefix = function(prefix0) {routeService.prefix = prefix0} - route.link = function(vnode1) { + var link = function(options, vnode1) { vnode1.dom.setAttribute("href", routeService.prefix + vnode1.attrs.href) vnode1.dom.onclick = function(e) { if (e.ctrlKey || e.metaKey || e.shiftKey || e.which === 2) return @@ -1272,9 +1272,13 @@ var _20 = function($window, redrawService0) { e.redraw = false var href = this.getAttribute("href") if (href.indexOf(routeService.prefix) === 0) href = href.slice(routeService.prefix.length) - route.set(href, undefined, undefined) + route.set(href, undefined, options) } } + route.link = function(args0) { + if (args0.tag == null) return link.bind(link, args0) + return link({}, args0) + } route.param = function(key3) { if(typeof attrs3 !== "undefined" && typeof key3 !== "undefined") return attrs3[key3] return attrs3 diff --git a/mithril.min.js b/mithril.min.js index fbaa5741..f9b5258f 100644 --- a/mithril.min.js +++ b/mithril.min.js @@ -1,45 +1,46 @@ -(function(){function v(a,c,e,f,n,k){return{tag:a,key:c,attrs:e,children:f,text:n,dom:k,domSize:void 0,state:void 0,events:void 0,instance:void 0,skip:!1}}function O(a){for(var c in a)if(E.call(a,c))return!1;return!0}function z(a){var c=arguments[1],e=2;if(null==a||"string"!==typeof a&&"function"!==typeof a&&"function"!==typeof a.view)throw Error("The selector must be either a string or a component.");if("string"===typeof a){var f;if(!(f=P[a])){var n="div";for(var k=[],g={};f=S.exec(a);){var p=f[1], -m=f[2];""===p&&""!==m?n=m:"#"===p?g.id=m:"."===p?k.push(m):"["===f[3][0]&&((p=f[6])&&(p=p.replace(/\\(["'])/g,"$1").replace(/\\\\/g,"\\")),"class"===f[4]?k.push(p):g[f[4]]=""===p?p:p||!0)}0b.indexOf("?")?"?":"&";b+=e+c}return b}function g(b){try{return""!==b?JSON.parse(b):null}catch(w){throw Error(b);}}function p(b){return b.responseText}function m(b,a){if("function"===typeof b)if(Array.isArray(a))for(var c=0;cl.status||304===l.status||V.test(b.url))c(m(b.type,a));else{var f=Error(l.responseText);f.code=l.status;f.response=a;e(f)}}catch(W){e(W)}};f&&null!=b.data?l.send(b.data):l.send()});return!0===b.background?w:t(w)},jsonp:function(b,g){var t=e();b=f(b,g);var p=new c(function(c,e){var f=b.callbackName||"_mithril_"+ -Math.round(1E16*Math.random())+"_"+l++,g=a.document.createElement("script");a[f]=function(e){g.parentNode.removeChild(g);c(m(b.type,e));delete a[f]};g.onerror=function(){g.parentNode.removeChild(g);e(Error("JSONP request failed"));delete a[f]};null==b.data&&(b.data={});b.url=n(b.url,b.data);b.data[b.callbackKey||"callback"]=f;g.src=k(b.url,b.data);a.document.documentElement.appendChild(g)});return!0===b.background?p:t(p)},setCompletionCallback:function(b){t=b}}}(window,r),R=function(a){function c(h, -d){if(h.state!==d)throw Error("`vnode.state` must not be modified");}function e(h){var d=h.state;try{return this.apply(d,arguments)}finally{c(h,d)}}function f(h,d,b,a,c,e,f){for(;b=u&&C>=q;){var x= -d[u],r=a[q];if(x!==r||c)if(null==x)u++;else if(null==r)q++;else if(x.key===r.key){var D=null!=p&&u>=d.length-p.length||null==p&&c;u++;q++;m(h,x,r,e,t(d,u,g),D,k);c&&x.tag===r.tag&&b(h,l(x),g)}else if(x=d[w],x!==r||c)if(null==x)w--;else if(null==r)q++;else if(x.key===r.key)D=null!=p&&w>=d.length-p.length||null==p&&c,m(h,x,r,e,t(d,w+1,g),D,k),(c||q=u&&C>=q;){x=d[w];r=a[C];if(x!==r||c)if(null==x)w--;else{if(null!=r)if(x.key=== -r.key)D=null!=p&&w>=d.length-p.length||null==p&&c,m(h,x,r,e,t(d,w+1,g),D,k),c&&x.tag===r.tag&&b(h,l(x),g),null!=x.dom&&(g=x.dom),w--;else{if(!I){I=d;D=w;x={};var v;for(v=0;v=d.length-p.length||null==p&&c,m(h,v,r,e,t(d,w+1,g),D,k),b(h,l(v),g),d[x].skip=!0,null!=v.dom&&(g=v.dom)):g=n(h,r,e,k,g))}C--}else w--,C--;if(Cb.indexOf("?")?"?":"&";b+=e+c}return b}function g(b){try{return""!==b?JSON.parse(b):null}catch(v){throw Error(b);}}function q(b){return b.responseText}function m(b,a){if("function"===typeof b)if(Array.isArray(a))for(var c=0;cl.status||304===l.status||W.test(b.url))c(m(b.type,a));else{var f=Error(l.responseText);f.code=l.status;f.response=a;e(f)}}catch(X){e(X)}};f&&null!=b.data?l.send(b.data):l.send()});return!0===b.background?v:y(v)},jsonp:function(b,g){var y=e();b=f(b,g);var q=new c(function(c,e){var f=b.callbackName||"_mithril_"+ +Math.round(1E16*Math.random())+"_"+l++,g=a.document.createElement("script");a[f]=function(e){g.parentNode.removeChild(g);c(m(b.type,e));delete a[f]};g.onerror=function(){g.parentNode.removeChild(g);e(Error("JSONP request failed"));delete a[f]};null==b.data&&(b.data={});b.url=n(b.url,b.data);b.data[b.callbackKey||"callback"]=f;g.src=k(b.url,b.data);a.document.documentElement.appendChild(g)});return!0===b.background?q:y(q)},setCompletionCallback:function(b){z=b}}}(window,p),R=function(a){function c(h, +d){if(h.state!==d)throw Error("`vnode.state` must not be modified");}function e(h){var d=h.state;try{return this.apply(d,arguments)}finally{c(h,d)}}function f(h,d,b,a,c,e,f){for(;b=t&&x>=r;){var w= +d[t],p=a[r];if(w!==p||c)if(null==w)t++;else if(null==p)r++;else if(w.key===p.key){var C=null!=q&&t>=d.length-q.length||null==q&&c;t++;r++;m(h,w,p,e,z(d,t,g),C,k);c&&w.tag===p.tag&&b(h,l(w),g)}else if(w=d[v],w!==p||c)if(null==w)v--;else if(null==p)r++;else if(w.key===p.key)C=null!=q&&v>=d.length-q.length||null==q&&c,m(h,w,p,e,z(d,v+1,g),C,k),(c||r=t&&x>=r;){w=d[v];p=a[x];if(w!==p||c)if(null==w)v--;else{if(null!=p)if(w.key=== +p.key)C=null!=q&&v>=d.length-q.length||null==q&&c,m(h,w,p,e,z(d,v+1,g),C,k),c&&w.tag===p.tag&&b(h,l(w),g),null!=w.dom&&(g=w.dom),v--;else{if(!H){H=d;C=v;w={};var u;for(u=0;u=d.length-q.length||null==q&&c,m(h,u,p,e,z(d,v+1,g),C,k),b(h,l(u),g),d[w].skip=!0,null!=u.dom&&(g=u.dom)):g=n(h,p,e,k,g))}x--}else v--,x--;if(x