document-register-element
Version:
A stand-alone working lightweight version of the W3C Custom Elements specification
3 lines (2 loc) • 1.25 kB
JavaScript
/*! (C) Andrea Giammarchi - @WebReflection - ISC Style License */
var innerHTML=function(e){var t,r,n=e.registerElement,a=e.createElement("div"),l="document-register-element",i=n.innerHTML;if(i)return i;try{if(n.call(e,l,{prototype:Object.create(HTMLElement.prototype,{createdCallback:{value:Object}})}),a.innerHTML="<"+l+"></"+l+">","createdCallback"in a.querySelector(l))return n.innerHTML=function(e,t){return e.innerHTML=t,e}}catch(c){}return r=[],t=function(t){if(!("createdCallback"in t||"attachedCallback"in t||"detachedCallback"in t||"attributeChangedCallback"in t)){e.createElement.innerHTMLHelper=!0;for(var r,n,a=t.parentNode,l=t.getAttribute("is"),i=t.nodeName,c=e.createElement.apply(e,l?[i,l]:[i]),d=t.attributes,u=0,o=d.length;u<o;u++)r=d[u],c.setAttribute(r.name,r.value);for(;n=t.firstChild;)c.appendChild(n);e.createElement.innerHTMLHelper=!1,a&&a.replaceChild(c,t),c.createdCallback&&(c.created=!0,c.createdCallback(),c.created=!1)}},(e.registerElement=function(t,a){var l=(a["extends"]?a["extends"]+'[is="'+t+'"]':t).toLowerCase();return r.indexOf(l)<0&&r.push(l),n.apply(e,arguments)}).innerHTML=function(e,n){e.innerHTML=n;for(var a=r.length?e.querySelectorAll(r.join(",")):[],l=a.length;l--;t(a[l]));return e}}(document);