UNPKG

ultra-design

Version:
156 lines (143 loc) 3.64 kB
'use strict'; 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;