.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / postcss-resolve-nested-selector / index.js
1 module.exports = function resolveNestedSelector(selector, node) {
2   var parent = node.parent;
3   var parentIsNestAtRule = parent.type === 'atrule' && parent.name === 'nest';
4
5   if (parent.type === 'root') return [selector];
6   if (parent.type !== 'rule' && !parentIsNestAtRule) return resolveNestedSelector(selector, parent);
7
8   var parentSelectors = (parentIsNestAtRule)
9     ? parent.params.split(',').map(function(s) { return s.trim(); })
10     : parent.selectors;
11
12   var resolvedSelectors = parentSelectors.reduce(function(result, parentSelector) {
13     if (selector.indexOf('&') !== -1) {
14       var newlyResolvedSelectors = resolveNestedSelector(parentSelector, parent).map(function(resolvedParentSelector) {
15         return selector.replace(/&/g, resolvedParentSelector);
16       });
17       return result.concat(newlyResolvedSelectors);
18     }
19
20     var combinedSelector = [ parentSelector, selector ].join(' ');
21     return result.concat(resolveNestedSelector(combinedSelector, parent));
22   }, []);
23
24   return resolvedSelectors;
25 }