fix merge conflicts for #1610
This commit is contained in:
commit
e019c8131c
6 changed files with 155 additions and 57 deletions
24
mithril.js
24
mithril.js
|
|
@ -203,6 +203,7 @@ var buildQueryString = function(object) {
|
|||
else args.push(encodeURIComponent(key0) + (value != null && value !== "" ? "=" + encodeURIComponent(value) : ""))
|
||||
}
|
||||
}
|
||||
var FILE_PROTOCOL_REGEX = new RegExp('^file://', 'i')
|
||||
var _8 = function($window, Promise) {
|
||||
var callbackCount = 0
|
||||
var oncompletion
|
||||
|
|
@ -238,14 +239,20 @@ var _8 = function($window, Promise) {
|
|||
var promise0 = new Promise(function(resolve, reject) {
|
||||
if (args.method == null) args.method = "GET"
|
||||
args.method = args.method.toUpperCase()
|
||||
var useBody = typeof args.useBody === "boolean" ? args.useBody : args.method !== "GET" && args.method !== "TRACE"
|
||||
var useBody = (args.method === "GET" || args.method === "TRACE") ? false : (typeof args.useBody === "boolean" ? args.useBody : true)
|
||||
if (typeof args.serialize !== "function") args.serialize = typeof FormData !== "undefined" && args.data instanceof FormData ? function(value) {return value} : JSON.stringify
|
||||
if (typeof args.deserialize !== "function") args.deserialize = deserialize
|
||||
if (typeof args.extract !== "function") args.extract = extract
|
||||
args.url = interpolate(args.url, args.data)
|
||||
if (useBody) args.data = args.serialize(args.data)
|
||||
else args.url = assemble(args.url, args.data)
|
||||
var xhr = new $window.XMLHttpRequest()
|
||||
var xhr = new $window.XMLHttpRequest(),
|
||||
aborted = false,
|
||||
_abort = xhr.abort
|
||||
xhr.abort = function abort() {
|
||||
aborted = true
|
||||
_abort.call(xhr)
|
||||
}
|
||||
xhr.open(args.method, args.url, typeof args.async === "boolean" ? args.async : true, typeof args.user === "string" ? args.user : undefined, typeof args.password === "string" ? args.password : undefined)
|
||||
if (args.serialize === JSON.stringify && useBody) {
|
||||
xhr.setRequestHeader("Content-Type", "application/json; charset=utf-8")
|
||||
|
|
@ -259,12 +266,12 @@ var _8 = function($window, Promise) {
|
|||
}
|
||||
if (typeof args.config === "function") xhr = args.config(xhr, args) || xhr
|
||||
xhr.onreadystatechange = function() {
|
||||
// Don't throw errors on xhr.abort(). XMLHttpRequests ends up in a state of
|
||||
// xhr.status == 0 and xhr.readyState == 4 if aborted after open, but before completion.
|
||||
if (xhr.status && xhr.readyState === 4) {
|
||||
// Don't throw errors on xhr.abort().
|
||||
if(aborted) return
|
||||
if (xhr.readyState === 4) {
|
||||
try {
|
||||
var response = (args.extract !== extract) ? args.extract(xhr, args) : args.deserialize(args.extract(xhr, args))
|
||||
if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {
|
||||
if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304 || FILE_PROTOCOL_REGEX.test(args.url)) {
|
||||
resolve(cast(args.type, response))
|
||||
}
|
||||
else {
|
||||
|
|
@ -795,6 +802,11 @@ var coreRenderer = function($window) {
|
|||
if (vnode.tag === "select" && key2 === "value" && vnode.dom.value == value && vnode.dom === $doc.activeElement) return
|
||||
//setting option[value] to same value while having select open blinks select dropdown in Chrome
|
||||
if (vnode.tag === "option" && key2 === "value" && vnode.dom.value == value) return
|
||||
// If you assign an input type1 that is not supported by IE 11 with an assignment expression, an error0 will occur.
|
||||
if (vnode.tag === "input" && key2 === "type") {
|
||||
element.setAttribute(key2, value)
|
||||
return
|
||||
}
|
||||
element[key2] = value
|
||||
}
|
||||
else {
|
||||
|
|
|
|||
85
mithril.min.js
vendored
85
mithril.min.js
vendored
|
|
@ -1,42 +1,43 @@
|
|||
new function(){function w(a,d,h,f,g,l){return{tag:a,key:d,attrs:h,children:f,text:g,dom:l,domSize:void 0,state:{},events:void 0,instance:void 0,skip:!1}}function z(a){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&&void 0===H[a]){for(var d,h,f=[],g={};d=O.exec(a);){var l=d[1],k=d[2];""===l&&""!==k?h=k:"#"===l?g.id=k:"."===l?f.push(k):"["===d[3][0]&&((l=d[6])&&(l=l.replace(/\\(["'])/g,
|
||||
"$1").replace(/\\\\/g,"\\")),"class"===d[4]?f.push(l):g[d[4]]=l||!0)}0<f.length&&(g.className=f.join(" "));H[a]=function(a,d){var l=!1,c,f,n=a.className||a["class"],m;for(m in g)a[m]=g[m];void 0!==n&&(void 0!==a["class"]&&(a["class"]=void 0,a.className=n),void 0!==g.className&&(a.className=g.className+" "+n));for(m in a)if("key"!==m){l=!0;break}Array.isArray(d)&&1==d.length&&null!=d[0]&&"#"===d[0].tag?f=d[0].children:c=d;return w(h||"div",a.key,l?a:void 0,c,f,void 0)}}var m;null==arguments[1]||"object"===
|
||||
typeof arguments[1]&&void 0===arguments[1].tag&&!Array.isArray(arguments[1])?(m=arguments[1],f=2):f=1;if(arguments.length===f+1)d=Array.isArray(arguments[f])?arguments[f]:[arguments[f]];else for(d=[];f<arguments.length;f++)d.push(arguments[f]);return"string"===typeof a?H[a](m||{},w.normalizeChildren(d)):w(a,m&&m.key,m||{},w.normalizeChildren(d),void 0,void 0)}function P(a){var d=0,h=null,f="function"===typeof requestAnimationFrame?requestAnimationFrame:setTimeout;return function(){var g=Date.now();
|
||||
0===d||16<=g-d?(d=g,a()):null===h&&(h=f(function(){h=null;a();d=Date.now()},16-(g-d)))}}w.normalize=function(a){return Array.isArray(a)?w("[",void 0,void 0,w.normalizeChildren(a),void 0,void 0):null!=a&&"object"!==typeof a?w("#",void 0,void 0,!1===a?"":a,void 0,void 0):a};w.normalizeChildren=function(a){for(var d=0;d<a.length;d++)a[d]=w.normalize(a[d]);return a};var O=/(?:(^|#|\.)([^#\.\[\]]+))|(\[(.+?)(?:\s*=\s*("|'|)((?:\\["'\]]|.)*?)\5)?\])/g,H={};z.trust=function(a){null==a&&(a="");return w("<",
|
||||
void 0,void 0,a,void 0,void 0)};z.fragment=function(a,d){return w("[",a.key,a,w.normalizeChildren(d),void 0,void 0)};var v=function(a){function d(a,c){return function y(d){var k;try{if(!c||null==d||"object"!==typeof d&&"function"!==typeof d||"function"!==typeof(k=d.then))t(function(){c||0!==a.length||console.error("Possible unhandled promise rejection:",d);for(var f=0;f<a.length;f++)a[f](d);g.length=0;l.length=0;n.state=c;n.retry=function(){y(d)}});else{if(d===f)throw new TypeError("Promise can't be resolved w/ itself");
|
||||
h(k.bind(d))}}catch(Q){m(Q)}}}function h(a){function c(c){return function(a){0<d++||c(a)}}var d=0,f=c(m);try{a(c(k),f)}catch(D){f(D)}}if(!(this instanceof v))throw Error("Promise must be called with `new`");if("function"!==typeof a)throw new TypeError("executor must be a function");var f=this,g=[],l=[],k=d(g,!0),m=d(l,!1),n=f._instance={resolvers:g,rejectors:l},t="function"===typeof setImmediate?setImmediate:setTimeout;h(a)};v.prototype.then=function(a,d){function h(a,d,h,k){d.push(function(c){if("function"!==
|
||||
typeof a)h(c);else try{g(a(c))}catch(A){l&&l(A)}});"function"===typeof f.retry&&k===f.state&&f.retry()}var f=this._instance,g,l,k=new v(function(a,d){g=a;l=d});h(a,f.resolvers,g,!0);h(d,f.rejectors,l,!1);return k};v.prototype["catch"]=function(a){return this.then(null,a)};v.resolve=function(a){return a instanceof v?a:new v(function(d){d(a)})};v.reject=function(a){return new v(function(d,h){h(a)})};v.all=function(a){return new v(function(d,h){var f=a.length,g=0,l=[];if(0===a.length)d([]);else for(var k=
|
||||
0;k<a.length;k++)(function(k){function n(a){g++;l[k]=a;g===f&&d(l)}null==a[k]||"object"!==typeof a[k]&&"function"!==typeof a[k]||"function"!==typeof a[k].then?n(a[k]):a[k].then(n,h)})(k)})};v.race=function(a){return new v(function(d,h){for(var f=0;f<a.length;f++)a[f].then(d,h)})};"undefined"!==typeof window?("undefined"===typeof window.Promise&&(window.Promise=v),v=window.Promise):"undefined"!==typeof global&&("undefined"===typeof global.Promise&&(global.Promise=v),v=global.Promise);var F=function(a){function d(a,
|
||||
f){if(Array.isArray(f))for(var g=0;g<f.length;g++)d(a+"["+g+"]",f[g]);else if("[object Object]"===Object.prototype.toString.call(f))for(g in f)d(a+"["+g+"]",f[g]);else h.push(encodeURIComponent(a)+(null!=f&&""!==f?"="+encodeURIComponent(f):""))}if("[object Object]"!==Object.prototype.toString.call(a))return"";var h=[],f;for(f in a)d(f,a[f]);return h.join("&")},K=function(a,d){function h(){function c(){0===--a&&"function"===typeof x&&x()}var a=0;return function D(d){var f=d.then;d.then=function(){a++;
|
||||
var g=f.apply(d,arguments);g.then(c,function(d){c();if(0===a)throw d;});return D(g)};return d}}function f(c,a){if("string"===typeof c){var d=c;c=a||{};null==c.url&&(c.url=d)}return c}function g(c,a){if(null==a)return c;for(var d=c.match(/:[^\/]+/gi)||[],f=0;f<d.length;f++){var g=d[f].slice(1);null!=a[g]&&(c=c.replace(d[f],a[g]))}return c}function l(c,a){var d=F(a);if(""!==d){var f=0>c.indexOf("?")?"?":"&";c+=f+d}return c}function k(c){try{return""!==c?JSON.parse(c):null}catch(A){throw Error(c);}}
|
||||
function m(c){return c.responseText}function n(c,a){if("function"===typeof c)if(Array.isArray(a))for(var d=0;d<a.length;d++)a[d]=new c(a[d]);else return new c(a);return a}var t=0,x;return{request:function(c,x){var t=h();c=f(c,x);var A=new d(function(d,f){null==c.method&&(c.method="GET");c.method=c.method.toUpperCase();var h="boolean"===typeof c.useBody?c.useBody:"GET"!==c.method&&"TRACE"!==c.method;"function"!==typeof c.serialize&&(c.serialize="undefined"!==typeof FormData&&c.data instanceof FormData?
|
||||
function(a){return a}:JSON.stringify);"function"!==typeof c.deserialize&&(c.deserialize=k);"function"!==typeof c.extract&&(c.extract=m);c.url=g(c.url,c.data);h?c.data=c.serialize(c.data):c.url=l(c.url,c.data);var p=new a.XMLHttpRequest;p.open(c.method,c.url,"boolean"===typeof c.async?c.async:!0,"string"===typeof c.user?c.user:void 0,"string"===typeof c.password?c.password:void 0);c.serialize===JSON.stringify&&h&&p.setRequestHeader("Content-Type","application/json; charset=utf-8");c.deserialize===
|
||||
k&&p.setRequestHeader("Accept","application/json, text/*");c.withCredentials&&(p.withCredentials=c.withCredentials);for(var x in c.headers)({}).hasOwnProperty.call(c.headers,x)&&p.setRequestHeader(x,c.headers[x]);"function"===typeof c.config&&(p=c.config(p,c)||p);p.onreadystatechange=function(){if(p.status&&4===p.readyState)try{var a=c.extract!==m?c.extract(p,c):c.deserialize(c.extract(p,c));if(200<=p.status&&300>p.status||304===p.status)d(n(c.type,a));else{var q=Error(p.responseText),b;for(b in a)q[b]=
|
||||
a[b];f(q)}}catch(e){f(e)}};h&&null!=c.data?p.send(c.data):p.send()});return!0===c.background?A:t(A)},jsonp:function(c,k){var m=h();c=f(c,k);var x=new d(function(d,f){var h=c.callbackName||"_mithril_"+Math.round(1E16*Math.random())+"_"+t++,k=a.document.createElement("script");a[h]=function(f){k.parentNode.removeChild(k);d(n(c.type,f));delete a[h]};k.onerror=function(){k.parentNode.removeChild(k);f(Error("JSONP request failed"));delete a[h]};null==c.data&&(c.data={});c.url=g(c.url,c.data);c.data[c.callbackKey||
|
||||
"callback"]=h;k.src=l(c.url,c.data);a.document.documentElement.appendChild(k)});return!0===c.background?x:m(x)},setCompletionCallback:function(a){x=a}}}(window,v),N=function(a){function d(a,b,e,c,d,f,g){for(;e<c;e++){var q=b[e];null!=q&&h(a,q,d,g,f)}}function h(a,b,c,r,g){var q=b.tag;null!=b.attrs&&v(b.attrs,b,c);if("string"===typeof q)switch(q){case "#":return b.dom=p.createTextNode(b.children),n(a,b.dom,g),b.dom;case "<":return f(a,b,g);case "[":var e=p.createDocumentFragment();null!=b.children&&
|
||||
(q=b.children,d(e,q,0,q.length,c,null,r));b.dom=e.firstChild;b.domSize=e.childNodes.length;n(a,e,g);return e;default:var k=b.tag;switch(b.tag){case "svg":r="http://www.w3.org/2000/svg";break;case "math":r="http://www.w3.org/1998/Math/MathML"}var l=(q=b.attrs)&&q.is,k=r?l?p.createElementNS(r,k,{is:l}):p.createElementNS(r,k):l?p.createElement(k,{is:l}):p.createElement(k);b.dom=k;if(null!=q)for(e in l=r,q)y(b,e,null,q[e],l);n(a,k,g);null!=b.attrs&&null!=b.attrs.contenteditable?t(b):(null!=b.text&&(""!==
|
||||
b.text?k.textContent=b.text:b.children=[w("#",void 0,void 0,b.text,void 0,void 0)]),null!=b.children&&(a=b.children,d(k,a,0,a.length,c,null,r),a=b.attrs,"select"===b.tag&&null!=a&&("value"in a&&y(b,"value",null,a.value,void 0),"selectedIndex"in a&&y(b,"selectedIndex",null,a.selectedIndex,void 0))));return k}else{a:{if("function"===typeof b.tag){b.state=null;e=b.tag;if(null!=e.$$reentrantLock$$){b=J;break a}e.$$reentrantLock$$=!0;b.state=null!=b.tag.prototype&&"function"===typeof b.tag.prototype.view?
|
||||
new b.tag(b):b.tag(b)}else{b.state=Object.create(b.tag);e=b.state.view;if(null!=e.$$reentrantLock$$){b=J;break a}e.$$reentrantLock$$=!0}v(b.state,b,c);b.instance=w.normalize(b.state.view(b));e.$$reentrantLock$$=null;if(null!=b.instance){if(b.instance===b)throw Error("A view cannot return the vnode it received as arguments");c=h(a,b.instance,c,r,g);b.dom=b.instance.dom;b.domSize=null!=b.dom?b.instance.domSize:0;n(a,c,g);b=c}else b.domSize=0,b=J}return b}}function f(a,b,c){var e={caption:"table",thead:"table",
|
||||
tbody:"table",tfoot:"table",tr:"tbody",th:"tr",td:"tr",colgroup:"table",col:"colgroup"}[(b.children.match(/^\s*?<(\w+)/im)||[])[1]]||"div",e=p.createElement(e);e.innerHTML=b.children;b.dom=e.firstChild;b.domSize=e.childNodes.length;b=p.createDocumentFragment();for(var q;q=e.firstChild;)b.appendChild(q);n(a,b,c);return b}function g(a,b,e,c,f,g,p){if(b!==e&&(null!=b||null!=e))if(null==b)d(a,e,0,e.length,f,g,void 0);else if(null==e)x(b,0,b.length,e);else{if(b.length===e.length){for(var q=!1,r=0;r<e.length;r++)if(null!=
|
||||
e[r]&&null!=b[r]){q=null==e[r].key&&null==b[r].key;break}if(q){for(r=0;r<b.length;r++)b[r]!==e[r]&&(null==b[r]&&null!=e[r]?h(a,e[r],f,p,m(b,r+1,g)):null==e[r]?x(b,r,r+1,e):l(a,b[r],e[r],f,m(b,r+1,g),c,p));return}}if(!c)a:{if(null!=b.pool&&Math.abs(b.pool.length-e.length)<=Math.abs(b.length-e.length)&&(c=e[0]&&e[0].children&&e[0].children.length||0,Math.abs((b.pool[0]&&b.pool[0].children&&b.pool[0].children.length||0)-c)<=Math.abs((b[0]&&b[0].children&&b[0].children.length||0)-c))){c=!0;break a}c=
|
||||
!1}if(c){var t=b.pool;b=b.concat(b.pool)}for(var r=q=0,B=b.length-1,A=e.length-1,E;B>=q&&A>=r;){var u=b[q],y=e[r];if(u!==y||c)if(null==u)q++;else if(null==y)r++;else if(u.key===y.key){var C=null!=t&&q>=b.length-t.length||null==t&&c;q++;r++;l(a,u,y,f,m(b,q,g),C,p);c&&u.tag===y.tag&&n(a,k(u),g)}else if(u=b[B],u!==y||c)if(null==u)B--;else if(null==y)r++;else if(u.key===y.key)C=null!=t&&B>=b.length-t.length||null==t&&c,l(a,u,y,f,m(b,B+1,g),C,p),(c||r<A)&&n(a,k(u),m(b,q,g)),B--,r++;else break;else B--,
|
||||
r++;else q++,r++}for(;B>=q&&A>=r;){u=b[B];y=e[A];if(u!==y||c)if(null==u)B--;else{if(null!=y)if(u.key===y.key)C=null!=t&&B>=b.length-t.length||null==t&&c,l(a,u,y,f,m(b,B+1,g),C,p),c&&u.tag===y.tag&&n(a,k(u),g),null!=u.dom&&(g=u.dom),B--;else{if(!E){E=b;var u=B,C={},v;for(v=0;v<u;v++){var w=E[v];null!=w&&(w=w.key,null!=w&&(C[w]=v))}E=C}null!=y&&(u=E[y.key],null!=u?(C=b[u],l(a,C,y,f,m(b,B+1,g),c,p),n(a,k(C),g),b[u].skip=!0,null!=C.dom&&(g=C.dom)):g=h(a,y,f,void 0,g))}A--}else B--,A--;if(A<r)break}d(a,
|
||||
e,r,A+1,f,g,p);x(b,q,B+1,e)}}function l(a,b,e,d,n,p,u){var q=b.tag;if(q===e.tag){e.state=b.state;e.events=b.events;var r;var x;null!=e.attrs&&"function"===typeof e.attrs.onbeforeupdate&&(r=e.attrs.onbeforeupdate.call(e.state,e,b));"string"!==typeof e.tag&&"function"===typeof e.state.onbeforeupdate&&(x=e.state.onbeforeupdate(e,b));void 0===r&&void 0===x||r||x?r=!1:(e.dom=b.dom,e.domSize=b.domSize,e.instance=b.instance,r=!0);if(!r)if(null!=e.attrs&&z(e.attrs,e,d,p),"string"===typeof q)switch(q){case "#":b.children.toString()!==
|
||||
e.children.toString()&&(b.dom.nodeValue=e.children);e.dom=b.dom;break;case "<":b.children!==e.children?(k(b),f(a,e,n)):(e.dom=b.dom,e.domSize=b.domSize);break;case "[":g(a,b.children,e.children,p,d,n,u);b=0;d=e.children;e.dom=null;if(null!=d){for(p=0;p<d.length;p++){var m=d[p];null!=m&&null!=m.dom&&(null==e.dom&&(e.dom=m.dom),b+=m.domSize||1)}1!==b&&(e.domSize=b)}break;default:a=u;n=e.dom=b.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));u=b.attrs;q=e.attrs;r=a;if(null!=q)for(m in q)y(e,m,u&&u[m],q[m],r);if(null!=u)for(m in u)null!=q&&m in q||("className"===m&&(m="class"),"o"!==m[0]||"n"!==m[1]||D(m)?"key"!==m&&e.dom.removeAttribute(m):M(e,m,void 0));null!=e.attrs&&null!=e.attrs.contenteditable?t(e):null!=b.text&&null!=e.text&&""!==e.text?b.text.toString()!==e.text.toString()&&(b.dom.firstChild.nodeValue=e.text):(null!=b.text&&(b.children=[w("#",
|
||||
void 0,void 0,b.text,void 0,b.dom.firstChild)]),null!=e.text&&(e.children=[w("#",void 0,void 0,e.text,void 0,void 0)]),g(n,b.children,e.children,p,d,null,a))}else e.instance=w.normalize(e.state.view(e)),z(e.state,e,d,p),null!=e.instance?(null==b.instance?h(a,e.instance,d,u,n):l(a,b.instance,e.instance,d,n,p,u),e.dom=e.instance.dom,e.domSize=e.instance.domSize):null!=b.instance?(c(b.instance,null),e.dom=void 0,e.domSize=0):(e.dom=b.dom,e.domSize=b.domSize)}else c(b,null),h(a,e,d,u,n)}function k(a){var b=
|
||||
a.domSize;if(null!=b||null==a.dom){var c=p.createDocumentFragment();if(0<b){for(a=a.dom;--b;)c.appendChild(a.nextSibling);c.insertBefore(a,c.firstChild)}return c}return a.dom}function m(a,b,c){for(;b<a.length;b++)if(null!=a[b]&&null!=a[b].dom)return a[b].dom;return c}function n(a,b,c){c&&c.parentNode?a.insertBefore(b,c):a.appendChild(b)}function t(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!=a.text||null!=b&&0!==
|
||||
b.length)throw Error("Child node of a contenteditable must be trusted");}function x(a,b,e,d){for(;b<e;b++){var q=a[b];null!=q&&(q.skip?q.skip=!1:c(q,d))}}function c(a,b){function c(){if(++q===d&&(A(a),a.dom)){var c=a.domSize||1;if(1<c)for(var e=a.dom;--c;){var f=e.nextSibling,g=f.parentNode;null!=g&&g.removeChild(f)}c=a.dom;e=c.parentNode;null!=e&&e.removeChild(c);if(c=null!=b&&null==a.domSize)c=a.attrs,c=!(null!=c&&(c.oncreate||c.onupdate||c.onbeforeremove||c.onremove));c&&"string"===typeof a.tag&&
|
||||
(b.pool?b.pool.push(a):b.pool=[a])}}var d=1,q=0;if(a.attrs&&a.attrs.onbeforeremove){var f=a.attrs.onbeforeremove.call(a.state,a);null!=f&&"function"===typeof f.then&&(d++,f.then(c,c))}"string"!==typeof a.tag&&a.state.onbeforeremove&&(f=a.state.onbeforeremove(a),null!=f&&"function"===typeof f.then&&(d++,f.then(c,c)));c()}function A(a){a.attrs&&a.attrs.onremove&&a.attrs.onremove.call(a.state,a);if("string"!==typeof a.tag&&a.state.onremove)a.state.onremove(a);if(null!=a.instance)A(a.instance);else if(a=
|
||||
a.children,Array.isArray(a))for(var b=0;b<a.length;b++){var c=a[b];null!=c&&A(c)}}function y(a,b,c,d,f){var e=a.dom;if("key"!==b&&"is"!==b&&(c!==d||"value"===b||"checked"===b||"selectedIndex"===b||"selected"===b&&a.dom===p.activeElement||"object"===typeof d)&&"undefined"!==typeof d&&!D(b)){var g=b.indexOf(":");if(-1<g&&"xlink"===b.substr(0,g))e.setAttributeNS("http://www.w3.org/1999/xlink",b.slice(g+1),d);else if("o"===b[0]&&"n"===b[1]&&"function"===typeof d)M(a,b,d);else if("style"===b)if(a=c,a===
|
||||
d&&(e.style.cssText="",a=null),null==d)e.style.cssText="";else if("string"===typeof d)e.style.cssText=d;else{"string"===typeof a&&(e.style.cssText="");for(var q in d)e.style[q]=d[q];if(null!=a&&"string"!==typeof a)for(q in a)q in d||(e.style[q]="")}else b in e&&"href"!==b&&"list"!==b&&"form"!==b&&"width"!==b&&"height"!==b&&void 0===f&&!(a.attrs.is||-1<a.tag.indexOf("-"))?"input"===a.tag&&"value"===b&&a.dom.value==d&&a.dom===p.activeElement||"select"===a.tag&&"value"===b&&a.dom.value==d&&a.dom===p.activeElement||
|
||||
"option"===a.tag&&"value"===b&&a.dom.value==d||(e[b]=d):"boolean"===typeof d?d?e.setAttribute(b,""):e.removeAttribute(b):e.setAttribute("className"===b?"class":b,d)}}function D(a){return"oninit"===a||"oncreate"===a||"onupdate"===a||"onremove"===a||"onbeforeremove"===a||"onbeforeupdate"===a}function M(a,b,c){var d=a.dom,e="function"!==typeof I?c:function(a){var b=c.call(d,a);I.call(d,a);return b};if(b in d)d[b]="function"===typeof c?e:null;else{var f=b.slice(2);void 0===a.events&&(a.events={});a.events[b]!==
|
||||
e&&(null!=a.events[b]&&d.removeEventListener(f,a.events[b],!1),"function"===typeof c&&(a.events[b]=e,d.addEventListener(f,a.events[b],!1)))}}function v(a,b,c){"function"===typeof a.oninit&&a.oninit.call(b.state,b);"function"===typeof a.oncreate&&c.push(a.oncreate.bind(b.state,b))}function z(a,b,c,d){d?v(a,b,c):"function"===typeof a.onupdate&&c.push(a.onupdate.bind(b.state,b))}var p=a.document,J=p.createDocumentFragment(),I;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=p.activeElement;null==a.vnodes&&(a.textContent="");Array.isArray(b)||(b=[b]);g(a,a.vnodes,w.normalizeChildren(b),!1,c,null,void 0);a.vnodes=b;for(var f=0;f<c.length;f++)c[f]();p.activeElement!==d&&d.focus()},setEventCallback:function(a){return I=a}}},G=function(a){function d(a){a=f.indexOf(a);-1<a&&f.splice(a,2)}function h(){for(var a=1;a<f.length;a+=2)f[a]()}a=N(a);a.setEventCallback(function(a){!1!==a.redraw&&h()});var f=[];return{subscribe:function(a,h){d(a);f.push(a,P(h))},unsubscribe:d,
|
||||
redraw:h,render:a.render}}(window);K.setCompletionCallback(G.redraw);z.mount=function(a){return function(d,h){if(null===h)a.render(d,[]),a.unsubscribe(d);else{if(null==h.view&&"function"!==typeof h)throw Error("m.mount(element, component) expects a component, not a vnode");a.subscribe(d,function(){a.render(d,w(h))});a.redraw()}}}(G);var R=v,L=function(a){if(""===a||null==a)return{};"?"===a.charAt(0)&&(a=a.slice(1));a=a.split("&");for(var d={},h={},f=0;f<a.length;f++){var g=a[f].split("="),l=decodeURIComponent(g[0]),
|
||||
g=2===g.length?decodeURIComponent(g[1]):"";"true"===g?g=!0:"false"===g&&(g=!1);var k=l.split(/\]\[?|\[/),m=d;-1<l.indexOf("[")&&k.pop();for(var n=0;n<k.length;n++){var l=k[n],t=k[n+1],t=""==t||!isNaN(parseInt(t,10)),x=n===k.length-1;""===l&&(l=k.slice(0,n).join(),null==h[l]&&(h[l]=0),l=h[l]++);null==m[l]&&(m[l]=x?g:t?[]:{});m=m[l]}}return d},S=function(a){function d(d){var f=a.location[d].replace(/(?:%[a-f89][a-f0-9])+/gim,decodeURIComponent);"pathname"===d&&"/"!==f[0]&&(f="/"+f);return f}function h(a){return function(){null==
|
||||
k&&(k=l(function(){k=null;a()}))}}function f(a,d,f){var c=a.indexOf("?"),g=a.indexOf("#"),k=-1<c?c:-1<g?g:a.length;if(-1<c){var c=L(a.slice(c+1,-1<g?g:a.length)),h;for(h in c)d[h]=c[h]}if(-1<g)for(h in d=L(a.slice(g+1)),d)f[h]=d[h];return a.slice(0,k)}var g="function"===typeof a.history.pushState,l="function"===typeof setImmediate?setImmediate:setTimeout,k,m={prefix:"#!",getPath:function(){switch(m.prefix.charAt(0)){case "#":return d("hash").slice(m.prefix.length);case "?":return d("search").slice(m.prefix.length)+
|
||||
d("hash");default:return d("pathname").slice(m.prefix.length)+d("search")+d("hash")}},setPath:function(d,h,k){var c={},l={};d=f(d,c,l);if(null!=h){for(var n in h)c[n]=h[n];d=d.replace(/:([^\/]+)/g,function(a,d){delete c[d];return h[d]})}(n=F(c))&&(d+="?"+n);(l=F(l))&&(d+="#"+l);g?(l=k?k.state:null,n=k?k.title:null,a.onpopstate(),k&&k.replace?a.history.replaceState(l,n,m.prefix+d):a.history.pushState(l,n,m.prefix+d)):a.location.href=m.prefix+d},defineRoutes:function(d,k,l){function c(){var c=m.getPath(),
|
||||
g={},h=f(c,g,g),n=a.history.state;if(null!=n)for(var x in n)g[x]=n[x];for(var t in d)if(n=new RegExp("^"+t.replace(/:[^\/]+?\.{3}/g,"(.*?)").replace(/:[^\/]+/g,"([^\\/]+)")+"/?$"),n.test(h)){h.replace(n,function(){for(var a=t.match(/:[^\/]+/g)||[],f=[].slice.call(arguments,1,-2),h=0;h<a.length;h++)g[a[h].replace(/:|\./g,"")]=decodeURIComponent(f[h]);k(d[t],g,c,t)});return}l(c,g)}g?a.onpopstate=h(c):"#"===m.prefix.charAt(0)&&(a.onhashchange=c);c()}};return m};z.route=function(a,d){var h=S(a),f=function(a){return a},
|
||||
g,l,k,m,n,t=function(a,c,t){if(null==a)throw Error("Ensure the DOM element that was passed to `m.route` is not undefined");var x=function(){null!=g&&d.render(a,g(w(l,k.key,k)))},v=function(a){if(a!==c)h.setPath(c,null,{replace:!0});else throw Error("Could not resolve default route "+c);};h.defineRoutes(t,function(a,c,d){var h=n=function(a,p){h===n&&(l=null==p||"function"!==typeof p.view&&"function"!==typeof p?"div":p,k=c,m=d,n=null,g=(a.render||f).bind(a),x())};a.view||"function"===typeof a?h({},
|
||||
a):a.onmatch?R.resolve(a.onmatch(c,d)).then(function(c){h(a,c)},v):h(a,"div")},v);d.subscribe(a,x)};t.set=function(a,c,d){null!=n&&(d={replace:!0});n=null;h.setPath(a,c,d)};t.get=function(){return m};t.prefix=function(a){h.prefix=a};t.link=function(a){a.dom.setAttribute("href",h.prefix+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(h.prefix)&&(a=a.slice(h.prefix.length)),t.set(a,void 0,
|
||||
void 0))}};t.param=function(a){return"undefined"!==typeof k&&"undefined"!==typeof a?k[a]:k};return t}(window,G);z.withAttr=function(a,d,h){return function(f){d.call(h||this,a in f.currentTarget?f.currentTarget[a]:f.currentTarget.getAttribute(a))}};var T=N(window);z.render=T.render;z.redraw=G.redraw;z.request=K.request;z.jsonp=K.jsonp;z.parseQueryString=L;z.buildQueryString=F;z.version="1.0.1";z.vnode=w;"undefined"!==typeof module?module.exports=z:window.m=z};
|
||||
new function(){function w(a,d,h,f,g,l){return{tag:a,key:d,attrs:h,children:f,text:g,dom:l,domSize:void 0,state:{},events:void 0,instance:void 0,skip:!1}}function A(a){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&&void 0===H[a]){for(var d,h,f=[],g={};d=O.exec(a);){var l=d[1],k=d[2];""===l&&""!==k?h=k:"#"===l?g.id=k:"."===l?f.push(k):"["===d[3][0]&&((l=d[6])&&(l=l.replace(/\\(["'])/g,
|
||||
"$1").replace(/\\\\/g,"\\")),"class"===d[4]?f.push(l):g[d[4]]=l||!0)}0<f.length&&(g.className=f.join(" "));H[a]=function(a,d){var l=!1,c,f,p=a.className||a["class"],q;for(q in g)a[q]=g[q];void 0!==p&&(void 0!==a["class"]&&(a["class"]=void 0,a.className=p),void 0!==g.className&&(a.className=g.className+" "+p));for(q in a)if("key"!==q){l=!0;break}Array.isArray(d)&&1==d.length&&null!=d[0]&&"#"===d[0].tag?f=d[0].children:c=d;return w(h||"div",a.key,l?a:void 0,c,f,void 0)}}var q;null==arguments[1]||"object"===
|
||||
typeof arguments[1]&&void 0===arguments[1].tag&&!Array.isArray(arguments[1])?(q=arguments[1],f=2):f=1;if(arguments.length===f+1)d=Array.isArray(arguments[f])?arguments[f]:[arguments[f]];else for(d=[];f<arguments.length;f++)d.push(arguments[f]);return"string"===typeof a?H[a](q||{},w.normalizeChildren(d)):w(a,q&&q.key,q||{},w.normalizeChildren(d),void 0,void 0)}function P(a){var d=0,h=null,f="function"===typeof requestAnimationFrame?requestAnimationFrame:setTimeout;return function(){var g=Date.now();
|
||||
0===d||16<=g-d?(d=g,a()):null===h&&(h=f(function(){h=null;a();d=Date.now()},16-(g-d)))}}w.normalize=function(a){return Array.isArray(a)?w("[",void 0,void 0,w.normalizeChildren(a),void 0,void 0):null!=a&&"object"!==typeof a?w("#",void 0,void 0,!1===a?"":a,void 0,void 0):a};w.normalizeChildren=function(a){for(var d=0;d<a.length;d++)a[d]=w.normalize(a[d]);return a};var O=/(?:(^|#|\.)([^#\.\[\]]+))|(\[(.+?)(?:\s*=\s*("|'|)((?:\\["'\]]|.)*?)\5)?\])/g,H={};A.trust=function(a){null==a&&(a="");return w("<",
|
||||
void 0,void 0,a,void 0,void 0)};A.fragment=function(a,d){return w("[",a.key,a,w.normalizeChildren(d),void 0,void 0)};var v=function(a){function d(a,c){return function z(d){var k;try{if(!c||null==d||"object"!==typeof d&&"function"!==typeof d||"function"!==typeof(k=d.then))r(function(){c||0!==a.length||console.error("Possible unhandled promise rejection:",d);for(var f=0;f<a.length;f++)a[f](d);g.length=0;l.length=0;p.state=c;p.retry=function(){z(d)}});else{if(d===f)throw new TypeError("Promise can't be resolved w/ itself");
|
||||
h(k.bind(d))}}catch(Q){q(Q)}}}function h(a){function c(c){return function(a){0<d++||c(a)}}var d=0,f=c(q);try{a(c(k),f)}catch(D){f(D)}}if(!(this instanceof v))throw Error("Promise must be called with `new`");if("function"!==typeof a)throw new TypeError("executor must be a function");var f=this,g=[],l=[],k=d(g,!0),q=d(l,!1),p=f._instance={resolvers:g,rejectors:l},r="function"===typeof setImmediate?setImmediate:setTimeout;h(a)};v.prototype.then=function(a,d){function h(a,d,h,k){d.push(function(c){if("function"!==
|
||||
typeof a)h(c);else try{g(a(c))}catch(t){l&&l(t)}});"function"===typeof f.retry&&k===f.state&&f.retry()}var f=this._instance,g,l,k=new v(function(a,d){g=a;l=d});h(a,f.resolvers,g,!0);h(d,f.rejectors,l,!1);return k};v.prototype["catch"]=function(a){return this.then(null,a)};v.resolve=function(a){return a instanceof v?a:new v(function(d){d(a)})};v.reject=function(a){return new v(function(d,h){h(a)})};v.all=function(a){return new v(function(d,h){var f=a.length,g=0,l=[];if(0===a.length)d([]);else for(var k=
|
||||
0;k<a.length;k++)(function(k){function p(a){g++;l[k]=a;g===f&&d(l)}null==a[k]||"object"!==typeof a[k]&&"function"!==typeof a[k]||"function"!==typeof a[k].then?p(a[k]):a[k].then(p,h)})(k)})};v.race=function(a){return new v(function(d,h){for(var f=0;f<a.length;f++)a[f].then(d,h)})};"undefined"!==typeof window?("undefined"===typeof window.Promise&&(window.Promise=v),v=window.Promise):"undefined"!==typeof global&&("undefined"===typeof global.Promise&&(global.Promise=v),v=global.Promise);var F=function(a){function d(a,
|
||||
f){if(Array.isArray(f))for(var g=0;g<f.length;g++)d(a+"["+g+"]",f[g]);else if("[object Object]"===Object.prototype.toString.call(f))for(g in f)d(a+"["+g+"]",f[g]);else h.push(encodeURIComponent(a)+(null!=f&&""!==f?"="+encodeURIComponent(f):""))}if("[object Object]"!==Object.prototype.toString.call(a))return"";var h=[],f;for(f in a)d(f,a[f]);return h.join("&")},R=/^file:\/\//i,K=function(a,d){function h(){function c(){0===--a&&"function"===typeof u&&u()}var a=0;return function D(d){var f=d.then;d.then=
|
||||
function(){a++;var g=f.apply(d,arguments);g.then(c,function(d){c();if(0===a)throw d;});return D(g)};return d}}function f(c,a){if("string"===typeof c){var d=c;c=a||{};null==c.url&&(c.url=d)}return c}function g(c,a){if(null==a)return c;for(var d=c.match(/:[^\/]+/gi)||[],f=0;f<d.length;f++){var g=d[f].slice(1);null!=a[g]&&(c=c.replace(d[f],a[g]))}return c}function l(c,a){var d=F(a);if(""!==d){var f=0>c.indexOf("?")?"?":"&";c+=f+d}return c}function k(c){try{return""!==c?JSON.parse(c):null}catch(t){throw Error(c);
|
||||
}}function q(c){return c.responseText}function p(c,a){if("function"===typeof c)if(Array.isArray(a))for(var d=0;d<a.length;d++)a[d]=new c(a[d]);else return new c(a);return a}var r=0,u;return{request:function(c,u){var r=h();c=f(c,u);var t=new d(function(d,f){null==c.method&&(c.method="GET");c.method=c.method.toUpperCase();var h="GET"===c.method||"TRACE"===c.method?!1:"boolean"===typeof c.useBody?c.useBody:!0;"function"!==typeof c.serialize&&(c.serialize="undefined"!==typeof FormData&&c.data instanceof
|
||||
FormData?function(b){return b}:JSON.stringify);"function"!==typeof c.deserialize&&(c.deserialize=k);"function"!==typeof c.extract&&(c.extract=q);c.url=g(c.url,c.data);h?c.data=c.serialize(c.data):c.url=l(c.url,c.data);var n=new a.XMLHttpRequest,u=!1,r=n.abort;n.abort=function(){u=!0;r.call(n)};n.open(c.method,c.url,"boolean"===typeof c.async?c.async:!0,"string"===typeof c.user?c.user:void 0,"string"===typeof c.password?c.password:void 0);c.serialize===JSON.stringify&&h&&n.setRequestHeader("Content-Type",
|
||||
"application/json; charset=utf-8");c.deserialize===k&&n.setRequestHeader("Accept","application/json, text/*");c.withCredentials&&(n.withCredentials=c.withCredentials);for(var m in c.headers)({}).hasOwnProperty.call(c.headers,m)&&n.setRequestHeader(m,c.headers[m]);"function"===typeof c.config&&(n=c.config(n,c)||n);n.onreadystatechange=function(){if(!u&&4===n.readyState)try{var b=c.extract!==q?c.extract(n,c):c.deserialize(c.extract(n,c));if(200<=n.status&&300>n.status||304===n.status||R.test(c.url))d(p(c.type,
|
||||
b));else{var m=Error(n.responseText),a;for(a in b)m[a]=b[a];f(m)}}catch(C){f(C)}};h&&null!=c.data?n.send(c.data):n.send()});return!0===c.background?t:r(t)},jsonp:function(c,k){var q=h();c=f(c,k);var u=new d(function(d,f){var h=c.callbackName||"_mithril_"+Math.round(1E16*Math.random())+"_"+r++,k=a.document.createElement("script");a[h]=function(f){k.parentNode.removeChild(k);d(p(c.type,f));delete a[h]};k.onerror=function(){k.parentNode.removeChild(k);f(Error("JSONP request failed"));delete a[h]};null==
|
||||
c.data&&(c.data={});c.url=g(c.url,c.data);c.data[c.callbackKey||"callback"]=h;k.src=l(c.url,c.data);a.document.documentElement.appendChild(k)});return!0===c.background?u:q(u)},setCompletionCallback:function(a){u=a}}}(window,v),N=function(a){function d(a,b,c,d,f,g,k){for(;c<d;c++){var m=b[c];null!=m&&h(a,m,f,k,g)}}function h(a,b,c,x,g){var m=b.tag;null!=b.attrs&&v(b.attrs,b,c);if("string"===typeof m)switch(m){case "#":return b.dom=n.createTextNode(b.children),p(a,b.dom,g),b.dom;case "<":return f(a,
|
||||
b,g);case "[":var e=n.createDocumentFragment();null!=b.children&&(m=b.children,d(e,m,0,m.length,c,null,x));b.dom=e.firstChild;b.domSize=e.childNodes.length;p(a,e,g);return e;default:var k=b.tag;switch(b.tag){case "svg":x="http://www.w3.org/2000/svg";break;case "math":x="http://www.w3.org/1998/Math/MathML"}var l=(m=b.attrs)&&m.is,k=x?l?n.createElementNS(x,k,{is:l}):n.createElementNS(x,k):l?n.createElement(k,{is:l}):n.createElement(k);b.dom=k;if(null!=m)for(e in l=x,m)z(b,e,null,m[e],l);p(a,k,g);null!=
|
||||
b.attrs&&null!=b.attrs.contenteditable?r(b):(null!=b.text&&(""!==b.text?k.textContent=b.text:b.children=[w("#",void 0,void 0,b.text,void 0,void 0)]),null!=b.children&&(a=b.children,d(k,a,0,a.length,c,null,x),a=b.attrs,"select"===b.tag&&null!=a&&("value"in a&&z(b,"value",null,a.value,void 0),"selectedIndex"in a&&z(b,"selectedIndex",null,a.selectedIndex,void 0))));return k}else{a:{if("function"===typeof b.tag){b.state=null;e=b.tag;if(null!=e.$$reentrantLock$$){b=I;break a}e.$$reentrantLock$$=!0;b.state=
|
||||
null!=b.tag.prototype&&"function"===typeof b.tag.prototype.view?new b.tag(b):b.tag(b)}else{b.state=Object.create(b.tag);e=b.state.view;if(null!=e.$$reentrantLock$$){b=I;break a}e.$$reentrantLock$$=!0}v(b.state,b,c);b.instance=w.normalize(b.state.view(b));e.$$reentrantLock$$=null;if(null!=b.instance){if(b.instance===b)throw Error("A view cannot return the vnode it received as arguments");c=h(a,b.instance,c,x,g);b.dom=b.instance.dom;b.domSize=null!=b.dom?b.instance.domSize:0;p(a,c,g);b=c}else b.domSize=
|
||||
0,b=I}return b}}function f(a,b,c){var m={caption:"table",thead:"table",tbody:"table",tfoot:"table",tr:"tbody",th:"tr",td:"tr",colgroup:"table",col:"colgroup"}[(b.children.match(/^\s*?<(\w+)/im)||[])[1]]||"div",m=n.createElement(m);m.innerHTML=b.children;b.dom=m.firstChild;b.domSize=m.childNodes.length;b=n.createDocumentFragment();for(var e;e=m.firstChild;)b.appendChild(e);p(a,b,c);return b}function g(a,b,c,f,g,B,n){if(b!==c&&(null!=b||null!=c))if(null==b)d(a,c,0,c.length,g,B,void 0);else if(null==
|
||||
c)u(b,0,b.length,c);else{if(b.length===c.length){for(var m=!1,e=0;e<c.length;e++)if(null!=c[e]&&null!=b[e]){m=null==c[e].key&&null==b[e].key;break}if(m){for(e=0;e<b.length;e++)b[e]!==c[e]&&(null==b[e]&&null!=c[e]?h(a,c[e],g,n,q(b,e+1,B)):null==c[e]?u(b,e,e+1,c):l(a,b[e],c[e],g,q(b,e+1,B),f,n));return}}if(!f)a:{if(null!=b.pool&&Math.abs(b.pool.length-c.length)<=Math.abs(b.length-c.length)&&(f=c[0]&&c[0].children&&c[0].children.length||0,Math.abs((b.pool[0]&&b.pool[0].children&&b.pool[0].children.length||
|
||||
0)-f)<=Math.abs((b[0]&&b[0].children&&b[0].children.length||0)-f))){f=!0;break a}f=!1}if(f){var x=b.pool;b=b.concat(b.pool)}for(var e=m=0,r=b.length-1,t=c.length-1,E;r>=m&&t>=e;){var y=b[m],z=c[e];if(y!==z||f)if(null==y)m++;else if(null==z)e++;else if(y.key===z.key){var C=null!=x&&m>=b.length-x.length||null==x&&f;m++;e++;l(a,y,z,g,q(b,m,B),C,n);f&&y.tag===z.tag&&p(a,k(y),B)}else if(y=b[r],y!==z||f)if(null==y)r--;else if(null==z)e++;else if(y.key===z.key)C=null!=x&&r>=b.length-x.length||null==x&&f,
|
||||
l(a,y,z,g,q(b,r+1,B),C,n),(f||e<t)&&p(a,k(y),q(b,m,B)),r--,e++;else break;else r--,e++;else m++,e++}for(;r>=m&&t>=e;){y=b[r];z=c[t];if(y!==z||f)if(null==y)r--;else{if(null!=z)if(y.key===z.key)C=null!=x&&r>=b.length-x.length||null==x&&f,l(a,y,z,g,q(b,r+1,B),C,n),f&&y.tag===z.tag&&p(a,k(y),B),null!=y.dom&&(B=y.dom),r--;else{if(!E){E=b;var y=r,C={},v;for(v=0;v<y;v++){var w=E[v];null!=w&&(w=w.key,null!=w&&(C[w]=v))}E=C}null!=z&&(y=E[z.key],null!=y?(C=b[y],l(a,C,z,g,q(b,r+1,B),f,n),p(a,k(C),B),b[y].skip=
|
||||
!0,null!=C.dom&&(B=C.dom)):B=h(a,z,g,void 0,B))}t--}else r--,t--;if(t<e)break}d(a,c,e,t+1,g,B,n);u(b,m,r+1,c)}}function l(a,b,e,d,p,n,q){var m=b.tag;if(m===e.tag){e.state=b.state;e.events=b.events;var x;var u;null!=e.attrs&&"function"===typeof e.attrs.onbeforeupdate&&(x=e.attrs.onbeforeupdate.call(e.state,e,b));"string"!==typeof e.tag&&"function"===typeof e.state.onbeforeupdate&&(u=e.state.onbeforeupdate(e,b));void 0===x&&void 0===u||x||u?x=!1:(e.dom=b.dom,e.domSize=b.domSize,e.instance=b.instance,
|
||||
x=!0);if(!x)if(null!=e.attrs&&A(e.attrs,e,d,n),"string"===typeof m)switch(m){case "#":b.children.toString()!==e.children.toString()&&(b.dom.nodeValue=e.children);e.dom=b.dom;break;case "<":b.children!==e.children?(k(b),f(a,e,p)):(e.dom=b.dom,e.domSize=b.domSize);break;case "[":g(a,b.children,e.children,n,d,p,q);b=0;d=e.children;e.dom=null;if(null!=d){for(n=0;n<d.length;n++){var t=d[n];null!=t&&null!=t.dom&&(null==e.dom&&(e.dom=t.dom),b+=t.domSize||1)}1!==b&&(e.domSize=b)}break;default:a=q;p=e.dom=
|
||||
b.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));q=b.attrs;m=e.attrs;x=a;if(null!=m)for(t in m)z(e,t,q&&q[t],m[t],x);if(null!=q)for(t in q)null!=m&&t in m||("className"===t&&(t="class"),"o"!==t[0]||"n"!==t[1]||D(t)?"key"!==t&&e.dom.removeAttribute(t):M(e,t,void 0));null!=e.attrs&&null!=e.attrs.contenteditable?r(e):null!=b.text&&
|
||||
null!=e.text&&""!==e.text?b.text.toString()!==e.text.toString()&&(b.dom.firstChild.nodeValue=e.text):(null!=b.text&&(b.children=[w("#",void 0,void 0,b.text,void 0,b.dom.firstChild)]),null!=e.text&&(e.children=[w("#",void 0,void 0,e.text,void 0,void 0)]),g(p,b.children,e.children,n,d,null,a))}else e.instance=w.normalize(e.state.view(e)),A(e.state,e,d,n),null!=e.instance?(null==b.instance?h(a,e.instance,d,q,p):l(a,b.instance,e.instance,d,p,n,q),e.dom=e.instance.dom,e.domSize=e.instance.domSize):null!=
|
||||
b.instance?(c(b.instance,null),e.dom=void 0,e.domSize=0):(e.dom=b.dom,e.domSize=b.domSize)}else c(b,null),h(a,e,d,q,p)}function k(a){var b=a.domSize;if(null!=b||null==a.dom){var c=n.createDocumentFragment();if(0<b){for(a=a.dom;--b;)c.appendChild(a.nextSibling);c.insertBefore(a,c.firstChild)}return c}return a.dom}function q(a,b,c){for(;b<a.length;b++)if(null!=a[b]&&null!=a[b].dom)return a[b].dom;return c}function p(a,b,c){c&&c.parentNode?a.insertBefore(b,c):a.appendChild(b)}function r(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!=a.text||null!=b&&0!==b.length)throw Error("Child node of a contenteditable must be trusted");}function u(a,b,e,d){for(;b<e;b++){var m=a[b];null!=m&&(m.skip?m.skip=!1:c(m,d))}}function c(a,b){function c(){if(++m===d&&(t(a),a.dom)){var c=a.domSize||1;if(1<c)for(var e=a.dom;--c;){var f=e.nextSibling,g=f.parentNode;null!=g&&g.removeChild(f)}c=a.dom;e=c.parentNode;null!=e&&e.removeChild(c);if(c=
|
||||
null!=b&&null==a.domSize)c=a.attrs,c=!(null!=c&&(c.oncreate||c.onupdate||c.onbeforeremove||c.onremove));c&&"string"===typeof a.tag&&(b.pool?b.pool.push(a):b.pool=[a])}}var d=1,m=0;if(a.attrs&&a.attrs.onbeforeremove){var f=a.attrs.onbeforeremove.call(a.state,a);null!=f&&"function"===typeof f.then&&(d++,f.then(c,c))}"string"!==typeof a.tag&&a.state.onbeforeremove&&(f=a.state.onbeforeremove(a),null!=f&&"function"===typeof f.then&&(d++,f.then(c,c)));c()}function t(a){a.attrs&&a.attrs.onremove&&a.attrs.onremove.call(a.state,
|
||||
a);if("string"!==typeof a.tag&&a.state.onremove)a.state.onremove(a);if(null!=a.instance)t(a.instance);else if(a=a.children,Array.isArray(a))for(var b=0;b<a.length;b++){var c=a[b];null!=c&&t(c)}}function z(a,b,c,d,f){var e=a.dom;if("key"!==b&&"is"!==b&&(c!==d||"value"===b||"checked"===b||"selectedIndex"===b||"selected"===b&&a.dom===n.activeElement||"object"===typeof d)&&"undefined"!==typeof d&&!D(b)){var g=b.indexOf(":");if(-1<g&&"xlink"===b.substr(0,g))e.setAttributeNS("http://www.w3.org/1999/xlink",
|
||||
b.slice(g+1),d);else if("o"===b[0]&&"n"===b[1]&&"function"===typeof d)M(a,b,d);else if("style"===b)if(a=c,a===d&&(e.style.cssText="",a=null),null==d)e.style.cssText="";else if("string"===typeof d)e.style.cssText=d;else{"string"===typeof a&&(e.style.cssText="");for(var m in d)e.style[m]=d[m];if(null!=a&&"string"!==typeof a)for(m in a)m in d||(e.style[m]="")}else b in e&&"href"!==b&&"list"!==b&&"form"!==b&&"width"!==b&&"height"!==b&&void 0===f&&!(a.attrs.is||-1<a.tag.indexOf("-"))?"input"===a.tag&&
|
||||
"value"===b&&a.dom.value==d&&a.dom===n.activeElement||"select"===a.tag&&"value"===b&&a.dom.value==d&&a.dom===n.activeElement||"option"===a.tag&&"value"===b&&a.dom.value==d||("input"===a.tag&&"type"===b?e.setAttribute(b,d):e[b]=d):"boolean"===typeof d?d?e.setAttribute(b,""):e.removeAttribute(b):e.setAttribute("className"===b?"class":b,d)}}function D(a){return"oninit"===a||"oncreate"===a||"onupdate"===a||"onremove"===a||"onbeforeremove"===a||"onbeforeupdate"===a}function M(a,b,c){var d=a.dom,e="function"!==
|
||||
typeof J?c:function(a){var b=c.call(d,a);J.call(d,a);return b};if(b in d)d[b]="function"===typeof c?e:null;else{var f=b.slice(2);void 0===a.events&&(a.events={});a.events[b]!==e&&(null!=a.events[b]&&d.removeEventListener(f,a.events[b],!1),"function"===typeof c&&(a.events[b]=e,d.addEventListener(f,a.events[b],!1)))}}function v(a,b,c){"function"===typeof a.oninit&&a.oninit.call(b.state,b);"function"===typeof a.oncreate&&c.push(a.oncreate.bind(b.state,b))}function A(a,b,c,d){d?v(a,b,c):"function"===
|
||||
typeof a.onupdate&&c.push(a.onupdate.bind(b.state,b))}var n=a.document,I=n.createDocumentFragment(),J;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=n.activeElement;null==a.vnodes&&(a.textContent="");Array.isArray(b)||(b=[b]);g(a,a.vnodes,w.normalizeChildren(b),!1,c,null,void 0);a.vnodes=b;for(var f=0;f<c.length;f++)c[f]();n.activeElement!==d&&d.focus()},setEventCallback:function(a){return J=a}}},G=function(a){function d(a){a=
|
||||
f.indexOf(a);-1<a&&f.splice(a,2)}function h(){for(var a=1;a<f.length;a+=2)f[a]()}a=N(a);a.setEventCallback(function(a){!1!==a.redraw&&h()});var f=[];return{subscribe:function(a,h){d(a);f.push(a,P(h))},unsubscribe:d,redraw:h,render:a.render}}(window);K.setCompletionCallback(G.redraw);A.mount=function(a){return function(d,h){if(null===h)a.render(d,[]),a.unsubscribe(d);else{if(null==h.view&&"function"!==typeof h)throw Error("m.mount(element, component) expects a component, not a vnode");a.subscribe(d,
|
||||
function(){a.render(d,w(h))});a.redraw()}}}(G);var S=v,L=function(a){if(""===a||null==a)return{};"?"===a.charAt(0)&&(a=a.slice(1));a=a.split("&");for(var d={},h={},f=0;f<a.length;f++){var g=a[f].split("="),l=decodeURIComponent(g[0]),g=2===g.length?decodeURIComponent(g[1]):"";"true"===g?g=!0:"false"===g&&(g=!1);var k=l.split(/\]\[?|\[/),q=d;-1<l.indexOf("[")&&k.pop();for(var p=0;p<k.length;p++){var l=k[p],r=k[p+1],r=""==r||!isNaN(parseInt(r,10)),u=p===k.length-1;""===l&&(l=k.slice(0,p).join(),null==
|
||||
h[l]&&(h[l]=0),l=h[l]++);null==q[l]&&(q[l]=u?g:r?[]:{});q=q[l]}}return d},T=function(a){function d(d){var f=a.location[d].replace(/(?:%[a-f89][a-f0-9])+/gim,decodeURIComponent);"pathname"===d&&"/"!==f[0]&&(f="/"+f);return f}function h(a){return function(){null==k&&(k=l(function(){k=null;a()}))}}function f(a,d,f){var c=a.indexOf("?"),g=a.indexOf("#"),k=-1<c?c:-1<g?g:a.length;if(-1<c){var c=L(a.slice(c+1,-1<g?g:a.length)),h;for(h in c)d[h]=c[h]}if(-1<g)for(h in d=L(a.slice(g+1)),d)f[h]=d[h];return a.slice(0,
|
||||
k)}var g="function"===typeof a.history.pushState,l="function"===typeof setImmediate?setImmediate:setTimeout,k,q={prefix:"#!",getPath:function(){switch(q.prefix.charAt(0)){case "#":return d("hash").slice(q.prefix.length);case "?":return d("search").slice(q.prefix.length)+d("hash");default:return d("pathname").slice(q.prefix.length)+d("search")+d("hash")}},setPath:function(d,h,k){var c={},l={};d=f(d,c,l);if(null!=h){for(var p in h)c[p]=h[p];d=d.replace(/:([^\/]+)/g,function(a,d){delete c[d];return h[d]})}(p=
|
||||
F(c))&&(d+="?"+p);(l=F(l))&&(d+="#"+l);g?(l=k?k.state:null,p=k?k.title:null,a.onpopstate(),k&&k.replace?a.history.replaceState(l,p,q.prefix+d):a.history.pushState(l,p,q.prefix+d)):a.location.href=q.prefix+d},defineRoutes:function(d,k,l){function c(){var c=q.getPath(),g={},h=f(c,g,g),p=a.history.state;if(null!=p)for(var r in p)g[r]=p[r];for(var u in d)if(p=new RegExp("^"+u.replace(/:[^\/]+?\.{3}/g,"(.*?)").replace(/:[^\/]+/g,"([^\\/]+)")+"/?$"),p.test(h)){h.replace(p,function(){for(var a=u.match(/:[^\/]+/g)||
|
||||
[],f=[].slice.call(arguments,1,-2),h=0;h<a.length;h++)g[a[h].replace(/:|\./g,"")]=decodeURIComponent(f[h]);k(d[u],g,c,u)});return}l(c,g)}g?a.onpopstate=h(c):"#"===q.prefix.charAt(0)&&(a.onhashchange=c);c()}};return q};A.route=function(a,d){var h=T(a),f=function(a){return a},g,l,k,q,p,r=function(a,c,r){if(null==a)throw Error("Ensure the DOM element that was passed to `m.route` is not undefined");var t=function(){null!=g&&d.render(a,g(w(l,k.key,k)))},u=function(a){if(a!==c)h.setPath(c,null,{replace:!0});
|
||||
else throw Error("Could not resolve default route "+c);};h.defineRoutes(r,function(a,c,d){var h=p=function(a,n){h===p&&(l=null==n||"function"!==typeof n.view&&"function"!==typeof n?"div":n,k=c,q=d,p=null,g=(a.render||f).bind(a),t())};a.view||"function"===typeof a?h({},a):a.onmatch?S.resolve(a.onmatch(c,d)).then(function(c){h(a,c)},u):h(a,"div")},u);d.subscribe(a,t)};r.set=function(a,c,d){null!=p&&(d={replace:!0});p=null;h.setPath(a,c,d)};r.get=function(){return q};r.prefix=function(a){h.prefix=a};
|
||||
r.link=function(a){a.dom.setAttribute("href",h.prefix+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(h.prefix)&&(a=a.slice(h.prefix.length)),r.set(a,void 0,void 0))}};r.param=function(a){return"undefined"!==typeof k&&"undefined"!==typeof a?k[a]:k};return r}(window,G);A.withAttr=function(a,d,h){return function(f){d.call(h||this,a in f.currentTarget?f.currentTarget[a]:f.currentTarget.getAttribute(a))}};
|
||||
var U=N(window);A.render=U.render;A.redraw=G.redraw;A.request=K.request;A.jsonp=K.jsonp;A.parseQueryString=L;A.buildQueryString=F;A.version="1.0.1";A.vnode=w;"undefined"!==typeof module?module.exports=A:window.m=A};
|
||||
|
|
@ -468,6 +468,11 @@ module.exports = function($window) {
|
|||
if (vnode.tag === "select" && key === "value" && vnode.dom.value == value && vnode.dom === $doc.activeElement) return
|
||||
//setting option[value] to same value while having select open blinks select dropdown in Chrome
|
||||
if (vnode.tag === "option" && key === "value" && vnode.dom.value == value) return
|
||||
// If you assign an input type that is not supported by IE 11 with an assignment expression, an error will occur.
|
||||
if (vnode.tag === "input" && key === "type") {
|
||||
element.setAttribute(key, value)
|
||||
return
|
||||
}
|
||||
element[key] = value
|
||||
}
|
||||
else {
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@
|
|||
|
||||
var buildQueryString = require("../querystring/build")
|
||||
|
||||
var FILE_PROTOCOL_REGEX = new RegExp('^file://', 'i')
|
||||
|
||||
module.exports = function($window, Promise) {
|
||||
var callbackCount = 0
|
||||
|
||||
|
|
@ -53,7 +55,16 @@ module.exports = function($window, Promise) {
|
|||
if (useBody) args.data = args.serialize(args.data)
|
||||
else args.url = assemble(args.url, args.data)
|
||||
|
||||
var xhr = new $window.XMLHttpRequest()
|
||||
var xhr = new $window.XMLHttpRequest(),
|
||||
aborted = false,
|
||||
_abort = xhr.abort
|
||||
|
||||
|
||||
xhr.abort = function abort() {
|
||||
aborted = true
|
||||
_abort.call(xhr)
|
||||
}
|
||||
|
||||
xhr.open(args.method, args.url, typeof args.async === "boolean" ? args.async : true, typeof args.user === "string" ? args.user : undefined, typeof args.password === "string" ? args.password : undefined)
|
||||
|
||||
if (args.serialize === JSON.stringify && useBody) {
|
||||
|
|
@ -71,12 +82,13 @@ module.exports = function($window, Promise) {
|
|||
if (typeof args.config === "function") xhr = args.config(xhr, args) || xhr
|
||||
|
||||
xhr.onreadystatechange = function() {
|
||||
// Don't throw errors on xhr.abort(). XMLHttpRequests ends up in a state of
|
||||
// xhr.status == 0 and xhr.readyState == 4 if aborted after open, but before completion.
|
||||
if (xhr.status && xhr.readyState === 4) {
|
||||
// Don't throw errors on xhr.abort().
|
||||
if(aborted) return
|
||||
|
||||
if (xhr.readyState === 4) {
|
||||
try {
|
||||
var response = (args.extract !== extract) ? args.extract(xhr, args) : args.deserialize(args.extract(xhr, args))
|
||||
if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {
|
||||
if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304 || FILE_PROTOCOL_REGEX.test(args.url)) {
|
||||
resolve(cast(args.type, response))
|
||||
}
|
||||
else {
|
||||
|
|
|
|||
|
|
@ -390,6 +390,56 @@ o.spec("xhr", function() {
|
|||
o(xhr.getRequestHeader("Accept")).equals("application/json, text/*")
|
||||
}
|
||||
})
|
||||
o("doesn't fail on abort", function(done) {
|
||||
var s = new Date
|
||||
mock.$defineRoutes({
|
||||
"GET /item": function() {
|
||||
return {status: 200, responseText: JSON.stringify({a: 1})}
|
||||
}
|
||||
})
|
||||
|
||||
var failed = false
|
||||
var resolved = false
|
||||
function handleAbort(xhr) {
|
||||
var onreadystatechange = xhr.onreadystatechange // probably not set yet
|
||||
var testonreadystatechange = function() {
|
||||
onreadystatechange.call(xhr)
|
||||
setTimeout(function() { // allow promises to (not) resolve first
|
||||
o(failed).equals(false)
|
||||
o(resolved).equals(false)
|
||||
done()
|
||||
}, 0)
|
||||
}
|
||||
Object.defineProperty(xhr, 'onreadystatechange', {
|
||||
set: function(val) { onreadystatechange = val }
|
||||
, get: function() { return testonreadystatechange }
|
||||
})
|
||||
xhr.abort()
|
||||
}
|
||||
xhr({method: "GET", url: "/item", config: handleAbort}).catch(function() {
|
||||
failed = true
|
||||
})
|
||||
.then(function() {
|
||||
resolved = true
|
||||
})
|
||||
})
|
||||
o("doesn't fail on file:// status 0", function(done) {
|
||||
var s = new Date
|
||||
mock.$defineRoutes({
|
||||
"GET /item": function() {
|
||||
return {status: 0, responseText: JSON.stringify({a: 1})}
|
||||
}
|
||||
})
|
||||
var failed = false
|
||||
xhr({method: "GET", url: "file:///item"}).catch(function() {
|
||||
failed = true
|
||||
}).then(function(data) {
|
||||
o(failed).equals(false)
|
||||
o(data).deepEquals({a: 1})
|
||||
}).then(function() {
|
||||
done()
|
||||
})
|
||||
})
|
||||
/*o("data maintains after interpolate", function() {
|
||||
mock.$defineRoutes({
|
||||
"PUT /items/:x": function() {
|
||||
|
|
@ -463,5 +513,15 @@ o.spec("xhr", function() {
|
|||
})
|
||||
})
|
||||
})
|
||||
o("rejects on cors-like error", function(done) {
|
||||
mock.$defineRoutes({
|
||||
"GET /item": function(request) {
|
||||
return {status: 0}
|
||||
}
|
||||
})
|
||||
xhr({method: "GET", url: "/item"}).catch(function(e) {
|
||||
o(e instanceof Error).equals(true)
|
||||
}).then(done)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ module.exports = function() {
|
|||
XMLHttpRequest: function XMLHttpRequest() {
|
||||
var args = {}
|
||||
var headers = {}
|
||||
var aborted = false
|
||||
this.setRequestHeader = function(header, value) {
|
||||
headers[header] = value
|
||||
}
|
||||
|
|
@ -32,11 +33,15 @@ module.exports = function() {
|
|||
}
|
||||
this.send = function(body) {
|
||||
var self = this
|
||||
var handler = routes[args.method + " " + args.pathname] || serverErrorHandler.bind(null, args.pathname)
|
||||
var data = handler({url: args.pathname, query: args.search || {}, body: body || null})
|
||||
if(!aborted) {
|
||||
var handler = routes[args.method + " " + args.pathname] || serverErrorHandler.bind(null, args.pathname)
|
||||
var data = handler({url: args.pathname, query: args.search || {}, body: body || null})
|
||||
self.status = data.status
|
||||
self.responseText = data.responseText
|
||||
} else {
|
||||
self.status = 0
|
||||
}
|
||||
self.readyState = 4
|
||||
self.status = data.status
|
||||
self.responseText = data.responseText
|
||||
if (args.async === true) {
|
||||
var s = new Date
|
||||
callAsync(function() {
|
||||
|
|
@ -44,6 +49,9 @@ module.exports = function() {
|
|||
})
|
||||
}
|
||||
}
|
||||
this.abort = function() {
|
||||
aborted = true
|
||||
}
|
||||
},
|
||||
document: {
|
||||
createElement: function(tag) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue