// intraHTML: a better innerHTML (partial/non-destructive updates) for faster and simpler view rendering. (c)2015:dandavis, [CCBY4/MIT] // usage: intraHTML(element, strNewInnerHTMLContent); // includes a slightly modified copy of the odiff JS library by Billy Tetrud, under a modified MIT license per "Free to use for any purpose" from https://github.com/Tixit/odiff/blob/master/odiff.js (function(A,z){"object"==typeof exports&&exports&&"string"!=typeof exports.nodeName?module.exports=z():"function"==typeof define&&define.amd?define(["exports"],z()):A.intraHTML=z(A)})(this,function(A){function z(a,c,n){if(!(2>arguments.length))for(var k=a.length,m=0;m]/,p=n;a=a.split(/([<>])/);var d="",e,q,f=0,g=a.length;e=1;for(var l,t=[n],b=[/([\w\-]+)="([^"]*)"/g,/([\w\-]+)='([^']*)'/g,/([\w\-]+)=([^\s>\/]+)/g,/([\w\-]+)()/g];fe;e++)l=l.replace(b[e],c);I[d]?(d=q,n=p=t.pop()):(n=p,d=q)}else q&&"<"!==q&&">"!==q&&p._.push(-1===q.indexOf("&")?q:q.replace(/(&\w+;)/g,function(b,a){return F[a]||a})),d=q;return k._[0]}function L(a,c){var n=[],k=0,m=a.length,p=c,d;for(k;k";(a=a._||[],!Array.isArray(a))&&(a=[a]),m=0,p;for(d=a.length;m"+n.join("")+""}function J(a,c,n,k){function m(b,a,f){return b.textContent!==b.fsdhjklghdklg}var p=(n=k.timing)?performance.now():0,d=k.debug,e=x(a.path.concat(a.index||a.key),function(b,a,f){return b!=a.xsdgdfg}),q=e.slice,f=x(e,function(b,a,f){return b!=a.xsdgdfg}).slice(-1)[0],g=L(e,k.dest),l=M(e,k.vdom),t=x(g.parents,Boolean),b={type:a.type,index:c,path:e,key:f,elm:g.node||g.parents.slice(-1)[0],elmParents:t,elmParent:t.slice(-1)[0],dest:k.dest,parents:l,parent:l.parents.slice(-1)[0],isAttrib:!(f-.1)&&"_"!=f&&"$"!=f,change:a},r,y,h,u,w;"function"==typeof b.elm&&(b.elm=b.elmParent),d&&console.info("CHANGE: "+c,b);switch(a.type){case"set":if(!b.isAttrib&&("string"==typeof a.val||Array.isArray(a.val))){b.elmParent.childNodes||(b.elmParent=b.elmParent[b.key]),b.elm||(b.elm=b.elmParent),q=a.val,Array.isArray(q)||(q=[q]),k=0;for(w=q.length;k=b.key&&(y=b.elm[0].parentNode),y instanceof NodeList&&(y=x(b.elmParents,function(b,a,f){return b.textContent!==b.fsdhjklghdklg}).pop()),y!==h&&(3!=y.nodeType?y.appendChild(h):(y.parentNode.insertBefore(h,y),y.parentNode.insertBefore(y,h))))}));break;case"rm":if(b.elmParent.childNodes&&(b.elmParent=b.elmParent.childNodes),0===b.elmParent.length&&(b.elmParent=b.elmParents.slice(-3)[0]),b.elmParent.childNodes&&(b.elmParent=b.elmParent.childNodes),b.parent._&&(b.parent=b.parent._),f=q.call(b.elmParent,a.index-a.num+1,a.index+1),0===a.index){d&&console.log("removing many from zero",q.call(b.parent),b.elmParent,"|||",b.parent[0],a.index,a.num),g=a.index;for(e=g+a.num;g",d;a.childNodes.length||(a.innerHTML=" "),c||(c=a);if(c instanceof Element){c=c.innerHTML;if(n===c)return{update:Boolean};c=E(p+c+"",m)}return"string"==typeof c&&(c=E(c,m)),n=r.timing?performance.now():0,d={dest:a,vdom:c,debug:r.debug,timing:r.timing,initTime:n-k,update:function(a){var c=r.timing,f,g=0,l;c&&(f=performance.now()),"string"==typeof a&&(a=E(p+a+"",m)),c&&(d.parseTime=performance.now()-f),d.vdom2=a,c&&(f=performance.now()),d.changes=K(d.vdom,a),c&&(d.diffTime=performance.now()-f,f=performance.now());for(l=d.changes.length;gc||e===a.length)return!1;e++}return!0}if("object"==typeof a){if("object"!=typeof g)return!1;var b=d(p(Object.keys(a)),p(Object.keys(g))),k=Object.keys(b).length,c=k/15,e=0,n;for(n in b)if(!m(a[n],g[n])){if(2<=e&&e>c||e+1===k)return!1;e++}return!0}return Number.isNaN(a)&&Number.isNaN(g)}function m(a,g){if(a===g)return!0;if(Array.isArray(a)){if(Array.isArray(g)&&a.length===g.length&&a[0]===g[0]&&String(a)===String(g)){for(var c=0,d=a.length;cw.a&&u>w.b;)if(k(a[v],c[u]))e(a[v],c[u],l,t.concat([v])),v--,u--;else{var h=n(k,a,c,v,u,w.a+1,w.b+1),v=v-h.a,x=u-h.b;1===v&&1===x?b(l,t.concat(h.a+1),c[h.b+1]):1===v&&2===x?(r(l,t,h.a+2,c.slice(h.b+2,u+1)),b(l,t.concat(h.a+1),c[h.b+1])):2===v&&1===x?(q(l,t,h.a+2,1,"I"),b(l,t.concat(h.a+1),c[h.b+1])):2===v&&2===x?(b(l,t.concat(h.a+2),c[h.b+2]),b(l,t.concat(h.a+1),c[h.b+1])):(0w.a?q(l,t,v,v-w.a,"Z"):u>w.b&&r(l,t,v+1,c.slice(w.b+1,u+1)),h=w.a,u=w.b}0<=h?q(l,t,0,h+1):0<=u&&r(l,t,0,c.slice(0,u+1))}else if("object"==typeof a&&"object"==typeof c)for(u in w=d(p(Object.keys(a)),p(Object.keys(c))),w)e(a[u],c[u],l,t.concat([u]));else b(l,t,c)},q=[];return e(a,c,q,[]),q};B.temp=document.createElement("template");var D=function(a,c){var n=document.createElement(c||"div");return n.innerHTML=a,n};B.temp=document.createElement("template"),"content"in B.temp&&(D=B);var F={""":'"',"&":"&","<":"<",">":">","'":"'"};"nbsp iexcl cent pound curren yen brvbar sect uml copy ordf laquo not shy reg macr deg plusmn sup2 sup3 acute micro para middot cedil sup1 ordm raquo frac14 frac12 frac34 iquest Agrave Aacute Acirc Atilde Auml Aring AElig Ccedil Egrave Eacute Ecirc Euml Igrave Iacute Icirc Iuml ETH Ntilde Ograve Oacute Ocirc Otilde Ouml times Oslash Ugrave Uacute Ucirc Uuml Yacute THORN szlig agrave aacute acirc atilde auml aring aelig ccedil egrave eacute ecirc euml igrave iacute icirc iuml eth ntilde ograve oacute ocirc otilde ouml divide oslash ugrave uacute ucirc uuml yacute thorn yuml".split(" ").forEach(function(a,c,n){this["&"+a+";"]=String.fromCharCode(160+c)},F);var I={area:1,base:1,br:1,col:1,command:1,embed:1,hr:1,img:1,input:1,keygen:1,link:1,meta:1,param:1,source:1,track:1,wbr:1};return r.applyChanges=J,r.elementFromString=D,r.fromHTML=E,r.toHTML=C,r.odiff=K,r.parseHTML=H,r.updater=G,r.getRenderer=G,r.timing=!0,r.debug=!1,r.entities=F,A.jQuery&&(A.jQuery.fn.intraHTML=function(a){return this.each(function(c,n){r(n,a)}),this}),r});