bypass route resolution algorithm on non-routed redraws
This commit is contained in:
parent
bb4321e8db
commit
809d8921c9
8 changed files with 105 additions and 117 deletions
|
|
@ -182,7 +182,7 @@ module.exports = {
|
||||||
"prefer-const": "error",
|
"prefer-const": "error",
|
||||||
"prefer-reflect": "off",
|
"prefer-reflect": "off",
|
||||||
"prefer-rest-params": "off",
|
"prefer-rest-params": "off",
|
||||||
"prefer-spread": "error",
|
"prefer-spread": "off",
|
||||||
"prefer-template": "off",
|
"prefer-template": "off",
|
||||||
"quote-props": "off",
|
"quote-props": "off",
|
||||||
"quotes": [
|
"quotes": [
|
||||||
|
|
|
||||||
|
|
@ -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.47 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.44 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
|
||||||
|
|
|
||||||
|
|
@ -7,36 +7,37 @@ module.exports = function($window, redrawService) {
|
||||||
var routeService = coreRouter($window)
|
var routeService = coreRouter($window)
|
||||||
|
|
||||||
var identity = function(v) {return v}
|
var identity = function(v) {return v}
|
||||||
var current = {render: identity, component: null, path: null, resolve: null}
|
var current = {}
|
||||||
var route = function(root, defaultRoute, routes) {
|
var route = function(root, defaultRoute, routes) {
|
||||||
if (root == null) throw new Error("Ensure the DOM element that was passed to `m.route` is not undefined")
|
if (root == null) throw new Error("Ensure the DOM element that was passed to `m.route` is not undefined")
|
||||||
var render = function(resolver, component, params, path) {
|
var update = function(resolver, component, params, path) {
|
||||||
current.render = resolver.render || identity
|
current = {resolver: resolver, component: component, params: params, path: path, resolve: null}
|
||||||
current.component = component
|
current.resolver.render = resolver.render || identity
|
||||||
current.path = path
|
render()
|
||||||
current.resolve = null
|
|
||||||
redrawService.render(root, current.render.call(resolver, Vnode(component, undefined, params)))
|
|
||||||
}
|
}
|
||||||
var run = routeService.defineRoutes(routes, function(component, params, path, route, isAction) {
|
var render = function() {
|
||||||
if (component.view) render({}, component, params, path)
|
redrawService.render(root, current.resolver.render(Vnode(current.component, current.params.key, current.params)))
|
||||||
|
}
|
||||||
|
routeService.defineRoutes(routes, function(component, params, path) {
|
||||||
|
if (component.view) update({}, component, params, path)
|
||||||
else {
|
else {
|
||||||
if (component.onmatch) {
|
if (component.onmatch) {
|
||||||
if (isAction === false && current.path === path || current.resolve != null) render(current, current.component, params)
|
if (current.resolve != null) update(component, current.component, params, path)
|
||||||
else {
|
else {
|
||||||
current.resolve = function(resolved) {
|
current.resolve = function(resolved) {
|
||||||
render(component, resolved, params, path)
|
update(component, resolved, params, path)
|
||||||
}
|
}
|
||||||
component.onmatch(function(resolved) {
|
component.onmatch(function(resolved) {
|
||||||
if (current.resolve != null) current.resolve(resolved)
|
if (current.resolve != null) current.resolve(resolved)
|
||||||
}, params, path)
|
}, params, path)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else render(component, "div", params, path)
|
else update(component, "div", params, path)
|
||||||
}
|
}
|
||||||
}, function() {
|
}, function() {
|
||||||
routeService.setPath(defaultRoute)
|
routeService.setPath(defaultRoute)
|
||||||
})
|
})
|
||||||
redrawService.subscribe(root, run)
|
redrawService.subscribe(root, render)
|
||||||
}
|
}
|
||||||
route.set = routeService.setPath
|
route.set = routeService.setPath
|
||||||
route.get = function() {return current.path}
|
route.get = function() {return current.path}
|
||||||
|
|
|
||||||
57
mithril.js
57
mithril.js
|
|
@ -960,21 +960,21 @@ var parseQueryString = function(string) {
|
||||||
var entries = string.split("&"), data0 = {}, counters = {}
|
var entries = string.split("&"), data0 = {}, counters = {}
|
||||||
for (var i = 0; i < entries.length; i++) {
|
for (var i = 0; i < entries.length; i++) {
|
||||||
var entry = entries[i].split("=")
|
var entry = entries[i].split("=")
|
||||||
var key4 = decodeURIComponent(entry[0])
|
var key5 = decodeURIComponent(entry[0])
|
||||||
var value = entry.length === 2 ? decodeURIComponent(entry[1]) : ""
|
var value = entry.length === 2 ? decodeURIComponent(entry[1]) : ""
|
||||||
if (value === "true") value = true
|
if (value === "true") value = true
|
||||||
else if (value === "false") value = false
|
else if (value === "false") value = false
|
||||||
var levels = key4.split(/\]\[?|\[/)
|
var levels = key5.split(/\]\[?|\[/)
|
||||||
var cursor = data0
|
var cursor = data0
|
||||||
if (key4.indexOf("[") > -1) levels.pop()
|
if (key5.indexOf("[") > -1) levels.pop()
|
||||||
for (var j = 0; j < levels.length; j++) {
|
for (var j = 0; j < levels.length; j++) {
|
||||||
var level = levels[j], nextLevel = levels[j + 1]
|
var level = levels[j], nextLevel = levels[j + 1]
|
||||||
var isNumber = nextLevel == "" || !isNaN(parseInt(nextLevel, 10))
|
var isNumber = nextLevel == "" || !isNaN(parseInt(nextLevel, 10))
|
||||||
var isValue = j === levels.length - 1
|
var isValue = j === levels.length - 1
|
||||||
if (level === "") {
|
if (level === "") {
|
||||||
var key4 = levels.slice(0, j).join()
|
var key5 = levels.slice(0, j).join()
|
||||||
if (counters[key4] == null) counters[key4] = 0
|
if (counters[key5] == null) counters[key5] = 0
|
||||||
level = counters[key4]++
|
level = counters[key5]++
|
||||||
}
|
}
|
||||||
if (cursor[level] == null) {
|
if (cursor[level] == null) {
|
||||||
cursor[level] = isValue ? value : isNumber ? [] : {}
|
cursor[level] = isValue ? value : isNumber ? [] : {}
|
||||||
|
|
@ -996,11 +996,11 @@ var coreRouter = function($window) {
|
||||||
}
|
}
|
||||||
var asyncId
|
var asyncId
|
||||||
function debounceAsync(f) {
|
function debounceAsync(f) {
|
||||||
return function(e) {
|
return function() {
|
||||||
if (asyncId != null) return
|
if (asyncId != null) return
|
||||||
asyncId = callAsync0(function() {
|
asyncId = callAsync0(function() {
|
||||||
asyncId = null
|
asyncId = null
|
||||||
f(e)
|
f()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1011,11 +1011,11 @@ var coreRouter = function($window) {
|
||||||
if (queryIndex > -1) {
|
if (queryIndex > -1) {
|
||||||
var queryEnd = hashIndex > -1 ? hashIndex : path.length
|
var queryEnd = hashIndex > -1 ? hashIndex : path.length
|
||||||
var queryParams = parseQueryString(path.slice(queryIndex + 1, queryEnd))
|
var queryParams = parseQueryString(path.slice(queryIndex + 1, queryEnd))
|
||||||
for (var key3 in queryParams) queryData[key3] = queryParams[key3]
|
for (var key4 in queryParams) queryData[key4] = queryParams[key4]
|
||||||
}
|
}
|
||||||
if (hashIndex > -1) {
|
if (hashIndex > -1) {
|
||||||
var hashParams = parseQueryString(path.slice(hashIndex + 1))
|
var hashParams = parseQueryString(path.slice(hashIndex + 1))
|
||||||
for (var key3 in hashParams) hashData[key3] = hashParams[key3]
|
for (var key4 in hashParams) hashData[key4] = hashParams[key4]
|
||||||
}
|
}
|
||||||
return path.slice(0, pathEnd)
|
return path.slice(0, pathEnd)
|
||||||
}
|
}
|
||||||
|
|
@ -1031,7 +1031,7 @@ var coreRouter = function($window) {
|
||||||
var queryData = {}, hashData = {}
|
var queryData = {}, hashData = {}
|
||||||
path = parsePath(path, queryData, hashData)
|
path = parsePath(path, queryData, hashData)
|
||||||
if (data != null) {
|
if (data != null) {
|
||||||
for (var key3 in data) queryData[key3] = data[key3]
|
for (var key4 in data) queryData[key4] = data[key4]
|
||||||
path = path.replace(/:([^\/]+)/g, function(match2, token) {
|
path = path.replace(/:([^\/]+)/g, function(match2, token) {
|
||||||
delete queryData[token]
|
delete queryData[token]
|
||||||
return data[token]
|
return data[token]
|
||||||
|
|
@ -1049,7 +1049,7 @@ var coreRouter = function($window) {
|
||||||
else $window.location.href = prefix1 + path
|
else $window.location.href = prefix1 + path
|
||||||
}
|
}
|
||||||
function defineRoutes(routes, resolve, reject) {
|
function defineRoutes(routes, resolve, reject) {
|
||||||
function resolveRoute(isAction) {
|
function resolveRoute() {
|
||||||
var path = getPath()
|
var path = getPath()
|
||||||
var params = {}
|
var params = {}
|
||||||
var pathname = parsePath(path, params, params)
|
var pathname = parsePath(path, params, params)
|
||||||
|
|
@ -1063,7 +1063,7 @@ var coreRouter = function($window) {
|
||||||
for (var i = 0; i < keys.length; i++) {
|
for (var i = 0; i < keys.length; i++) {
|
||||||
params[keys[i].replace(/:|\./g, "")] = decodeURIComponent(values[i])
|
params[keys[i].replace(/:|\./g, "")] = decodeURIComponent(values[i])
|
||||||
}
|
}
|
||||||
resolve(routes[route0], params, path, route0, Boolean(isAction))
|
resolve(routes[route0], params, path, route0)
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
@ -1073,9 +1073,7 @@ var coreRouter = function($window) {
|
||||||
|
|
||||||
if (supportsPushState) $window.onpopstate = debounceAsync(resolveRoute)
|
if (supportsPushState) $window.onpopstate = debounceAsync(resolveRoute)
|
||||||
else if (prefix1.charAt(0) === "#") $window.onhashchange = resolveRoute
|
else if (prefix1.charAt(0) === "#") $window.onhashchange = resolveRoute
|
||||||
resolveRoute(true)
|
resolveRoute()
|
||||||
|
|
||||||
return resolveRoute
|
|
||||||
}
|
}
|
||||||
function link(vnode2) {
|
function link(vnode2) {
|
||||||
vnode2.dom.setAttribute("href", prefix1 + vnode2.attrs.href)
|
vnode2.dom.setAttribute("href", prefix1 + vnode2.attrs.href)
|
||||||
|
|
@ -1094,36 +1092,37 @@ var _20 = function($window, redrawService0) {
|
||||||
var routeService = coreRouter($window)
|
var routeService = coreRouter($window)
|
||||||
|
|
||||||
var identity = function(v) {return v}
|
var identity = function(v) {return v}
|
||||||
var current = {render: identity, component: null, path: null, resolve: null}
|
var current = {}
|
||||||
var route = function(root, defaultRoute, routes) {
|
var route = function(root, defaultRoute, routes) {
|
||||||
if (root == null) throw new Error("Ensure the DOM element that was passed to `m.route` is not undefined")
|
if (root == null) throw new Error("Ensure the DOM element that was passed to `m.route` is not undefined")
|
||||||
var render1 = function(resolver, component, params, path) {
|
var update = function(resolver, component, params, path) {
|
||||||
current.render = resolver.render || identity
|
current = {resolver: resolver, component: component, params: params, path: path, resolve: null}
|
||||||
current.component = component
|
current.resolver.render = resolver.render || identity
|
||||||
current.path = path
|
render1()
|
||||||
current.resolve = null
|
|
||||||
redrawService0.render(root, current.render.call(resolver, Vnode(component, undefined, params)))
|
|
||||||
}
|
}
|
||||||
var run1 = routeService.defineRoutes(routes, function(component, params, path, route, isAction) {
|
var render1 = function() {
|
||||||
if (component.view) render1({}, component, params, path)
|
redrawService0.render(root, current.resolver.render(Vnode(current.component, current.params.key, current.params)))
|
||||||
|
}
|
||||||
|
routeService.defineRoutes(routes, function(component, params, path, route) {
|
||||||
|
if (component.view) update({}, component, params, path)
|
||||||
else {
|
else {
|
||||||
if (component.onmatch) {
|
if (component.onmatch) {
|
||||||
if (isAction === false && current.path === path || current.resolve != null) render1(current, current.component, params)
|
if (current.resolve != null) update(component, current.component, params, path)
|
||||||
else {
|
else {
|
||||||
current.resolve = function(resolved) {
|
current.resolve = function(resolved) {
|
||||||
render1(component, resolved, params, path)
|
update(component, resolved, params, path)
|
||||||
}
|
}
|
||||||
component.onmatch(function(resolved) {
|
component.onmatch(function(resolved) {
|
||||||
if (current.resolve != null) current.resolve(resolved)
|
if (current.resolve != null) current.resolve(resolved)
|
||||||
}, params, path)
|
}, params, path)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else render1(component, "div", params, path)
|
else update(component, "div", params, path)
|
||||||
}
|
}
|
||||||
}, function() {
|
}, function() {
|
||||||
routeService.setPath(defaultRoute)
|
routeService.setPath(defaultRoute)
|
||||||
})
|
})
|
||||||
redrawService0.subscribe(root, run1)
|
redrawService0.subscribe(root, render1)
|
||||||
}
|
}
|
||||||
route.set = routeService.setPath
|
route.set = routeService.setPath
|
||||||
route.get = function() {return current.path}
|
route.get = function() {return current.path}
|
||||||
|
|
|
||||||
78
mithril.min.js
vendored
78
mithril.min.js
vendored
|
|
@ -1,41 +1,41 @@
|
||||||
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,"\\")),
|
new function(){function m(a,c,k,g,d,f){return{tag:a,key:c,attrs:k,children:g,text:d,dom:f,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,k,g=[],d={};c=O.exec(a);){var f=c[1],n=c[2];""===f&&""!==n?k=n:"#"===f?d.id=n:"."===f?g.push(n):"["===c[3][0]&&((f=c[6])&&(f=f.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"],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]||
|
"class"===c[4]?g.push(f):d[c[4]]=f||!0)}0<g.length&&(d.className=g.join(" "));I[a]=function(a,c){var f=!1,b,g,v=a.className||a["class"],u;for(u in d)a[u]=d[u];void 0!==v&&(void 0!==a["class"]&&(a["class"]=void 0,a.className=v),void 0!==d.className&&(a.className=d.className+" "+v));for(u in a)if("key"!==u){f=!0;break}c instanceof Array&&1==c.length&&null!=c[0]&&"#"===c[0].tag?g=c[0].children:b=c;return m(k||"div",a.key,f?a:void 0,b,g,void 0)}}var r;null!=arguments[1]&&("object"!==typeof arguments[1]||
|
||||||
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=
|
void 0!==arguments[1].tag||arguments[1]instanceof Array)?g=1:(r=arguments[1],g=2);if(arguments.length===g+1)c=arguments[g]instanceof Array?arguments[g]:[arguments[g]];else for(c=[];g<arguments.length;g++)c.push(arguments[g]);return"string"===typeof a?I[a](r||{},m.normalizeChildren(c)):m(a,r&&r.key,r||{},m.normalizeChildren(c),void 0,void 0)}function P(a){var c=0,k=null,g="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)))}}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,
|
d,a()):null===k&&(k=g(function(){k=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 O=/(?:(^|#|\.)([^#\.\[\]]+))|(\[(.+?)(?:\s*=\s*("|'|)((?:\\["'\]]|.)*?)\5)?\])/g,I={};z.trust=function(a){null==a&&(a="");return m("<",void 0,void 0,a,void 0,
|
||||||
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");
|
void 0)};z.fragment=function(a,c){return m("[",a.key,a,m.normalizeChildren(c),void 0,void 0)};var t=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))G(function(){b||0!==a.length||console.error("Possible unhandled promise rejection:",c);for(var g=0;g<a.length;g++)a[g](c);d.length=0;f.length=0;q.state=b;q.retry=function(){v(c)}});else{if(c===g)throw new TypeError("Promise can't be resolved w/ itself");
|
||||||
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"!==
|
k(h.bind(c))}}catch(Q){r(Q)}}}function k(a){function b(b){return function(a){0<c++||b(a)}}var c=0,d=b(r);try{a(b(n),d)}catch(u){d(u)}}if(!(this instanceof t))throw Error("Promise must be called with `new`");if("function"!==typeof a)throw new TypeError("executor must be a function");var g=this,d=[],f=[],n=c(d,!0),r=c(f,!1),q=g._instance={resolvers:d,rejectors:f},G="function"===typeof setImmediate?setImmediate:setTimeout;k(a)};t.prototype.then=function(a,c){function k(a,c,k,h){c.push(function(b){if("function"!==
|
||||||
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=
|
typeof a)k(b);else try{d(a(b))}catch(B){f&&f(B)}});"function"===typeof g.retry&&h===g.state&&g.retry()}var g=this._instance,d,f,n=new t(function(a,c){d=a;f=c});k(a,g.resolvers,d,!0);k(c,g.rejectors,f,!1);return n};t.prototype["catch"]=function(a){return this.then(null,a)};t.resolve=function(a){return a instanceof t?a:new t(function(c){c(a)})};t.reject=function(a){return new t(function(c,k){k(a)})};t.all=function(a){return new t(function(c,k){var g=a.length,d=0,f=[];if(0===a.length)c([]);else for(var n=
|
||||||
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+"]",
|
0;n<a.length;n++)(function(n){function q(a){d++;f[n]=a;d===g&&c(f)}null==a[n]||"object"!==typeof a[n]&&"function"!==typeof a[n]||"function"!==typeof a[n].then?q(a[n]):a[n].then(q,k)})(n)})};t.race=function(a){return new t(function(c,k){for(var g=0;g<a.length;g++)a[g].then(c,k)})};"undefined"===typeof Promise&&("undefined"!==typeof window?window.Promise=t:"undefined"!==typeof global&&(global.Promise=t));var D=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 t(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 k.push(encodeURIComponent(a)+(null!=f&&""!==f?"="+encodeURIComponent(f):""))}if("[object Object]"!==Object.prototype.toString.call(a))return"";var k=[],g;for(g in a)c(g,a[g]);return k.join("&")},J=function(a,c){function k(){function b(){0===--a&&"function"===typeof h&&h()}var a=0;return function u(c){var d=c.then;c.then=function(){a++;var f=d.apply(c,arguments);f.then(b,function(a){b();throw a;
|
||||||
});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"===
|
});return u(f)};return c}}function g(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 f(b,a){var c=D(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 q(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 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&&
|
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=k();b=g(b,h);var u=new c(function(c,g){null==b.method&&(b.method="GET");b.method=b.method.toUpperCase();var k="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=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&&
|
(b.deserialize=n);"function"!==typeof b.extract&&(b.extract=r);b.url=d(b.url,b.data);k?b.data=b.serialize(b.data):b.url=f(b.url,b.data);var h=new a.XMLHttpRequest;h.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&&k&&h.setRequestHeader("Content-Type","application/json; charset=utf-8");b.deserialize===n&&h.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!==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||
|
(h.withCredentials=b.withCredentials);"function"===typeof b.config&&(h=b.config(h,b)||h);h.onreadystatechange=function(){if(4===h.readyState)try{var a=b.extract!==r?b.extract(h,b):b.deserialize(b.extract(h,b));if(200<=h.status&&300>h.status||304===h.status)c(q(b.type,a));else{var d=Error(h.responseText),f;for(f in a)d[f]=a[f];g(d)}}catch(E){g(E)}};k&&null!=b.data?h.send(b.data):h.send()});return!0===b.background?u:v(u)},jsonp:function(b,h){var n=k();b=g(b,h);var u=new c(function(c,g){var h=b.callbackName||
|
||||||
"_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?
|
"_mithril_"+Math.round(1E16*Math.random())+"_"+m++,k=a.document.createElement("script");a[h]=function(d){k.parentNode.removeChild(k);c(q(b.type,d));delete a[h]};k.onerror=function(){k.parentNode.removeChild(k);g(Error("JSONP request failed"));delete a[h]};null==b.data&&(b.data={});b.url=d(b.url,b.data);b.data[b.callbackKey||"callback"]=h;k.src=f(b.url,b.data);a.document.documentElement.appendChild(k)});return!0===b.background?u:n(u)},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 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";
|
Promise:t),N=function(a){function c(e,l,a,b,c,d,f){for(;a<b;a++){var p=l[a];null!=p&&q(e,k(p,c,f),d)}}function k(e,l,a){var b=e.tag;null!=e.attrs&&z(e.attrs,e,l);if("string"===typeof b)switch(b){case "#":return e.dom=A.createTextNode(e.children);case "<":return g(e);case "[":var p=A.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";
|
||||||
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
|
break;case "math":a="http://www.w3.org/1998/Math/MathML"}var f=(b=e.attrs)&&b.is,d=a?f?A.createElementNS(a,d,{is:f}):A.createElementNS(a,d):f?A.createElement(d,{is:f}):A.createElement(d);e.dom=d;if(null!=b)for(p in f=a,b)u(e,p,null,b[p],f);null!=e.attrs&&null!=e.attrs.contenteditable?G(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&&(p=e.children,c(d,p,0,p.length,l,null,a),l=e.attrs,"select"===e.tag&&null!=l&&("value"in
|
||||||
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=
|
l&&u(e,"value",null,l.value,void 0),"selectedIndex"in l&&u(e,"selectedIndex",null,l.selectedIndex,void 0))));return d}else{e.state||(e.state={});D(e.state,e.tag);p=e.tag.view;if(null!=p.reentrantLock)e=M;else if(p.reentrantLock=!0,z(e.tag,e,l),e.instance=m.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=k(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=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,
|
0,e=M;return e}}function g(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,g){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 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||
|
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]?q(e,k(a[w],b,g),r(l,w+1,d)):null==a[w]?h(l,w,w+1,a):f(e,l[w],a[w],b,r(l,w+1,d),!1,g));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||
|
||||||
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!=
|
0)-p))){p=!0;break a}p=!1}p&&(l=l.concat(l.pool));for(var u=w=0,y=l.length-1,v=a.length-1,F;y>=w&&v>=u;){var x=l[w],m=a[u];if(x!==m||p)if(null==x)w++;else if(null==m)u++;else if(x.key===m.key)w++,u++,f(e,x,m,b,r(l,w,d),p,g),p&&x.tag===m.tag&&q(e,n(x),d);else if(x=l[y],x!==m||p)if(null==x)y--;else if(null==m)u++;else if(x.key===m.key)f(e,x,m,b,r(l,y+1,d),p,g),(p||u<v)&&q(e,n(x),r(l,w,d)),y--,u++;else break;else y--,u++;else w++,u++}for(;y>=w&&v>=u;){x=l[y];m=a[v];if(x!==m||p)if(null==x)y--;else{if(null!=
|
||||||
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;
|
m)if(x.key===m.key)f(e,x,m,b,r(l,y+1,d),p,g),p&&x.tag===m.tag&&q(e,n(x),d),null!=x.dom&&(d=x.dom),y--;else{if(!F){F=l;var x=y,B={},C;for(C=0;C<x;C++){var t=F[C];null!=t&&(t=t.key,null!=t&&(B[t]=C))}F=B}null!=m&&(x=F[m.key],null!=x?(B=l[x],f(e,B,m,b,r(l,y+1,d),p,g),q(e,n(B),d),l[x].skip=!0,null!=B.dom&&(d=B.dom)):(m=k(m,b,void 0),q(e,m,d),d=m))}v--}else y--,v--;if(v<u)break}c(e,a,u,v+1,b,d,g);h(l,w,y+1,a)}}}function f(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;
|
||||||
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!==
|
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&&L(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?(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.children?(n(a),q(e,g(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(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=
|
b.text=void 0));y=a.attrs;v=b.attrs;l=e;if(null!=v)for(r in v)u(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]||C(r)?"key"!==r&&b.dom.removeAttribute(r):t(b,r,void 0));null!=b.attrs&&null!=b.attrs.contenteditable?G(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=
|
||||||
[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();
|
[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)),L(b.tag,b,c,y),null!=b.instance?(null==a.instance?q(e,k(b.instance,c,v),h):f(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),q(e,k(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 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");
|
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 q(b,a,c){c&&c.parentNode?b.insertBefore(a,c):b.appendChild(a)}function G(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: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):
|
}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 t(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 u(a,b,c,d,f){var e=
|
||||||
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"===
|
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&&!C(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)t(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===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"===
|
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"!==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)))}}
|
b?"class":b,d)}}function C(a){return"oninit"===a||"oncreate"===a||"onupdate"===a||"onremove"===a||"onbeforeremove"===a||"onbeforeupdate"===a}function t(a,b,d){var c=a.dom,e="function"!==typeof E?d:function(a){var b=d.call(c,a);E.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)))}}
|
||||||
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;
|
function z(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 L(a,b,c,d){d?z(a,b,c):"function"===typeof a.onupdate&&c.push(a.onupdate.bind(b.state,b))}function D(a,b){Object.keys(b).forEach(function(c){a[c]=b[c]})}var A=a.document,M=A.createDocumentFragment(),E;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;
|
||||||
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);
|
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 E=a}}},H=function(a){function c(a){a=g.indexOf(a);-1<a&&g.splice(a,2)}function k(){for(var a=1;a<g.length;a+=2)g[a]()}a=N(a);a.setEventCallback(function(a){!1!==a.redraw&&k()});var g=[];return{subscribe:function(a,f){c(a);g.push(a,P(f))},unsubscribe:c,redraw:k,render:a.render}}(window);
|
||||||
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]):"";
|
J.setCompletionCallback(H.redraw);z.mount=function(a){return function(c,k){if(null===k)a.render(c,[]),a.unsubscribe(c);else{if(null==k.view)throw Error("m.mount(element, component) expects a component, not a vnode");a.subscribe(c,function(){a.render(c,m(k))});a.redraw()}}}(H);var K=function(a){if(""===a||null==a)return{};"?"===a.charAt(0)&&(a=a.slice(1));a=a.split("&");for(var c={},k={},g=0;g<a.length;g++){var d=a[g].split("="),f=decodeURIComponent(d[0]),d=2===d.length?decodeURIComponent(d[1]):"";
|
||||||
"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=
|
"true"===d?d=!0:"false"===d&&(d=!1);var n=f.split(/\]\[?|\[/),m=c;-1<f.indexOf("[")&&n.pop();for(var q=0;q<n.length;q++){var f=n[q],t=n[q+1],t=""==t||!isNaN(parseInt(t,10)),h=q===n.length-1;""===f&&(f=n.slice(0,q).join(),null==k[f]&&(k[f]=0),f=k[f]++);null==m[f]&&(m[f]=h?d:t?[]:{});m=m[f]}}return c},R=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 k(a){return function(){null==t&&(t=r(function(){t=
|
||||||
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]=
|
null;a()}))}}function g(a,b,c){var d=a.indexOf("?"),f=a.indexOf("#"),g=-1<d?d:-1<f?f:a.length;if(-1<d){var d=K(a.slice(d+1,-1<f?f:a.length)),h;for(h in d)b[h]=d[h]}if(-1<f)for(h in b=K(a.slice(f+1)),b)c[h]=b[h];return a.slice(0,g)}function d(){switch(q.charAt(0)){case "#":return c("hash").slice(q.length);case "?":return c("search").slice(q.length)+c("hash");default:return c("pathname").slice(q.length)+c("search")+c("hash")}}function f(c,b,d){var f={},h={};c=g(c,f,h);if(null!=b){for(var k in b)f[k]=
|
||||||
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("^"+
|
b[k];c=c.replace(/:([^\/]+)/g,function(a,c){delete f[c];return b[c]})}(k=D(f))&&(c+="?"+k);(h=D(h))&&(c+="#"+h);m?(d&&d.replace?a.history.replaceState(null,null,q+c):a.history.pushState(null,null,q+c),a.onpopstate(!0)):a.location.href=q+c}var m="function"===typeof a.history.pushState,r="function"===typeof setImmediate?setImmediate:setTimeout,q="#!",t;return{setPrefix:function(a){q=a},getPath:d,setPath:f,defineRoutes:function(c,b,f){function h(){var a=d(),h={},k=g(a,h,h),m;for(m in c){var n=new RegExp("^"+
|
||||||
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(),
|
m.replace(/:[^\/]+?\.{3}/g,"(.*?)").replace(/:[^\/]+/g,"([^\\/]+)")+"/?$");if(n.test(k)){k.replace(n,function(){for(var d=m.match(/:[^\/]+/g)||[],f=[].slice.call(arguments,1,-2),g=0;g<d.length;g++)h[d[g].replace(/:|\./g,"")]=decodeURIComponent(f[g]);b(c[m],h,a,m)});return}}f(a,h)}m?a.onpopstate=k(h):"#"===q.charAt(0)&&(a.onhashchange=h);h()},link:function(a){a.dom.setAttribute("href",q+a.attrs.href);a.dom.onclick=function(a){a.ctrlKey||a.metaKey||a.shiftKey||2===a.which||(a.preventDefault(),a.redraw=
|
||||||
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({},
|
!1,a=this.getAttribute("href"),0===a.indexOf(q)&&(a=a.slice(q.length)),f(a,void 0,void 0))}}}};z.route=function(a,c){var k=R(a),g=function(a){return a},d={},f=function(a,f,q){if(null==a)throw Error("Ensure the DOM element that was passed to `m.route` is not undefined");var n=function(a,c,f,k){d={resolver:a,component:c,params:f,path:k,resolve:null};d.resolver.render=a.render||g;h()},h=function(){c.render(a,d.resolver.render(m(d.component,d.params.key,d.params)))};k.defineRoutes(q,function(a,c,f,g){a.view?
|
||||||
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;
|
n({},a,c,f):a.onmatch?null!=d.resolve?n(a,d.component,c,f):(d.resolve=function(b){n(a,b,c,f)},a.onmatch(function(a){null!=d.resolve&&d.resolve(a)},c,f)):n(a,"div",c,f)},function(){k.setPath(f)});c.subscribe(a,h)};f.set=k.setPath;f.get=function(){return d.path};f.prefix=k.setPrefix;f.link=k.link;return f}(window,H);z.withAttr=function(a,c,k){return function(g){return c.call(k||this,a in g.currentTarget?g.currentTarget[a]:g.currentTarget.getAttribute(a))}};var S=N(window);z.render=S.render;z.redraw=
|
||||||
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};
|
H.redraw;z.request=J.request;z.jsonp=J.jsonp;z.parseQueryString=K;z.buildQueryString=D;z.version="1.0.0-rc.6";"undefined"!==typeof module?module.exports=z:window.m=z};
|
||||||
|
|
@ -18,11 +18,11 @@ module.exports = function($window) {
|
||||||
|
|
||||||
var asyncId
|
var asyncId
|
||||||
function debounceAsync(f) {
|
function debounceAsync(f) {
|
||||||
return function(e) {
|
return function() {
|
||||||
if (asyncId != null) return
|
if (asyncId != null) return
|
||||||
asyncId = callAsync(function() {
|
asyncId = callAsync(function() {
|
||||||
asyncId = null
|
asyncId = null
|
||||||
f(e)
|
f()
|
||||||
})
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -79,7 +79,7 @@ module.exports = function($window) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function defineRoutes(routes, resolve, reject) {
|
function defineRoutes(routes, resolve, reject) {
|
||||||
function resolveRoute(isAction) {
|
function resolveRoute() {
|
||||||
var path = getPath()
|
var path = getPath()
|
||||||
var params = {}
|
var params = {}
|
||||||
var pathname = parsePath(path, params, params)
|
var pathname = parsePath(path, params, params)
|
||||||
|
|
@ -94,7 +94,7 @@ module.exports = function($window) {
|
||||||
for (var i = 0; i < keys.length; i++) {
|
for (var i = 0; i < keys.length; i++) {
|
||||||
params[keys[i].replace(/:|\./g, "")] = decodeURIComponent(values[i])
|
params[keys[i].replace(/:|\./g, "")] = decodeURIComponent(values[i])
|
||||||
}
|
}
|
||||||
resolve(routes[route], params, path, route, Boolean(isAction))
|
resolve(routes[route], params, path, route)
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
@ -105,9 +105,7 @@ module.exports = function($window) {
|
||||||
|
|
||||||
if (supportsPushState) $window.onpopstate = debounceAsync(resolveRoute)
|
if (supportsPushState) $window.onpopstate = debounceAsync(resolveRoute)
|
||||||
else if (prefix.charAt(0) === "#") $window.onhashchange = resolveRoute
|
else if (prefix.charAt(0) === "#") $window.onhashchange = resolveRoute
|
||||||
resolveRoute(true)
|
resolveRoute()
|
||||||
|
|
||||||
return resolveRoute
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function link(vnode) {
|
function link(vnode) {
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ o.spec("Router.defineRoutes", function() {
|
||||||
|
|
||||||
callAsync(function() {
|
callAsync(function() {
|
||||||
o(onRouteChange.callCount).equals(1)
|
o(onRouteChange.callCount).equals(1)
|
||||||
o(onRouteChange.args).deepEquals([{data: 1}, {}, "/test", "/test", true])
|
o(onRouteChange.args).deepEquals([{data: 1}, {}, "/test", "/test"])
|
||||||
o(onFail.callCount).equals(0)
|
o(onFail.callCount).equals(0)
|
||||||
|
|
||||||
done()
|
done()
|
||||||
|
|
@ -49,7 +49,7 @@ o.spec("Router.defineRoutes", function() {
|
||||||
|
|
||||||
callAsync(function() {
|
callAsync(function() {
|
||||||
o(onRouteChange.callCount).equals(1)
|
o(onRouteChange.callCount).equals(1)
|
||||||
o(onRouteChange.args).deepEquals([{data: 2}, {"ö": "ö"}, "/ö?ö=ö#ö=ö", "/ö", true])
|
o(onRouteChange.args).deepEquals([{data: 2}, {"ö": "ö"}, "/ö?ö=ö#ö=ö", "/ö"])
|
||||||
o(onFail.callCount).equals(0)
|
o(onFail.callCount).equals(0)
|
||||||
|
|
||||||
done()
|
done()
|
||||||
|
|
@ -62,7 +62,7 @@ o.spec("Router.defineRoutes", function() {
|
||||||
|
|
||||||
callAsync(function() {
|
callAsync(function() {
|
||||||
o(onRouteChange.callCount).equals(1)
|
o(onRouteChange.callCount).equals(1)
|
||||||
o(onRouteChange.args).deepEquals([{data: 2}, {"ö": "ö"}, "/ö?ö=ö#ö=ö", "/ö", true])
|
o(onRouteChange.args).deepEquals([{data: 2}, {"ö": "ö"}, "/ö?ö=ö#ö=ö", "/ö"])
|
||||||
o(onFail.callCount).equals(0)
|
o(onFail.callCount).equals(0)
|
||||||
|
|
||||||
done()
|
done()
|
||||||
|
|
@ -79,7 +79,7 @@ o.spec("Router.defineRoutes", function() {
|
||||||
|
|
||||||
callAsync(function() {
|
callAsync(function() {
|
||||||
o(onRouteChange.callCount).equals(1)
|
o(onRouteChange.callCount).equals(1)
|
||||||
o(onRouteChange.args).deepEquals([{data: 1}, {}, "/test", "/test", true])
|
o(onRouteChange.args).deepEquals([{data: 1}, {}, "/test", "/test"])
|
||||||
o(onFail.callCount).equals(0)
|
o(onFail.callCount).equals(0)
|
||||||
|
|
||||||
done()
|
done()
|
||||||
|
|
@ -92,7 +92,7 @@ o.spec("Router.defineRoutes", function() {
|
||||||
|
|
||||||
callAsync(function() {
|
callAsync(function() {
|
||||||
o(onRouteChange.callCount).equals(1)
|
o(onRouteChange.callCount).equals(1)
|
||||||
o(onRouteChange.args).deepEquals([{data: 1}, {a: "x"}, "/test/x", "/test/:a", true])
|
o(onRouteChange.args).deepEquals([{data: 1}, {a: "x"}, "/test/x", "/test/:a"])
|
||||||
o(onFail.callCount).equals(0)
|
o(onFail.callCount).equals(0)
|
||||||
|
|
||||||
done()
|
done()
|
||||||
|
|
@ -105,7 +105,7 @@ o.spec("Router.defineRoutes", function() {
|
||||||
|
|
||||||
callAsync(function() {
|
callAsync(function() {
|
||||||
o(onRouteChange.callCount).equals(1)
|
o(onRouteChange.callCount).equals(1)
|
||||||
o(onRouteChange.args).deepEquals([{data: 1}, {a: "x", b: "y"}, "/test/x/y", "/test/:a/:b", true])
|
o(onRouteChange.args).deepEquals([{data: 1}, {a: "x", b: "y"}, "/test/x/y", "/test/:a/:b"])
|
||||||
o(onFail.callCount).equals(0)
|
o(onFail.callCount).equals(0)
|
||||||
|
|
||||||
done()
|
done()
|
||||||
|
|
@ -118,7 +118,7 @@ o.spec("Router.defineRoutes", function() {
|
||||||
|
|
||||||
callAsync(function() {
|
callAsync(function() {
|
||||||
o(onRouteChange.callCount).equals(1)
|
o(onRouteChange.callCount).equals(1)
|
||||||
o(onRouteChange.args).deepEquals([{data: 1}, {a: "x/y"}, "/test/x/y", "/test/:a...", true])
|
o(onRouteChange.args).deepEquals([{data: 1}, {a: "x/y"}, "/test/x/y", "/test/:a..."])
|
||||||
o(onFail.callCount).equals(0)
|
o(onFail.callCount).equals(0)
|
||||||
|
|
||||||
done()
|
done()
|
||||||
|
|
@ -131,7 +131,7 @@ o.spec("Router.defineRoutes", function() {
|
||||||
|
|
||||||
callAsync(function() {
|
callAsync(function() {
|
||||||
o(onRouteChange.callCount).equals(1)
|
o(onRouteChange.callCount).equals(1)
|
||||||
o(onRouteChange.args).deepEquals([{data: 1}, {a: "b", c: "d"}, "/test?a=b&c=d", "/test", true])
|
o(onRouteChange.args).deepEquals([{data: 1}, {a: "b", c: "d"}, "/test?a=b&c=d", "/test"])
|
||||||
o(onFail.callCount).equals(0)
|
o(onFail.callCount).equals(0)
|
||||||
|
|
||||||
done()
|
done()
|
||||||
|
|
@ -144,7 +144,7 @@ o.spec("Router.defineRoutes", function() {
|
||||||
|
|
||||||
callAsync(function() {
|
callAsync(function() {
|
||||||
o(onRouteChange.callCount).equals(1)
|
o(onRouteChange.callCount).equals(1)
|
||||||
o(onRouteChange.args).deepEquals([{data: 1}, {a: "b", c: "d"}, "/test#a=b&c=d", "/test", true])
|
o(onRouteChange.args).deepEquals([{data: 1}, {a: "b", c: "d"}, "/test#a=b&c=d", "/test"])
|
||||||
o(onFail.callCount).equals(0)
|
o(onFail.callCount).equals(0)
|
||||||
|
|
||||||
done()
|
done()
|
||||||
|
|
@ -157,7 +157,7 @@ o.spec("Router.defineRoutes", function() {
|
||||||
|
|
||||||
callAsync(function() {
|
callAsync(function() {
|
||||||
o(onRouteChange.callCount).equals(1)
|
o(onRouteChange.callCount).equals(1)
|
||||||
o(onRouteChange.args).deepEquals([{data: 1}, {a: "b", c: "d"}, "/test?a=b#c=d", "/test", true])
|
o(onRouteChange.args).deepEquals([{data: 1}, {a: "b", c: "d"}, "/test?a=b#c=d", "/test"])
|
||||||
o(onFail.callCount).equals(0)
|
o(onFail.callCount).equals(0)
|
||||||
|
|
||||||
done()
|
done()
|
||||||
|
|
@ -194,7 +194,7 @@ o.spec("Router.defineRoutes", function() {
|
||||||
|
|
||||||
callAsync(function() {
|
callAsync(function() {
|
||||||
o(onRouteChange.callCount).equals(1)
|
o(onRouteChange.callCount).equals(1)
|
||||||
o(onRouteChange.args).deepEquals([{data: 1}, {}, "/z/y/x", "/z/y/x", true])
|
o(onRouteChange.args).deepEquals([{data: 1}, {}, "/z/y/x", "/z/y/x"])
|
||||||
|
|
||||||
done()
|
done()
|
||||||
})
|
})
|
||||||
|
|
@ -206,7 +206,7 @@ o.spec("Router.defineRoutes", function() {
|
||||||
|
|
||||||
callAsync(function() {
|
callAsync(function() {
|
||||||
o(onRouteChange.callCount).equals(1)
|
o(onRouteChange.callCount).equals(1)
|
||||||
o(onRouteChange.args).deepEquals([{data: 2}, {a: "z/y/x"}, "/z/y/x", "/:a...", true])
|
o(onRouteChange.args).deepEquals([{data: 2}, {a: "z/y/x"}, "/z/y/x", "/:a..."])
|
||||||
|
|
||||||
done()
|
done()
|
||||||
})
|
})
|
||||||
|
|
@ -222,7 +222,7 @@ o.spec("Router.defineRoutes", function() {
|
||||||
|
|
||||||
callAsync(function() {
|
callAsync(function() {
|
||||||
o(onRouteChange.callCount).equals(1)
|
o(onRouteChange.callCount).equals(1)
|
||||||
o(onRouteChange.args).deepEquals([{data: 1}, {}, "/z/y/x", "/z/y/x", true])
|
o(onRouteChange.args).deepEquals([{data: 1}, {}, "/z/y/x", "/z/y/x"])
|
||||||
|
|
||||||
done()
|
done()
|
||||||
})
|
})
|
||||||
|
|
@ -238,7 +238,7 @@ o.spec("Router.defineRoutes", function() {
|
||||||
|
|
||||||
callAsync(function() {
|
callAsync(function() {
|
||||||
o(onRouteChange.callCount).equals(1)
|
o(onRouteChange.callCount).equals(1)
|
||||||
o(onRouteChange.args).deepEquals([{data: 2}, {a: "z/y/x"}, "/z/y/x", "/:a...", true])
|
o(onRouteChange.args).deepEquals([{data: 2}, {a: "z/y/x"}, "/z/y/x", "/:a..."])
|
||||||
|
|
||||||
done()
|
done()
|
||||||
})
|
})
|
||||||
|
|
@ -253,7 +253,7 @@ o.spec("Router.defineRoutes", function() {
|
||||||
|
|
||||||
callAsync(function() {
|
callAsync(function() {
|
||||||
o(onRouteChange.callCount).equals(1)
|
o(onRouteChange.callCount).equals(1)
|
||||||
o(onRouteChange.args).deepEquals([{data: 1}, {}, "/z/y/x", "/z/y/x", true])
|
o(onRouteChange.args).deepEquals([{data: 1}, {}, "/z/y/x", "/z/y/x"])
|
||||||
|
|
||||||
done()
|
done()
|
||||||
})
|
})
|
||||||
|
|
@ -268,7 +268,7 @@ o.spec("Router.defineRoutes", function() {
|
||||||
|
|
||||||
callAsync(function() {
|
callAsync(function() {
|
||||||
o(onRouteChange.callCount).equals(1)
|
o(onRouteChange.callCount).equals(1)
|
||||||
o(onRouteChange.args).deepEquals([{data: 2}, {a: "z/y/x"}, "/z/y/x", "/:a...", true])
|
o(onRouteChange.args).deepEquals([{data: 2}, {a: "z/y/x"}, "/z/y/x", "/:a..."])
|
||||||
|
|
||||||
done()
|
done()
|
||||||
})
|
})
|
||||||
|
|
@ -284,16 +284,6 @@ o.spec("Router.defineRoutes", function() {
|
||||||
done()
|
done()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
o("replays", function() {
|
|
||||||
$window.location.href = prefix + "/test"
|
|
||||||
var replay = router.defineRoutes({"/test": {data: 1}}, onRouteChange, onFail)
|
|
||||||
replay()
|
|
||||||
|
|
||||||
o(onRouteChange.callCount).equals(2)
|
|
||||||
o(onRouteChange.args).deepEquals([{data: 1}, {}, "/test", "/test", false])
|
|
||||||
o(onFail.callCount).equals(0)
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue