import {
  Box,
  Link,
  Typography,
  ButtonBase,
  useTheme,
  useMediaQuery,
  InputAdornment,
  IconButton,
  Popover,
  TextareaAutosize,
  TextField,
} from "@mui/material";
import { useParams } from "react-router-dom";
import AddImage from "../../../assets/icons/questionsPage/addImage";
import EnterIcon from "../../../assets/icons/questionsPage/enterIcon";
import ButtonsOptionsAndPict from "../ButtonsOptionsAndPict";
import SwitchOptionsAndPict from "./switchOptionsAndPict";
import React from "react";
import { questionStore, updateQuestionsList } from "@root/questions";
import { ImageAddIcons } from "@icons/ImageAddIcons";
import PointsIcon from "@icons/questionsPage/PointsIcon";
import MessageIcon from "@icons/messagIcon";
import DeleteIcon from "@icons/questionsPage/deleteIcon";

interface Props {
  totalIndex: number;
}

export default function OptionsAndPicture({ totalIndex }: Props) {
  const [switchState, setSwitchState] = React.useState("setting");
  const { listQuestions } = questionStore();
  const quizId = Number(useParams().quizId);
  const theme = useTheme();
  const isTablet = useMediaQuery(theme.breakpoints.down(1000));
  const isMobile = useMediaQuery(theme.breakpoints.down(790));

  const SSHC = (data: string) => {
    setSwitchState(data);
  };

  return (
    <>
      <Box sx={{ padding: "20px" }}>
        <Box sx={{ paddingBottom: "25px" }}>
          {listQuestions[quizId][totalIndex].content.variants.map(
            (_, index) => (
              <ButtonBase
                key={index}
                component="label"
                sx={{
                  display: isTablet ? "none" : "flex",
                  cursor: "pointer",
                  alignItems: "center",
                  justifyContent: "flex-start",
                  marginBottom: "15px",
                }}
              >
                <input
                  onChange={({ target }) => {
                    if (target.files?.length) {
                      const clonContent =
                        listQuestions[quizId][totalIndex].content;

                      clonContent.variants[index].answer = URL.createObjectURL(
                        target.files[0]
                      );

                      updateQuestionsList(quizId, totalIndex, {
                        content: clonContent,
                      });
                    }
                  }}
                  hidden
                  accept="image/*"
                  multiple
                  type="file"
                />
                <AddImage />
                <Typography
                  sx={{
                    padding: "0 0 0 20px",
                    fontWeight: 400,
                    fontSize: "18px",
                    lineHeight: "21.33px",
                    color: theme.palette.grey2.main,
                  }}
                >
                  Добавьте ответ
                </Typography>
              </ButtonBase>
            )
          )}
          <Box
            sx={{
              width: "100%",
              border: "1px solid #9A9AAF",
              borderRadius: "8px",
              display: isTablet ? "block" : "none",
            }}
          >
            <TextField
              fullWidth
              focused={false}
              placeholder={"Добавьте ответ"}
              multiline={listQuestions[quizId][totalIndex].content.largeCheck}
              InputProps={{
                startAdornment: (
                  <>
                    <InputAdornment position="start">
                      <PointsIcon />
                    </InputAdornment>
                    {!isMobile && (
                      <AddImage sx={{ h: "100%", margin: "0px 20px" }} />
                    )}
                  </>
                ),
                endAdornment: (
                  <InputAdornment position="end">
                    <IconButton aria-describedby="my-popover-id">
                      <MessageIcon />
                    </IconButton>
                    <Popover
                      id="my-popover-id"
                      anchorOrigin={{ vertical: "bottom", horizontal: "left" }}
                      open={false}
                    >
                      <TextareaAutosize
                        style={{ margin: "10px" }}
                        placeholder="Подсказка для этого ответа"
                      />
                    </Popover>
                    <IconButton>
                      <DeleteIcon color={theme.palette.grey2.main} />
                    </IconButton>
                  </InputAdornment>
                ),
              }}
              sx={{
                "& .MuiInputBase-root": {
                  padding: "13.5px",
                  borderRadius: "10px",
                  background: "#ffffff",
                },
                "& .MuiOutlinedInput-notchedOutline": {
                  border: "none",
                },
              }}
              inputProps={{
                sx: { fontSize: "18px", lineHeight: "21px", py: 0 },
              }}
            />

            {isMobile && (
              <Box
                sx={{
                  display: "flex",
                  alignItems: "center",
                  m: "8px",
                  position: "relative",
                }}
              >
                <Box
                  sx={{ width: "100%", background: "#EEE4FC", height: "40px" }}
                />
                <ImageAddIcons
                  style={{
                    position: "absolute",
                    color: "#7E2AEA",
                    fontSize: "20px",
                    left: "45%",
                    right: "55%",
                  }}
                />
                <Box
                  sx={{
                    display: "flex",
                    justifyContent: "center",
                    alignItems: "center",
                    width: "20px",
                    background: "#EEE4FC",
                    height: "40px",
                    color: "white",
                    backgroundColor: "#7E2AEA",
                  }}
                >
                  +
                </Box>
              </Box>
            )}
          </Box>
        </Box>
        <Box sx={{ display: "flex", alignItems: "center", gap: "10px" }}>
          <Link
            component="button"
            variant="body2"
            sx={{ color: theme.palette.brightPurple.main }}
            onClick={() => {
              const clonContent = listQuestions[quizId][totalIndex].content;
              clonContent.variants.push({ answer: "", hints: "", emoji: "" });

              updateQuestionsList(quizId, totalIndex, { content: clonContent });
            }}
          >
            Добавьте ответ
          </Link>
          {isMobile ? null : (
            <>
              <Typography
                sx={{
                  fontWeight: 400,
                  fontSize: "18px",
                  lineHeight: "21.33px",
                  color: theme.palette.grey2.main,
                }}
              >
                или нажмите Enter
              </Typography>
              <EnterIcon />
            </>
          )}
        </Box>
      </Box>
      <ButtonsOptionsAndPict
        switchState={switchState}
        SSHC={SSHC}
        totalIndex={totalIndex}
      />
      <SwitchOptionsAndPict switchState={switchState} totalIndex={totalIndex} />
    </>
  );
}
