UNPKG

tiny-essentials

Version:

Collection of small, essential scripts designed to be used across various projects. These simple utilities are crafted for speed, ease of use, and versatility.

1 lines 4.19 kB
(()=>{"use strict";var t={d:(r,a)=>{for(var s in a)t.o(a,s)&&!t.o(r,s)&&Object.defineProperty(r,s,{enumerable:!0,get:a[s]})},o:(t,r)=>Object.prototype.hasOwnProperty.call(t,r)},r={};t.d(r,{TinyColorConverter:()=>s});class a{static _rca(t,r,a){let s=127,o=128;void 0===t&&(t=24),void 0===r&&(r="rgb"),!0===a&&(s=55,o=200);const n=2*Math.PI/t,e=[];for(let a=0;a<t;++a){const t=Math.sin(n*a+2)*s+o,i=Math.sin(n*a+0)*s+o,h=Math.sin(n*a+4)*s+o;switch(r){case"hex":e.push({hex:this.rgbToHex(Math.round(t),Math.round(i),Math.round(h))});break;case"rgb":e.push({r:t,g:i,b:h});break;case"hsl":const[r,a,s]=this.rgbaToHsl(Math.round(t),Math.round(i),Math.round(h));e.push({h:r,s:a,l:s})}}return e}static rcaRgb(t,r){return a._rca(t,"rgb",r)}static rcaHsl(t,r){return a._rca(t,"hsl",r)}static rcaHex(t,r){return a._rca(t,"hex",r)}static randomColor(){return`#${Math.floor(16777216*Math.random()).toString(16).padStart(6,"0")}`}static parseInput(t,r){if("string"==typeof t){if((t=t.trim().toLowerCase()).startsWith("#"))return this.hexToRgba(t);if(t.startsWith("rgb"))return this.rgbStringToRgbaArray(t);if(t.startsWith("hsl"))return this.hslStringToRgbaArray(t)}if("number"==typeof t)return this.intToRgba(t);if(Array.isArray(t)&&(3===t.length||4===t.length)&&t.every(t=>"number"==typeof t)){if(r){const[r,a,s,o]=t;if(r<=360&&a<=100&&s<=100)return this.hslToRgba(r,a,s,o)}return[...t,1].slice(0,4)}throw new Error("Unsupported color format.")}static hslToInt(t,r,s){const[o,n,e]=a.hslToRgba(t,r,s);return a.rgbToInt(o,n,e)}static hslToHex(t,r,s){const[o,n,e]=a.hslToRgba(t,r,s);return a.rgbToHex(o,n,e)}static hslStringToRgbaArray(t){const r=t.match(/[\d.]+/g)?.map(Number);if(!r||r.length<3)return[0,0,0,1];const[a,s,o,n=1]=r;return this.hslToRgba(a,s,o,n)}static hslToRgba(t,r,a,s=1){a/=100;const o=r=>(r+t/30)%12,n=(r/=100)*Math.min(a,1-a),e=t=>a-n*Math.max(-1,Math.min(o(t)-3,Math.min(9-o(t),1)));return[Math.round(255*e(0)),Math.round(255*e(8)),Math.round(255*e(4)),s]}static hslToRgb(t,r,s,o=1){return a.hslToRgba(t,r,s,o).slice(0,3)}static hexToInt(t){return parseInt(t.replace(/^#/,""),16)}static hexToHsl(t){const[r,s,o,n]=a.hexToRgba(t);return a.rgbaToHsl(r,s,o,n)}static hexToHsla(t){const[r,s,o,n]=a.hexToRgba(t);return a.rgbaToHsla(r,s,o,n)}static hexToRgba(t){3===(t=t.replace(/^#/,"")).length&&(t=t.split("").map(t=>t+t).join(""));const r=parseInt(t,16);return[r>>16&255,r>>8&255,255&r,1]}static hexToRgb(t){return this.hexToRgba(t).slice(0,3)}static rgbToHex(t,r,a){return"#"+[t,r,a].map(t=>t.toString(16).padStart(2,"0")).join("")}static rgbToInt(t,r,a){return t<<16|r<<8|a}static rgbaToHsla(t,r,a,s=1){t/=255,r/=255,a/=255;const o=Math.max(t,r,a),n=Math.min(t,r,a);let e=0,i=0,h=(o+n)/2;const c=o-n;if(0!==c){switch(i=c/(1-Math.abs(2*h-1)),o){case t:e=(r-a)/c+(r<a?6:0);break;case r:e=(a-t)/c+2;break;case a:e=(t-r)/c+4}e*=60}return[Math.round(e),Math.round(100*i),Math.round(100*h),s]}static rgbaToHsl(t,r,a,s){return this.rgbaToHsla(t,r,a,s).slice(0,3)}static rgbStringToRgbaArray(t){const r=t.match(/[\d.]+/g)?.map(Number);return r?[...r,1].slice(0,4):[]}static intToHsl(t){const[r,s,o,n]=a.intToRgba(t);return a.rgbaToHsl(r,s,o,n)}static intToHsla(t){const[r,s,o,n]=a.intToRgba(t);return a.rgbaToHsla(r,s,o,n)}static intToHex(t){return"#"+t.toString(16).padStart(6,"0")}static intToRgba(t){return[t>>16&255,t>>8&255,255&t,1]}#t="#000000";#r=[0,0,0,0];#a;constructor(t=null,r=!1){this.#a=r,null!=t&&this.setColor(t)}setColor(t){this.#t=t;const r=this.#a&&Array.isArray(t)&&t[0]<=360&&t[1]<=100&&t[2]<=100;this.#r=a.parseInput(t,r)}toHslaArray(){const[t,r,s,o]=this.#r;return a.rgbaToHsla(t,r,s,o)}toHslString(){const[t,r,s]=this.#r,[o,n,e]=a.rgbaToHsl(t,r,s);return`hsl(${o}, ${n}%, ${e}%)`}toHslaString(){const[t,r,s,o]=this.#r,[n,e,i,h]=a.rgbaToHsla(t,r,s,o);return`hsla(${n}, ${e}%, ${i}%, ${h??1})`}toRgbaArray(){return[...this.#r]}toRgbString(){const[t,r,a]=this.#r;return`rgb(${t}, ${r}, ${a})`}toRgbaString(){const[t,r,a,s]=this.#r;return`rgba(${t}, ${r}, ${a}, ${s??1})`}toHex(){const[t,r,s]=this.#r;return a.rgbToHex(t,r,s)}toInt(){const[t,r,s]=this.#r;return a.rgbToInt(t,r,s)}getOriginal(){return this.#t}}const s=a;window.TinyColorConverter=r.TinyColorConverter})();