@smidswater/postcss-conditionals
Version:
PostCSS plugin that enables @if statements in your CSS
124 lines (105 loc) • 2.54 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _cssColorConverter = _interopRequireDefault(require("css-color-converter"));
var _cssUnitConverter = _interopRequireDefault(require("css-unit-converter"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function convertNodes(left, right) {
switch (left.type) {
case 'Value':
return convertValue(left, right);
case 'ColorValue':
return convertColorValue(left, right);
case 'LengthValue':
case 'AngleValue':
case 'TimeValue':
case 'FrequencyValue':
case 'ResolutionValue':
return convertAbsoluteLengthValue(left, right);
case 'EmValue':
case 'ExValue':
case 'ChValue':
case 'RemValue':
case 'VhValue':
case 'VwValue':
case 'VminValue':
case 'VmaxValue':
case 'PercentageValue':
return convertRelativeLengthValue(left, right);
default:
return {
left,
right
};
}
}
function convertValue(left, right) {
if (right.type === 'Value') return {
left,
right
};
var nodes = convertNodes(right, left);
return {
left: nodes.right,
right: nodes.left
};
}
function convertColorValue(left, right) {
left.value = (0, _cssColorConverter.default)(left.value).toHexString();
if (right.type === 'Value') {
right = {
type: 'ColorValue',
value: (0, _cssColorConverter.default)().fromRgb([right.value, right.value, right.value]).toHexString()
};
} else if (right.type === 'ColorValue') {
right.value = (0, _cssColorConverter.default)(right.value).toHexString();
}
return {
left,
right
};
}
function convertAbsoluteLengthValue(left, right) {
switch (right.type) {
case left.type:
{
right = {
type: left.type,
value: (0, _cssUnitConverter.default)(right.value, right.unit, left.unit),
unit: left.unit
};
break;
}
case 'Value':
{
right = {
type: left.type,
value: right.value,
unit: left.unit
};
break;
}
}
return {
left,
right
};
}
function convertRelativeLengthValue(left, right) {
if (right.type === 'Value') {
right = {
type: left.type,
value: right.value,
unit: left.unit
};
}
return {
left,
right
};
}
var _default = convertNodes;
exports.default = _default;
module.exports = exports.default;