This repository has been archived on 2020-11-02. You can view files and clone it, but cannot push or open issues or pull requests.
TripSit_Suite/node_modules/postcss-resolve-nested-selector/index.js
2020-11-01 22:46:04 +00:00

26 lines
1023 B
JavaScript

module.exports = function resolveNestedSelector(selector, node) {
var parent = node.parent;
var parentIsNestAtRule = parent.type === 'atrule' && parent.name === 'nest';
if (parent.type === 'root') return [selector];
if (parent.type !== 'rule' && !parentIsNestAtRule) return resolveNestedSelector(selector, parent);
var parentSelectors = (parentIsNestAtRule)
? parent.params.split(',').map(function(s) { return s.trim(); })
: parent.selectors;
var resolvedSelectors = parentSelectors.reduce(function(result, parentSelector) {
if (selector.indexOf('&') !== -1) {
var newlyResolvedSelectors = resolveNestedSelector(parentSelector, parent).map(function(resolvedParentSelector) {
return selector.replace(/&/g, resolvedParentSelector);
});
return result.concat(newlyResolvedSelectors);
}
var combinedSelector = [ parentSelector, selector ].join(' ');
return result.concat(resolveNestedSelector(combinedSelector, parent));
}, []);
return resolvedSelectors;
}