theme-custom-properties
Version:
 [](https://www.npmjs.com/package/theme-custom-properties) [ • 1.54 kB
JavaScript
function e(){return(e=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}Object.defineProperty(exports,"__esModule",{value:!0});var t=function t(r,n){for(var o={},s={},a=0,u=Object.entries(r);a<u.length;a++){var i=u[a],c=i[0],l=i[1];if("object"==typeof l){var f=t(l,""+(null!=n?n+"-"+c:c)),m=f.customProperties;s[c]=f.transformedTheme,o=e({},o,m)}else if("string"==typeof l){var p="--"+(null!=n?n+"-":"")+c;s[c]="var("+p+")",o[p]=l}}return{customProperties:o,transformedTheme:s}},r=function(e,t,r){return(null==e?":root":"class"===t?"."+e:"["+t+'="'+e+'"]')+" {\n"+Object.entries(r.customProperties).map((function(e){return e[0]+": "+e[1]+";"})).join("\n")+"\n}"};exports.generateCustomProperties=t,exports.transformThemeToCustomProperties=function(n,o){var s,a,u=null!=(s=null==o?void 0:o.defaultTheme)?s:"light",i=null!=(a=null==o?void 0:o.attribute)?a:"data-theme";if("class"!==i&&!i.startsWith("data-"))throw new Error("options.attribute must be either 'class' or 'data-*'");var c=Object.entries(n).reduce((function(r,n){var o;return e({},r,((o={})[n[0]]=t(n[1]),o))}),{}),l=[r(null,i,c[u])].concat(Object.entries(c).map((function(e){return r(e[0],i,e[1])}))).join("\n\n");return{transformedThemes:Object.entries(c).reduce((function(t,r){var n;return e({},t,((n={})[r[0]]=r[1].transformedTheme,n))}),{}),bodyCSS:l}};
//# sourceMappingURL=theme-custom-properties.cjs.production.min.js.map
;