import {
  blitzCosmetics,
  blitzNonCosmetics,
  fillColorsonicHairCareAndColor,
  fillEssieMaybelline,
  fillHairCareAndColor,
  fillLorealNyx,
} from "./survey-runnables/beauty";
import { icuPickerReMountRequest, mountIcuUpcPicker } from "./survey-runnables/icu-upc-picker";
import {
  mintedUpcPickerReMountRequest,
  mountMintedUpcPicker,
} from "./survey-runnables/minted-upc-picker";
import { fillVitalFarmsEggs } from "./survey-runnables/vital-farms";
import { TSurveyRunnable } from "./util/types";

// Each object describes a button that will be added to the floating action bar. If the project
// title matches the regex, then a button with innerText of `runnableName` will be added, and when
// pressed, will invoke the `callback`.

export const SURVEY_RUNNABLES = [
  {
    regex: /essie.Maybelline Maintenance|Maybelline.essie Maintenance/i,
    runnableName: "Essie & Maybelline Fill",
    callback: fillEssieMaybelline,
  },
  {
    regex: /NYX( Maintenance)?.L'Oreal( Maintenance)?|L'Oreal( Maintenance)?.NYX( Maintenance)?/i,
    runnableName: "Loreal & Nyx Fill",
    callback: fillLorealNyx,
  },
  {
    regex: /Colorsonic.Color.(Skin.Care|Care.Skin) Maint/i,
    runnableName: "ColorSonic, Hair care & Color Fill",
    callback: fillColorsonicHairCareAndColor,
  },
  {
    regex: /(?=.*Color)(?=.*Care)(?=.*Skin)/i,
    runnableName: "Hair care & Color Fill",
    callback: fillHairCareAndColor,
  },
  {
    regex: /Blitz.*Cosmetics/i,
    runnableName: "Blitz Cosmetics",
    callback: blitzCosmetics,
  },
  {
    regex: /Blitz.*Non[\W]+Cosmetics/i,
    runnableName: "Blitz Non Cosmetics",
    callback: blitzNonCosmetics,
  },
  {
    regex: /minted (\d+)ft POG/i,
    runnableName: "Minted Inline OOS Picker",
    callback: mountMintedUpcPicker,
    reMountRequest: mintedUpcPickerReMountRequest,
    kwargs: { pog_name: "Inline Plano" },
  },
  {
    regex: /minted.*fanfare/i,
    runnableName: "Minted Fanfare OOS Picker",
    callback: mountMintedUpcPicker,
    reMountRequest: mintedUpcPickerReMountRequest,
    kwargs: { pog_name: "Fanfare FE3" },
  },
  {
    regex: /ICU Eyecare Maintenance/i,
    runnableName: "ICU Eyecare Maintenance",
    callback: mountIcuUpcPicker,
    reMountRequest: icuPickerReMountRequest,
  },
  {
    regex: /vital farms eggs.*maintenance/i,
    runnableName: "Vital Farms Eggs Fill",
    callback: fillVitalFarmsEggs,
  },
] satisfies TSurveyRunnable[];
