diff --git a/mithril.js b/mithril.js index 914b0d89..5917f595 100644 --- a/mithril.js +++ b/mithril.js @@ -505,7 +505,7 @@ var coreRenderer = function($window) { //update function updateNodes(parent, old, vnodes, recycling, hooks, nextSibling, ns) { if (old === vnodes || old == null && vnodes == null) return - else if (old == null) createNodes(parent, vnodes, 0, vnodes.length, hooks, nextSibling, undefined) + else if (old == null) createNodes(parent, vnodes, 0, vnodes.length, hooks, nextSibling, ns) else if (vnodes == null) removeNodes(old, 0, old.length, vnodes) else { if (old.length === vnodes.length) { @@ -962,10 +962,11 @@ var coreRenderer = function($window) { if (!dom) throw new Error("Ensure the DOM element being passed to m.route/m.mount/m.render is not undefined.") var hooks = [] var active = $doc.activeElement + var namespace = dom.namespaceURI // First time0 rendering into a node clears it out if (dom.vnodes == null) dom.textContent = "" if (!Array.isArray(vnodes)) vnodes = [vnodes] - updateNodes(dom, dom.vnodes, Vnode.normalizeChildren(vnodes), false, hooks, null, undefined) + updateNodes(dom, dom.vnodes, Vnode.normalizeChildren(vnodes), false, hooks, null, namespace === "http://www.w3.org/1999/xhtml" ? undefined : namespace) dom.vnodes = vnodes for (var i = 0; i < hooks.length; i++) hooks[i]() if ($doc.activeElement !== active) active.focus() diff --git a/mithril.min.js b/mithril.min.js index 289dc5b3..e8500e8e 100644 --- a/mithril.min.js +++ b/mithril.min.js @@ -1,44 +1,44 @@ -(function(){function z(b,d,e,f,g,n){return{tag:b,key:d,attrs:e,children:f,text:g,dom:n,domSize:void 0,state:void 0,_state:void 0,events:void 0,instance:void 0,skip:!1}}function A(b){var d,e=arguments[1],f=2;if(null==b||"string"!==typeof b&&"function"!==typeof b&&"function"!==typeof b.view)throw Error("The selector must be either a string or a component.");if("string"===typeof b&&!(d=M[b])){var g="div";for(var n=[],l={};d=Q.exec(b);){var r=d[1],p=d[2];""===r&&""!==p?g=p:"#"===r?l.id=p:"."===r?n.push(p): -"["===d[3][0]&&((r=d[6])&&(r=r.replace(/\\(["'])/g,"$1").replace(/\\\\/g,"\\")),"class"===d[4]?n.push(r):l[d[4]]=""===r?r:r||!0)}0a.indexOf("?")?"?":"&";a+=e+d}return a}function l(a){try{return""!==a?JSON.parse(a):null}catch(w){throw Error(a); -}}function r(a){return a.responseText}function p(a,b){if("function"===typeof a)if(Array.isArray(b))for(var d=0;dk.status||304===k.status||T.test(a.url))d(p(a.type, -b));else{var h=Error(k.responseText),c;for(c in b)h[c]=b[c];e(h)}}catch(q){e(q)}};f&&null!=a.data?k.send(a.data):k.send()});return!0===a.background?w:m(w)},jsonp:function(a,l){var m=e();a=f(a,l);var r=new d(function(d,e){var f=a.callbackName||"_mithril_"+Math.round(1E16*Math.random())+"_"+k++,l=b.document.createElement("script");b[f]=function(e){l.parentNode.removeChild(l);d(p(a.type,e));delete b[f]};l.onerror=function(){l.parentNode.removeChild(l);e(Error("JSONP request failed"));delete b[f]};null== -a.data&&(a.data={});a.url=g(a.url,a.data);a.data[a.callbackKey||"callback"]=f;l.src=n(a.url,a.data);b.document.documentElement.appendChild(l)});return!0===a.background?r:m(r)},setCompletionCallback:function(a){m=a}}}(window,x),P=function(b){function d(h,c,q,a,b,d,f){for(;q=m&&F>=C;){var v=c[m];t=q[C];if(v!==t||b)if(null==v)m++;else if(null==t)C++;else if(v.key===t.key){var E=null!=w&&m>=c.length-w.length||null==w&&b;m++;C++;l(h,v,t,f,p(c,m,g),E,n);b&&v.tag===t.tag&&k(h,r(v),g)}else if(v=c[u],v!==t||b)if(null==v)u--;else if(null==t)C++;else if(v.key===t.key)E=null!=w&&u>=c.length-w.length||null==w&&b, -l(h,v,t,f,p(c,u+1,g),E,n),(b||C=m&&F>=C;){v=c[u];t=q[F];if(v!==t||b)if(null==v)u--;else{if(null!=t)if(v.key===t.key)E=null!=w&&u>=c.length-w.length||null==w&&b,l(h,v,t,f,p(c,u+1,g),E,n),b&&v.tag===t.tag&&k(h,r(v),g),null!=v.dom&&(g=v.dom),u--;else{if(!B){B=c;E=u;v={};var y;for(y=0;ya.indexOf("?")?"?":"&";a+=e+d}return a}function k(a){try{return""!==a?JSON.parse(a):null}catch(x){throw Error(a); +}}function r(a){return a.responseText}function p(a,b){if("function"===typeof a)if(Array.isArray(b))for(var d=0;dm.status||304===m.status||S.test(a.url))d(p(a.type, +b));else{var h=Error(m.responseText),c;for(c in b)h[c]=b[c];e(h)}}catch(q){e(q)}};f&&null!=a.data?m.send(a.data):m.send()});return!0===a.background?x:n(x)},jsonp:function(a,k){var n=e();a=f(a,k);var r=new d(function(d,e){var f=a.callbackName||"_mithril_"+Math.round(1E16*Math.random())+"_"+m++,k=b.document.createElement("script");b[f]=function(e){k.parentNode.removeChild(k);d(p(a.type,e));delete b[f]};k.onerror=function(){k.parentNode.removeChild(k);e(Error("JSONP request failed"));delete b[f]};null== +a.data&&(a.data={});a.url=g(a.url,a.data);a.data[a.callbackKey||"callback"]=f;k.src=l(a.url,a.data);b.document.documentElement.appendChild(k)});return!0===a.background?r:n(r)},setCompletionCallback:function(a){n=a}}}(window,y),O=function(b){function d(h,c,q,a,b,d,f){for(;q=n&&E>=B;){var t=c[n];u=q[B];if(t!==u||b)if(null==t)n++;else if(null==u)B++;else if(t.key===u.key){var w=null!=x&&n>=c.length-x.length||null==x&&b;n++;B++;k(h,t,u,f,p(c,n,g),w,l);b&&t.tag===u.tag&&m(h,r(t),g)}else if(t=c[v],t!==u||b)if(null==t)v--;else if(null==u)B++;else if(t.key===u.key)w=null!=x&&v>=c.length-x.length||null==x&&b, +k(h,t,u,f,p(c,v+1,g),w,l),(b||B=n&&E>=B;){t=c[v];u=q[E];if(t!==u||b)if(null==t)v--;else{if(null!=u)if(t.key===u.key)w=null!=x&&v>=c.length-x.length||null==x&&b,k(h,t,u,f,p(c,v+1,g),w,l),b&&t.tag===u.tag&&m(h,r(t),g),null!=t.dom&&(g=t.dom),v--;else{if(!H){H=c;w=v;t={};var C;for(C=0;C