From 419d08fe8b972af8c0e6fe80484467b40e524e95 Mon Sep 17 00:00:00 2001 From: Gandalf-the-Bot Date: Fri, 17 Feb 2017 17:35:43 +0000 Subject: [PATCH] Bundled output for commit abceb2c9a802f7f744f2cec35a5e691638ae95c5 [skip ci] --- mithril.js | 38 ++++++++++++++--------- mithril.min.js | 84 +++++++++++++++++++++++++------------------------- 2 files changed, 66 insertions(+), 56 deletions(-) diff --git a/mithril.js b/mithril.js index afa2ff9a..60cc7929 100644 --- a/mithril.js +++ b/mithril.js @@ -17,7 +17,7 @@ Vnode.normalizeChildren = function normalizeChildren(children) { var selectorParser = /(?:(^|#|\.)([^#\.\[\]]+))|(\[(.+?)(?:\s*=\s*("|'|)((?:\\["'\]]|.)*?)\5)?\])/g var selectorCache = {} function hyperscript(selector) { - if (selector == null || typeof selector !== "string" && typeof selector.view !== "function") { + if (selector == null || typeof selector !== "string" && typeof selector !== "function" && typeof selector.view !== "function") { throw Error("The selector must be either a string or a component."); } if (typeof selector === "string" && selectorCache[selector] === undefined) { @@ -436,13 +436,23 @@ var coreRenderer = function($window) { return element } function createComponent(parent, vnode, hooks, ns, nextSibling) { - vnode.state = Object.create(vnode.tag) - var view = vnode.tag.view - if (view.reentrantLock != null) return $emptyFragment - view.reentrantLock = true - initLifecycle(vnode.tag, vnode, hooks) - vnode.instance = Vnode.normalize(view.call(vnode.state, vnode)) - view.reentrantLock = null + var sentinel + if (typeof vnode.tag === "function") { + vnode.state = null + sentinel = vnode.tag + if (sentinel.$$reentrantLock$$ != null) return $emptyFragment + sentinel.$$reentrantLock$$ = true + vnode.state = (vnode.tag.prototype != null && typeof vnode.tag.prototype.view === "function") ? new vnode.tag(vnode) : vnode.tag(vnode) + } else { + // For object literals since `Vnode()` always sets the `state` field. + vnode.state = Object.create(vnode.tag) + sentinel = vnode.state.view + if (sentinel.$$reentrantLock$$ != null) return $emptyFragment + sentinel.$$reentrantLock$$ = true + } + initLifecycle(vnode.state, vnode, hooks) + vnode.instance = Vnode.normalize(vnode.state.view(vnode)) + sentinel.$$reentrantLock$$ = null if (vnode.instance != null) { if (vnode.instance === vnode) throw Error("A view cannot return the vnode it received as arguments") var element = createNode(parent, vnode.instance, hooks, ns, nextSibling) @@ -627,8 +637,8 @@ var coreRenderer = function($window) { } } function updateComponent(parent, old, vnode, hooks, nextSibling, recycling, ns) { - vnode.instance = Vnode.normalize(vnode.tag.view.call(vnode.state, vnode)) - updateLifecycle(vnode.tag, vnode, hooks, recycling) + vnode.instance = Vnode.normalize(vnode.state.view(vnode)) + updateLifecycle(vnode.state, vnode, hooks, recycling) if (vnode.instance != null) { if (old.instance == null) createNode(parent, vnode.instance, hooks, ns, nextSibling) else updateNode(parent, old.instance, vnode.instance, hooks, nextSibling, recycling, ns) @@ -717,8 +727,8 @@ var coreRenderer = function($window) { result.then(continuation, continuation) } } - if (typeof vnode.tag !== "string" && vnode.tag.onbeforeremove) { - var result = vnode.tag.onbeforeremove.call(vnode.state, vnode) + if (typeof vnode.tag !== "string" && vnode.state.onbeforeremove) { + var result = vnode.state.onbeforeremove(vnode) if (result != null && typeof result.then === "function") { expected++ result.then(continuation, continuation) @@ -751,7 +761,7 @@ var coreRenderer = function($window) { } function onremove(vnode) { if (vnode.attrs && vnode.attrs.onremove) vnode.attrs.onremove.call(vnode.state, vnode) - if (typeof vnode.tag !== "string" && vnode.tag.onremove) vnode.tag.onremove.call(vnode.state, vnode) + if (typeof vnode.tag !== "string" && vnode.state.onremove) vnode.state.onremove(vnode) if (vnode.instance != null) onremove(vnode.instance) else { var children = vnode.children @@ -882,7 +892,7 @@ var coreRenderer = function($window) { function shouldUpdate(vnode, old) { var forceVnodeUpdate, forceComponentUpdate if (vnode.attrs != null && typeof vnode.attrs.onbeforeupdate === "function") forceVnodeUpdate = vnode.attrs.onbeforeupdate.call(vnode.state, vnode, old) - if (typeof vnode.tag !== "string" && typeof vnode.tag.onbeforeupdate === "function") forceComponentUpdate = vnode.tag.onbeforeupdate.call(vnode.state, vnode, old) + if (typeof vnode.tag !== "string" && typeof vnode.state.onbeforeupdate === "function") forceComponentUpdate = vnode.state.onbeforeupdate(vnode, old) if (!(forceVnodeUpdate === undefined && forceComponentUpdate === undefined) && !forceVnodeUpdate && !forceComponentUpdate) { vnode.dom = old.dom vnode.domSize = old.domSize diff --git a/mithril.min.js b/mithril.min.js index 7b2c9d91..60afe23c 100644 --- a/mithril.min.js +++ b/mithril.min.js @@ -1,42 +1,42 @@ -new function(){function x(a,d,h,f,g,l){return{tag:a,key:d,attrs:h,children:f,text:g,dom:l,domSize:void 0,state:{},events:void 0,instance:void 0,skip:!1}}function A(a){if(null==a||"string"!==typeof a&&"function"!==typeof a.view)throw Error("The selector must be either a string or a component.");if("string"===typeof a&&void 0===H[a]){for(var d,h,f=[],g={};d=O.exec(a);){var l=d[1],k=d[2];""===l&&""!==k?h=k:"#"===l?g.id=k:"."===l?f.push(k):"["===d[3][0]&&((l=d[6])&&(l=l.replace(/\\(["'])/g,"$1").replace(/\\\\/g, -"\\")),"class"===d[4]?f.push(l):g[d[4]]=l||!0)}0b.indexOf("?")?"?":"&";b+=f+d}return b}function k(b){try{return""!==b?JSON.parse(b):null}catch(u){throw Error(b);}} -function p(b){return b.responseText}function r(b,a){if("function"===typeof b)if(Array.isArray(a))for(var d=0;dn.status||304===n.status)d(r(b.type,a));else{var m=Error(n.responseText),c;for(c in a)m[c]= -a[c];f(m)}}catch(e){f(e)}};h&&null!=b.data?n.send(b.data):n.send()});return!0===b.background?u:t(u)},jsonp:function(b,k){var p=h();b=f(b,k);var q=new d(function(d,f){var h=b.callbackName||"_mithril_"+Math.round(1E16*Math.random())+"_"+t++,k=a.document.createElement("script");a[h]=function(f){k.parentNode.removeChild(k);d(r(b.type,f));delete a[h]};k.onerror=function(){k.parentNode.removeChild(k);f(Error("JSONP request failed"));delete a[h]};null==b.data&&(b.data={});b.url=g(b.url,b.data);b.data[b.callbackKey|| -"callback"]=h;k.src=l(b.url,b.data);a.document.documentElement.appendChild(k)});return!0===b.background?q:p(q)},setCompletionCallback:function(a){q=a}}}(window,w),N=function(a){function d(a,c,e,b,d,f,g){for(;e=m&&u>=e;){var y=c[m],z=b[e];if(y!==z||f)if(null==y)m++;else if(null==z)e++;else if(y.key===z.key){var C=null!=v&&m>=c.length-v.length||null==v&&f;m++;e++;l(a,y,z,g,p(c,m,B),C,n); -f&&y.tag===z.tag&&r(a,k(y),B)}else if(y=c[t],y!==z||f)if(null==y)t--;else if(null==z)e++;else if(y.key===z.key)C=null!=v&&t>=c.length-v.length||null==v&&f,l(a,y,z,g,p(c,t+1,B),C,n),(f||e=m&&u>=e;){y=c[t];z=b[u];if(y!==z||f)if(null==y)t--;else{if(null!=z)if(y.key===z.key)C=null!=v&&t>=c.length-v.length||null==v&&f,l(a,y,z,g,p(c,t+1,B),C,n),f&&y.tag===z.tag&&r(a,k(y),B),null!=y.dom&&(B=y.dom),t--;else{if(!E){E=c;var y=t,C={}, -w;for(w=0;wc.indexOf("?")?"?":"&";c+=f+d}return c}function k(c){try{return""!==c?JSON.parse(c):null}catch(A){throw Error(c);}} +function m(c){return c.responseText}function n(c,a){if("function"===typeof c)if(Array.isArray(a))for(var d=0;dp.status||304===p.status)d(n(c.type,a));else{var q=Error(p.responseText),b;for(b in a)q[b]= +a[b];f(q)}}catch(e){f(e)}};h&&null!=c.data?p.send(c.data):p.send()});return!0===c.background?A:t(A)},jsonp:function(c,k){var m=h();c=f(c,k);var x=new d(function(d,f){var h=c.callbackName||"_mithril_"+Math.round(1E16*Math.random())+"_"+t++,k=a.document.createElement("script");a[h]=function(f){k.parentNode.removeChild(k);d(n(c.type,f));delete a[h]};k.onerror=function(){k.parentNode.removeChild(k);f(Error("JSONP request failed"));delete a[h]};null==c.data&&(c.data={});c.url=g(c.url,c.data);c.data[c.callbackKey|| +"callback"]=h;k.src=l(c.url,c.data);a.document.documentElement.appendChild(k)});return!0===c.background?x:m(x)},setCompletionCallback:function(a){x=a}}}(window,v),N=function(a){function d(a,b,e,c,d,f,g){for(;e=q&&A>=r;){var u=b[q],y=e[r];if(u!==y||c)if(null==u)q++;else if(null==y)r++;else if(u.key===y.key){var C=null!=t&&q>=b.length-t.length||null==t&&c;q++;r++;l(a,u,y,f,m(b,q,g),C,p);c&&u.tag===y.tag&&n(a,k(u),g)}else if(u=b[B],u!==y||c)if(null==u)B--;else if(null==y)r++;else if(u.key===y.key)C=null!=t&&B>=b.length-t.length||null==t&&c,l(a,u,y,f,m(b,B+1,g),C,p),(c||r=q&&A>=r;){u=b[B];y=e[A];if(u!==y||c)if(null==u)B--;else{if(null!=y)if(u.key===y.key)C=null!=t&&B>=b.length-t.length||null==t&&c,l(a,u,y,f,m(b,B+1,g),C,p),c&&u.tag===y.tag&&n(a,k(u),g),null!=u.dom&&(g=u.dom),B--;else{if(!E){E=b;var u=B,C={},v;for(v=0;v