tailwindcss
Version:
A utility-first CSS framework for rapidly building custom user interfaces.
40 lines (30 loc) • 1.14 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = generateVariantFunction;
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
var _postcss = require('postcss');
var _postcss2 = _interopRequireDefault(_postcss);
var _escapeClassName = require('./escapeClassName');
var _escapeClassName2 = _interopRequireDefault(_escapeClassName);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function generateVariantFunction(generator) {
return (container, config) => {
const cloned = _postcss2.default.root({ nodes: container.clone().nodes });
container.before(_lodash2.default.defaultTo(generator({
container: cloned,
separator: (0, _escapeClassName2.default)(config.options.separator),
modifySelectors: modifierFunction => {
cloned.walkRules(rule => {
rule.selectors = rule.selectors.map(selector => modifierFunction({
className: selector.slice(1),
selector
}));
});
return cloned;
}
}), cloned).nodes);
};
}