Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/landing/ui/field/color/src/internal/ |
Upload File : |
export default function rgbToHsla( rgb: {r: number, g: number, b: number, a?: number} ): {h: number, s: number, l: number, a: number} { const r = rgb.r / 255; const g = rgb.g / 255; const b = rgb.b / 255; const max = Math.max(r, g, b); const min = Math.min(r, g, b); let h, s, l = (max + min) / 2; // let l = h; // let s; if (max === min) { h = s = 0; } else { const d = max - min; s = l > 0.5 ? d / (2 - max - min) : d / (max + min); switch (max) { case r: h = (g - b) / d + (g < b ? 6 : 0); break; case g: h = (b - r) / d + 2; break; case b: h = (r - g) / d + 4; break; } h *= 0.6; } return { h: Math.round(h * 100), s: Math.round(s * 100), l: Math.round(l * 100), a: ('a' in rgb) ? rgb.a : 1, }; } // const v = Math.max(r, g, b); // const diff = v - Math.min(r, g, b); // const diffc = (c) => { // return (v - c) / 6 / diff + 1 / 2; // }; // // if (diff === 0) // { // h = 0; // s = 0; // } // else // { // s = diff / v; // rdif = diffc(r); // gdif = diffc(g); // bdif = diffc(b); // // if (r === v) // { // h = bdif - gdif; // } // else if (g === v) // { // h = (1 / 3) + rdif - bdif; // } // else if (b === v) // { // h = (2 / 3) + gdif - rdif; // } // // if (h < 0) // { // h += 1; // } // else if (h > 1) // { // h -= 1; // } // } // // return { // h: h * 360, // s: s * 100, // l: v * 100, // a: rgb.a || 1, // }; // }