function convertAlphaColorsRules()

in packages/posthtml-transform/lib/utils.js [22:59]


function convertAlphaColorsRules(rules) {
  const additionalRules = [];

  const transformedRules = rules.map(rule => {
    const clonedRule = cloneDeep(rule);
    const opacityRule = cloneDeep(rule);

    const fillColor = rule.value && rule.attr && rule.attr === 'fill'
      ? parseColor(rule.value)
      : null;

    const strokeColor = rule.value && rule.attr && rule.attr === 'stroke'
      ? parseColor(rule.value)
      : null;

    if (fillColor && fillColor.alpha < 1) {
      clonedRule.value = `${fillColor.space}(${fillColor.values.join(', ')})`;
      opacityRule.attr = 'fill-opacity';
      opacityRule.value = fillColor.alpha.toString();
      additionalRules.push({ rule: clonedRule, ruleToAppend: opacityRule });
    }

    if (strokeColor && strokeColor.alpha < 1) {
      clonedRule.value = `${strokeColor.space}(${strokeColor.values.join(', ')})`;
      opacityRule.attr = 'stroke-opacity';
      opacityRule.value = strokeColor.alpha.toString();
      additionalRules.push({ rule: clonedRule, ruleToAppend: opacityRule });
    }

    return clonedRule;
  });

  additionalRules.forEach(({ rule, ruleToAppend }) => {
    transformedRules.splice(transformedRules.indexOf(rule) + 1, 0, ruleToAppend);
  });

  return transformedRules;
}