33 lines
1.1 KiB
JavaScript
Raw Normal View History

2024-06-07 01:56:43 +02:00
const batteryLevel = (batteryStatus, batteryPercent) => ({
"BATTERY_UNAVAILABLE": "not connected",
2024-06-08 18:41:43 +02:00
"BATTERY_CHARGING": "charging (" + batteryPercent + "%)",
"HEADSET_UNAVAILABLE": "no headset connected"
2024-06-07 01:56:43 +02:00
})[batteryStatus] ?? batteryPercent + "%";
2024-01-20 04:49:58 +01:00
2024-06-07 01:56:43 +02:00
const batteryIcon = batteryStatus => ({
"BATTERY_UNAVAILABLE": "action-unavailable",
"BATTERY_AVAILABLE": "audio-headphones-symbolic",
2024-06-08 18:41:43 +02:00
"BATTERY_CHARGING": "freon-voltage-symbolic",
"HEADSET_UNAVAILABLE": "dialog-error"
2024-06-07 01:56:43 +02:00
})[batteryStatus] ?? "audio-headphones-symbolic";
2024-01-20 13:16:48 +01:00
2024-01-20 16:20:14 +01:00
const hex2rgb = (hex, h = hex.replace('#', '0x')) => ({ r: h >> 16 & 255, g: h >> 8 & 255, b: h & 255 });
const rgb2Hex = rgb => "#" + ((1 << 24) + (rgb.r << 16) + (rgb.g << 8) + rgb.b).toString(16).slice(1);
2024-01-20 15:16:18 +01:00
2024-01-20 16:47:54 +01:00
const interpolateColor = (f, c) => {
if(!f) return "transparent";
if(f >= 1) return c.pop();
2024-01-22 03:08:25 +01:00
if(f <= 0) return c.shift();
2024-01-20 15:16:18 +01:00
2024-01-20 16:47:54 +01:00
f *= c.length - 1;
2024-01-20 16:20:14 +01:00
const i = ~~f;
f -= i;
const [ c1, c2 ] = [ hex2rgb(c[i]), hex2rgb(c[i + 1]) ];
2024-01-20 15:16:18 +01:00
return rgb2Hex({
2024-01-20 16:47:54 +01:00
r: c1.r + ((c2.r - c1.r) * f) | 10,
g: c1.g + ((c2.g - c1.g) * f) | 10,
b: c1.b + ((c2.b - c1.b) * f) | 10
2024-01-20 15:16:18 +01:00
});
2024-01-20 13:16:48 +01:00
};