color-to-vec4
Version:
:white_square_button: a color (rgb, rgba, hex) to vec4 convertor
2 lines (1 loc) • 1.44 kB
JavaScript
!function(r,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):r.colorToVec4=t()}(this,function(){"use strict";var r=function(r){return r/255},t=function(r,t,n){return n<r?r:n>t?t:n},n=function(n){var e=!1;n.startsWith("rgba(")?e=!0:n.startsWith("rgb(")&&(e=!1);var o=e?"rgba(":"rgb(",i=n.split(o)[1].split(")")[0].split(",");if(i.length<3||i.length>4)throw new Error(n+" is not a valid rgb(a) color");i=i.map(function(r){return parseFloat(r)}).map(function(r){return t(0,255,r)});var a=i,u=a[0],f=a[1],s=a[2],c=a[3],l=void 0===c?1:c,d=t(0,1,l),g=[u,f,s].map(r);return[].concat(g,[d])},e=function(r){var t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(r);t=t.slice(1,4),t=t.map(function(r){return parseInt(r,16)});var n=t,e=n[0],o=n[1],i=n[2],a=1;return{r:e,g:o,b:i,a:a}},o=function(t){var n=/^#[0-9A-F]{6}$/i.test(t);if(!n)throw new Error(t+" is not a valid hex color");var o=e(t),i=o.r,a=o.g,u=o.b,f=[i,a,u];return[].concat(f.map(function(t){return r(t)}),[1])},i=function(r){if("string"==typeof r){if(r.startsWith("rgba"))return n(r);if(r.startsWith("rgb"))return n(r);if(r.startsWith("#"))return o(r);throw new Error(r+" is not a valid color, must be rgba, rgb, hex or vec4")}if(Array.isArray(r)){if(4!==r.length)throw new Error("["+r+"] is not a valid vec4");return r}throw new Error(r+" is not a valid color, must be rgba, rgb, hex or vec4")};return i});