import React from "react"; import { mixColor } from "./color-util"; import { ColorWidget } from "./color-widget"; import { DEFAULT_BG_COLOR } from "./colors"; import { createSvgSymbolContext, SvgSymbolContext } from "./svg-symbol"; import { SymbolContextWidget, SymbolContextWidgetProps, } from "./symbol-context-widget"; const DEFAULT_CONTEXT: SvgCompositionContext = { background: DEFAULT_BG_COLOR, ...createSvgSymbolContext(), }; export type SvgCompositionContext = SvgSymbolContext & { /** The background color of the composition, as a hex hash (e.g. '#ff0000'). */ background: string; }; export function createSvgCompositionContext( ctx: Partial = {} ): SvgCompositionContext { return { ...DEFAULT_CONTEXT, ...ctx, }; } export type CompositionContextWidgetProps = SymbolContextWidgetProps; export function CompositionContextWidget({ ctx, onChange, children, }: CompositionContextWidgetProps): JSX.Element { const resetColors = () => { const { background, stroke, fill } = DEFAULT_CONTEXT; onChange({ ...ctx, background, stroke, fill }); }; const monochromatizeColors = () => { onChange({ ...ctx, stroke: mixColor(ctx.background, DEFAULT_CONTEXT.stroke, 0.1), fill: mixColor(ctx.background, DEFAULT_CONTEXT.fill, 0.1), }); }; const extraButtons = ( <> {" "} {" "} ); return ( {children} onChange({ ...ctx, background })} />{" "} ); }