�PNG  IHDR��;���IDATx��ܻn�0���K�� �)(�pA��� ���7�LeG{�� �§㻢|��ذaÆ 6lذaÆ 6lذaÆ 6lom��$^�y���ذag�5bÆ 6lذaÆ 6lذa{���� 6lذaÆ �`����}H�Fkm�,�m����Ӫ���ô�ô!� �x�|'ܢ˟;�E:���9�&ᶒ�}�{�v]�n&�6� �h��_��t�ڠ͵-ҫ���Z;��Z$�.�P���k�ž)�!��o���>}l�eQfJ�T��u і���چ��\��X=8��Rن4`Vw�l�>����n�G�^��i�s��"ms�$�u��i��?w�bs[m�6�K4���O���.�4��%����/����b�C%��t ��M�ז� �-l�G6�mrz2���s�%�9��s@���-�k�9�=���)������k�B5����\��+͂�Zsٲ ��Rn��~G���R���C����� �wIcI��n7jJ���hۛNCS|���j0��8y�iHKֶۛ�k�Ɉ+;Sz������L/��F�*\��Ԕ�#"5��m�2��[S��������=�g��n�a�P�e�ғ�L�� lذaÆ 6l�^k��̱aÆ 6lذaÆ 6lذa;���� �_��ذaÆ 6lذaÆ 6lذaÆ ���R���IEND�B` 'use strict'; exports.type = 'perItem'; exports.active = true; exports.description = 'converts colors: rgb() to #rrggbb and #rrggbb to #rgb'; exports.params = { currentColor: false, names2hex: true, rgb2hex: true, shorthex: true, shortname: true, }; var collections = require('./_collections'), rNumber = '([+-]?(?:\\d*\\.\\d+|\\d+\\.?)%?)', rComma = '\\s*,\\s*', regRGB = new RegExp( '^rgb\\(\\s*' + rNumber + rComma + rNumber + rComma + rNumber + '\\s*\\)$' ), regHEX = /^#(([a-fA-F0-9])\2){3}$/, none = /\bnone\b/i; /** * Convert different colors formats in element attributes to hex. * * @see https://www.w3.org/TR/SVG11/types.html#DataTypeColor * @see https://www.w3.org/TR/SVG11/single-page.html#types-ColorKeywords * * @example * Convert color name keyword to long hex: * fuchsia ➡ #ff00ff * * Convert rgb() to long hex: * rgb(255, 0, 255) ➡ #ff00ff * rgb(50%, 100, 100%) ➡ #7f64ff * * Convert long hex to short hex: * #aabbcc ➡ #abc * * Convert hex to short name * #000080 ➡ navy * * @param {Object} item current iteration item * @param {Object} params plugin params * @return {Boolean} if false, item will be filtered out * * @author Kir Belevich */ exports.fn = function (item, params) { if (item.type === 'element') { for (const [name, value] of Object.entries(item.attributes)) { if (collections.colorsProps.includes(name)) { let val = value; let match; // Convert colors to currentColor if (params.currentColor) { if (typeof params.currentColor === 'string') { match = val === params.currentColor; } else if (params.currentColor.exec) { match = params.currentColor.exec(val); } else { match = !val.match(none); } if (match) { val = 'currentColor'; } } // Convert color name keyword to long hex if (params.names2hex && val.toLowerCase() in collections.colorsNames) { val = collections.colorsNames[val.toLowerCase()]; } // Convert rgb() to long hex if (params.rgb2hex && (match = val.match(regRGB))) { match = match.slice(1, 4).map(function (m) { if (m.indexOf('%') > -1) m = Math.round(parseFloat(m) * 2.55); return Math.max(0, Math.min(m, 255)); }); val = rgb2hex(match); } // Convert long hex to short hex if (params.shorthex && (match = val.match(regHEX))) { val = '#' + match[0][1] + match[0][3] + match[0][5]; } // Convert hex to short name if (params.shortname) { var lowerVal = val.toLowerCase(); if (lowerVal in collections.colorsShortNames) { val = collections.colorsShortNames[lowerVal]; } } item.attributes[name] = val; } } } }; /** * Convert [r, g, b] to #rrggbb. * * @see https://gist.github.com/983535 * * @example * rgb2hex([255, 255, 255]) // '#ffffff' * * @param {Array} rgb [r, g, b] * @return {String} #rrggbb * * @author Jed Schmidt */ function rgb2hex(rgb) { return ( '#' + ('00000' + ((rgb[0] << 16) | (rgb[1] << 8) | rgb[2]).toString(16)) .slice(-6) .toUpperCase() ); }