import React from "react"; import { Popover } from "./Popover"; import "./ColorPicker.css"; // This is a narrow reimplementation of the awesome react-color Twitter component // https://github.com/casesandberg/react-color/blob/master/src/components/twitter/Twitter.js const Picker = function({ colors, color, onChange }: { colors: string[]; color: string | undefined; onChange: (color: string) => void; }) { const [innerValue, setInnerValue] = React.useState(color); React.useEffect(() => { setInnerValue(color); }, [color]); return (
{colors.map(color => (
{ onChange(color); }} title={color} tabIndex={0} style={{ backgroundColor: color }} > {color === "transparent" ? (
) : ( undefined )}
))}
#
{ const value = e.target.value; if (value.match(/^([0-9a-f]{3}|[0-9a-f]{6}|transparent)$/)) { onChange(value === "transparent" ? "transparent" : "#" + value); } setInnerValue(value); }} value={(innerValue || "").replace(/^#/, "")} />
); }; export function ColorPicker({ type, color, onChange }: { type: "canvasBackground" | "elementBackground" | "elementStroke"; color: string | null; onChange: (color: string) => void; }) { const [isActive, setActive] = React.useState(false); return (
); } const colors = { canvasBackground: [ "#DEE6EF", "#FCEAD8", "#F9E0E0", "#E6F1F1", "#E0EDDF", "#FBF5DD", "#F0E6ED", "#FFEDEF", "#EDE5E1", "#F2F0EF", "#FFFFFF" ], elementBackground: [ "#4E79A7", "#F28E2C", "#E15759", "#76B7B2", "#59A14F", "#EDC949", "#AF7AA1", "#FF9DA7", "#9C755F", "#BAB0AB", "transparent" ], elementStroke: [ "#324E6B", "#9B5B1D", "#903839", "#4C7572", "#396733", "#AD9336", "#805976", "#BA737A", "#725646", "#88817D", "#000000" ] };