ui
This commit is contained in:
+35
@@ -0,0 +1,35 @@
|
||||
'use strict';
|
||||
const isCustomProp = require('./isCustomProp');
|
||||
|
||||
/** @type {(node: import('postcss').Declaration) => boolean} */
|
||||
const important = (node) => node.important;
|
||||
/** @type {(node: import('postcss').Declaration) => boolean} */
|
||||
const unimportant = (node) => !node.important;
|
||||
|
||||
/* Cannot be combined with other values in shorthand
|
||||
https://www.w3.org/TR/css-cascade-5/#shorthand */
|
||||
const cssWideKeywords = ['inherit', 'initial', 'unset', 'revert'];
|
||||
/**
|
||||
* @type {(props: import('postcss').Declaration[], includeCustomProps?: boolean) => boolean}
|
||||
*/
|
||||
module.exports = (props, includeCustomProps = true) => {
|
||||
const uniqueProps = new Set(props.map((node) => node.value.toLowerCase()));
|
||||
|
||||
if (uniqueProps.size > 1) {
|
||||
for (const unmergeable of cssWideKeywords) {
|
||||
if (uniqueProps.has(unmergeable)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (
|
||||
includeCustomProps &&
|
||||
props.some(isCustomProp) &&
|
||||
!props.every(isCustomProp)
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return props.every(unimportant) || props.every(important);
|
||||
};
|
||||
Reference in New Issue
Block a user