astro-ghostcms/.pnpm-store/v3/files/76/c87c4a3989099a8ec6e4e95a387...

50 lines
2.2 KiB
Plaintext

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var validators_1 = require("./validators");
var ColorTypes_1 = require("./ColorTypes");
function ConvertString(input, return255, alpha255) {
if (validators_1.isValidStringColor(input)) {
if (input.startsWith('#')) {
return HandleConvertHexString(input, return255, alpha255);
}
else if (input.startsWith('rgb')) {
return HandleConvertRgbString(input, return255);
}
}
}
exports.ConvertString = ConvertString;
/**
* **assumes that the input is valid**
*/
function HandleConvertHexString(text, return255, alpha255) {
var color = { red: 0, green: 0, blue: 0, alpha: 0 };
var raw = text.replace('#', '');
var length = raw.length;
var modulo = length % 3;
color.red =
length > 4 ? parseInt(raw.substring(0, 2), 16) : parseInt(raw.substring(0, 1).concat(raw.substring(0, 1)), 16);
color.green =
length > 4 ? parseInt(raw.substring(2, 4), 16) : parseInt(raw.substring(1, 2).concat(raw.substring(1, 2)), 16);
color.blue =
length > 4 ? parseInt(raw.substring(4, 6), 16) : parseInt(raw.substring(2, 3).concat(raw.substring(2, 3)), 16);
if (modulo) {
color.alpha =
length > 4
? parseInt(raw.substring(length - modulo, length), 16)
: parseInt(raw.substring(length - modulo, length).concat(raw.substring(length - modulo, length)), 16);
color.alpha = alpha255 ? color.alpha : color.alpha / 255;
}
else {
color.alpha = 1;
}
return new ColorTypes_1.RGBColor(return255 ? color.red : color.red / 255, return255 ? color.green : color.green / 255, return255 ? color.blue : color.blue / 255, color.alpha);
}
exports.HandleConvertHexString = HandleConvertHexString;
/**
* **assumes that the input is valid**
*/
function HandleConvertRgbString(text, return255) {
var split = text.split(/,|\b /g);
return new ColorTypes_1.RGBColor(parseInt(split[0].replace(/\D/g, '')) / (return255 ? 1 : 255), parseInt(split[1].replace(/\D/g, '')) / (return255 ? 1 : 255), parseInt(split[2].replace(/\D/g, '')) / (return255 ? 1 : 255), split[3] ? parseFloat(split[3].replace(/[^\.\d]/g, '')) : 1);
}