tailwindcss/src/lib/substituteTailwindUtilitiesAtRules.js
2017-11-24 14:15:11 -05:00

32 lines
928 B
JavaScript

import postcss from 'postcss'
import applyClassPrefix from '../util/applyClassPrefix'
import generateModules from '../util/generateModules'
import container from '../generators/container'
import utilityModules from '../utilityModules'
export default function(config) {
return function(css) {
const unwrappedConfig = config()
css.walkAtRules('tailwind', atRule => {
if (atRule.params !== 'utilities') {
return
}
const utilities = generateModules(utilityModules, unwrappedConfig.modules, unwrappedConfig)
if (unwrappedConfig.options.important) {
utilities.walkDecls(decl => (decl.important = true))
}
const tailwindClasses = postcss.root({
nodes: [...container(unwrappedConfig), ...utilities.nodes],
})
applyClassPrefix(tailwindClasses, unwrappedConfig.options.prefix)
atRule.before(tailwindClasses)
atRule.remove()
})
}
}