Theme customizer now uses HSL values
This commit is contained in:
45
scripts/Utils/hexToHSL.ts
Normal file
45
scripts/Utils/hexToHSL.ts
Normal file
@ -0,0 +1,45 @@
|
||||
export function hexToHSL(hex: string) {
|
||||
let result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex)
|
||||
|
||||
if(!result) {
|
||||
return null
|
||||
}
|
||||
|
||||
let r = parseInt(result[1], 16)
|
||||
let g = parseInt(result[2], 16)
|
||||
let b = parseInt(result[3], 16)
|
||||
|
||||
r /= 255
|
||||
g /= 255
|
||||
b /= 255
|
||||
|
||||
let max = Math.max(r, g, b)
|
||||
let min = Math.min(r, g, b)
|
||||
|
||||
let h = 0
|
||||
let s = 0
|
||||
let l = (max + min) / 2
|
||||
|
||||
if(max == min) {
|
||||
h = s = 0
|
||||
} else {
|
||||
let 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 /= 6
|
||||
}
|
||||
|
||||
return {h, s, l}
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
export * from "./supportsWebP"
|
||||
export * from "./delay"
|
||||
export * from "./findAll"
|
||||
export * from "./hexToHSL"
|
||||
export * from "./plural"
|
||||
export * from "./requestIdleCallback"
|
||||
export * from "./swapElements"
|
||||
|
Reference in New Issue
Block a user