jodit
Version:
Jodit is awesome and usefully wysiwyg editor with filebrowser
57 lines (47 loc) • 1.72 kB
text/typescript
/*!
* Jodit Editor (https://xdsoft.net/jodit/)
* Licensed under GNU General Public License version 2 or later or a commercial license or MIT;
* For GPL see LICENSE-GPL.txt in the project root for license information.
* For MIT see LICENSE-MIT.txt in the project root for license information.
* For commercial licenses see https://xdsoft.net/jodit/commercial/
* Copyright (c) 2013-2019 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
*/
/**
* Converts rgba text representation of color in hex
* @param {string} color - string like rgba(red, green, blue, alpha) or rgb(red, green, blue)
* @return {string | NaN} hex color view, NaN - for transparent color
* @example
* ```javascript
* var p = document.createElement('p');
* p.style.color = '#ffffff';
* console.log(p.getAttribute('style')); // color: rgb(255, 255, 255);
* console.log(colorTohex(p.style.color)); // #ffffff
* ```
*/
export const colorToHex = (color: string): string | false => {
if (color === 'rgba(0, 0, 0, 0)' || color === '') {
return false;
}
if (!color) {
return '#000000';
}
if (color.substr(0, 1) === '#') {
return color;
}
const digits =
/([\s\n\t\r]*?)rgb\((\d+), (\d+), (\d+)\)/.exec(color) ||
/([\s\n\t\r]*?)rgba\((\d+), (\d+), (\d+), ([\d.]+)\)/.exec(color);
let hex, red, green, blue, rgb;
if (!digits) {
return '#000000';
}
red = parseInt(digits[2], 10);
green = parseInt(digits[3], 10);
blue = parseInt(digits[4], 10);
rgb = blue | (green << 8) | (red << 16);
hex = rgb.toString(16).toUpperCase();
while (hex.length < 6) {
hex = '0' + hex;
}
return digits[1] + '#' + hex;
};