sinuous
Version:
🧬 Small, fast, reactive render engine
2 lines (1 loc) • 2.17 kB
JavaScript
var h=function(n){var e={},f=[],t="__g";function i(n,e,f,i){if(f){if(e){if(!i){var o=(i=f.previousSibling||n.lastChild)[t];if(o)for(i=i.previousSibling;i&&i[t]!==o;)i=i.previousSibling}for(var r;i&&i!==f;)r=i.nextSibling,n.removeChild(i),i[t]=0,i=r}}else n.textContent=""}var o=0;function r(n,u,l,s){n=l&&l.parentNode||n;var c=typeof u;return u===s||(!u&&0!==u||!0===u?(i(n,s,l),s=null):s&&"string"!=typeof s||!("string"===c||"number"===c&&(u+=""))?"function"===c?e.subscribe(function(){s=r(n,u(),l,s)}):(i(n,s,l),u instanceof Node||(u=e.h(f,u)),11===u.nodeType&&u.firstChild!==u.lastChild&&(u.firstChild[t]=u.lastChild[t]=++o),n.insertBefore(u,l||null),s=u):(null!=s&&n.firstChild?l?(l.previousSibling||n.lastChild).data=u:n.firstChild.data=u:l?n.insertBefore(document.createTextNode(u),l):n.textContent=u,s=u)),s}function u(n,f,t,i,o){if("o"!==n[0]||"n"!==n[1]||f.$o)if("function"==typeof f)f.$t?f.$t(2,u,t,n):e.subscribe(function(){u(n,f(),t,i,o)});else if(o)t.style.setProperty(n,f);else if(i||"data-"===n.slice(0,5)||"aria-"===n.slice(0,5))t.setAttribute(n,f);else if("style"===n)if("string"==typeof f)t.style.cssText=f;else for(n in f)u(n,f[n],t,i,!0);else if("attrs"===n)for(n in f)u(n,f[n],t,!0);else"class"===n&&(n+="Name"),t[n]=f;else!function(n,f,t){f=f.slice(2);var i=e.cleanup(function(){return n.removeEventListener(f,l)});t?n.addEventListener(f,l):i(),(n.t||(n.t={}))[f]=t}(t,n,f)}function l(n){return this.t[n.type](n)}return n.api=e,n.context=function(n,t){for(var i in n)e[i]=n[i];function o(){var n,e=f.slice.call(arguments);function i(f){var o=typeof f;if(null==f);else if("string"===o)n?n.appendChild(document.createTextNode(f)):n=t?document.createElementNS("http://www.w3.org/2000/svg",f):document.createElement(f);else if(Array.isArray(f))n||(n=document.createDocumentFragment()),f.forEach(i);else if(f instanceof Node)n?n.appendChild(f):n=f;else if("object"===o)for(var l in f)u(l,f[l],n,t);else if("function"===o)if(n){var s=n.appendChild(document.createTextNode(""));f.$t?f.$t(1,r,n,""):r(n,f,s)}else n=f.apply(null,e.splice(0));else n.appendChild(document.createTextNode(""+f))}for(;e.length;)i(e.shift());return n}return e.h=o,o},n}({});