UNPKG

@smidswater/postcss-conditionals

Version:

PostCSS plugin that enables @if statements in your CSS

124 lines (105 loc) 2.54 kB
"use strict"; 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;