import { ComponentProps, ComponentType, PureComponent } from "react";

import { ThemedSvgProps } from "./hocTypings";
import { getDisplayName } from "./utils";

export function asThemedSvg<C extends ComponentType<ComponentProps<C>>>(
  WrappedComponent: C
) {
  return class AsThemedSvg extends PureComponent<ThemedSvgProps> {
    static displayName = `asThemedSvg(${getDisplayName(WrappedComponent)})`;

    static defaultProps = {
      className: "ddbc-svg--themed",
    };

    render() {
      return (
        <WrappedComponent
          {...(this.props as any)}
          fillColor={this.props.theme.themeColor}
          backgroundColor={this.props.theme.backgroundColor}
        />
      );
    }
  };
}
