mirror of
https://github.com/react/react-native-devtools-frontend.git
synced 2026-10-01 17:57:36 +08:00
This also adds CC-BY-4.0 to the list of accepted licenses. DISABLE_THIRD_PARTY_CHECK=update dependencies Bug: chromium:1083142 Change-Id: I8612de2fba52dae32eeb71af79d5aacfde52142b Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2220097 Reviewed-by: Paul Lewis <aerotwist@chromium.org> Commit-Queue: Mathias Bynens <mathias@chromium.org>
26 lines
1023 B
JavaScript
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;
|
|
}
|