From c0830ee3d64fb68a1d2663c9d65cad17dcfa7f3b Mon Sep 17 00:00:00 2001 From: impinball Date: Fri, 10 Jul 2015 13:15:03 -0400 Subject: [PATCH] Refactor a couple pointless variables out --- mithril.js | 3 +-- mithril.min.js | 2 +- mithril.min.js.map | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/mithril.js b/mithril.js index c4ed06fc..d1c77cc8 100644 --- a/mithril.js +++ b/mithril.js @@ -139,8 +139,7 @@ var m = (function app(window, undefined) { //- it simplifies diffing code data = dataToString(data); if (data.subtree === "retain") return cached; - var cachedType = type.call(cached), dataType = type.call(data); - if (cached == null || cachedType !== dataType) { + if (cached == null || type.call(cached) !== type.call(data)) { if (cached != null) { if (parentCache && parentCache.nodes) { var offset = index - parentIndex; diff --git a/mithril.min.js b/mithril.min.js index 47f19c51..d60ff391 100644 --- a/mithril.min.js +++ b/mithril.min.js @@ -4,5 +4,5 @@ http://github.com/lhorie/mithril.js (c) Leo Horie License: MIT */ -var m=function a(b,c){function d(a){return"function"==typeof a}function e(a){return"[object Object]"===P.call(a)}function f(a){return"[object String]"===P.call(a)}function g(a){K=a.document,L=a.location,N=a.cancelAnimationFrame||a.clearTimeout,M=a.requestAnimationFrame||a.setTimeout}function h(a,b){for(var c=[],d=1;d\s*[^<]/g)||[0]).length:O(e)?e.length:1,t[X++]=e)}),F||(i(s,function(a,b){null!=t[b]&&E.push.apply(E,t[b].nodes)}),i(t.nodes,function(a,b){null!=a.parentNode&&E.indexOf(a)<0&&p([a],[t[b]])}),s.length-1?t.controllers[_]:new(s.controller||T),ba=s&&s.attrs&&s.attrs.key;if(s=0==ia||ha||t&&t.controllers&&t.controllers.indexOf(aa)>-1?s.view(aa):{tag:"placeholder"},"retain"===s.subtree)return t;null!=ba&&(s.attrs||(s.attrs={}),s.attrs.key=ba),aa.onunload&&ea.push({controller:aa,handler:aa.onunload}),Y.push($),Z.push(aa)}if(!s.tag&&Z.length)throw new Error("Component template must return a virtual element, not an array, string, etc.");s.attrs||(s.attrs={}),t.attrs||(t.attrs={});var ca=Object.keys(s.attrs),da=ca.length>("key"in s.attrs?1:0);if((s.tag!=t.tag||ca.sort().join()!=Object.keys(t.attrs).sort().join()||s.attrs.id!=t.attrs.id||s.attrs.key!=t.attrs.key||"all"==h.redraw.strategy()&&(!t.configContext||t.configContext.retain!==!0)||"diff"==h.redraw.strategy()&&t.configContext&&t.configContext.retain===!1)&&(t.nodes.length&&p(t.nodes),t.configContext&&d(t.configContext.onunload)&&t.configContext.onunload(),t.controllers))for(var aa,D=0;aa=t.controllers[D];D++)d(aa.onunload)&&aa.onunload({preventDefault:T});if(!f(s.tag))return;var fa,ga=0===t.nodes.length;if(s.attrs.xmlns?x=s.attrs.xmlns:"svg"===s.tag?x="http://www.w3.org/2000/svg":"math"===s.tag&&(x="http://www.w3.org/1998/Math/MathML"),ga){if(fa=s.attrs.is?x===c?K.createElement(s.tag,s.attrs.is):K.createElementNS(x,s.tag,s.attrs.is):x===c?K.createElement(s.tag):K.createElementNS(x,s.tag),t={tag:s.tag,attrs:da?o(fa,s.tag,s.attrs,{},x):s.attrs,children:null!=s.children&&s.children.length>0?m(fa,s.tag,c,c,s.children,t.children,!0,0,s.attrs.contenteditable?fa:w,x,y):s.children,nodes:[fa]},Z.length){t.views=Y,t.controllers=Z;for(var aa,D=0;aa=Z[D];D++)if(aa.onunload&&aa.onunload.$old&&(aa.onunload=aa.onunload.$old),ia&&aa.onunload){var ja=aa.onunload;aa.onunload=T,aa.onunload.$old=ja}}t.children&&!t.children.nodes&&(t.children.nodes=[]),"select"===s.tag&&"value"in s.attrs&&o(fa,s.tag,{value:s.attrs.value},{},x),a.insertBefore(fa,a.childNodes[v]||null)}else fa=t.nodes[0],da&&o(fa,s.tag,s.attrs,t.attrs,x),t.children=m(fa,s.tag,c,c,s.children,t.children,!1,0,s.attrs.contenteditable?fa:w,x,y),t.nodes.intact=!0,Z.length&&(t.views=Y,t.controllers=Z),u===!0&&null!=fa&&a.insertBefore(fa,a.childNodes[v]||null);if(d(s.attrs.config)){var ka=t.configContext=t.configContext||{},la=function(a,b){return function(){return a.attrs.config.apply(a,b)}};y.push(la(s,[fa,!ga,ka,t]))}}else if(!d(s)){var E;0===t.nodes.length?(s.$trusted?E=r(a,v,s):(E=[K.createTextNode(s)],a.nodeName.match(S)||a.insertBefore(E[0],a.childNodes[v]||null)),t="string number boolean".indexOf(typeof s)>-1?new s.constructor(s):s,t.nodes=E):t.valueOf()!==s.valueOf()||u===!0?(E=t.nodes,w&&w===K.activeElement||(s.$trusted?(p(E,t),E=r(a,v,s)):"textarea"===b?a.value=s:w?w.innerHTML=s:((1===E[0].nodeType||E.length>1)&&(p(t.nodes,t),E=[K.createTextNode(s)]),l(a,E[0],v,s))),t=new s.constructor(s),t.nodes=E):t.nodes.intact=!0}return t}function n(a,b){return a.action-b.action||a.index-b.index}function o(a,b,c,f,g){for(var h in c){var i=c[h],j=f[h];if(h in f&&j===i)"value"===h&&"input"===b&&a.value!=i&&(a.value=i);else{f[h]=i;try{if("config"===h||"key"==h)continue;if(d(i)&&0===h.indexOf("on"))a[h]=s(i,a);else if("style"===h&&null!=i&&e(i)){for(var k in i)(null==j||j[k]!==i[k])&&(a.style[k]=i[k]);for(var k in j)k in i||(a.style[k]="")}else null!=g?"href"===h?a.setAttributeNS("http://www.w3.org/1999/xlink","href",i):"className"===h?a.setAttribute("class",i):a.setAttribute(h,i):h in a&&"list"!==h&&"style"!==h&&"form"!==h&&"type"!==h&&"width"!==h&&"height"!==h?("input"!==b||a[h]!==i)&&(a[h]=i):a.setAttribute(h,i)}catch(l){if(l.message.indexOf("Invalid argument")<0)throw l}}}return f}function p(a,b){for(var c=a.length-1;c>-1;c--)if(a[c]&&a[c].parentNode){try{a[c].parentNode.removeChild(a[c])}catch(d){}b=[].concat(b),b[c]&&q(b[c])}0!=a.length&&(a.length=0)}function q(a){if(a.configContext&&d(a.configContext.onunload)&&(a.configContext.onunload(),a.configContext.onunload=null),a.controllers)for(var b,c=0;b=a.controllers[c];c++)d(b.onunload)&&b.onunload({preventDefault:T});if(a.children)if(O(a.children))for(var e,c=0;e=a.children[c];c++)q(e);else a.children.tag&&q(a.children)}function r(a,b,c){var d=a.childNodes[b];if(d){var e=1!=d.nodeType,f=K.createElement("span");e?(a.insertBefore(f,d||null),f.insertAdjacentHTML("beforebegin",c),a.removeChild(f)):d.insertAdjacentHTML("beforebegin",c)}else a.insertAdjacentHTML("beforeend",c);for(var g=[];a.childNodes[b]!==d;)g.push(a.childNodes[b]),b++;return g}function s(a,b){return function(c){c=c||event,h.redraw.strategy("diff"),h.startComputation();try{return a.call(b,c)}finally{ja()}}}function t(a){var b=W.indexOf(a);return 0>b?W.push(a)-1:b}function u(a){var b=function(){return arguments.length&&(a=arguments[0]),a};return b.toJSON=function(){return a},b}function v(a,b){var c=function(){return(a.controller||T).apply(this,b)||this},d=function(c){for(var d=1;de;e++)ka[c[e].replace(/:|\./g,"")]=decodeURIComponent(d[e]);h.mount(a,b[g])}),!0}}function z(a){if(a=a||event,!a.ctrlKey&&!a.metaKey&&2!==a.which){a.preventDefault?a.preventDefault():a.returnValue=!1;for(var b=a.currentTarget||a.srcElement,c="pathname"===h.route.mode&&b.search?C(b.search.slice(1)):{};b&&"A"!=b.nodeName.toUpperCase();)b=b.parentNode;h.route(b[h.route.mode].slice(ma[h.route.mode].length),c)}}function A(){"hash"!=h.route.mode&&L.hash?L.hash=L.hash:b.scrollTo(0,0)}function B(a,b){var d={},f=[];for(var g in a){var h=b?b+"["+g+"]":g,i=a[g],j=(P.call(i),null===i?encodeURIComponent(h):e(i)?B(i,h):O(i)?i.reduce(function(a,b){return d[h]||(d[h]={}),d[h][b]?a:(d[h][b]=!0,a.concat(encodeURIComponent(h)+"="+encodeURIComponent(b)))},[]).join("&"):encodeURIComponent(h)+"="+encodeURIComponent(i));i!==c&&f.push(j)}return f.join("&")}function C(a){"?"===a.charAt(0)&&(a=a.substring(1));for(var b=a.split("&"),c={},d=0,e=b.length;e>d;d++){var f=b[d].split("="),g=decodeURIComponent(f[0]),h=2==f.length?decodeURIComponent(f[1]):null;null!=c[g]?(O(c[g])||(c[g]=[c[g]]),c[g].push(h)):c[g]=h}return c}function D(a){var b=t(a);p(a.childNodes,X[b]),X[b]=c}function E(a,b){var c=h.prop(b);return a.then(c),c.then=function(c,d){return E(a.then(c,d),b)},c["catch"]=c.then.bind(null,null),c}function F(a,b){function c(a){n=a||l,p.map(function(a){n===k&&a.resolve(o)||a.reject(o)})}function f(a,b,c,f){if((null!=o&&e(o)||d(o))&&d(a))try{var g=0;a.call(o,function(a){g++||(o=a,b())},function(a){g++||(o=a,c())})}catch(i){h.deferred.onerror(i),o=i,c()}else f()}function g(){var e;try{e=o&&o.then}catch(l){return h.deferred.onerror(l),o=l,n=j,g()}f(e,function(){n=i,g()},function(){n=j,g()},function(){try{n===i&&d(a)?o=a(o):n===j&&d(b)&&(o=b(o),n=i)}catch(g){return h.deferred.onerror(g),o=g,c()}o===m?(o=TypeError(),c()):f(e,function(){c(k)},c,function(){c(n===i&&k)})})}var i=1,j=2,k=3,l=4,m=this,n=0,o=0,p=[];m.promise={},m.resolve=function(a){return n||(o=a,n=i,g()),this},m.reject=function(a){return n||(o=a,n=j,g()),this},m.promise.then=function(a,b){var c=new F(a,b);return n===k?c.resolve(o):n===l?c.reject(o):p.push(c),c.promise}}function G(a){return a}function H(a){if(!a.dataType||"jsonp"!==a.dataType.toLowerCase()){var e=new b.XMLHttpRequest;if(e.open(a.method,a.url,!0,a.user,a.password),e.onreadystatechange=function(){4===e.readyState&&(e.status>=200&&e.status<300?a.onload({type:"load",target:e}):a.onerror({type:"error",target:e}))},a.serialize===JSON.stringify&&a.data&&"GET"!==a.method&&e.setRequestHeader("Content-Type","application/json; charset=utf-8"),a.deserialize===JSON.parse&&e.setRequestHeader("Accept","application/json, text/*"),d(a.config)){var g=a.config(e,a);null!=g&&(e=g)}var h="GET"!==a.method&&a.data?a.data:"";if(h&&!f(h)&&h.constructor!=b.FormData)throw"Request data should be either be a string or FormData. Check the `serialize` option in `m.request`";return e.send(h),e}var i="mithril_callback_"+(new Date).getTime()+"_"+Math.round(1e16*Math.random()).toString(36),j=K.createElement("script");b[i]=function(d){j.parentNode.removeChild(j),a.onload({type:"load",target:{responseText:d}}),b[i]=c},j.onerror=function(d){return j.parentNode.removeChild(j),a.onerror({type:"error",target:{status:500,responseText:JSON.stringify({error:"Error making jsonp request"})}}),b[i]=c,!1},j.onload=function(a){return!1},j.src=a.url+(a.url.indexOf("?")>0?"&":"?")+(a.callbackKey?a.callbackKey:"callback")+"="+i+"&"+B(a.data||{}),K.body.appendChild(j)}function I(a,b,c){if("GET"===a.method&&"jsonp"!=a.dataType){var d=a.url.indexOf("?")<0?"?":"&",e=B(b);a.url=a.url+(e?d+e:"")}else a.data=c(b);return a}function J(a,b){var c=a.match(/:[a-z]\w+/gi);if(c&&b)for(var d=0;di;i++)e[i]()},h.trust=function(a){return a=new String(a),a.$trusted=!0,a},h.prop=function(a){return(null!=a&&e(a)||d(a))&&d(a.then)?E(a):u(a)};var Y,Z=[],$=[],_=[],aa=null,ba=0,ca=null,da=null,ea=[],fa=16;h.component=function(a){for(var b=[],c=1;cc&&(c=Z.length);for(var e,f=!1,g={preventDefault:function(){f=!0,ca=da=null}},i=0;e=ea[i];i++)e.handler.call(e.controller,g),e.controller.onunload=null;if(f)for(var e,i=0;e=ea[i];i++)e.controller.onunload=e.handler;else ea=[];if(_[c]&&d(_[c].onunload)&&_[c].onunload(g),!f){h.redraw.strategy("all"),h.startComputation(),Z[c]=a,arguments.length>2&&(b=subcomponent(b,[].slice.call(arguments,2)));var j=Y=b=b||{controller:T},k=b.controller||T,l=new k;return j===Y&&(_[c]=l,$[c]=b),ja(),_[c]}};var ga=!1,ha=!1;h.redraw=function(a){if(!ga){ga=!0,a&&(ha=!0);try{aa&&!a?(M===b.requestAnimationFrame||new Date-ba>fa)&&(aa>0&&N(aa),aa=M(w,fa)):(w(),aa=M(function(){aa=null},fa))}finally{ga=ha=!1}}},h.redraw.strategy=h.prop();var ia=0;h.startComputation=function(){ia++},h.endComputation=function(){ia=Math.max(ia-1,0),0===ia&&h.redraw()};var ja=function(){"none"==h.redraw.strategy()?(ia--,h.redraw.strategy("diff")):h.endComputation()};h.withAttr=function(a,b){return function(c){c=c||event;var d=c.currentTarget||this;b(a in d?d[a]:d.getAttribute(a))}};var ka,la,ma={pathname:"",hash:"#",search:"?"},na=T,oa=!1;return h.route=function(a,c,d,e){if(0===arguments.length)return la;if(3===arguments.length&&f(c)){na=function(b){var e=la=x(b);if(!y(a,d,e)){if(oa)throw new Error("Ensure the default route matches one of the routes defined in m.route");oa=!0,h.route(c,!0),oa=!1}};var g="hash"===h.route.mode?"onhashchange":"onpopstate";b[g]=function(){var a=L[h.route.mode];"pathname"===h.route.mode&&(a+=L.search),la!=x(a)&&na(a)},ca=A,b[g]()}else if(a.addEventListener||a.attachEvent)a.href=("pathname"!==h.route.mode?L.pathname:"")+ma[h.route.mode]+e.attrs.href,a.addEventListener?(a.removeEventListener("click",z),a.addEventListener("click",z)):(a.detachEvent("onclick",z),a.attachEvent("onclick",z));else if(f(a)){var i=la;la=a;var j=la.indexOf("?"),k=j>-1?C(la.slice(j+1)):{};for(var l in c)k[l]=c[l];var m=B(k),n=j>-1?la.slice(0,j):la;m&&(la=n+(-1===n.indexOf("?")?"?":"&")+m);var o=(3===arguments.length?d:c)===!0||i===a;b.history.pushState?(ca=A,da=function(){b.history[o?"replaceState":"pushState"](null,K.title,ma[h.route.mode]+la)},na(ma[h.route.mode]+la)):(L[h.route.mode]=la,na(ma[h.route.mode]+la))}},h.route.param=function(a){if(!ka)throw new Error("You must call m.route(element, defaultRoute, routes) before calling m.route.param()");return ka[a]},h.route.mode="search",h.route.buildQueryString=B,h.route.parseQueryString=C,h.deferred=function(){var a=new F;return a.promise=E(a.promise),a},h.deferred.onerror=function(a){if("[object Error]"===P.call(a)&&!a.constructor.toString().match(/ Error/))throw ia=0,a},h.sync=function(a){function b(a,b){return function(g){return f[a]=g,b||(c="reject"),0===--e&&(d.promise(f),d[c](f)),g}}var c="resolve",d=h.deferred(),e=a.length,f=new Array(e);if(a.length>0)for(var g=0;g\s*[^<]/g)||[0]).length:O(e)?e.length:1,t[V++]=e)}),D||(i(s,function(a,b){null!=t[b]&&C.push.apply(C,t[b].nodes)}),i(t.nodes,function(a,b){null!=a.parentNode&&C.indexOf(a)<0&&p([a],[t[b]])}),s.length-1?t.controllers[Z]:new(s.controller||T),_=s&&s.attrs&&s.attrs.key;if(s=0==ia||ha||t&&t.controllers&&t.controllers.indexOf($)>-1?s.view($):{tag:"placeholder"},"retain"===s.subtree)return t;null!=_&&(s.attrs||(s.attrs={}),s.attrs.key=_),$.onunload&&ea.push({controller:$,handler:$.onunload}),W.push(Y),X.push($)}if(!s.tag&&X.length)throw new Error("Component template must return a virtual element, not an array, string, etc.");s.attrs||(s.attrs={}),t.attrs||(t.attrs={});var aa=Object.keys(s.attrs),ba=aa.length>("key"in s.attrs?1:0);if((s.tag!=t.tag||aa.sort().join()!=Object.keys(t.attrs).sort().join()||s.attrs.id!=t.attrs.id||s.attrs.key!=t.attrs.key||"all"==h.redraw.strategy()&&(!t.configContext||t.configContext.retain!==!0)||"diff"==h.redraw.strategy()&&t.configContext&&t.configContext.retain===!1)&&(t.nodes.length&&p(t.nodes),t.configContext&&d(t.configContext.onunload)&&t.configContext.onunload(),t.controllers))for(var $,B=0;$=t.controllers[B];B++)d($.onunload)&&$.onunload({preventDefault:T});if(!f(s.tag))return;var ca,da=0===t.nodes.length;if(s.attrs.xmlns?x=s.attrs.xmlns:"svg"===s.tag?x="http://www.w3.org/2000/svg":"math"===s.tag&&(x="http://www.w3.org/1998/Math/MathML"),da){if(ca=s.attrs.is?x===c?K.createElement(s.tag,s.attrs.is):K.createElementNS(x,s.tag,s.attrs.is):x===c?K.createElement(s.tag):K.createElementNS(x,s.tag),t={tag:s.tag,attrs:ba?o(ca,s.tag,s.attrs,{},x):s.attrs,children:null!=s.children&&s.children.length>0?m(ca,s.tag,c,c,s.children,t.children,!0,0,s.attrs.contenteditable?ca:w,x,y):s.children,nodes:[ca]},X.length){t.views=W,t.controllers=X;for(var $,B=0;$=X[B];B++)if($.onunload&&$.onunload.$old&&($.onunload=$.onunload.$old),ia&&$.onunload){var fa=$.onunload;$.onunload=T,$.onunload.$old=fa}}t.children&&!t.children.nodes&&(t.children.nodes=[]),"select"===s.tag&&"value"in s.attrs&&o(ca,s.tag,{value:s.attrs.value},{},x),a.insertBefore(ca,a.childNodes[v]||null)}else ca=t.nodes[0],ba&&o(ca,s.tag,s.attrs,t.attrs,x),t.children=m(ca,s.tag,c,c,s.children,t.children,!1,0,s.attrs.contenteditable?ca:w,x,y),t.nodes.intact=!0,X.length&&(t.views=W,t.controllers=X),u===!0&&null!=ca&&a.insertBefore(ca,a.childNodes[v]||null);if(d(s.attrs.config)){var ga=t.configContext=t.configContext||{},ja=function(a,b){return function(){return a.attrs.config.apply(a,b)}};y.push(ja(s,[ca,!da,ga,t]))}}else if(!d(s)){var C;0===t.nodes.length?(s.$trusted?C=r(a,v,s):(C=[K.createTextNode(s)],a.nodeName.match(S)||a.insertBefore(C[0],a.childNodes[v]||null)),t="string number boolean".indexOf(typeof s)>-1?new s.constructor(s):s,t.nodes=C):t.valueOf()!==s.valueOf()||u===!0?(C=t.nodes,w&&w===K.activeElement||(s.$trusted?(p(C,t),C=r(a,v,s)):"textarea"===b?a.value=s:w?w.innerHTML=s:((1===C[0].nodeType||C.length>1)&&(p(t.nodes,t),C=[K.createTextNode(s)]),l(a,C[0],v,s))),t=new s.constructor(s),t.nodes=C):t.nodes.intact=!0}return t}function n(a,b){return a.action-b.action||a.index-b.index}function o(a,b,c,f,g){for(var h in c){var i=c[h],j=f[h];if(h in f&&j===i)"value"===h&&"input"===b&&a.value!=i&&(a.value=i);else{f[h]=i;try{if("config"===h||"key"==h)continue;if(d(i)&&0===h.indexOf("on"))a[h]=s(i,a);else if("style"===h&&null!=i&&e(i)){for(var k in i)(null==j||j[k]!==i[k])&&(a.style[k]=i[k]);for(var k in j)k in i||(a.style[k]="")}else null!=g?"href"===h?a.setAttributeNS("http://www.w3.org/1999/xlink","href",i):"className"===h?a.setAttribute("class",i):a.setAttribute(h,i):h in a&&"list"!==h&&"style"!==h&&"form"!==h&&"type"!==h&&"width"!==h&&"height"!==h?("input"!==b||a[h]!==i)&&(a[h]=i):a.setAttribute(h,i)}catch(l){if(l.message.indexOf("Invalid argument")<0)throw l}}}return f}function p(a,b){for(var c=a.length-1;c>-1;c--)if(a[c]&&a[c].parentNode){try{a[c].parentNode.removeChild(a[c])}catch(d){}b=[].concat(b),b[c]&&q(b[c])}0!=a.length&&(a.length=0)}function q(a){if(a.configContext&&d(a.configContext.onunload)&&(a.configContext.onunload(),a.configContext.onunload=null),a.controllers)for(var b,c=0;b=a.controllers[c];c++)d(b.onunload)&&b.onunload({preventDefault:T});if(a.children)if(O(a.children))for(var e,c=0;e=a.children[c];c++)q(e);else a.children.tag&&q(a.children)}function r(a,b,c){var d=a.childNodes[b];if(d){var e=1!=d.nodeType,f=K.createElement("span");e?(a.insertBefore(f,d||null),f.insertAdjacentHTML("beforebegin",c),a.removeChild(f)):d.insertAdjacentHTML("beforebegin",c)}else a.insertAdjacentHTML("beforeend",c);for(var g=[];a.childNodes[b]!==d;)g.push(a.childNodes[b]),b++;return g}function s(a,b){return function(c){c=c||event,h.redraw.strategy("diff"),h.startComputation();try{return a.call(b,c)}finally{ja()}}}function t(a){var b=W.indexOf(a);return 0>b?W.push(a)-1:b}function u(a){var b=function(){return arguments.length&&(a=arguments[0]),a};return b.toJSON=function(){return a},b}function v(a,b){var c=function(){return(a.controller||T).apply(this,b)||this},d=function(c){for(var d=1;de;e++)ka[c[e].replace(/:|\./g,"")]=decodeURIComponent(d[e]);h.mount(a,b[g])}),!0}}function z(a){if(a=a||event,!a.ctrlKey&&!a.metaKey&&2!==a.which){a.preventDefault?a.preventDefault():a.returnValue=!1;for(var b=a.currentTarget||a.srcElement,c="pathname"===h.route.mode&&b.search?C(b.search.slice(1)):{};b&&"A"!=b.nodeName.toUpperCase();)b=b.parentNode;h.route(b[h.route.mode].slice(ma[h.route.mode].length),c)}}function A(){"hash"!=h.route.mode&&L.hash?L.hash=L.hash:b.scrollTo(0,0)}function B(a,b){var d={},f=[];for(var g in a){var h=b?b+"["+g+"]":g,i=a[g],j=(P.call(i),null===i?encodeURIComponent(h):e(i)?B(i,h):O(i)?i.reduce(function(a,b){return d[h]||(d[h]={}),d[h][b]?a:(d[h][b]=!0,a.concat(encodeURIComponent(h)+"="+encodeURIComponent(b)))},[]).join("&"):encodeURIComponent(h)+"="+encodeURIComponent(i));i!==c&&f.push(j)}return f.join("&")}function C(a){"?"===a.charAt(0)&&(a=a.substring(1));for(var b=a.split("&"),c={},d=0,e=b.length;e>d;d++){var f=b[d].split("="),g=decodeURIComponent(f[0]),h=2==f.length?decodeURIComponent(f[1]):null;null!=c[g]?(O(c[g])||(c[g]=[c[g]]),c[g].push(h)):c[g]=h}return c}function D(a){var b=t(a);p(a.childNodes,X[b]),X[b]=c}function E(a,b){var c=h.prop(b);return a.then(c),c.then=function(c,d){return E(a.then(c,d),b)},c["catch"]=c.then.bind(null,null),c}function F(a,b){function c(a){n=a||l,p.map(function(a){n===k&&a.resolve(o)||a.reject(o)})}function f(a,b,c,f){if((null!=o&&e(o)||d(o))&&d(a))try{var g=0;a.call(o,function(a){g++||(o=a,b())},function(a){g++||(o=a,c())})}catch(i){h.deferred.onerror(i),o=i,c()}else f()}function g(){var e;try{e=o&&o.then}catch(l){return h.deferred.onerror(l),o=l,n=j,g()}f(e,function(){n=i,g()},function(){n=j,g()},function(){try{n===i&&d(a)?o=a(o):n===j&&d(b)&&(o=b(o),n=i)}catch(g){return h.deferred.onerror(g),o=g,c()}o===m?(o=TypeError(),c()):f(e,function(){c(k)},c,function(){c(n===i&&k)})})}var i=1,j=2,k=3,l=4,m=this,n=0,o=0,p=[];m.promise={},m.resolve=function(a){return n||(o=a,n=i,g()),this},m.reject=function(a){return n||(o=a,n=j,g()),this},m.promise.then=function(a,b){var c=new F(a,b);return n===k?c.resolve(o):n===l?c.reject(o):p.push(c),c.promise}}function G(a){return a}function H(a){if(!a.dataType||"jsonp"!==a.dataType.toLowerCase()){var e=new b.XMLHttpRequest;if(e.open(a.method,a.url,!0,a.user,a.password),e.onreadystatechange=function(){4===e.readyState&&(e.status>=200&&e.status<300?a.onload({type:"load",target:e}):a.onerror({type:"error",target:e}))},a.serialize===JSON.stringify&&a.data&&"GET"!==a.method&&e.setRequestHeader("Content-Type","application/json; charset=utf-8"),a.deserialize===JSON.parse&&e.setRequestHeader("Accept","application/json, text/*"),d(a.config)){var g=a.config(e,a);null!=g&&(e=g)}var h="GET"!==a.method&&a.data?a.data:"";if(h&&!f(h)&&h.constructor!=b.FormData)throw"Request data should be either be a string or FormData. Check the `serialize` option in `m.request`";return e.send(h),e}var i="mithril_callback_"+(new Date).getTime()+"_"+Math.round(1e16*Math.random()).toString(36),j=K.createElement("script");b[i]=function(d){j.parentNode.removeChild(j),a.onload({type:"load",target:{responseText:d}}),b[i]=c},j.onerror=function(d){return j.parentNode.removeChild(j),a.onerror({type:"error",target:{status:500,responseText:JSON.stringify({error:"Error making jsonp request"})}}),b[i]=c,!1},j.onload=function(a){return!1},j.src=a.url+(a.url.indexOf("?")>0?"&":"?")+(a.callbackKey?a.callbackKey:"callback")+"="+i+"&"+B(a.data||{}),K.body.appendChild(j)}function I(a,b,c){if("GET"===a.method&&"jsonp"!=a.dataType){var d=a.url.indexOf("?")<0?"?":"&",e=B(b);a.url=a.url+(e?d+e:"")}else a.data=c(b);return a}function J(a,b){var c=a.match(/:[a-z]\w+/gi);if(c&&b)for(var d=0;di;i++)e[i]()},h.trust=function(a){return a=new String(a),a.$trusted=!0,a},h.prop=function(a){return(null!=a&&e(a)||d(a))&&d(a.then)?E(a):u(a)};var Y,Z=[],$=[],_=[],aa=null,ba=0,ca=null,da=null,ea=[],fa=16;h.component=function(a){for(var b=[],c=1;cc&&(c=Z.length);for(var e,f=!1,g={preventDefault:function(){f=!0,ca=da=null}},i=0;e=ea[i];i++)e.handler.call(e.controller,g),e.controller.onunload=null;if(f)for(var e,i=0;e=ea[i];i++)e.controller.onunload=e.handler;else ea=[];if(_[c]&&d(_[c].onunload)&&_[c].onunload(g),!f){h.redraw.strategy("all"),h.startComputation(),Z[c]=a,arguments.length>2&&(b=subcomponent(b,[].slice.call(arguments,2)));var j=Y=b=b||{controller:T},k=b.controller||T,l=new k;return j===Y&&(_[c]=l,$[c]=b),ja(),_[c]}};var ga=!1,ha=!1;h.redraw=function(a){if(!ga){ga=!0,a&&(ha=!0);try{aa&&!a?(M===b.requestAnimationFrame||new Date-ba>fa)&&(aa>0&&N(aa),aa=M(w,fa)):(w(),aa=M(function(){aa=null},fa))}finally{ga=ha=!1}}},h.redraw.strategy=h.prop();var ia=0;h.startComputation=function(){ia++},h.endComputation=function(){ia=Math.max(ia-1,0),0===ia&&h.redraw()};var ja=function(){"none"==h.redraw.strategy()?(ia--,h.redraw.strategy("diff")):h.endComputation()};h.withAttr=function(a,b){return function(c){c=c||event;var d=c.currentTarget||this;b(a in d?d[a]:d.getAttribute(a))}};var ka,la,ma={pathname:"",hash:"#",search:"?"},na=T,oa=!1;return h.route=function(a,c,d,e){if(0===arguments.length)return la;if(3===arguments.length&&f(c)){na=function(b){var e=la=x(b);if(!y(a,d,e)){if(oa)throw new Error("Ensure the default route matches one of the routes defined in m.route");oa=!0,h.route(c,!0),oa=!1}};var g="hash"===h.route.mode?"onhashchange":"onpopstate";b[g]=function(){var a=L[h.route.mode];"pathname"===h.route.mode&&(a+=L.search),la!=x(a)&&na(a)},ca=A,b[g]()}else if(a.addEventListener||a.attachEvent)a.href=("pathname"!==h.route.mode?L.pathname:"")+ma[h.route.mode]+e.attrs.href,a.addEventListener?(a.removeEventListener("click",z),a.addEventListener("click",z)):(a.detachEvent("onclick",z),a.attachEvent("onclick",z));else if(f(a)){var i=la;la=a;var j=la.indexOf("?"),k=j>-1?C(la.slice(j+1)):{};for(var l in c)k[l]=c[l];var m=B(k),n=j>-1?la.slice(0,j):la;m&&(la=n+(-1===n.indexOf("?")?"?":"&")+m);var o=(3===arguments.length?d:c)===!0||i===a;b.history.pushState?(ca=A,da=function(){b.history[o?"replaceState":"pushState"](null,K.title,ma[h.route.mode]+la)},na(ma[h.route.mode]+la)):(L[h.route.mode]=la,na(ma[h.route.mode]+la))}},h.route.param=function(a){if(!ka)throw new Error("You must call m.route(element, defaultRoute, routes) before calling m.route.param()");return ka[a]},h.route.mode="search",h.route.buildQueryString=B,h.route.parseQueryString=C,h.deferred=function(){var a=new F;return a.promise=E(a.promise),a},h.deferred.onerror=function(a){if("[object Error]"===P.call(a)&&!a.constructor.toString().match(/ Error/))throw ia=0,a},h.sync=function(a){function b(a,b){return function(g){return f[a]=g,b||(c="reject"),0===--e&&(d.promise(f),d[c](f)),g}}var c="resolve",d=h.deferred(),e=a.length,f=new Array(e);if(a.length>0)for(var g=0;g