import { ButtonEffect } from "../effect-base.js";

/**
 * Solid color background effect
 */
export class SolidBackgroundEffect extends ButtonEffect {
  constructor() {
    super({
      id: "bg-solid",
      name: "Solid Background",
      type: "background",
      category: "Background",
      renderOrder: 1,
    });
  }

  defineControls() {
    return [
      {
        id: "bg-type",
        type: "select",
        label: "Background Type",
        defaultValue: "solid",
        options: [
          { value: "solid", label: "Solid Color" },
          { value: "gradient", label: "Gradient" },
          { value: "texture", label: "Texture" },
          { value: "emoji-wallpaper", label: "Emoji Wallpaper" },
          { value: 'external-image', label: 'Image Upload' }
        ],
      },
      {
        id: "bg-color",
        type: "color",
        label: "Background Color",
        defaultValue: "#4a90e2",
        showWhen: "bg-type",
        description: "Background color (also used behind images)",
      },
    ];
  }

  isEnabled(controlValues) {
    return controlValues["bg-type"] === "solid";
  }

  apply(context, controlValues, animState, renderData) {
    const color = controlValues["bg-color"] || "#4a90e2";
    context.fillStyle = color;
    context.fillRect(0, 0, renderData.width, renderData.height);
  }
}

// Auto-register effect
export function register(generator) {
  generator.registerEffect(new SolidBackgroundEffect());
}
