UNPKG

jc-color

Version:

A JavaScript tool for color compute and console print tool both for NodeJS and Browser.

1 lines 4.51 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.hslToRgbChannels=exports.stringColorToChannels=exports.colorsToChannels=exports.colorToChannel=exports.hslToChannels=exports.rgbToChannels=exports.hexToChannels=exports.hex6ToChannels=exports.hex3ToChannels=void 0;const __1=require(".."),regs_1=require("../regs"),types_1=require("../types"),jc_utils_1=require("@jcstdio/jc-utils");function hex3ToChannels(e){return regs_1.regHex3.test(e)?{red:parseInt(e[1]+e[1],16),green:parseInt(e[2]+e[2],16),blue:parseInt(e[3]+e[3],16)}:null}function hex6ToChannels(e){return regs_1.regHex6.test(e)?{red:parseInt(e.slice(1,3),16),green:parseInt(e.slice(3,5),16),blue:parseInt(e.slice(5,7),16)}:null}function rgbToChannels(e,r=!1){var n=e.trim(),o={red:"",green:"",blue:""};if(regs_1.regRgb.test(n))return[o.red,o.green,o.blue]=e.match(/[0-2]?[0-9]?[0-9]/gi),{red:parseInt(o.red,10),green:parseInt(o.green,10),blue:parseInt(o.blue,10)};if(r)throw(0,jc_utils_1.ValueError)(`Param value "${e}" could not be converted to color channels.`);return{red:0,green:0,blue:0}}function hexToChannels(e,r=!1){var n=hex3ToChannels(e);if(null!==n)return n;n=hex6ToChannels(e);if(null!==n)return n;if(r)throw(0,jc_utils_1.ValueError)(`Param value "${e}" could not be converted to color channels.`);return{red:0,green:0,blue:0}}function hslToChannels(e){var r,n,o,s,l,t;if((0,types_1.isHSLColor)(e))return n=e.match(/^hsl\(\s*(-?\d+)(?:deg)?\s*,\s*(\d+)%\s*,\s*(\d+)%\s*\)$/i),r=parseInt(n[1],10),o=parseInt(n[2],10)/100,s=(t=(e,r,n)=>(n<0&&(n+=1),1<n&&--n,n<1/6?e+6*(r-e)*n:n<.5?r:n<2/3?e+(r-e)*(2/3-n)*6:e))(o=2*(n=parseInt(n[3],10)/100)-(n=n<.5?n*(1+o):n+o-n*o),n,r/360+1/3),l=t(o,n,r/360),t=t(o,n,r/360-1/3),{red:Math.round(255*s),green:Math.round(255*l),blue:Math.round(255*t)};throw(0,jc_utils_1.ValueError)(`The value of param val is ${e}, which is not a valid value. (except string)`)}function colorToChannel(e,r=!1){if((0,jc_utils_1.isString)(e)){var n,o=e.toLowerCase();if(__1.colorNames.includes(o))return{red:(n=__1.colorsDict[o]).red,green:n.green,blue:n.blue};if(regs_1.regHex.test(o))return hexToChannels(o);if(regs_1.regRgb.test(o))return rgbToChannels(o);throw(0,jc_utils_1.ValueError)(`String color param value "${o}" is not a supported colorvalue`)}if((0,jc_utils_1.isObject)(e))return{red:e.red,green:e.green,blue:e.blue};if(r)throw(0,jc_utils_1.ValueError)("Invalid color param "+e);return{red:0,green:0,blue:0}}function colorsToChannels(...r){var n=[];for(let e=0;e<r.length;e++)n.push(colorToChannel(r[e]));return n}function rgbaToChannels(e){e=e.replace(/[^\d,.]/g,"").split(",");return{red:Number(e[0]),green:Number(e[1]),blue:Number(e[2]),a:Number(e[3])}}function hslaToChannels(e){var e=e.replace(/[^\d,.]/g,"").split(","),r=Number(e[0]),n=Number(e[1]),o=Number(e[2]),e={red:NaN,green:NaN,blue:NaN,a:Number(e[3])},n=(1-Math.abs(2*o-1))*n,r=r/60,s=n*(1-Math.abs(r%2-1));let l=0,t=0,a=0;0<=r&&r<1?(l=n,t=s):1<=r&&r<2?(l=s,t=n):2<=r&&r<3?(t=n,a=s):3<=r&&r<4?(t=s,a=n):4<=r&&r<5?(l=s,a=n):5<=r&&r<6&&(l=n,a=s);r=o-n/2;return e.red=Math.round(255*(l+r)),e.green=Math.round(255*(t+r)),e.blue=Math.round(255*(a+r)),e}function stringColorToChannels(e){if((0,jc_utils_1.isString)(e)){if(__1.colorNames.includes(e))return __1.colorsDict[e];var r=(0,types_1.whichColorStr)(e);if("none"===r)throw(0,jc_utils_1.ValueError)(`"${e}" is not a supported color string.`);if("hex"===r)return hexToChannels(e);if("hsl"===r)return hslToChannels(e);if("rgb"===r)return rgbToChannels(e);if("rgba"===r)return rgbaToChannels(e);if("hsla"===r)return hslaToChannels(e);throw(0,jc_utils_1.ValueError)("function stringColorToChannels gots a wrong color string.")}return e}function hslToRgbChannels(e){var r,n,o,s,l,e=e.match(/^hsl\(\s*(-?\d+)(?:deg)?\s*,\s*(\d+)%\s*,\s*(\d+)%\s*\)$/i);if(e)return r=parseInt(e[1],10),n=parseInt(e[2],10)/100,o=(l=(e,r,n)=>(n<0&&(n+=1),1<n&&--n,n<1/6?e+6*(r-e)*n:n<.5?r:n<2/3?e+(r-e)*(2/3-n)*6:e))(n=2*(e=parseInt(e[3],10)/100)-(e=e<.5?e*(1+n):e+n-e*n),e,r/360+1/3),s=l(n,e,r/360),l=l(n,e,r/360-1/3),{red:Math.round(255*o),green:Math.round(255*s),blue:Math.round(255*l)};throw(0,jc_utils_1.ValueError)("Invalid hsl color.")}exports.hex3ToChannels=hex3ToChannels,exports.hex6ToChannels=hex6ToChannels,exports.rgbToChannels=rgbToChannels,exports.hexToChannels=hexToChannels,exports.hslToChannels=hslToChannels,exports.colorToChannel=colorToChannel,exports.colorsToChannels=colorsToChannels,exports.stringColorToChannels=stringColorToChannels,exports.hslToRgbChannels=hslToRgbChannels;