fix regression when empty text node

This commit is contained in:
Leo Horie 2016-11-02 15:38:23 -04:00
parent 8b168deef4
commit bc0a75a6a2
3 changed files with 22 additions and 18 deletions

View file

@ -502,14 +502,16 @@ var _14 = function($window) {
if (vnode.attrs != null && vnode.attrs.contenteditable != null) {
setContentEditable(vnode)
}
else if (vnode.text != null) {
if (vnode.text !== "") element.textContent = vnode.text
else vnode.children = [Vnode("#", undefined, undefined, vnode.text, undefined, undefined)]
}
else if (vnode.children != null) {
var children = vnode.children
createNodes(element, children, 0, children.length, hooks, null, ns)
setLateAttrs(vnode)
else {
if (vnode.text != null) {
if (vnode.text !== "") element.textContent = vnode.text
else vnode.children = [Vnode("#", undefined, undefined, vnode.text, undefined, undefined)]
}
if (vnode.children != null) {
var children = vnode.children
createNodes(element, children, 0, children.length, hooks, null, ns)
setLateAttrs(vnode)
}
}
return element
}

4
mithril.min.js vendored
View file

@ -16,8 +16,8 @@ x.open(e.method,e.url,"boolean"===typeof e.async?e.async:!0,"string"===typeof e.
x.status&&300>x.status||304===x.status)l(y(e.type,c));else{var f=Error(x.responseText),g;for(g in c)f[g]=c[g];l.error(f)}}catch(T){l.error(T)}"function"===typeof n&&n()}};r?x.send(e.data):x.send();return l},jsonp:function(e){var l=f();void 0!==e.initialValue&&l(e.initialValue);var h=e.callbackName||"_mithril_"+Math.round(1E16*Math.random())+"_"+z++,k=c.document.createElement("script");c[h]=function(f){k.parentNode.removeChild(k);l(y(e.type,f));"function"===typeof n&&n();delete c[h]};k.onerror=function(){k.parentNode.removeChild(k);
l.error(Error("JSONP request failed"));"function"===typeof n&&n();delete c[h]};null==e.data&&(e.data={});e.url=p(e.url,e.data);e.data[e.callbackKey||"callback"]=h;k.src=g(e.url,e.data);c.document.documentElement.appendChild(k);return l},setCompletionCallback:function(c){n=c}}}(window,P),M=function(){var c=[];return{subscribe:c.push.bind(c),unsubscribe:function(f){f=c.indexOf(f);-1<f&&c.splice(f,1)},publish:function(){for(var f=0;f<c.length;f++)c[f].apply(this,arguments)}}}();L.setCompletionCallback(M.publish);
var Q=function(c){function f(b,a,d,c,e,f,m){for(;d<c;d++){var g=a[d];null!=g&&n(b,p(g,e,m),f)}}function p(b,a,d){var c=b.tag;null!=b.attrs&&D(b.attrs,b,a);if("string"===typeof c)switch(c){case "#":return b.dom=B.createTextNode(b.children);case "<":return g(b);case "[":var h=B.createDocumentFragment();null!=b.children&&(c=b.children,f(h,c,0,c.length,a,null,d));b.dom=h.firstChild;b.domSize=h.childNodes.length;return h;default:var l=b.tag;switch(b.tag){case "svg":d="http://www.w3.org/2000/svg";break;
case "math":d="http://www.w3.org/1998/Math/MathML"}var m=(c=b.attrs)&&c.is,l=d?m?B.createElementNS(d,l,{is:m}):B.createElementNS(d,l):m?B.createElement(l,{is:m}):B.createElement(l);b.dom=l;if(null!=c)for(h in m=d,c)t(b,h,null,c[h],m);null!=b.attrs&&null!=b.attrs.contenteditable?e(b):null!=b.text?""!==b.text?l.textContent=b.text:b.children=[q("#",void 0,void 0,b.text,void 0,void 0)]:null!=b.children&&(h=b.children,f(l,h,0,h.length,a,null,d),a=b.attrs,"select"===b.tag&&null!=a&&("value"in a&&t(b,"value",
null,a.value,void 0),"selectedIndex"in a&&t(b,"selectedIndex",null,a.selectedIndex,void 0)));return l}else{b.state||(b.state={});H(b.state,b.tag);h=b.tag.view;if(null!=h.reentrantLock)b=I;else if(h.reentrantLock=!0,D(b.tag,b,a),b.instance=q.normalize(h.call(b.state,b)),h.reentrantLock=null,null!=b.instance){if(b.instance===b)throw Error("A view cannot return the vnode it received as arguments");a=p(b.instance,a,d);b.dom=b.instance.dom;b.domSize=null!=b.dom?b.instance.domSize:0;b=a}else b.domSize=
case "math":d="http://www.w3.org/1998/Math/MathML"}var m=(c=b.attrs)&&c.is,l=d?m?B.createElementNS(d,l,{is:m}):B.createElementNS(d,l):m?B.createElement(l,{is:m}):B.createElement(l);b.dom=l;if(null!=c)for(h in m=d,c)t(b,h,null,c[h],m);null!=b.attrs&&null!=b.attrs.contenteditable?e(b):(null!=b.text&&(""!==b.text?l.textContent=b.text:b.children=[q("#",void 0,void 0,b.text,void 0,void 0)]),null!=b.children&&(h=b.children,f(l,h,0,h.length,a,null,d),a=b.attrs,"select"===b.tag&&null!=a&&("value"in a&&t(b,
"value",null,a.value,void 0),"selectedIndex"in a&&t(b,"selectedIndex",null,a.selectedIndex,void 0))));return l}else{b.state||(b.state={});H(b.state,b.tag);h=b.tag.view;if(null!=h.reentrantLock)b=I;else if(h.reentrantLock=!0,D(b.tag,b,a),b.instance=q.normalize(h.call(b.state,b)),h.reentrantLock=null,null!=b.instance){if(b.instance===b)throw Error("A view cannot return the vnode it received as arguments");a=p(b.instance,a,d);b.dom=b.instance.dom;b.domSize=null!=b.dom?b.instance.domSize:0;b=a}else b.domSize=
0,b=I;return b}}function g(b){var a={caption:"table",thead:"table",tbody:"table",tfoot:"table",tr:"tbody",th:"tr",td:"tr",colgroup:"table",col:"colgroup"}[(b.children.match(/^\s*?<(\w+)/im)||[])[1]]||"div",a=B.createElement(a);a.innerHTML=b.children;b.dom=a.firstChild;b.domSize=a.childNodes.length;b=B.createDocumentFragment();for(var d;d=a.firstChild;)b.appendChild(d);return b}function k(b,a,d,c,e,g){if(a!==d&&(null!=a||null!=d))if(null==a)f(b,d,0,d.length,c,e,void 0);else if(null==d)l(b,a,0,a.length,
d);else{var m;a:{if(null!=a.pool&&Math.abs(a.pool.length-d.length)<=Math.abs(a.length-d.length)&&(m=d[0]&&d[0].children&&d[0].children.length||0,Math.abs((a.pool[0]&&a.pool[0].children&&a.pool[0].children.length||0)-m)<=Math.abs((a[0]&&a[0].children&&a[0].children.length||0)-m))){m=!0;break a}m=!1}m&&(a=a.concat(a.pool));if(a.length===d.length&&null!=d[0]&&null==d[0].key)for(var k=0;k<a.length;k++)a[k]===d[k]||null==a[k]&&null==d[k]||(null==a[k]?n(b,p(d[k],c,g),z(a,k+1,e)):null==d[k]?l(b,a,k,k+1,
d):h(b,a[k],d[k],c,z(a,k+1,e),m,g),m&&a[k].tag===d[k].tag&&n(b,y(a[k]),z(a,k+1,e)));else{for(var A=k=0,r=a.length-1,w=d.length-1,x;r>=k&&w>=A;){var t=a[k],u=d[A];if(t!==u||m)if(null!=t&&null!=u&&t.key===u.key)k++,A++,h(b,t,u,c,z(a,k,e),m,g),m&&t.tag===u.tag&&n(b,y(t),e);else if(t=a[r],t!==u||m)if(null!=t&&null!=u&&t.key===u.key)h(b,t,u,c,z(a,r+1,e),m,g),(m||A<w)&&n(b,y(t),z(a,k,e)),r--,A++;else break;else r--,A++;else k++,A++}for(;r>=k&&w>=A;){t=a[r];u=d[w];if(t!==u||m)if(null!=t&&null!=u&&t.key===

View file

@ -81,14 +81,16 @@ module.exports = function($window) {
if (vnode.attrs != null && vnode.attrs.contenteditable != null) {
setContentEditable(vnode)
}
else if (vnode.text != null) {
if (vnode.text !== "") element.textContent = vnode.text
else vnode.children = [Vnode("#", undefined, undefined, vnode.text, undefined, undefined)]
}
else if (vnode.children != null) {
var children = vnode.children
createNodes(element, children, 0, children.length, hooks, null, ns)
setLateAttrs(vnode)
else {
if (vnode.text != null) {
if (vnode.text !== "") element.textContent = vnode.text
else vnode.children = [Vnode("#", undefined, undefined, vnode.text, undefined, undefined)]
}
if (vnode.children != null) {
var children = vnode.children
createNodes(element, children, 0, children.length, hooks, null, ns)
setLateAttrs(vnode)
}
}
return element
}