mirror of
https://github.com/react/react-native-devtools-frontend.git
synced 2026-11-01 10:49:03 +08:00
The CSS minifier we currently use (clean-css) is not maintained and lacks support for new CSS features. CSSNano is a replacement that supports features we need (primarily container queries). This CL only adds the relevant dependencies, and does not use it. I will do that (and remove clean-css) in a follow-up. Bug: 1399763 Change-Id: I899ecc4482164404dd5ac2fd13f92fb797978e29 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/4092305 Commit-Queue: Jack Franklin <jacktfranklin@chromium.org> Reviewed-by: Alex Rudenko <alexrudenko@chromium.org> Commit-Queue: Alex Rudenko <alexrudenko@chromium.org> Auto-Submit: Jack Franklin <jacktfranklin@chromium.org>
45 lines
969 B
JavaScript
45 lines
969 B
JavaScript
'use strict';
|
|
|
|
/**
|
|
* @param {import('postcss').AnyNode} nodeA
|
|
* @param {import('postcss').AnyNode} nodeB
|
|
* @return {boolean}
|
|
*/
|
|
function checkMatch(nodeA, nodeB) {
|
|
if (nodeA.type === 'atrule' && nodeB.type === 'atrule') {
|
|
return (
|
|
nodeA.params === nodeB.params &&
|
|
nodeA.name.toLowerCase() === nodeB.name.toLowerCase()
|
|
);
|
|
}
|
|
return nodeA.type === nodeB.type;
|
|
}
|
|
|
|
/** @typedef {import('postcss').AnyNode & {parent?: Child}} Child */
|
|
/**
|
|
* @param {Child} nodeA
|
|
* @param {Child} nodeB
|
|
* @return {boolean}
|
|
*/
|
|
function sameParent(nodeA, nodeB) {
|
|
if (!nodeA.parent) {
|
|
// A is orphaned, return if B is orphaned as well
|
|
return !nodeB.parent;
|
|
}
|
|
|
|
if (!nodeB.parent) {
|
|
// B is orphaned and A is not
|
|
return false;
|
|
}
|
|
|
|
// Check if parents match
|
|
if (!checkMatch(nodeA.parent, nodeB.parent)) {
|
|
return false;
|
|
}
|
|
|
|
// Check parents' parents
|
|
return sameParent(nodeA.parent, nodeB.parent);
|
|
}
|
|
|
|
module.exports = sameParent;
|