UNPKG

@filbert-js/stylesheet

Version:
2 lines (1 loc) 1.19 kB
import{RAW as e,TYPES_CSS as t,TYPES_GLOBAL as r,TYPES_KEYFRAMES as n}from"@filbert-js/types";function s(s){var d,a=s.getRoot,i=s.createElement,l=s.findElementByStyleId,o=s.cssParser,p=s.css||((d={})[r]={},d[t]={},d[n]={},d),y=a();function c(e,t,r){var n=i("style");return[["data-type","styled-css"],["id",e],["styled-type",t],["styled-component-type",r]].forEach(function(e){var t=e[1];return t&&n.setAttribute(e[0],t)}),n}return{getStyles:function(){return{root:y,css:p}},createStyles:function(e,r,n,s){if(p[t][e]){var d=y.getChildById(e),a=y.getChildById(n);n&&y.isBeforeChild(d,a)&&y.insertBefore(d,a)}else{var i=c(e,t,s),l=o({css:r,namespace:"."+e});i.append(l),p[t][e]=l,n?y.insertBefore(i,y.getChildById(n)):y.append(i)}},createKeyframes:function(t){if(!p[n][t]){var r=c(t,n),s="@keyframes "+t+" {"+t[e]+"}";r.append(s),y.append(r),p[n][t]=s}},createGlobalStyles:function(e,t){if(p[r][e]){var n=y.getChildById(e),s=t.trim();n.append(s),p[r][e]=s}else{var d=c(e,r),a=t.trim();d.append(a),p[r][e]=a,y.append(d)}},removeStyles:function(e,n){t===n&&p[n][e]?l(e)||(delete p[n][e],y.getChildById(e).remove()):r===n&&(delete p[n][e],y.getChildById(e).remove())}}}export{s as StyleSheet};