mirror of
https://github.com/react/react-native-devtools-frontend.git
synced 2026-10-01 01:38:07 +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
1.3 KiB
JavaScript
45 lines
1.3 KiB
JavaScript
'use strict';
|
|
const valueParser = require('postcss-value-parser');
|
|
const listStyleTypes = require('./listStyleTypes.json');
|
|
|
|
const definedTypes = new Set(listStyleTypes['list-style-type']);
|
|
|
|
const definedPosition = new Set(['inside', 'outside']);
|
|
|
|
/**
|
|
* @param {import('postcss-value-parser').ParsedValue} listStyle
|
|
* @return {string}
|
|
*/
|
|
module.exports = function listStyleNormalizer(listStyle) {
|
|
const order = { type: '', position: '', image: '' };
|
|
|
|
listStyle.walk((decl) => {
|
|
if (decl.type === 'word') {
|
|
if (definedTypes.has(decl.value)) {
|
|
// its a type field
|
|
order.type = `${order.type} ${decl.value}`;
|
|
} else if (definedPosition.has(decl.value)) {
|
|
order.position = `${order.position} ${decl.value}`;
|
|
} else if (decl.value === 'none') {
|
|
if (
|
|
order.type
|
|
.split(' ')
|
|
.filter((e) => e !== '' && e !== ' ')
|
|
.includes('none')
|
|
) {
|
|
order.image = `${order.image} ${decl.value}`;
|
|
} else {
|
|
order.type = `${order.type} ${decl.value}`;
|
|
}
|
|
} else {
|
|
order.type = `${order.type} ${decl.value}`;
|
|
}
|
|
}
|
|
if (decl.type === 'function') {
|
|
order.image = `${order.image} ${valueParser.stringify(decl)}`;
|
|
}
|
|
});
|
|
|
|
return `${order.type.trim()} ${order.position.trim()} ${order.image.trim()}`.trim();
|
|
};
|