Merge remote-tracking branch 'origin/rewrite' into rewrite

This commit is contained in:
Leo Horie 2016-12-04 23:36:52 -05:00
commit bb4321e8db
6 changed files with 78 additions and 70 deletions

View file

@ -1,8 +1,8 @@
# Mithril.js - A framework for building brilliant applications # Mithril.js - A framework for building brilliant applications
[Installation](docs/installation.md) | [API](docs/api.md) | [Examples](docs/examples.md) | [Migration Guide](docs/v1.x-migration.md) [Installation](docs/installation.md) | [API](docs/api.md) | [Examples](docs/examples.md) | [Changelog/Migration Guide](docs/change-log.md)
Note: This branch is the upcoming version 1.0. It's a rewrite from the ground up and it's not backwards compatible with [Mithril 0.2.x](http://mithril.js.org). You can find preliminary [documentation here](docs) and [migration guide here](docs/v1.x-migration.md) Note: This branch is the upcoming version 1.0. It's a rewrite from the ground up and it's not backwards compatible with [Mithril 0.2.x](http://mithril.js.org). You can find preliminary [documentation here](docs) and [migration guide here](docs/change-log.md)
This rewrite aims to fix longstanding API design issues, significantly improve performance, and clean up the codebase. This rewrite aims to fix longstanding API design issues, significantly improve performance, and clean up the codebase.
@ -34,6 +34,6 @@ There are over 4000 assertions in the test suite, and tests cover even difficult
## Modularity ## Modularity
Despite the huge improvements in performance and modularity, the new codebase is smaller than v0.2.x, currently clocking at <!-- size -->7.46 KB<!-- /size --> min+gzip Despite the huge improvements in performance and modularity, the new codebase is smaller than v0.2.x, currently clocking at <!-- size -->7.47 KB<!-- /size --> min+gzip
In addition, Mithril is now completely modular: you can import only the modules that you need and easily integrate 3rd party modules if you wish to use a different library for routing, ajax, and even rendering In addition, Mithril is now completely modular: you can import only the modules that you need and easily integrate 3rd party modules if you wish to use a different library for routing, ajax, and even rendering

View file

@ -15,7 +15,7 @@ module.exports = function($window, redrawService) {
current.component = component current.component = component
current.path = path current.path = path
current.resolve = null current.resolve = null
redrawService.render(root, current.render(Vnode(component, undefined, params))) redrawService.render(root, current.render.call(resolver, Vnode(component, undefined, params)))
} }
var run = routeService.defineRoutes(routes, function(component, params, path, route, isAction) { var run = routeService.defineRoutes(routes, function(component, params, path, route, isAction) {
if (component.view) render({}, component, params, path) if (component.view) render({}, component, params, path)
@ -27,7 +27,7 @@ module.exports = function($window, redrawService) {
render(component, resolved, params, path) render(component, resolved, params, path)
} }
component.onmatch(function(resolved) { component.onmatch(function(resolved) {
if (current.path !== path && current.resolve != null) current.resolve(resolved) if (current.resolve != null) current.resolve(resolved)
}, params, path) }, params, path)
} }
} }

View file

@ -238,25 +238,28 @@ o.spec("route", function() {
} }
} }
var resolver = {
onmatch: function(resolve, args, requestedPath) {
matchCount++
o(args.id).equals("abc")
o(requestedPath).equals("/abc")
o(this).equals(resolver)
resolve(Component)
},
render: function(vnode) {
renderCount++
o(vnode.attrs.id).equals("abc")
o(this).equals(resolver)
return vnode
},
}
$window.location.href = prefix + "/abc" $window.location.href = prefix + "/abc"
route(root, "/abc", { route(root, "/abc", {
"/:id" : { "/:id" : resolver
onmatch: function(resolve, args, requestedPath) {
matchCount++
o(args.id).equals("abc")
o(requestedPath).equals("/abc")
resolve(Component)
},
render: function(vnode) {
renderCount++
o(vnode.attrs.id).equals("abc")
return vnode
},
},
}) })
o(matchCount).equals(1) o(matchCount).equals(1)
@ -514,21 +517,24 @@ o.spec("route", function() {
o("m.route.set(m.route.get()) re-runs the resolution logic (#1180)", function(done){ o("m.route.set(m.route.get()) re-runs the resolution logic (#1180)", function(done){
var onmatch = o.spy(function(resolve) {resolve()}) var onmatch = o.spy(function(resolve) {resolve()})
var render = o.spy(function(){return m("div")})
$window.location.href = prefix + "/" $window.location.href = prefix + "/"
route(root, '/', { route(root, '/', {
"/":{ "/":{
onmatch: onmatch, onmatch: onmatch,
render: function(){return m("div")} render: render
} }
}) })
o(onmatch.callCount).equals(1) o(onmatch.callCount).equals(1)
o(render.callCount).equals(1)
route.set(route.get()) route.set(route.get())
setTimeout(function() { setTimeout(function() {
o(onmatch.callCount).equals(2) o(onmatch.callCount).equals(2)
o(render.callCount).equals(2)
done() done()
}, FRAME_BUDGET) }, FRAME_BUDGET)

View file

@ -837,15 +837,16 @@ var coreRenderer = function($window) {
//event //event
function updateEvent(vnode, key2, value) { function updateEvent(vnode, key2, value) {
var element = vnode.dom var element = vnode.dom
var callback = function(e) { var callback = typeof onevent !== "function" ? value : function(e) {
var result = value.call(element, e) var result = value.call(element, e)
if (typeof onevent === "function") onevent.call(element, e) onevent.call(element, e)
return result return result
} }
if (key2 in element) element[key2] = typeof value === "function" ? callback : null if (key2 in element) element[key2] = typeof value === "function" ? callback : null
else { else {
var eventName = key2.slice(2) var eventName = key2.slice(2)
if (vnode.events === undefined) vnode.events = {} if (vnode.events === undefined) vnode.events = {}
if (vnode.events[key2] === callback) return
if (vnode.events[key2] != null) element.removeEventListener(eventName, vnode.events[key2], false) if (vnode.events[key2] != null) element.removeEventListener(eventName, vnode.events[key2], false)
if (typeof value === "function") { if (typeof value === "function") {
vnode.events[key2] = callback vnode.events[key2] = callback
@ -1101,7 +1102,7 @@ var _20 = function($window, redrawService0) {
current.component = component current.component = component
current.path = path current.path = path
current.resolve = null current.resolve = null
redrawService0.render(root, current.render(Vnode(component, undefined, params))) redrawService0.render(root, current.render.call(resolver, Vnode(component, undefined, params)))
} }
var run1 = routeService.defineRoutes(routes, function(component, params, path, route, isAction) { var run1 = routeService.defineRoutes(routes, function(component, params, path, route, isAction) {
if (component.view) render1({}, component, params, path) if (component.view) render1({}, component, params, path)
@ -1113,7 +1114,7 @@ var _20 = function($window, redrawService0) {
render1(component, resolved, params, path) render1(component, resolved, params, path)
} }
component.onmatch(function(resolved) { component.onmatch(function(resolved) {
if (current.path !== path && current.resolve != null) current.resolve(resolved) if (current.resolve != null) current.resolve(resolved)
}, params, path) }, params, path)
} }
} }

82
mithril.min.js vendored
View file

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

View file

@ -515,15 +515,16 @@ module.exports = function($window) {
//event //event
function updateEvent(vnode, key, value) { function updateEvent(vnode, key, value) {
var element = vnode.dom var element = vnode.dom
var callback = function(e) { var callback = typeof onevent !== "function" ? value : function(e) {
var result = value.call(element, e) var result = value.call(element, e)
if (typeof onevent === "function") onevent.call(element, e) onevent.call(element, e)
return result return result
} }
if (key in element) element[key] = typeof value === "function" ? callback : null if (key in element) element[key] = typeof value === "function" ? callback : null
else { else {
var eventName = key.slice(2) var eventName = key.slice(2)
if (vnode.events === undefined) vnode.events = {} if (vnode.events === undefined) vnode.events = {}
if (vnode.events[key] === callback) return
if (vnode.events[key] != null) element.removeEventListener(eventName, vnode.events[key], false) if (vnode.events[key] != null) element.removeEventListener(eventName, vnode.events[key], false)
if (typeof value === "function") { if (typeof value === "function") {
vnode.events[key] = callback vnode.events[key] = callback