✨ Input custom color
This commit is contained in:
@ -27,6 +27,22 @@
|
|||||||
return [c || 0, m || 0, y || 0, Math.round(k * 100)];
|
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 {
|
enum Mode {
|
||||||
Rgb,
|
Rgb,
|
||||||
Cmyk,
|
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
|
<Button
|
||||||
text="Change input method"
|
text="Change input method"
|
||||||
emoji="🔀"
|
emoji="🔀"
|
||||||
|
Reference in New Issue
Block a user