UNPKG

@filbert-js/stylesheet

Version:
2 lines (1 loc) 1.51 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@filbert-js/types")):"function"==typeof define&&define.amd?define(["exports","@filbert-js/types"],t):t(e.stylesheet={},e.types)}(this,function(e,t){e.StyleSheet=function(e){var n,r=e.getRoot,s=e.createElement,i=e.findElementByStyleId,d=e.cssParser,S=e.css||((n={})[t.TYPES_GLOBAL]={},n[t.TYPES_CSS]={},n[t.TYPES_KEYFRAMES]={},n),o=r();function f(e,t,n){var r=s("style");return[["data-type","styled-css"],["id",e],["styled-type",t],["styled-component-type",n]].forEach(function(e){var t=e[1];return t&&r.setAttribute(e[0],t)}),r}return{getStyles:function(){return{root:o,css:S}},createStyles:function(e,n,r,s){if(S[t.TYPES_CSS][e]){var i=o.getChildById(e),a=o.getChildById(r);r&&o.isBeforeChild(i,a)&&o.insertBefore(i,a)}else{var l=f(e,t.TYPES_CSS,s),y=d({css:n,namespace:"."+e});l.append(y),S[t.TYPES_CSS][e]=y,r?o.insertBefore(l,o.getChildById(r)):o.append(l)}},createKeyframes:function(e){if(!S[t.TYPES_KEYFRAMES][e]){var n=f(e,t.TYPES_KEYFRAMES),r="@keyframes "+e+" {"+e[t.RAW]+"}";n.append(r),o.append(n),S[t.TYPES_KEYFRAMES][e]=r}},createGlobalStyles:function(e,n){if(S[t.TYPES_GLOBAL][e]){var r=o.getChildById(e),s=n.trim();r.append(s),S[t.TYPES_GLOBAL][e]=s}else{var i=f(e,t.TYPES_GLOBAL),d=n.trim();i.append(d),S[t.TYPES_GLOBAL][e]=d,o.append(i)}},removeStyles:function(e,n){t.TYPES_CSS===n&&S[n][e]?i(e)||(delete S[n][e],o.getChildById(e).remove()):t.TYPES_GLOBAL===n&&(delete S[n][e],o.getChildById(e).remove())}}}});