From df04dacf2d38ce253b89c8a0b4c04db511b4a4ce Mon Sep 17 00:00:00 2001 From: Barney Carroll Date: Mon, 22 Aug 2016 11:38:42 +0100 Subject: [PATCH] Compiled circular view error catch --- mithril.js | 4 ++-- mithril.min.js | 44 ++++++++++++++++++++++---------------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/mithril.js b/mithril.js index 47c10332..6106cc0e 100644 --- a/mithril.js +++ b/mithril.js @@ -166,6 +166,8 @@ var renderService = function($window) { initLifecycle(vnode.tag, vnode, hooks) vnode.instance = Vnode.normalize(vnode.tag.view.call(vnode.state, vnode)) if (vnode.instance != null) { + if(vnode.instance === vnode) + throw Error("A component view mustn't return the vnode that was supplied to it.") var element = createNode(vnode.instance, hooks, ns) vnode.dom = vnode.instance.dom vnode.domSize = vnode.dom != null ? vnode.instance.domSize : 0 @@ -184,7 +186,6 @@ var renderService = function($window) { else { var recycling = isRecyclable(old, vnodes) if (recycling) old = old.concat(old.pool) - if (old.length === vnodes.length && vnodes[0] != null && vnodes[0].key == null) { for (var i = 0; i < old.length; i++) { if (old[i] === vnodes[i] || old[i] == null && vnodes[i] == null) continue @@ -575,7 +576,6 @@ var renderService = function($window) { function render(dom, vnodes) { var hooks = [] var active = $doc.activeElement - // First time rendering into a node clears it out if (dom.vnodes == null) dom.textContent = "" if (!(vnodes instanceof Array)) vnodes = [vnodes] diff --git a/mithril.min.js b/mithril.min.js index 2512a235..adef8ef9 100644 --- a/mithril.min.js +++ b/mithril.min.js @@ -3,28 +3,28 @@ n[e[4]]=h||!0)}0=r&&A>=B;){var k=a[r],v=f[B];if(k===v)r++,B++;else if(null!=k&&null!=v&&k.key===v.key)r++,B++,h(b,k,v,d,l(a,r,c),p,u),p&&k.tag===v.tag&&w(b,m(k),c);else if(k=a[g],k===v)g--,B++;else if(null!=k&&null!=v&&k.key===v.key)h(b,k,v,d,l(a,g+1,c),p,u),B= -r&&A>=B;){k=a[g];v=f[A];if(k===v)g--;else if(null!=k&&null!=v&&k.key===v.key)h(b,k,v,d,l(a,g+1,c),p,u),p&&k.tag===v.tag&&w(b,m(k),c),null!=k.dom&&(c=k.dom),g--;else{if(!n){n=a;var k=g,t={},y;for(y=0;y=r&&A>=B;){var k=a[r],v=f[B];if(k===v)r++,B++;else if(null!=k&&null!=v&&k.key===v.key)r++,B++,h(b,k,v,d,l(a,r,c),p,u),p&&k.tag===v.tag&&w(b,m(k),c);else if(k=a[g],k===v)g--,B++;else if(null!=k&&null!=v&&k.key===v.key)h(b,k,v,d,l(a,g+1,c),p,u),B=r&&A>=B;){k=a[g];v=f[A];if(k===v)g--;else if(null!=k&&null!=v&&k.key===v.key)h(b,k,v,d,l(a,g+1,c),p,u),p&&k.tag===v.tag&&w(b,m(k),c),null!=k.dom&&(c=k.dom),g--;else{if(!n){n=a;var k=g,t={},y;for(y=0;yc.indexOf("?")?"?":"&";c+=g+e}return c}function n(c){try{return""!==c?JSON.parse(c):null}catch(d){throw Error(c);}}function h(c){return c.responseText}function m(c,d){if("function"=== typeof c)if(d instanceof Array)for(var e=0;e