UNPKG

styled-jsx-plugin-less

Version:
39 lines (32 loc) 1.02 kB
const less = require("less"); const loopWhile = require("deasync").loopWhile; module.exports = (css, settings) => { const cssWithPlaceholders = css .replace( /\:\s*%%styled-jsx-expression-(\d+)%%/g, (_, id) => `: styled-jsx-expression-${id}()` ) .replace( /%%styled-jsx-expression-(\d+)%%/g, (_, id) => `/*%%styled-jsx-expression-${id}%%*/` ); let wait = true; let preprocessed = ""; function resolved(result) { preprocessed = result; wait = false; } less.render(cssWithPlaceholders, settings).then(function(output) { resolved(output.css); }); loopWhile(() => wait); return preprocessed .replace( /\:\s*styled-jsx-expression-(\d+)\(\)/g, (_, id) => `: %%styled-jsx-expression-${id}%%` ) .replace( /\/\*%%styled-jsx-expression-(\d+)%%\*\//g, (_, id) => `%%styled-jsx-expression-${id}%%` ); };