mirror of
https://github.com/Sevichecc/Urara-Blog.git
synced 2025-05-05 19:19:31 +08:00
35 lines
1 KiB
Text
35 lines
1 KiB
Text
'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);
|
|
};
|