| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- 'use strict';
- // eslint-disable-next-line no-var
- var colorParser = (() => {
- const el = document.createElement('div');
- // https://bugs.webkit.org/show_bug.cgi?id=14563
- document.head.appendChild(el);
- function parseRGB(color) {
- const [r, g, b, a = 1] = color.match(/[.\d]+/g).map(Number);
- return {r, g, b, a};
- }
- function parse(color) {
- el.style.color = color;
- if (el.style.color === '') {
- throw new Error(chrome.i18n.getMessage('styleMetaErrorColor', color));
- }
- color = getComputedStyle(el).color;
- el.style.color = '';
- return parseRGB(color);
- }
- function format({r, g, b, a = 1}) {
- if (a === 1) {
- return `rgb(${r}, ${g}, ${b})`;
- }
- return `rgba(${r}, ${g}, ${b}, ${a})`;
- }
- function formatHex({r, g, b, a = null}) {
- let hex = '#' + (0x1000000 + (r << 16) + (g << 8) + (b | 0)).toString(16).substr(1);
- if (a !== null) {
- hex += (0x100 + Math.floor(a * 255)).toString(16).substr(1);
- }
- return hex;
- }
- return {parse, format, formatHex};
- })();
|