✨ Input custom color
This commit is contained in:
@ -27,6 +27,22 @@
|
||||
return [c || 0, m || 0, y || 0, Math.round(k * 100)];
|
||||
}
|
||||
|
||||
function stringToRgb(input: string): number[] | undefined {
|
||||
if (input.startsWith("#")) {
|
||||
let parts = input.match(/([0-f0-F]){2}/g);
|
||||
if (!parts || parts.length != 3) return undefined;
|
||||
return parts.map((e) => parseInt(e, 16));
|
||||
} else if (input.startsWith("rgb(")) {
|
||||
let parts = input.match(/[0-9]{1,3}/g);
|
||||
if (!parts || parts.length != 3) return undefined;
|
||||
return parts.map((e) => parseInt(e));
|
||||
} else if (input.startsWith("cmyk(")) {
|
||||
let parts = input.match(/[0-9]{1,3}/g);
|
||||
if (!parts || parts.length != 4) return undefined;
|
||||
return cmykToRgb(parts.map((e) => parseInt(e)));
|
||||
}
|
||||
}
|
||||
|
||||
enum Mode {
|
||||
Rgb,
|
||||
Cmyk,
|
||||
@ -130,6 +146,17 @@
|
||||
}
|
||||
}}
|
||||
/>
|
||||
<Button
|
||||
text="Input custom color"
|
||||
emoji="🎨"
|
||||
callback={() => {
|
||||
let colorString = prompt(
|
||||
"Color: (eg. `#00ff00` or `rgb(0, 255, 0)` or `cmyk(100, 0, 100, 0)`)"
|
||||
);
|
||||
if (!colorString) return;
|
||||
targetColor = stringToRgb(colorString) || [0, 0, 0];
|
||||
}}
|
||||
/>
|
||||
<Button
|
||||
text="Change input method"
|
||||
emoji="🔀"
|
||||
|
Reference in New Issue
Block a user