UNPKG

sinuous

Version:

🧬 Small, fast, reactive render engine

2 lines (1 loc) • 2.91 kB
var map=function(r){var n="__g",f="nextSibling";function o(r,f,o){var i=r[n];if(i)for(r=r[f];r&&r[n]!==i;)r=r[f];return o?r:r[f]}function i(r,n,f){for(var o;n!==f;)o=n.nextSibling,r.removeChild(n),n=o}function u(r,n,f,o){for(var i;n!==f;)i=n.nextSibling,r.insertBefore(n,o),n=i}function t(r,n){var f=-1,o=r.length;if(o>0&&r[o-1]<=n)return o-1;for(;o-f>1;){var i=(f+o)/2|0;r[i]>n?o=i:f=i}return f}var a=0;return function(e,v){var c=r.api.subscribe,b=r.api.root,p=r.api.sample,g=r.api.cleanup,l=new Map,m=document.createDocumentFragment(),s=m.appendChild(document.createTextNode("")),d=m.appendChild(document.createTextNode(""));function k(){l.forEach(function(r){return r()}),l.clear()}function w(r){var n=l.get(r);n&&n(),l.delete(r)}function S(r,f,o,i,u){return b(function(t){var e=function(r,f,o,i){var u,t=typeof f;return"string"===t||"number"===t?f=document.createTextNode(f):11===f.nodeType&&(u=f.firstChild)&&u!==f.lastChild&&(u[n]=f.lastChild[n]=i),r.insertBefore(f,o||null),u||f}(r,v(f,o,i),u,++a);return l.set(e,t),e})}return g(c(function(r){r=r||[];var n=e()||[];return p(function(){return function r(n,a,e,v,c,b,p,g){var l=e.length;if(n=c.parentNode,0===l)return v.previousSibling||c.nextSibling?i(n,v.nextSibling,c):(n.textContent="",n.appendChild(v),n.appendChild(c)),p&&p(),[];if(0===a.length){for(var m=0;m<l;m++)b(n,e[m],m,e,c);return e.slice()}var s,d,k=0,w=0,S=!0,y=a.length-1,A=l-1,M=v.nextSibling,_=M,x=c.previousSibling,h=c;r:for(;S;){S=!1;var j=void 0;for(s=a[k],d=e[w];s===d;){if(k++,w++,_=M=o(M,f),y<k||A<w)break r;s=a[k],d=e[w]}for(s=a[y],d=e[A];s===d;){if(y--,A--,x=(h=o(x,"previousSibling",!0)).previousSibling,y<k||A<w)break r;s=a[y],d=e[A]}for(s=a[y],d=e[w];s===d;){S=!0;var q=o(x,"previousSibling",!0);if(j=q.previousSibling,_!==q&&(u(n,q,x.nextSibling,_),x=j),w++,--y<k||A<w)break r;s=a[y],d=e[w]}for(s=a[k],d=e[A];s===d;){if(S=!0,j=o(M,f),M!==h){var z=j.previousSibling;u(n,M,j,h),h=z,M=j}if(A--,y<++k||A<w)break r;s=a[k],d=e[A]}}if(A<w){if(k<=y)for(var B,C;k<=y;)B=(C=o(x,"previousSibling",!0)).previousSibling,i(n,C,x.nextSibling),g&&g(C),x=B,y--;return e.slice()}if(y<k){if(w<=A)for(;w<=A;)b(n,e[w],w,e,h),w++;return e.slice()}for(var D=new Array(A+1-w),E=w;E<=A;E++)D[E]=-1;for(var F=new Map,G=w;G<=A;G++)F.set(e[G],G);for(var H=0,I=[],J=k;J<=y;J++)F.has(a[J])?(D[F.get(a[J])]=J,H++):I.push(J);if(0===H)return r(n,r(n,a,[],v,c,b,p),e,v,c,b);for(var K=function(r,n){for(var f=[],o=[],i=-1,u=new Array(r.length),a=n,e=r.length;a<e;a++){var v=r[a];if(!(v<0)){var c=t(f,v);-1!==c&&(u[a]=o[c]),c===i?(f[++i]=v,o[i]=a):v<f[c+1]&&(f[c+1]=v,o[c+1]=a)}}for(a=o[i];i>=0;a=u[a],i--)f[i]=a;return f}(D,w),L=[],N=M,O=k;O<=y;O++)L[O]=N,N=o(N,f);for(var P=0;P<I.length;P++){var Q=L[I[P]];i(n,Q,o(Q,f)),g&&g(Q)}for(var R,T=K.length-1,U=A;U>=w;U--)K[T]===U?(h=L[D[K[T]]],T--):(-1===D[U]?R=b(n,e[U],U,e,h):u(n,R=L[D[U]],o(R,f),h),h=R);return e.slice()}(m,r,n,s,d,S,k,w)})})),g(k),m}}(sinuous);