ultra-design
Version:
156 lines (143 loc) • 3.64 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
function toHex(value) {
if (!value.startsWith('#')) {
var ctx = document.createElement('canvas').getContext('2d');
if (!ctx) {
throw new Error('2d context not supported or canvas already initialized');
}
ctx.fillStyle = value;
return ctx.fillStyle;
} else if (value.length === 4 || value.length === 5) {
value = value.split('').map(function (v, i) {
return i ? v + v : '#';
}).join('');
return value;
} else if (value.length === 7 || value.length === 9) {
return value;
}
return '#000000';
}
function toRgb(value) {
var _value$map = value.map(function (v, i) {
return clamp(Number(v), i < 3 ? 255 : 1, 0);
}),
_value$map2 = _slicedToArray__default["default"](_value$map, 4),
r = _value$map2[0],
g = _value$map2[1],
b = _value$map2[2],
a = _value$map2[3];
return {
r: r,
g: g,
b: b,
a: a
};
}
function hex2rgb(hex) {
hex = hex.slice(1);
var r = parseInt(hex.slice(0, 2), 16);
var g = parseInt(hex.slice(2, 4), 16);
var b = parseInt(hex.slice(4, 6), 16);
var a = parseInt(hex.slice(6, 8), 16) || undefined;
if (a) a /= 255;
return {
r: r,
g: g,
b: b,
a: a
};
}
function rgb2hsv(_ref) {
var r = _ref.r,
g = _ref.g,
b = _ref.b,
a = _ref.a;
r /= 255;
g /= 255;
b /= 255;
var max = Math.max(r, g, b);
var d = max - Math.min(r, g, b);
var h = d ? (max === r ? (g - b) / d + (g < b ? 6 : 0) : max === g ? 2 + (b - r) / d : 4 + (r - g) / d) * 60 : 0;
var s = max ? d / max * 100 : 0;
var v = max * 100;
return {
h: h,
s: s,
v: v,
a: a
};
}
function hsv2rgb(_ref2) {
var h = _ref2.h,
s = _ref2.s,
v = _ref2.v,
a = _ref2.a;
s /= 100;
v /= 100;
var i = ~~(h / 60);
var f = h / 60 - i;
var p = v * (1 - s);
var q = v * (1 - s * f);
var t = v * (1 - s * (1 - f));
var index = i % 6;
var r = Math.round([v, q, p, p, t, v][index] * 255);
var g = Math.round([t, v, v, q, p, p][index] * 255);
var b = Math.round([p, p, t, v, v, q][index] * 255);
return {
r: r,
g: g,
b: b,
a: a
};
}
function rgb2hex(_ref3) {
var r = _ref3.r,
g = _ref3.g,
b = _ref3.b,
a = _ref3.a;
var hex = [r, g, b, a].map(function (v, i) {
return v !== undefined ? (i < 3 ? v : Math.round(v * 255)).toString(16).padStart(2, '0') : '';
}).join('');
return "#".concat(hex);
}
function transformColor(format, color) {
var hex = toHex('#121212');
var rgb = hex2rgb(hex);
var hsv = rgb2hsv(rgb);
if (format === 'hex') {
var value = color;
hex = toHex(value);
rgb = hex2rgb(hex);
hsv = rgb2hsv(rgb);
} else if (format === 'rgb') {
var _value = color;
rgb = _value;
hex = rgb2hex(rgb);
hsv = rgb2hsv(rgb);
} else if (format === 'hsv') {
var _value2 = color;
hsv = _value2;
rgb = hsv2rgb(hsv);
hex = rgb2hex(rgb);
}
return {
hex: hex,
rgb: rgb,
hsv: hsv
};
}
function clamp(value, max, min) {
return value > max ? max : value < min ? min : value;
}
exports.clamp = clamp;
exports.hex2rgb = hex2rgb;
exports.hsv2rgb = hsv2rgb;
exports.rgb2hex = rgb2hex;
exports.rgb2hsv = rgb2hsv;
exports.toHex = toHex;
exports.toRgb = toRgb;
exports.transformColor = transformColor;