'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); };