@sphinxxxx/color-conversion
Version:
Convert colors between RGBA/HSLA/Hex
8 lines • 6.46 kB
JavaScript
/*!
* @sphinxxxx/color-conversion v2.2.2
* https://github.com/Sphinxxxx/color-conversion
*
* Copyright 2017-2019 Joudee (https://github.com/Joudee), Andreas Borgen (https://github.com/Sphinxxxx), Michael Jackson (https://github.com/mjackson)
* Released under the ISC license.
*/
!function(r,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):r.Color=t()}(this,function(){"use strict";var r=function(r,t,e){return t&&n(r.prototype,t),e&&n(r,e),r};function n(r,t){for(var e=0;e<t.length;e++){var n=t[e];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(r,n.key,n)}}var d=function(r,t){if(Array.isArray(r))return r;if(Symbol.iterator in Object(r))return function(r,t){var e=[],n=!0,a=!1,i=void 0;try{for(var f,c=r[Symbol.iterator]();!(n=(f=c.next()).done)&&(e.push(f.value),!t||e.length!==t);n=!0);}catch(r){a=!0,i=r}finally{try{!n&&c.return&&c.return()}finally{if(a)throw i}}return e}(r,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")};String.prototype.startsWith=String.prototype.startsWith||function(r){return 0===this.indexOf(r)},String.prototype.padStart=String.prototype.padStart||function(r,t){for(var e=this;e.length<r;)e=t+e;return e};var a={cb:"0f8ff",tqw:"aebd7",q:"-ffff",qmrn:"7fffd4",zr:"0ffff",bg:"5f5dc",bsq:"e4c4",bck:"---",nch:"ebcd",b:"--ff",bvt:"8a2be2",brwn:"a52a2a",brw:"deb887",ctb:"5f9ea0",hrt:"7fff-",chcT:"d2691e",cr:"7f50",rnw:"6495ed",crns:"8dc",crms:"dc143c",cn:"-ffff",Db:"--8b",Dcn:"-8b8b",Dgnr:"b8860b",Dgr:"a9a9a9",Dgrn:"-64-",Dkhk:"bdb76b",Dmgn:"8b-8b",Dvgr:"556b2f",Drng:"8c-",Drch:"9932cc",Dr:"8b--",Dsmn:"e9967a",Dsgr:"8fbc8f",DsTb:"483d8b",DsTg:"2f4f4f",Dtrq:"-ced1",Dvt:"94-d3",ppnk:"1493",pskb:"-bfff",mgr:"696969",grb:"1e90ff",rbrc:"b22222",rwht:"af0",stg:"228b22",chs:"-ff",gnsb:"dcdcdc",st:"8f8ff",g:"d7-",gnr:"daa520",gr:"808080",grn:"-8-0",grnw:"adff2f",hnw:"0fff0",htpn:"69b4",nnr:"cd5c5c",ng:"4b-82",vr:"0",khk:"0e68c",vnr:"e6e6fa",nrb:"0f5",wngr:"7cfc-",mnch:"acd",Lb:"add8e6",Lcr:"08080",Lcn:"e0ffff",Lgnr:"afad2",Lgr:"d3d3d3",Lgrn:"90ee90",Lpnk:"b6c1",Lsmn:"a07a",Lsgr:"20b2aa",Lskb:"87cefa",LsTg:"778899",Lstb:"b0c4de",Lw:"e0",m:"-ff-",mgrn:"32cd32",nn:"af0e6",mgnt:"-ff",mrn:"8--0",mqm:"66cdaa",mmb:"--cd",mmrc:"ba55d3",mmpr:"9370db",msg:"3cb371",mmsT:"7b68ee","":"-fa9a",mtr:"48d1cc",mmvt:"c71585",mnLb:"191970",ntc:"5fffa",mstr:"e4e1",mccs:"e4b5",vjw:"dead",nv:"--80",c:"df5e6",v:"808-0",vrb:"6b8e23",rng:"a5-",rngr:"45-",rch:"da70d6",pgnr:"eee8aa",pgrn:"98fb98",ptrq:"afeeee",pvtr:"db7093",ppwh:"efd5",pchp:"dab9",pr:"cd853f",pnk:"c0cb",pm:"dda0dd",pwrb:"b0e0e6",prp:"8-080",cc:"663399",r:"--",sbr:"bc8f8f",rb:"4169e1",sbrw:"8b4513",smn:"a8072",nbr:"4a460",sgrn:"2e8b57",ssh:"5ee",snn:"a0522d",svr:"c0c0c0",skb:"87ceeb",sTb:"6a5acd",sTgr:"708090",snw:"afa",n:"-ff7f",stb:"4682b4",tn:"d2b48c",t:"-8080",thst:"d8bfd8",tmT:"6347",trqs:"40e0d0",vt:"ee82ee",whT:"5deb3",wht:"",hts:"5f5f5",w:"-",wgrn:"9acd32"};function i(r,t){var e=1<arguments.length&&void 0!==t?t:1;return(0<e?r.toFixed(e).replace(/0+$/,"").replace(/\.$/,""):r.toString())||"0"}function l(r,t,e,n){!function(r,t){if(!(r instanceof t))throw new TypeError("Cannot call a class as a function")}(this,l);var u=this;if(void 0===r);else if(Array.isArray(r))this.rgba=r;else if(void 0===e){var a=r&&""+r;a&&function(r){if(r.startsWith("hsl")){var t=r.match(/([\-\d\.e]+)/g).map(Number),e=d(t,4),n=e[0],a=e[1],i=e[2],f=e[3];void 0===f&&(f=1),n/=360,a/=100,i/=100,u.hsla=[n,a,i,f]}else if(r.startsWith("rgb")){var c=r.match(/([\-\d\.e]+)/g).map(Number),s=d(c,4),o=s[0],b=s[1],h=s[2],g=s[3];void 0===g&&(g=1),u.rgba=[o,b,h,g]}else r.startsWith("#")?u.rgba=l.hexToRgb(r):u.rgba=l.nameToRgb(r)||l.hexToRgb(r)}(a.toLowerCase())}else this.rgba=[r,t,e,void 0===n?1:n]}return r(l,[{key:"printRGB",value:function(r){var t=(r?this.rgba:this.rgba.slice(0,3)).map(function(r,t){return i(r,3===t?3:0)});return r?"rgba("+t+")":"rgb("+t+")"}},{key:"printHSL",value:function(r){var e=[360,100,100,1],n=["","%","%",""],t=(r?this.hsla:this.hsla.slice(0,3)).map(function(r,t){return i(r*e[t],3===t?3:1)+n[t]});return r?"hsla("+t+")":"hsl("+t+")"}},{key:"printHex",value:function(r){var t=this.hex;return r?t:t.substring(0,7)}},{key:"rgba",get:function(){if(this._rgba)return this._rgba;if(!this._hsla)throw new Error("No color is set");return this._rgba=l.hslToRgb(this._hsla)},set:function(r){3===r.length&&(r[3]=1),this._rgba=r,this._hsla=null}},{key:"rgbString",get:function(){return this.printRGB()}},{key:"rgbaString",get:function(){return this.printRGB(!0)}},{key:"hsla",get:function(){if(this._hsla)return this._hsla;if(!this._rgba)throw new Error("No color is set");return this._hsla=l.rgbToHsl(this._rgba)},set:function(r){3===r.length&&(r[3]=1),this._hsla=r,this._rgba=null}},{key:"hslString",get:function(){return this.printHSL()}},{key:"hslaString",get:function(){return this.printHSL(!0)}},{key:"hex",get:function(){return"#"+this.rgba.map(function(r,t){return t<3?r.toString(16):Math.round(255*r).toString(16)}).map(function(r){return r.padStart(2,"0")}).join("")},set:function(r){this.rgba=l.hexToRgb(r)}}],[{key:"hexToRgb",value:function(r){var t=(r.startsWith("#")?r.slice(1):r).replace(/^(\w{3})$/,"$1F").replace(/^(\w)(\w)(\w)(\w)$/,"$1$1$2$2$3$3$4$4").replace(/^(\w{6})$/,"$1FF");if(!t.match(/^([0-9a-fA-F]{8})$/))throw new Error("Unknown hex color; "+r);var e=t.match(/^(\w\w)(\w\w)(\w\w)(\w\w)$/).slice(1).map(function(r){return parseInt(r,16)});return e[3]=e[3]/255,e}},{key:"nameToRgb",value:function(r){var t=r.toLowerCase().replace("at","T").replace(/[aeiouyldf]/g,"").replace("ght","L").replace("rk","D").slice(-5,4),e=a[t];return void 0===e?e:l.hexToRgb(e.replace(/\-/g,"00").padStart(6,"f"))}},{key:"rgbToHsl",value:function(r){var t=d(r,4),e=t[0],n=t[1],a=t[2],i=t[3];e/=255,n/=255,a/=255;var f=Math.max(e,n,a),c=Math.min(e,n,a),s=void 0,o=void 0,b=(f+c)/2;if(f===c)s=o=0;else{var h=f-c;switch(o=.5<b?h/(2-f-c):h/(f+c),f){case e:s=(n-a)/h+(n<a?6:0);break;case n:s=(a-e)/h+2;break;case a:s=(e-n)/h+4}s/=6}return[s,o,b,i]}},{key:"hslToRgb",value:function(r){var t=d(r,4),e=t[0],n=t[1],a=t[2],i=t[3],f=void 0,c=void 0,s=void 0;if(0===n)f=c=s=a;else{var o=function(r,t,e){return e<0&&(e+=1),1<e&&(e-=1),e<1/6?r+6*(t-r)*e:e<.5?t:e<2/3?r+(t-r)*(2/3-e)*6:r},b=a<.5?a*(1+n):a+n-a*n,h=2*a-b;f=o(h,b,e+1/3),c=o(h,b,e),s=o(h,b,e-1/3)}var g=[255*f,255*c,255*s].map(Math.round);return g[3]=i,g}}]),l});