diff --git a/mithril.js b/mithril.js index 1867d094..392fb36b 100644 --- a/mithril.js +++ b/mithril.js @@ -514,8 +514,12 @@ var _14 = function($window) { // For object literals since `Vnode()` always sets the `state0` field. if (!vnode.state) vnode.state = {} assign(vnode.state, 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(vnode.tag.view.call(vnode.state, vnode)) + vnode.instance = Vnode.normalize(view.call(vnode.state, vnode)) + view.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(vnode.instance, hooks, ns) diff --git a/mithril.min.js b/mithril.min.js index 10d90adb..c8aa22b6 100644 --- a/mithril.min.js +++ b/mithril.min.js @@ -1,43 +1,43 @@ -new function(){function y(b,f,p,g,k,h){return{tag:b,key:f,attrs:p,children:g,text:k,dom:h,domSize:void 0,state:{},events:void 0,instance:void 0,skip:!1}}function A(b){if(null==b||"string"!==typeof b&&null==b.view)throw Error("The selector must be either a string or a component.");if("string"===typeof b&&void 0===J[b]){for(var f,p,g=[],k={};f=Q.exec(b);){var h=f[1],w=f[2];""===h&&""!==w?p=w:"#"===h?k.id=w:"."===h?g.push(w):"["===f[3][0]&&((h=f[6])&&(h=h.replace(/\\(["'])/g,"$1").replace(/\\\\/g,"\\")), -k[f[4]]=h||!0)}0d.filter(G).length)throw Error("Ensure that each item passed to m.prop.combine/m.prop.merge is a stream"); return v(f(),d,function(){var e=d.filter(B);if(0e.indexOf("?")?"?":"&";e+=g+f}return e}function k(e){try{return""!==e?JSON.parse(e):null}catch(l){throw Error(e);}}function h(e){return e.responseText}function w(e,b){if("function"===typeof e)if(b instanceof Array)for(var f=0;fe.indexOf("?")?"?":"&";e+=g+f}return e}function k(e){try{return""!==e?JSON.parse(e):null}catch(l){throw Error(e);}}function h(e){return e.responseText}function w(e,b){if("function"===typeof e)if(b instanceof Array)for(var f=0;fu.status||304===u.status)l(w(e.type,b));else{var f=Error(u.responseText),g;for(g in b)f[g]=b[g];l.error(f)}}catch(D){l.error(D)}"function"===typeof m&&m()}};r?u.send(e.data):u.send();return l},jsonp:function(e){var h=f();void 0!==e.initialValue&&h(e.initialValue);var r=e.callbackName||"_mithril_"+Math.round(1E16*Math.random())+"_"+x++,k=b.document.createElement("script");b[r]=function(f){k.parentNode.removeChild(k);h(w(e.type,f));"function"===typeof m&&m();delete b[r]};k.onerror=function(){k.parentNode.removeChild(k); h.error(Error("JSONP request failed"));"function"===typeof m&&m();delete b[r]};null==e.data&&(e.data={});e.url=p(e.url,e.data);e.data[e.callbackKey||"callback"]=r;k.src=g(e.url,e.data);b.document.documentElement.appendChild(k);return h},setCompletionCallback:function(b){m=b}}}(window,O),M=function(){var b=[];return{subscribe:b.push.bind(b),unsubscribe:function(f){f=b.indexOf(f);-1=n&&k>=B;){var t=a[n],v=d[B];if(t!==v||q)if(null!=t&&null!=v&&t.key===v.key)n++,B++,h(c,t,v,b,x(a,n,g),q,l),q&&t.tag===v.tag&&m(c,w(t),g);else if(t=a[r],t!==v||q)if(null!=t&&null!=v&&t.key===v.key)h(c,t,v,b,x(a,r+1,g),q,l),(q||B=n&&k>=B;){t=a[r];v=d[k];if(t!==v||q)if(null!=t&&null!=v&&t.key===v.key)h(c,t,v,b,x(a,r+1,g),q,l),q&&t.tag===v.tag&&m(c,w(t),g),null!=t.dom&&(g=t.dom),r--;else{if(!u){u=a;var t=r,C={},E;for(E= -0;E=n&&k>=B;){var t=a[n],v=d[B];if(t!==v||q)if(null!=t&&null!=v&&t.key===v.key)n++,B++,h(c,t,v,b,x(a,n,g),q,l),q&&t.tag===v.tag&&m(c,w(t),g);else if(t=a[r],t!==v||q)if(null!=t&&null!=v&&t.key===v.key)h(c,t,v,b,x(a,r+1,g),q,l),(q||B=n&&k>=B;){t=a[r];v=d[k];if(t!==v||q)if(null!=t&&null!=v&&t.key===v.key)h(c,t,v,b,x(a,r+1,g),q,l),q&&t.tag===v.tag&&m(c,w(t), +g),null!=t.dom&&(g=t.dom),r--;else{if(!u){u=a;var t=r,C={},E;for(E=0;E