tailwindcss
Version:
A utility-first CSS framework for rapidly building custom user interfaces.
39 lines (26 loc) • 1.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = buildSelectorVariant;
var _escapeClassName = require('./escapeClassName');
var _escapeClassName2 = _interopRequireDefault(_escapeClassName);
var _postcssSelectorParser = require('postcss-selector-parser');
var _postcssSelectorParser2 = _interopRequireDefault(_postcssSelectorParser);
var _tap = require('lodash/tap');
var _tap2 = _interopRequireDefault(_tap);
var _get = require('lodash/get');
var _get2 = _interopRequireDefault(_get);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function buildSelectorVariant(selector, variantName, separator, onError = () => {}) {
return (0, _postcssSelectorParser2.default)(selectors => {
(0, _tap2.default)(selectors.first.filter(({ type }) => type === 'class').pop(), classSelector => {
if (classSelector === undefined) {
onError('Variant cannot be generated because selector contains no classes.');
return;
}
const baseClass = (0, _get2.default)(classSelector, 'raws.value', classSelector.value);
classSelector.setPropertyAndEscape('value', `${variantName}${(0, _escapeClassName2.default)(separator)}${baseClass}`);
});
}).processSync(selector);
}