UNPKG

dom-class

Version:

A lightweight, cross browser, simplification of WebComponents

2 lines 3.79 kB
/*! (C) Andrea Giammarchi - @WebReflection - Mit Style License */ var DOMClass=function(e,t,n){"use strict";var r="onAttached",i="attachedCallback",s="onChanged",o="attributeChangedCallback",u="constructor",a="createdCallback",f="css",l="<style>",c="stylesheet",h="onDetached",p="detachedCallback",d="extends",v="name",m=e.document,g=m.documentElement,y=n.hasOwnProperty,b=t.prototype,w=function(e,t){for(var n,r=C(e),i=r.length;i--;)n=r[i],L.indexOf(n)<0&&!y.call(t,n)&&E(t,n,S(e,n))},E=n.defineProperty,S=n.getOwnPropertyDescriptor,x=n.getOwnPropertyNames||n.keys||function(e){var t=[],n;for(n in e)y.call(e,n)&&t.push(n);return t},T=n.getOwnPropertySymbols||function(){return b},N=function(t){return e["HTML"+t+"Element"]},C=function(e){return T(e).concat(x(e))},k=function(e,t){if(!t.length){var n=e.getAttribute("data-arguments");n&&(t=n.charAt(0)==="["?JSON.parse(n):n.split(/\s*,\s*/))}return t},L=C(function(){}),A=function(e,t,n,r){y.call(e,t)&&(n[r]=e[t])},O=function(){for(var n=+this,r=n,i=arguments.length,s=i-n,o=new t(s<0?0:s);r<i;r++)o[r-n]=arguments[r];return o},M=function(e){return e+"-i-"+(y.call(P,e)?++P[e]:P[e]=0)},_=function(e,t,n){var r;e.setAttribute("dom-class-uid",n),E(e,f,{configurable:!0,get:function(){return r||(r=restyle(t+'[dom-class-uid="'+n+'"]',{}))},set:function(t){e[f].replace(t)}})},D=function(e,t){var n=new XMLHttpRequest,r=m.body||m.head||g,i,s;try{n.open("GET",t,!1),n.send(null),i=n.responseText,s=r.insertBefore(m.createElement("style"),r.lastChild),s.type="text/css","styleSheet"in s?s.styleSheet.cssText=i:s.appendChild(m.createTextNode(i))}catch(o){s=m.createElement("link"),s.href=t,s.rel="stylesheet",s.type="text/css",r.insertBefore(s,r.lastChild)}return g.offsetWidth},P={},H=0;return function(t){var n=function(){return C&&(C=!1,D(F,L)),g=O.apply(0,arguments),new B},g=b,S={},x=y.call(t,f),T=y.call(t,u),C=y.call(t,c),L=C&&t[c],P=T&&t[u],B,j,F,I,q,R;A(t,r,S,i),A(t,s,S,o),A(t,h,S,p);for(F in t)if(y.call(t,F))switch(F){case r:case s:case u:case h:case d:case v:case f:case c:break;default:S[F]=t[F]}S[d]=y.call(t,d)?t[d].prototype:HTMLElement.prototype;if(S[d]instanceof HTMLElement)switch(t[d]){case N("Anchor"):R="a";break;case N("Audio"):R="audio";break;case N("BR"):R="br";break;case N("Body"):R="body";break;case N("Button"):R="button";break;case N("Canvas"):R="canvas";break;case N("Col"):R="col";break;case N("DataList"):R="dl";break;case N("Div"):R="div";break;case N("Form"):R="form";break;case N("HR"):R="hr";break;case N("Head"):R="head";break;case N("IFrame"):R="iframe";break;case N("Image"):R="img";break;case N("Input"):R="input";break;case N("LI"):R="li";break;case N("Label"):R="label";break;case N("Legend"):R="legend";break;case N("Link"):R="link";break;case N("Menu"):R="menu";break;case N("OList"):R="ol";break;case N("Option"):R="option";break;case N("Paragraph"):R="p";break;case N("Progress"):R="progress";break;case N("Quote"):R="quote";break;case N("Select"):R="select";break;case N("Span"):R="span";break;case N("Style"):R="style";break;case N("Table"):R="table";break;case N("TableCaption"):R="caption";break;case N("TableCell"):R="td";break;case N("TableCol"):R="colgroup";break;case N("TableRow"):R="tr";break;case N("TableSection"):R="tbody";break;case N("Table"):R="table";break;case N("Table"):R="table";break;case N("TextArea"):R="textarea";break;case N("Track"):R="track";break;case N("UList"):R="ul";break;case N("Video"):R="video"}return F=y.call(t,v)?t[v]:"x-dom-class-"+H++,x&&(q=R?R+'[is="'+F+'"]':F,S[l]=restyle(q,t[f])),S[a]=function(){var e=k(this,g);g=b,j.apply(this,e),x&&_(this,q,M(F)),T&&P.apply(this,e)},j=new Class(S),w(j,n),I={prototype:j.prototype},R&&(I[d]=R),B=m.registerElement(F,I),n.prototype=B.prototype,E(B.prototype,u,{value:n}),n}}(this&&this.window||global,Array,Object);