change m.request return value from stream to promise

remove m.prop
add m.Promise
update tests and examples
This commit is contained in:
Leo Horie 2016-11-13 22:44:22 -05:00
parent 8f1a69cfcb
commit bc8cf4ed76
19 changed files with 650 additions and 852 deletions

84
mithril.min.js vendored
View file

@ -1,44 +1,40 @@
new function(){function u(c,f,n,g,k,h){return{tag:c,key:f,attrs:n,children:g,text:k,dom:h,domSize:void 0,state:{},events:void 0,instance:void 0,skip:!1}}function v(c){if(null==c||"string"!==typeof c&&null==c.view)throw Error("The selector must be either a string or a component.");if("string"===typeof c&&void 0===K[c]){for(var f,n,g=[],k={};f=R.exec(c);){var h=f[1],x=f[2];""===h&&""!==x?n=x:"#"===h?k.id=x:"."===h?g.push(x):"["===f[3][0]&&((h=f[6])&&(h=h.replace(/\\(["'])/g,"$1").replace(/\\\\/g,"\\")),
k[f[4]]=h||!0)}0<g.length&&(k.className=g.join(" "));K[c]=function(c,e){var f=!1,l,g,h=c.className||c["class"],r;for(r in k)c[r]=k[r];void 0!==h&&(void 0!==c["class"]&&(c["class"]=void 0,c.className=h),void 0!==k.className&&(c.className=k.className+" "+h));for(r in c)if("key"!==r){f=!0;break}e instanceof Array&&1==e.length&&null!=e[0]&&"#"===e[0].tag?g=e[0].children:l=e;return u(n||"div",c.key,f?c:void 0,l,g,void 0)}}var z;null!=arguments[1]&&("object"!==typeof arguments[1]||void 0!==arguments[1].tag||
arguments[1]instanceof Array)?g=1:(z=arguments[1],g=2);if(arguments.length===g+1)f=arguments[g]instanceof Array?arguments[g]:[arguments[g]];else for(f=[];g<arguments.length;g++)f.push(arguments[g]);return"string"===typeof c?K[c](z||{},u.normalizeChildren(f)):u(c,z&&z.key,z||{},u.normalizeChildren(f),void 0,void 0)}u.normalize=function(c){return c instanceof Array?u("[",void 0,void 0,u.normalizeChildren(c),void 0,void 0):null!=c&&"object"!==typeof c?u("#",void 0,void 0,c,void 0,void 0):c};u.normalizeChildren=
function(c){for(var f=0;f<c.length;f++)c[f]=u.normalize(c[f]);return c};var R=/(?:(^|#|\.)([^#\.\[\]]+))|(\[(.+?)(?:\s*=\s*("|'|)((?:\\["'\]]|.)*?)\5)?\])/g,K={};v.trust=function(c){null==c&&(c="");return u("<",void 0,void 0,c,void 0,void 0)};v.fragment=function(c,f){return u("[",c.key,c,u.normalizeChildren(f),void 0,void 0)};var P=function(c){function f(){function a(){0<arguments.length&&arguments[0]!==q&&g(a,arguments[0],void 0);return a._state.value}n(a);0<arguments.length&&arguments[0]!==q&&g(a,
arguments[0],void 0);return a}function n(a){a.constructor=f;a._state={id:B++,value:void 0,error:void 0,state:0,derive:void 0,recover:void 0,deps:{},parents:[],errorStream:void 0,endStream:void 0};a["fantasy-land/map"]=u;a["fantasy-land/ap"]=v;a["fantasy-land/of"]=f;a.valueOf=H;a.toJSON=C;a.toString=H;a.run=w;a["catch"]=l;Object.defineProperties(a,{error:{get:function(){if(!a._state.errorStream){var b=function(){0<arguments.length&&arguments[0]!==q&&g(a,void 0,arguments[0]);return a._state.error};
n(b);r(b,[a],y,y);a._state.errorStream=b}return a._state.errorStream}},end:{get:function(){if(!a._state.endStream){var b=f();b["fantasy-land/map"](function(d){!0===d&&(D(a),D(b));return d});a._state.endStream=b}return a._state.endStream}}})}function g(a,b,d){k(a,b,d);for(var m in a._state.deps)x(a._state.deps[m],!1);a._state.changed=!1;for(var e in a._state.deps)a._state.deps[e]._state.changed=!1}function k(a,b,d){d=t(b,d);if(void 0!==d&&"function"===typeof a._state.recover){if(!z(a,h,!0))return}else h(a,
b,d);a._state.changed=!0;2!==a._state.state&&(a._state.state=1)}function h(a,b,d){a._state.value=b;a._state.error=d}function x(b,e){var m=b._state.parents;0<m.length&&m.filter(F).length===m.length&&(e||0<m.filter(a).length)&&(m=m.filter(d),0<m.length?k(b,void 0,m[0]._state.error):z(b,k,!1))}function z(a,b,d){try{var m=d?a._state.recover():a._state.derive();if(m===q)return!1;b(a,m,void 0)}catch(E){b(a,void 0,null!=E.__error?E.__error:E),null==E.__error&&e(a,E)}return!0}function t(a,b){null!=a&&a.constructor===
f&&(b=void 0!==a._state.error?a._state.error:t(a._state.value,a._state.error));return b}function e(a,b){0===Object.keys(a._state.deps).length&&setTimeout(function(){0===Object.keys(a._state.deps).length&&c(b)},0)}function w(a){var b=f(),d=this;return r(b,[d],function(){return p(b,a(d()))},void 0)}function l(a){var b=f(),d=this;return r(b,[d],function(){return d._state.value},function(){return p(b,a(d._state.error))})}function A(b,e){if(e.length>e.filter(I).length)throw Error("Ensure that each item passed to m.prop.combine/m.prop.merge is a stream");
return r(f(),e,function(){var m=e.filter(d);if(0<m.length)throw{__error:m[0]._state.error};return b.apply(this,e.concat([e.filter(a)]))},void 0)}function p(a,b){if(null!=b&&b.constructor===f){var d=b,e=function(){k(a,d._state.value,d._state.error);for(var b in a._state.deps)x(a._state.deps[b],!1)};d["fantasy-land/map"](e)["catch"](function(a){e();throw{__error:a};});if(0===d._state.state)return q;if(d._state.error)throw{__error:d._state.error};b=d._state.value}return b}function r(a,d,e,c){var m=a._state;
m.derive=e;m.recover=c;m.parents=d.filter(b);G(a,m.parents);x(a,!0);return a}function G(a,b){for(var d=0;d<b.length;d++)b[d]._state.deps[a._state.id]=a,G(a,b[d]._state.parents)}function D(a){for(var b=0;b<a._state.parents.length;b++)delete a._state.parents[b]._state.deps[a._state.id];for(var d in a._state.deps){var b=a._state.deps[d],e=b._state.parents.indexOf(a);-1<e&&b._state.parents.splice(e,1)}a._state.state=2;a._state.deps={}}function u(a){return A(function(b){return a(b())},[this])}function v(a){return A(function(a,
b){return a()(b())},[a,this])}function H(){return this._state.value}function C(){return null!=this._state.value&&"function"===typeof this._state.value.toJSON?this._state.value.toJSON():this._state.value}function I(a){return a._state}function F(a){return 1===a._state.state}function a(a){return a._state.changed}function b(a){return 2!==a._state.state}function d(a){return a._state.error}var B=0,y=function(){},q={};f["fantasy-land/of"]=f;f.merge=function(a){return A(function(){return a.map(function(a){return a()})},
a)};f.combine=A;f.reject=function(a){var b=f();b.error(a);return b};f.HALT=q;return f}(console.log.bind(console)),J=function(c){function f(c,h){if(h instanceof Array)for(var g=0;g<h.length;g++)f(c+"["+g+"]",h[g]);else if("[object Object]"===Object.prototype.toString.call(h))for(g in h)f(c+"["+g+"]",h[g]);else n.push(encodeURIComponent(c)+(null!=h&&""!==h?"="+encodeURIComponent(h):""))}if("[object Object]"!==Object.prototype.toString.call(c))return"";var n=[],g;for(g in c)f(g,c[g]);return n.join("&")},
L=function(c,f){function n(e,c){if(null==c)return e;for(var f=e.match(/:[^\/]+/gi)||[],g=0;g<f.length;g++){var w=f[g].slice(1);null!=c[w]&&(e=e.replace(f[g],c[w]),delete c[w])}return e}function g(e,c){var f=J(c);if(""!==f){var g=0>e.indexOf("?")?"?":"&";e+=g+f}return e}function k(e){try{return""!==e?JSON.parse(e):null}catch(w){throw Error(e);}}function h(e){return e.responseText}function x(e,c){if("function"===typeof e)if(c instanceof Array)for(var f=0;f<c.length;f++)c[f]=new e(c[f]);else return new e(c);
return c}var z=0,t;return{request:function(e,w){if("string"===typeof e){var l=e;e="object"===typeof w?w:{};"undefined"===typeof e.url&&(e.url=l)}"undefined"===typeof e.method&&(e.method="GET");var A=f();void 0!==e.initialValue&&A(e.initialValue);e.method=e.method.toUpperCase();l="boolean"===typeof e.useBody?e.useBody:"GET"!==e.method&&"TRACE"!==e.method;"function"!==typeof e.serialize&&(e.serialize="undefined"!==typeof FormData&&e.data instanceof FormData?function(e){return e}:JSON.stringify);"function"!==
typeof e.deserialize&&(e.deserialize=k);"function"!==typeof e.extract&&(e.extract=h);e.url=n(e.url,e.data);l?e.data=e.serialize(e.data):e.url=g(e.url,e.data);var p=new c.XMLHttpRequest;p.open(e.method,e.url,"boolean"===typeof e.async?e.async:!0,"string"===typeof e.user?e.user:void 0,"string"===typeof e.password?e.password:void 0);e.serialize===JSON.stringify&&l&&p.setRequestHeader("Content-Type","application/json; charset=utf-8");e.deserialize===k&&p.setRequestHeader("Accept","application/json, text/*");
"function"===typeof e.config&&(p=e.config(p,e)||p);p.onreadystatechange=function(){if(4===p.readyState){try{var c=e.extract!==h?e.extract(p,e):e.deserialize(e.extract(p,e));if(200<=p.status&&300>p.status||304===p.status)A(x(e.type,c));else{var f=Error(p.responseText),g;for(g in c)f[g]=c[g];A.error(f)}}catch(S){A.error(S)}"function"===typeof t&&t()}};l&&null!=e.data?p.send(e.data):p.send();return A},jsonp:function(e){var h=f();void 0!==e.initialValue&&h(e.initialValue);var l=e.callbackName||"_mithril_"+
Math.round(1E16*Math.random())+"_"+z++,k=c.document.createElement("script");c[l]=function(f){k.parentNode.removeChild(k);h(x(e.type,f));"function"===typeof t&&t();delete c[l]};k.onerror=function(){k.parentNode.removeChild(k);h.error(Error("JSONP request failed"));"function"===typeof t&&t();delete c[l]};null==e.data&&(e.data={});e.url=n(e.url,e.data);e.data[e.callbackKey||"callback"]=l;k.src=g(e.url,e.data);c.document.documentElement.appendChild(k);return h},setCompletionCallback:function(e){t=e}}}(window,
P),M=function(){var c=[];return{subscribe:c.push.bind(c),unsubscribe:function(f){f=c.indexOf(f);-1<f&&c.splice(f,1)},publish:function(){for(var f=0;f<c.length;f++)c[f].apply(this,arguments)}}}();L.setCompletionCallback(M.publish);var Q=function(c){function f(a,b,d,e,c,f,g){for(;d<e;d++){var B=b[d];null!=B&&t(a,n(B,c,g),f)}}function n(a,b,d){var c=a.tag;null!=a.attrs&&v(a.attrs,a,b);if("string"===typeof c)switch(c){case "#":return a.dom=C.createTextNode(a.children);case "<":return g(a);case "[":var h=
C.createDocumentFragment();null!=a.children&&(c=a.children,f(h,c,0,c.length,b,null,d));a.dom=h.firstChild;a.domSize=h.childNodes.length;return h;default:var q=a.tag;switch(a.tag){case "svg":d="http://www.w3.org/2000/svg";break;case "math":d="http://www.w3.org/1998/Math/MathML"}var m=(c=a.attrs)&&c.is,q=d?m?C.createElementNS(d,q,{is:m}):C.createElementNS(d,q):m?C.createElement(q,{is:m}):C.createElement(q);a.dom=q;if(null!=c)for(h in m=d,c)r(a,h,null,c[h],m);null!=a.attrs&&null!=a.attrs.contenteditable?
e(a):(null!=a.text&&(""!==a.text?q.textContent=a.text:a.children=[u("#",void 0,void 0,a.text,void 0,void 0)]),null!=a.children&&(h=a.children,f(q,h,0,h.length,b,null,d),b=a.attrs,"select"===a.tag&&null!=b&&("value"in b&&r(a,"value",null,b.value,void 0),"selectedIndex"in b&&r(a,"selectedIndex",null,b.selectedIndex,void 0))));return q}else{a.state||(a.state={});H(a.state,a.tag);h=a.tag.view;if(null!=h.reentrantLock)a=I;else if(h.reentrantLock=!0,v(a.tag,a,b),a.instance=u.normalize(h.call(a.state,a)),
h.reentrantLock=null,null!=a.instance){if(a.instance===a)throw Error("A view cannot return the vnode it received as arguments");b=n(a.instance,b,d);a.dom=a.instance.dom;a.domSize=null!=a.dom?a.instance.domSize:0;a=b}else a.domSize=0,a=I;return a}}function g(a){var b={caption:"table",thead:"table",tbody:"table",tfoot:"table",tr:"tbody",th:"tr",td:"tr",colgroup:"table",col:"colgroup"}[(a.children.match(/^\s*?<(\w+)/im)||[])[1]]||"div",b=C.createElement(b);b.innerHTML=a.children;a.dom=b.firstChild;a.domSize=
b.childNodes.length;a=C.createDocumentFragment();for(var d;d=b.firstChild;)a.appendChild(d);return a}function k(a,b,d,c,e,g){if(b!==d&&(null!=b||null!=d))if(null==b)f(a,d,0,d.length,c,e,void 0);else if(null==d)w(b,0,b.length,d);else{var m;a:{if(null!=b.pool&&Math.abs(b.pool.length-d.length)<=Math.abs(b.length-d.length)&&(m=d[0]&&d[0].children&&d[0].children.length||0,Math.abs((b.pool[0]&&b.pool[0].children&&b.pool[0].children.length||0)-m)<=Math.abs((b[0]&&b[0].children&&b[0].children.length||0)-
m))){m=!0;break a}m=!1}m&&(b=b.concat(b.pool));if(b.length===d.length&&null!=d[0]&&null==d[0].key)for(var q=0;q<b.length;q++)b[q]===d[q]||null==b[q]&&null==d[q]||(null==b[q]?t(a,n(d[q],c,g),z(b,q+1,e)):null==d[q]?w(b,q,q+1,d):h(a,b[q],d[q],c,z(b,q+1,e),m,g),m&&b[q].tag===d[q].tag&&t(a,x(b[q]),z(b,q+1,e)));else{for(var B=q=0,l=b.length-1,k=d.length-1,p;l>=q&&k>=B;){var r=b[q],y=d[B];if(r!==y||m)if(null!=r&&null!=y&&r.key===y.key)q++,B++,h(a,r,y,c,z(b,q,e),m,g),m&&r.tag===y.tag&&t(a,x(r),e);else if(r=
b[l],r!==y||m)if(null!=r&&null!=y&&r.key===y.key)h(a,r,y,c,z(b,l+1,e),m,g),(m||B<k)&&t(a,x(r),z(b,q,e)),l--,B++;else break;else l--,B++;else q++,B++}for(;l>=q&&k>=B;){r=b[l];y=d[k];if(r!==y||m)if(null!=r&&null!=y&&r.key===y.key)h(a,r,y,c,z(b,l+1,e),m,g),m&&r.tag===y.tag&&t(a,x(r),e),null!=r.dom&&(e=r.dom),l--;else{if(!p){p=b;var r=l,u={},A;for(A=0;A<r;A++){var v=p[A];null!=v&&(v=v.key,null!=v&&(u[v]=A))}p=u}null!=y&&(r=p[y.key],null!=r?(u=b[r],h(a,u,y,c,z(b,l+1,e),m,g),t(a,x(u),e),b[r].skip=!0,null!=
u.dom&&(e=u.dom)):(y=n(y,c,void 0),t(a,y,e),e=y))}else l--;k--;if(k<B)break}f(a,d,B,k+1,c,e,g);w(b,q,l+1,d)}}}function h(a,b,d,c,f,q,m){var l=b.tag;if(l===d.tag){d.state=b.state;d.events=b.events;var w;var B;null!=d.attrs&&"function"===typeof d.attrs.onbeforeupdate&&(w=d.attrs.onbeforeupdate.call(d.state,d,b));"string"!==typeof d.tag&&"function"===typeof d.tag.onbeforeupdate&&(B=d.tag.onbeforeupdate.call(d.state,d,b));void 0===w&&void 0===B||w||B?w=!1:(d.dom=b.dom,d.domSize=b.domSize,d.instance=b.instance,
w=!0);if(!w)if(null!=d.attrs&&O(d.attrs,d,c,q),"string"===typeof l)switch(l){case "#":b.children.toString()!==d.children.toString()&&(b.dom.nodeValue=d.children);d.dom=b.dom;break;case "<":b.children!==d.children?(x(b),t(a,g(d),f)):(d.dom=b.dom,d.domSize=b.domSize);break;case "[":k(a,b.children,d.children,c,f,m);b=0;c=d.children;d.dom=null;if(null!=c){for(var p=0;p<c.length;p++)a=c[p],null!=a&&null!=a.dom&&(null==d.dom&&(d.dom=a.dom),b+=a.domSize||1);1!==b&&(d.domSize=b)}break;default:a=m;f=d.dom=
b.dom;switch(d.tag){case "svg":a="http://www.w3.org/2000/svg";break;case "math":a="http://www.w3.org/1998/Math/MathML"}"textarea"===d.tag&&(null==d.attrs&&(d.attrs={}),null!=d.text&&(d.attrs.value=d.text,d.text=void 0));q=b.attrs;m=d.attrs;l=a;if(null!=m)for(p in m)r(d,p,q&&q[p],m[p],l);if(null!=q)for(p in q)null!=m&&p in m||("className"===p&&(p="class"),"o"!==p[0]||"n"!==p[1]||G(p)?"key"!==p&&d.dom.removeAttribute(p):D(d,p,void 0));null!=d.attrs&&null!=d.attrs.contenteditable?e(d):null!=b.text&&
null!=d.text&&""!==d.text?b.text.toString()!==d.text.toString()&&(b.dom.firstChild.nodeValue=d.text):(null!=b.text&&(b.children=[u("#",void 0,void 0,b.text,void 0,b.dom.firstChild)]),null!=d.text&&(d.children=[u("#",void 0,void 0,d.text,void 0,void 0)]),k(f,b.children,d.children,c,null,a))}else d.instance=u.normalize(d.tag.view.call(d.state,d)),O(d.tag,d,c,q),null!=d.instance?(null==b.instance?t(a,n(d.instance,c,m),f):h(a,b.instance,d.instance,c,f,q,m),d.dom=d.instance.dom,d.domSize=d.instance.domSize):
null!=b.instance?(A(b.instance,null),d.dom=void 0,d.domSize=0):(d.dom=b.dom,d.domSize=b.domSize)}else A(b,null),t(a,n(d,c,void 0),f)}function x(a){var b=a.domSize;if(null!=b||null==a.dom){var d=C.createDocumentFragment();if(0<b){for(a=a.dom;--b;)d.appendChild(a.nextSibling);d.insertBefore(a,d.firstChild)}return d}return a.dom}function z(a,b,d){for(;b<a.length;b++)if(null!=a[b]&&null!=a[b].dom)return a[b].dom;return d}function t(a,b,d){d&&d.parentNode?a.insertBefore(b,d):a.appendChild(b)}function e(a){var b=
a.children;if(null!=b&&1===b.length&&"<"===b[0].tag)b=b[0].children,a.dom.innerHTML!==b&&(a.dom.innerHTML=b);else if(null!=b||null!=a.text)throw Error("Child node of a contenteditable must be trusted");}function w(a,b,d,c){for(;b<d;b++){var e=a[b];null!=e&&(e.skip?e.skip=!1:A(e,c))}}function l(a){var b=!1;return function(){b||(b=!0,a())}}function A(a,b){function d(){if(++e===c&&(p(a),a.dom)){var d=a.domSize||1;if(1<d)for(var f=a.dom;--d;){var g=f.nextSibling,h=g.parentNode;null!=h&&h.removeChild(g)}d=
a.dom;f=d.parentNode;null!=f&&f.removeChild(d);if(d=null!=b&&null==a.domSize)d=a.attrs,d=!(null!=d&&(d.oncreate||d.onupdate||d.onbeforeremove||d.onremove));d&&"string"===typeof a.tag&&(b.pool?b.pool.push(a):b.pool=[a])}}var c=1,e=0;a.attrs&&a.attrs.onbeforeremove&&(c++,a.attrs.onbeforeremove.call(a.state,a,l(d)));"string"!==typeof a.tag&&a.tag.onbeforeremove&&(c++,a.tag.onbeforeremove.call(a.state,a,l(d)));d()}function p(a){a.attrs&&a.attrs.onremove&&a.attrs.onremove.call(a.state,a);"string"!==typeof a.tag&&
a.tag.onremove&&a.tag.onremove.call(a.state,a);if(null!=a.instance)p(a.instance);else if(a=a.children,a instanceof Array)for(var b=0;b<a.length;b++){var d=a[b];null!=d&&p(d)}}function r(a,b,d,c,e){var f=a.dom;if("key"!==b&&(d!==c||"value"===b||"checked"===b||"selectedIndex"===b||"selected"===b&&a.dom===C.activeElement||"object"===typeof c)&&"undefined"!==typeof c&&!G(b)){var g=b.indexOf(":");if(-1<g&&"xlink"===b.substr(0,g))f.setAttributeNS("http://www.w3.org/1999/xlink",b.slice(g+1),c);else if("o"===
b[0]&&"n"===b[1]&&"function"===typeof c)D(a,b,c);else if("style"===b)if(a=d,a===c&&(f.style.cssText="",a=null),null==c)f.style.cssText="";else if("string"===typeof c)f.style.cssText=c;else{"string"===typeof a&&(f.style.cssText="");for(var h in c)f.style[h]=c[h];if(null!=a&&"string"!==typeof a)for(h in a)h in c||(f.style[h]="")}else if(b in f&&"href"!==b&&"list"!==b&&"form"!==b&&"width"!==b&&"height"!==b&&void 0===e){if("input"!==a.tag||"value"!==b||a.dom.value!==c||a.dom!==C.activeElement)f[b]=c}else"boolean"===
typeof c?c?f.setAttribute(b,""):f.removeAttribute(b):f.setAttribute("className"===b?"class":b,c)}}function G(a){return"oninit"===a||"oncreate"===a||"onupdate"===a||"onremove"===a||"onbeforeremove"===a||"onbeforeupdate"===a}function D(a,b,d){var c=a.dom,e=function(a){var b=d.call(c,a);"function"===typeof F&&F.call(c,a);return b};if(b in c)c[b]="function"===typeof d?e:null;else{var f=b.slice(2);void 0===a.events&&(a.events={});null!=a.events[b]&&c.removeEventListener(f,a.events[b],!1);"function"===
typeof d&&(a.events[b]=e,c.addEventListener(f,a.events[b],!1))}}function v(a,b,d){"function"===typeof a.oninit&&a.oninit.call(b.state,b);"function"===typeof a.oncreate&&d.push(a.oncreate.bind(b.state,b))}function O(a,b,d,c){c?v(a,b,d):"function"===typeof a.onupdate&&d.push(a.onupdate.bind(b.state,b))}function H(a,b){Object.keys(b).forEach(function(d){a[d]=b[d]})}var C=c.document,I=C.createDocumentFragment(),F;return{render:function(a,b){if(!a)throw Error("Ensure the DOM element being passed to m.route/m.mount/m.render is not undefined.");
var d=[],c=C.activeElement;null==a.vnodes&&(a.textContent="");b instanceof Array||(b=[b]);k(a,a.vnodes,u.normalizeChildren(b),d,null,void 0);a.vnodes=b;for(var e=0;e<d.length;e++)d[e]();C.activeElement!==c&&c.focus()},setEventCallback:function(a){return F=a}}}(window),T=function(c){var f=0,n=null,g="function"===typeof requestAnimationFrame?requestAnimationFrame:setTimeout;return function(k){var h=Date.now();!0===k||0===f||16<=h-f?(f=h,c()):null===n&&(n=g(function(){n=null;c();f=Date.now()},16-(h-
f)))}},U=function(c,f,n,g){g=T(g);null!=f&&f.setEventCallback(function(c){!1!==c.redraw&&n.publish()});null!=n&&(c.redraw&&n.unsubscribe(c.redraw),n.subscribe(g));return c.redraw=g};v.mount=function(c,f){return function(n,g){if(null===g)c.render(n,[]),f.unsubscribe(n.redraw),delete n.redraw;else{if(null==g.view)throw Error("m.mount(element, component) expects a component, not a vnode");U(n,c,f,function(){c.render(n,u(g,void 0,void 0,void 0,void 0,void 0))})()}}}(Q,M);var N=function(c){if(""===c||
null==c)return{};"?"===c.charAt(0)&&(c=c.slice(1));c=c.split("&");for(var f={},n={},g=0;g<c.length;g++){var k=c[g].split("="),h=decodeURIComponent(k[0]),k=2===k.length?decodeURIComponent(k[1]):"";"true"===k?k=!0:"false"===k&&(k=!1);var x=h.split(/\]\[?|\[/),u=f;-1<h.indexOf("[")&&x.pop();for(var t=0;t<x.length;t++){var h=x[t],e=x[t+1],e=""==e||!isNaN(parseInt(e,10)),w=t===x.length-1;""===h&&(h=x.slice(0,t).join(),null==n[h]&&(n[h]=0),h=n[h]++);null==u[h]&&(u[h]=w?k:e?[]:{});u=u[h]}}return f},V=function(c){function f(e){var f=
c.location[e].replace(/(?:%[a-f89][a-f0-9])+/gim,decodeURIComponent);"pathname"===e&&"/"!==f[0]&&(f="/"+f);return f}function n(c){return function(){null==e&&(e=v(function(){e=null;c()}))}}function g(c,e,f){var g=c.indexOf("?"),h=c.indexOf("#"),l=-1<g?g:-1<h?h:c.length;if(-1<g){var g=N(c.slice(g+1,-1<h?h:c.length)),k;for(k in g)e[k]=g[k]}if(-1<h)for(k in e=N(c.slice(h+1)),e)f[k]=e[k];return c.slice(0,l)}function k(){switch(t.charAt(0)){case "#":return f("hash").slice(t.length);case "?":return f("search").slice(t.length)+
f("hash");default:return f("pathname").slice(t.length)+f("search")+f("hash")}}function h(e,f,h){var k={},r={};e=g(e,k,r);if(null!=f){for(var l in f)k[l]=f[l];e=e.replace(/:([^\/]+)/g,function(c,e){delete k[e];return f[e]})}(l=J(k))&&(e+="?"+l);(r=J(r))&&(e+="#"+r);u?(h&&h.replace?c.history.replaceState(null,null,t+e):c.history.pushState(null,null,t+e),c.onpopstate()):c.location.href=t+e}var u="function"===typeof c.history.pushState,v="function"===typeof setImmediate?setImmediate:setTimeout,t="#!",
e;return{setPrefix:function(c){t=c},getPath:k,setPath:h,defineRoutes:function(e,f,h){function l(){var c=k(),l={},p=g(c,l,l),n;for(n in e){var t=new RegExp("^"+n.replace(/:[^\/]+?\.{3}/g,"(.*?)").replace(/:[^\/]+/g,"([^\\/]+)")+"/?$");if(t.test(p)){p.replace(t,function(){for(var g=n.match(/:[^\/]+/g)||[],h=[].slice.call(arguments,1,-2),k=0;k<g.length;k++)l[g[k].replace(/:|\./g,"")]=decodeURIComponent(h[k]);f(e[n],l,c,n)});return}}h(c,l)}u?c.onpopstate=n(l):"#"===t.charAt(0)&&(c.onhashchange=l);l();
return l},link:function(c){c.dom.setAttribute("href",t+c.attrs.href);c.dom.onclick=function(c){c.ctrlKey||c.metaKey||c.shiftKey||2===c.which||(c.preventDefault(),c.redraw=!1,c=this.getAttribute("href"),0===c.indexOf(t)&&(c=c.slice(t.length)),h(c,void 0,void 0))}}}};v.route=function(c,f){function n(c){return c}var g=V(c),k,h,v,z,t,e={view:function(){return[v(u(h,null,z,void 0,void 0,void 0))]}},w=function(c,u,p){h="div";v=n;z=null;f(c,e);g.defineRoutes(p,function(e,f,g){var l="function"!==typeof e.view,
p=n,r=k=function(n){r===k&&(k=null,h=null!=n?n:l?"div":e,v=p,z=f,t=g,c.redraw(!0))},u=function(){r()};l&&("function"===typeof e.render&&(p=e.render.bind(e)),"function"===typeof e.onmatch&&(u=e.onmatch));u.call(e,r,f,g)},function(){g.setPath(u,null,{replace:!0})})};w.link=g.link;w.prefix=g.setPrefix;w.set=g.setPath;w.get=function(){return t};return w}(window,v.mount);v.withAttr=function(c,f,n){return function(g){return f.call(n||this,c in g.currentTarget?g.currentTarget[c]:g.currentTarget.getAttribute(c))}};
v.prop=P;v.render=Q.render;v.redraw=M.publish;v.request=L.request;v.jsonp=L.jsonp;v.parseQueryString=N;v.buildQueryString=J;v.version="1.0.0-rc.3";"undefined"!==typeof module?module.exports=v:window.m=v};
new function(){function m(a,b,k,d,l,h){return{tag:a,key:b,attrs:k,children:d,text:l,dom:h,domSize:void 0,state:{},events:void 0,instance:void 0,skip:!1}}function t(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===H[a]){for(var b,k,d=[],l={};b=N.exec(a);){var h=b[1],u=b[2];""===h&&""!==u?k=u:"#"===h?l.id=u:"."===h?d.push(u):"["===b[3][0]&&((h=b[6])&&(h=h.replace(/\\(["'])/g,"$1").replace(/\\\\/g,"\\")),
l[b[4]]=h||!0)}0<d.length&&(l.className=d.join(" "));H[a]=function(a,b){var d=!1,h,f,w=a.className||a["class"],p;for(p in l)a[p]=l[p];void 0!==w&&(void 0!==a["class"]&&(a["class"]=void 0,a.className=w),void 0!==l.className&&(a.className=l.className+" "+w));for(p in a)if("key"!==p){d=!0;break}b instanceof Array&&1==b.length&&null!=b[0]&&"#"===b[0].tag?f=b[0].children:h=b;return m(k||"div",a.key,d?a:void 0,h,f,void 0)}}var q;null!=arguments[1]&&("object"!==typeof arguments[1]||void 0!==arguments[1].tag||
arguments[1]instanceof Array)?d=1:(q=arguments[1],d=2);if(arguments.length===d+1)b=arguments[d]instanceof Array?arguments[d]:[arguments[d]];else for(b=[];d<arguments.length;d++)b.push(arguments[d]);return"string"===typeof a?H[a](q||{},m.normalizeChildren(b)):m(a,q&&q.key,q||{},m.normalizeChildren(b),void 0,void 0)}m.normalize=function(a){return a instanceof Array?m("[",void 0,void 0,m.normalizeChildren(a),void 0,void 0):null!=a&&"object"!==typeof a?m("#",void 0,void 0,a,void 0,void 0):a};m.normalizeChildren=
function(a){for(var b=0;b<a.length;b++)a[b]=m.normalize(a[b]);return a};var N=/(?:(^|#|\.)([^#\.\[\]]+))|(\[(.+?)(?:\s*=\s*("|'|)((?:\\["'\]]|.)*?)\5)?\])/g,H={};t.trust=function(a){null==a&&(a="");return m("<",void 0,void 0,a,void 0,void 0)};t.fragment=function(a,b){return m("[",a.key,a,m.normalizeChildren(b),void 0,void 0)};var z=function(a){function b(a,b){return function w(p){var n;try{if(!b||null==p||"object"!==typeof p&&"function"!==typeof p||"function"!==typeof(n=p.then))m(function(){b||0!==
a.length||console.error("Possible unhandled promise rejection:",p);for(var d=0;d<a.length;d++)a[d](p);l.length=0;h.length=0;r.state=b;r.retry=function(){w(p)}});else{if(p===d)throw new TypeError("Promise can't be resolved w/ itself");k(n.bind(p))}}catch(E){q(E)}}}function k(a){function b(a){return function(b){0<f++||a(b)}}var f=0,d=b(q);try{a(b(u),d)}catch(p){d(p)}}if(!(this instanceof z))throw Error("Promise must be called with `new`");if("function"!==typeof a)throw new TypeError("executor must be a function");
var d=this,l=[],h=[],u=b(l,!0),q=b(h,!1),r=d._instance={resolvers:l,rejectors:h},m="function"===typeof setImmediate?setImmediate:setTimeout;k(a)};z.prototype.then=function(a,b){function k(a,b,k,n){b.push(function(b){if("function"!==typeof a)k(b);else try{l(a(b))}catch(f){h&&h(f)}});"function"===typeof d.retry&&n===d.state&&d.retry()}var d=this._instance,l,h,u=new z(function(a,b){l=a;h=b});k(a,d.resolvers,l,!0);k(b,d.rejectors,h,!1);return u};z.prototype["catch"]=function(a){return this.then(null,
a)};z.resolve=function(a){return a instanceof z?a:new z(function(b){b(a)})};z.reject=function(a){return new z(function(b,k){k(a)})};z.all=function(a){return new z(function(b,k){var d=a.length,l=0,h=[];if(0===a.length)b([]);else for(var u=0;u<a.length;u++)(function(u){function r(a){l++;h[u]=a;l===d&&b(h)}null==a[u]||"object"!==typeof a[u]&&"function"!==typeof a[u]||"function"!==typeof a[u].then?r(a[u]):a[u].then(r,k)})(u)})};z.race=function(a){return new z(function(b,k){for(var d=0;d<a.length;d++)a[d].then(b,
k)})};var C="undefined"!==typeof Promise?Promise:z,F=function(a){function b(a,d){if(d instanceof Array)for(var h=0;h<d.length;h++)b(a+"["+h+"]",d[h]);else if("[object Object]"===Object.prototype.toString.call(d))for(h in d)b(a+"["+h+"]",d[h]);else k.push(encodeURIComponent(a)+(null!=d&&""!==d?"="+encodeURIComponent(d):""))}if("[object Object]"!==Object.prototype.toString.call(a))return"";var k=[],d;for(d in a)b(d,a[d]);return k.join("&")},J=function(a,b){function k(){0===--n&&"function"===typeof v&&
v()}function d(a){var f=a.then;a.then=function(){n++;var b=f.apply(a,arguments);b.then(k,function(a){k();throw a;});return d(b)};return a}function l(a,b){if(null==b)return a;for(var f=a.match(/:[^\/]+/gi)||[],d=0;d<f.length;d++){var h=f[d].slice(1);null!=b[h]&&(a=a.replace(f[d],b[h]),delete b[h])}return a}function h(a,b){var f=F(b);if(""!==f){var d=0>a.indexOf("?")?"?":"&";a+=d+f}return a}function u(a){try{return""!==a?JSON.parse(a):null}catch(w){throw Error(a);}}function q(a){return a.responseText}
function r(a,b){if("function"===typeof a)if(b instanceof Array)for(var d=0;d<b.length;d++)b[d]=new a(b[d]);else return new a(b);return b}var m=0,n=0,v;return{request:function(f,k){return d(new b(function(b,d){if("string"===typeof f){var n=f;f="object"===typeof k?k:{};"undefined"===typeof f.url&&(f.url=n)}"undefined"===typeof f.method&&(f.method="GET");f.method=f.method.toUpperCase();n="boolean"===typeof f.useBody?f.useBody:"GET"!==f.method&&"TRACE"!==f.method;"function"!==typeof f.serialize&&(f.serialize=
"undefined"!==typeof FormData&&f.data instanceof FormData?function(a){return a}:JSON.stringify);"function"!==typeof f.deserialize&&(f.deserialize=u);"function"!==typeof f.extract&&(f.extract=q);f.url=l(f.url,f.data);n?f.data=f.serialize(f.data):f.url=h(f.url,f.data);var p=new a.XMLHttpRequest;p.open(f.method,f.url,"boolean"===typeof f.async?f.async:!0,"string"===typeof f.user?f.user:void 0,"string"===typeof f.password?f.password:void 0);f.serialize===JSON.stringify&&n&&p.setRequestHeader("Content-Type",
"application/json; charset=utf-8");f.deserialize===u&&p.setRequestHeader("Accept","application/json, text/*");"function"===typeof f.config&&(p=f.config(p,f)||p);p.onreadystatechange=function(){if(4===p.readyState)try{var a=f.extract!==q?f.extract(p,f):f.deserialize(f.extract(p,f));if(200<=p.status&&300>p.status||304===p.status)b(r(f.type,a));else{var h=Error(p.responseText),k;for(k in a)h[k]=a[k];d(h)}}catch(G){d(G)}};n&&null!=f.data?p.send(f.data):p.send()}))},jsonp:function(f){return d(new b(function(b,
d){var k=f.callbackName||"_mithril_"+Math.round(1E16*Math.random())+"_"+m++,p=a.document.createElement("script");a[k]=function(d){p.parentNode.removeChild(p);b(r(f.type,d));delete a[k]};p.onerror=function(){p.parentNode.removeChild(p);d(Error("JSONP request failed"));delete a[k]};null==f.data&&(f.data={});f.url=l(f.url,f.data);f.data[f.callbackKey||"callback"]=k;p.src=h(f.url,f.data);a.document.documentElement.appendChild(p)}))},setCompletionCallback:function(a){v=a}}}(window,C),K=function(){var a=
[];return{subscribe:a.push.bind(a),unsubscribe:function(b){b=a.indexOf(b);-1<b&&a.splice(b,1)},publish:function(){for(var b=0;b<a.length;b++)a[b].apply(this,arguments)}}}();J.setCompletionCallback(K.publish);t.Promise=C;var C=function(a){function b(c,g,a,b,d,f,h){for(;a<b;a++){var e=g[a];null!=e&&r(c,k(e,d,h),f)}}function k(c,g,a){var e=c.tag;null!=c.attrs&&I(c.attrs,c,g);if("string"===typeof e)switch(e){case "#":return c.dom=y.createTextNode(c.children);case "<":return d(c);case "[":var f=y.createDocumentFragment();
null!=c.children&&(e=c.children,b(f,e,0,e.length,g,null,a));c.dom=f.firstChild;c.domSize=f.childNodes.length;return f;default:var h=c.tag;switch(c.tag){case "svg":a="http://www.w3.org/2000/svg";break;case "math":a="http://www.w3.org/1998/Math/MathML"}var n=(e=c.attrs)&&e.is,h=a?n?y.createElementNS(a,h,{is:n}):y.createElementNS(a,h):n?y.createElement(h,{is:n}):y.createElement(h);c.dom=h;if(null!=e)for(f in n=a,e)p(c,f,null,e[f],n);null!=c.attrs&&null!=c.attrs.contenteditable?t(c):(null!=c.text&&(""!==
c.text?h.textContent=c.text:c.children=[m("#",void 0,void 0,c.text,void 0,void 0)]),null!=c.children&&(f=c.children,b(h,f,0,f.length,g,null,a),g=c.attrs,"select"===c.tag&&null!=g&&("value"in g&&p(c,"value",null,g.value,void 0),"selectedIndex"in g&&p(c,"selectedIndex",null,g.selectedIndex,void 0))));return h}else{c.state||(c.state={});O(c.state,c.tag);f=c.tag.view;if(null!=f.reentrantLock)c=G;else if(f.reentrantLock=!0,I(c.tag,c,g),c.instance=m.normalize(f.call(c.state,c)),f.reentrantLock=null,null!=
c.instance){if(c.instance===c)throw Error("A view cannot return the vnode it received as arguments");g=k(c.instance,g,a);c.dom=c.instance.dom;c.domSize=null!=c.dom?c.instance.domSize:0;c=g}else c.domSize=0,c=G;return c}}function d(c){var g={caption:"table",thead:"table",tbody:"table",tfoot:"table",tr:"tbody",th:"tr",td:"tr",colgroup:"table",col:"colgroup"}[(c.children.match(/^\s*?<(\w+)/im)||[])[1]]||"div",g=y.createElement(g);g.innerHTML=c.children;c.dom=g.firstChild;c.domSize=g.childNodes.length;
c=y.createDocumentFragment();for(var a;a=g.firstChild;)c.appendChild(a);return c}function l(c,a,e,f,d,p){if(a!==e&&(null!=a||null!=e))if(null==a)b(c,e,0,e.length,f,d,void 0);else if(null==e)n(a,0,a.length,e);else{var g;a:{if(null!=a.pool&&Math.abs(a.pool.length-e.length)<=Math.abs(a.length-e.length)&&(g=e[0]&&e[0].children&&e[0].children.length||0,Math.abs((a.pool[0]&&a.pool[0].children&&a.pool[0].children.length||0)-g)<=Math.abs((a[0]&&a[0].children&&a[0].children.length||0)-g))){g=!0;break a}g=
!1}g&&(a=a.concat(a.pool));if(a.length===e.length&&null!=e[0]&&null==e[0].key)for(var l=0;l<a.length;l++)a[l]===e[l]||null==a[l]&&null==e[l]||(null==a[l]?r(c,k(e[l],f,p),q(a,l+1,d)):null==e[l]?n(a,l,l+1,e):h(c,a[l],e[l],f,q(a,l+1,d),g,p),g&&a[l].tag===e[l].tag&&r(c,u(a[l]),q(a,l+1,d)));else{for(var A=l=0,v=a.length-1,B=e.length-1,w;v>=l&&B>=A;){var x=a[l],m=e[A];if(x!==m||g)if(null!=x&&null!=m&&x.key===m.key)l++,A++,h(c,x,m,f,q(a,l,d),g,p),g&&x.tag===m.tag&&r(c,u(x),d);else if(x=a[v],x!==m||g)if(null!=
x&&null!=m&&x.key===m.key)h(c,x,m,f,q(a,v+1,d),g,p),(g||A<B)&&r(c,u(x),q(a,l,d)),v--,A++;else break;else v--,A++;else l++,A++}for(;v>=l&&B>=A;){x=a[v];m=e[B];if(x!==m||g)if(null!=x&&null!=m&&x.key===m.key)h(c,x,m,f,q(a,v+1,d),g,p),g&&x.tag===m.tag&&r(c,u(x),d),null!=x.dom&&(d=x.dom),v--;else{if(!w){w=a;var x=v,D={},t;for(t=0;t<x;t++){var y=w[t];null!=y&&(y=y.key,null!=y&&(D[y]=t))}w=D}null!=m&&(x=w[m.key],null!=x?(D=a[x],h(c,D,m,f,q(a,v+1,d),g,p),r(c,u(D),d),a[x].skip=!0,null!=D.dom&&(d=D.dom)):(m=
k(m,f,void 0),r(c,m,d),d=m))}else v--;B--;if(B<A)break}b(c,e,A,B+1,f,d,p);n(a,l,v+1,e)}}}function h(a,g,e,b,n,v,w){var c=g.tag;if(c===e.tag){e.state=g.state;e.events=g.events;var A;var B;null!=e.attrs&&"function"===typeof e.attrs.onbeforeupdate&&(A=e.attrs.onbeforeupdate.call(e.state,e,g));"string"!==typeof e.tag&&"function"===typeof e.tag.onbeforeupdate&&(B=e.tag.onbeforeupdate.call(e.state,e,g));void 0===A&&void 0===B||A||B?A=!1:(e.dom=g.dom,e.domSize=g.domSize,e.instance=g.instance,A=!0);if(!A)if(null!=
e.attrs&&z(e.attrs,e,b,v),"string"===typeof c)switch(c){case "#":g.children.toString()!==e.children.toString()&&(g.dom.nodeValue=e.children);e.dom=g.dom;break;case "<":g.children!==e.children?(u(g),r(a,d(e),n)):(e.dom=g.dom,e.domSize=g.domSize);break;case "[":l(a,g.children,e.children,b,n,w);g=0;b=e.children;e.dom=null;if(null!=b){for(var q=0;q<b.length;q++)a=b[q],null!=a&&null!=a.dom&&(null==e.dom&&(e.dom=a.dom),g+=a.domSize||1);1!==g&&(e.domSize=g)}break;default:a=w;n=e.dom=g.dom;switch(e.tag){case "svg":a=
"http://www.w3.org/2000/svg";break;case "math":a="http://www.w3.org/1998/Math/MathML"}"textarea"===e.tag&&(null==e.attrs&&(e.attrs={}),null!=e.text&&(e.attrs.value=e.text,e.text=void 0));v=g.attrs;w=e.attrs;c=a;if(null!=w)for(q in w)p(e,q,v&&v[q],w[q],c);if(null!=v)for(q in v)null!=w&&q in w||("className"===q&&(q="class"),"o"!==q[0]||"n"!==q[1]||M(q)?"key"!==q&&e.dom.removeAttribute(q):E(e,q,void 0));null!=e.attrs&&null!=e.attrs.contenteditable?t(e):null!=g.text&&null!=e.text&&""!==e.text?g.text.toString()!==
e.text.toString()&&(g.dom.firstChild.nodeValue=e.text):(null!=g.text&&(g.children=[m("#",void 0,void 0,g.text,void 0,g.dom.firstChild)]),null!=e.text&&(e.children=[m("#",void 0,void 0,e.text,void 0,void 0)]),l(n,g.children,e.children,b,null,a))}else e.instance=m.normalize(e.tag.view.call(e.state,e)),z(e.tag,e,b,v),null!=e.instance?(null==g.instance?r(a,k(e.instance,b,w),n):h(a,g.instance,e.instance,b,n,v,w),e.dom=e.instance.dom,e.domSize=e.instance.domSize):null!=g.instance?(f(g.instance,null),e.dom=
void 0,e.domSize=0):(e.dom=g.dom,e.domSize=g.domSize)}else f(g,null),r(a,k(e,b,void 0),n)}function u(a){var c=a.domSize;if(null!=c||null==a.dom){var e=y.createDocumentFragment();if(0<c){for(a=a.dom;--c;)e.appendChild(a.nextSibling);e.insertBefore(a,e.firstChild)}return e}return a.dom}function q(a,g,e){for(;g<a.length;g++)if(null!=a[g]&&null!=a[g].dom)return a[g].dom;return e}function r(a,g,e){e&&e.parentNode?a.insertBefore(g,e):a.appendChild(g)}function t(a){var c=a.children;if(null!=c&&1===c.length&&
"<"===c[0].tag)c=c[0].children,a.dom.innerHTML!==c&&(a.dom.innerHTML=c);else if(null!=c||null!=a.text)throw Error("Child node of a contenteditable must be trusted");}function n(a,g,e,b){for(;g<e;g++){var c=a[g];null!=c&&(c.skip?c.skip=!1:f(c,b))}}function v(a){var c=!1;return function(){c||(c=!0,a())}}function f(a,g){function c(){if(++d===b&&(w(a),a.dom)){var c=a.domSize||1;if(1<c)for(var e=a.dom;--c;){var f=e.nextSibling,h=f.parentNode;null!=h&&h.removeChild(f)}c=a.dom;e=c.parentNode;null!=e&&e.removeChild(c);
if(c=null!=g&&null==a.domSize)c=a.attrs,c=!(null!=c&&(c.oncreate||c.onupdate||c.onbeforeremove||c.onremove));c&&"string"===typeof a.tag&&(g.pool?g.pool.push(a):g.pool=[a])}}var b=1,d=0;a.attrs&&a.attrs.onbeforeremove&&(b++,a.attrs.onbeforeremove.call(a.state,a,v(c)));"string"!==typeof a.tag&&a.tag.onbeforeremove&&(b++,a.tag.onbeforeremove.call(a.state,a,v(c)));c()}function w(a){a.attrs&&a.attrs.onremove&&a.attrs.onremove.call(a.state,a);"string"!==typeof a.tag&&a.tag.onremove&&a.tag.onremove.call(a.state,
a);if(null!=a.instance)w(a.instance);else if(a=a.children,a instanceof Array)for(var c=0;c<a.length;c++){var e=a[c];null!=e&&w(e)}}function p(a,g,e,b,d){var c=a.dom;if("key"!==g&&(e!==b||"value"===g||"checked"===g||"selectedIndex"===g||"selected"===g&&a.dom===y.activeElement||"object"===typeof b)&&"undefined"!==typeof b&&!M(g)){var f=g.indexOf(":");if(-1<f&&"xlink"===g.substr(0,f))c.setAttributeNS("http://www.w3.org/1999/xlink",g.slice(f+1),b);else if("o"===g[0]&&"n"===g[1]&&"function"===typeof b)E(a,
g,b);else if("style"===g)if(a=e,a===b&&(c.style.cssText="",a=null),null==b)c.style.cssText="";else if("string"===typeof b)c.style.cssText=b;else{"string"===typeof a&&(c.style.cssText="");for(var h in b)c.style[h]=b[h];if(null!=a&&"string"!==typeof a)for(h in a)h in b||(c.style[h]="")}else if(g in c&&"href"!==g&&"list"!==g&&"form"!==g&&"width"!==g&&"height"!==g&&void 0===d){if("input"!==a.tag||"value"!==g||a.dom.value!==b||a.dom!==y.activeElement)c[g]=b}else"boolean"===typeof b?b?c.setAttribute(g,
""):c.removeAttribute(g):c.setAttribute("className"===g?"class":g,b)}}function M(a){return"oninit"===a||"oncreate"===a||"onupdate"===a||"onremove"===a||"onbeforeremove"===a||"onbeforeupdate"===a}function E(a,b,e){var c=a.dom,g=function(a){var b=e.call(c,a);"function"===typeof C&&C.call(c,a);return b};if(b in c)c[b]="function"===typeof e?g:null;else{var d=b.slice(2);void 0===a.events&&(a.events={});null!=a.events[b]&&c.removeEventListener(d,a.events[b],!1);"function"===typeof e&&(a.events[b]=g,c.addEventListener(d,
a.events[b],!1))}}function I(a,b,e){"function"===typeof a.oninit&&a.oninit.call(b.state,b);"function"===typeof a.oncreate&&e.push(a.oncreate.bind(b.state,b))}function z(a,b,e,d){d?I(a,b,e):"function"===typeof a.onupdate&&e.push(a.onupdate.bind(b.state,b))}function O(a,b){Object.keys(b).forEach(function(c){a[c]=b[c]})}var y=a.document,G=y.createDocumentFragment(),C;return{render:function(a,b){if(!a)throw Error("Ensure the DOM element being passed to m.route/m.mount/m.render is not undefined.");var c=
[],d=y.activeElement;null==a.vnodes&&(a.textContent="");b instanceof Array||(b=[b]);l(a,a.vnodes,m.normalizeChildren(b),c,null,void 0);a.vnodes=b;for(var f=0;f<c.length;f++)c[f]();y.activeElement!==d&&d.focus()},setEventCallback:function(a){return C=a}}}(window),P=function(a){var b=0,k=null,d="function"===typeof requestAnimationFrame?requestAnimationFrame:setTimeout;return function(l){var h=Date.now();!0===l||0===b||16<=h-b?(b=h,a()):null===k&&(k=d(function(){k=null;a();b=Date.now()},16-(h-b)))}},
Q=function(a,b,k,d){d=P(d);null!=b&&b.setEventCallback(function(a){!1!==a.redraw&&k.publish()});null!=k&&(a.redraw&&k.unsubscribe(a.redraw),k.subscribe(d));return a.redraw=d};t.mount=function(a,b){return function(k,d){if(null===d)a.render(k,[]),b.unsubscribe(k.redraw),delete k.redraw;else{if(null==d.view)throw Error("m.mount(element, component) expects a component, not a vnode");Q(k,a,b,function(){a.render(k,m(d,void 0,void 0,void 0,void 0,void 0))})()}}}(C,K);var L=function(a){if(""===a||null==a)return{};
"?"===a.charAt(0)&&(a=a.slice(1));a=a.split("&");for(var b={},k={},d=0;d<a.length;d++){var l=a[d].split("="),h=decodeURIComponent(l[0]),l=2===l.length?decodeURIComponent(l[1]):"";"true"===l?l=!0:"false"===l&&(l=!1);var m=h.split(/\]\[?|\[/),q=b;-1<h.indexOf("[")&&m.pop();for(var r=0;r<m.length;r++){var h=m[r],t=m[r+1],t=""==t||!isNaN(parseInt(t,10)),n=r===m.length-1;""===h&&(h=m.slice(0,r).join(),null==k[h]&&(k[h]=0),h=k[h]++);null==q[h]&&(q[h]=n?l:t?[]:{});q=q[h]}}return b},R=function(a){function b(b){var d=
a.location[b].replace(/(?:%[a-f89][a-f0-9])+/gim,decodeURIComponent);"pathname"===b&&"/"!==d[0]&&(d="/"+d);return d}function k(a){return function(){null==t&&(t=q(function(){t=null;a()}))}}function d(a,b,d){var f=a.indexOf("?"),h=a.indexOf("#"),l=-1<f?f:-1<h?h:a.length;if(-1<f){var f=L(a.slice(f+1,-1<h?h:a.length)),k;for(k in f)b[k]=f[k]}if(-1<h)for(k in b=L(a.slice(h+1)),b)d[k]=b[k];return a.slice(0,l)}function l(){switch(r.charAt(0)){case "#":return b("hash").slice(r.length);case "?":return b("search").slice(r.length)+
b("hash");default:return b("pathname").slice(r.length)+b("search")+b("hash")}}function h(b,h,f){var l={},k={};b=d(b,l,k);if(null!=h){for(var n in h)l[n]=h[n];b=b.replace(/:([^\/]+)/g,function(a,b){delete l[b];return h[b]})}(n=F(l))&&(b+="?"+n);(k=F(k))&&(b+="#"+k);m?(f&&f.replace?a.history.replaceState(null,null,r+b):a.history.pushState(null,null,r+b),a.onpopstate()):a.location.href=r+b}var m="function"===typeof a.history.pushState,q="function"===typeof setImmediate?setImmediate:setTimeout,r="#!",
t;return{setPrefix:function(a){r=a},getPath:l,setPath:h,defineRoutes:function(b,h,f){function n(){var a=l(),k={},m=d(a,k,k),n;for(n in b){var q=new RegExp("^"+n.replace(/:[^\/]+?\.{3}/g,"(.*?)").replace(/:[^\/]+/g,"([^\\/]+)")+"/?$");if(q.test(m)){m.replace(q,function(){for(var d=n.match(/:[^\/]+/g)||[],f=[].slice.call(arguments,1,-2),l=0;l<d.length;l++)k[d[l].replace(/:|\./g,"")]=decodeURIComponent(f[l]);h(b[n],k,a,n)});return}}f(a,k)}m?a.onpopstate=k(n):"#"===r.charAt(0)&&(a.onhashchange=n);n();
return n},link:function(a){a.dom.setAttribute("href",r+a.attrs.href);a.dom.onclick=function(a){a.ctrlKey||a.metaKey||a.shiftKey||2===a.which||(a.preventDefault(),a.redraw=!1,a=this.getAttribute("href"),0===a.indexOf(r)&&(a=a.slice(r.length)),h(a,void 0,void 0))}}}};t.route=function(a,b){function k(a){return a}var d=R(a),l,h,t,q,r,z={view:function(){return[t(m(h,null,q,void 0,void 0,void 0))]}},n=function(a,f,m){h="div";t=k;q=null;b(a,z);d.defineRoutes(m,function(b,d,f){var m="function"!==typeof b.view,
n=k,p=l=function(k){p===l&&(l=null,h=null!=k?k:m?"div":b,t=n,q=d,r=f,a.redraw(!0))},u=function(){p()};m&&("function"===typeof b.render&&(n=b.render.bind(b)),"function"===typeof b.onmatch&&(u=b.onmatch));u.call(b,p,d,f)},function(){d.setPath(f,null,{replace:!0})})};n.link=d.link;n.prefix=d.setPrefix;n.set=d.setPath;n.get=function(){return r};return n}(window,t.mount);t.withAttr=function(a,b,k){return function(d){return b.call(k||this,a in d.currentTarget?d.currentTarget[a]:d.currentTarget.getAttribute(a))}};
t.render=C.render;t.redraw=K.publish;t.request=J.request;t.jsonp=J.jsonp;t.parseQueryString=L;t.buildQueryString=F;t.version="1.0.0-rc.3";"undefined"!==typeof module?module.exports=t:window.m=t};