import { Box, Typography, useMediaQuery, useTheme } from "@mui/material";
import { updateQuestion } from "@root/questions/actions";
import CustomCheckbox from "@ui_kit/CustomCheckbox";
import CustomTextField from "@ui_kit/CustomTextField";
import type { QuizQuestionVarImg } from "../../../model/questionTypes/varimg";
import { memo } from "react";

type SettingOptionsAndPictProps = {
  questionId: string;
  replText: string;
  isRequired: boolean;
};

const SettingOptionsAndPict = memo<SettingOptionsAndPictProps>(function ({
  questionId,
  replText,
  isRequired,
}) {
  const theme = useTheme();
  const isWrappColumn = useMediaQuery(theme.breakpoints.down(980));
  const isFigmaTablte = useMediaQuery(theme.breakpoints.down(990));
  const isMobile = useMediaQuery(theme.breakpoints.down(680));

  const setReplText = (replText: string) => {
    updateQuestion(questionId, (question) => {
      if (question.type !== "varimg") return;

      question.content.replText = replText;
    });
  };

  return (
    <>
      <Box
        sx={{
          display: "flex",
          justifyContent: "space-between",
          flexDirection: isWrappColumn ? "column" : "none",
        }}
      >
        <Box
          sx={{
            pt: isMobile ? "30px" : "20px",
            pb: isMobile ? "25px" : "20px",
            pl: "20px",
            display: "flex",
            flexDirection: "column",
            gap: "14px",
            maxWidth: isFigmaTablte ? "297px" : "360px",
            width: "100%",
          }}
        >
          <Typography
            sx={{
              height: isMobile ? "18px" : "auto",
              fontWeight: "500",
              fontSize: "18px",
              color: " #4D4D4D",
            }}
          >
            Настройки ответов
          </Typography>
          {!isWrappColumn && (
            <Box sx={{ mt: isMobile ? "11px" : "6px", width: "100%" }}>
              <Typography
                sx={{
                  height: isMobile ? "18px" : "auto",
                  fontWeight: "500",
                  fontSize: "18px",
                  color: " #4D4D4D",
                  mb: "14px",
                }}
              >
                Текст-заглушка на картинке
              </Typography>
              <CustomTextField
                sx={{
                  maxWidth: "330px",
                  width: "100%",
                  mr: isMobile ? "0px" : "16px",
                }}
                maxLength={60}
                placeholder={"Пример текста"}
                value={replText}
                onChange={({ target }) => setReplText(target.value)}
              />
            </Box>
          )}
        </Box>
        <Box
          sx={{
            pt: isMobile ? "0px" : "20px",
            pb: "20px",
            pl: isFigmaTablte ? (isWrappColumn ? "20px" : "31px") : "20px",
            pr: isFigmaTablte ? "19px" : "20px",
            display: "flex",
            flexDirection: "column",
            gap: isMobile ? "13px" : "14px",
            width: isMobile ? "auto" : "100%",
          }}
        >
          <Typography
            sx={{
              height: isMobile ? "18px" : "auto",
              fontWeight: "500",
              fontSize: "18px",
              color: " #4D4D4D",
            }}
          >
            Настройки вопросов
          </Typography>
          <CustomCheckbox
            dataCy="checkbox-optional-question"
            sx={{ mr: isMobile ? "0px" : "16px" }}
            label={"Необязательный вопрос"}
            checked={!isRequired}
            handleChange={({ target }) =>
              updateQuestion<QuizQuestionVarImg>(questionId, (question) => {
                if (question.type !== "varimg") return;

                question.content.required = !target.checked;
              })
            }
          />
          {isWrappColumn && (
            <>
              <Typography
                sx={{
                  height: isMobile ? "18px" : "auto",
                  fontWeight: "500",
                  fontSize: "18px",
                  color: " #4D4D4D",
                }}
              >
                Текст-заглушка на картинке
              </Typography>
              <CustomTextField
                sx={{ maxWidth: "360px", width: "100%" }}
                placeholder={"Пример текста"}
                value={replText}
                maxLength={60}
                onChange={({ target }) => setReplText(target.value)}
              />
            </>
          )}
        </Box>
      </Box>
    </>
  );
});

SettingOptionsAndPict.displayName = "SettingOptionsAndPict";

export default SettingOptionsAndPict;
