import { useState } from "react";
import { useParams } from "react-router-dom";
import {
  Box,
  Link,
  Typography,
  Button,
  useTheme,
  useMediaQuery,
  InputAdornment,
  IconButton,
  TextareaAutosize,
  Popover,
  TextField,
} from "@mui/material";

import ButtonsOptions from "../ButtonsOptions";
import { questionStore, updateQuestionsList } from "@root/questions";

import { EnterIcon } from "../../../assets/icons/questionsPage/enterIcon";
import AddImage from "../../../assets/icons/questionsPage/addImage";
import SwitchAnswerOptionsPict from "./switchOptionsPict";

import type { ChangeEvent } from "react";
import { PointsIcon } from "@icons/questionsPage/PointsIcon";
import { MessageIcon } from "@icons/messagIcon";
import { DeleteIcon } from "@icons/questionsPage/deleteIcon";
import { ImageAddIcons } from "@icons/ImageAddIcons";

interface Props {
  totalIndex: number;
}

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

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

  const addImage = ({ target }: ChangeEvent<HTMLInputElement>) => {
    if (target.files?.length) {
      const clonContent = listQuestions[quizId][totalIndex].content;

      clonContent.images.push(URL.createObjectURL(target.files[0]));

      updateQuestionsList(quizId, totalIndex, { content: clonContent });
    }
  };

  return (
    <>
      <Box sx={{ pl: "20px", pr: "20px" }}>
        <Box
          sx={{
            display: "flex",
            alignItems: "center",
            paddingBottom: isMobile ? "15px" : "20px",
            marginTop: isMobile ? "15px" : "4px",
            height: isMobile ? "auto" : "40px",
            marginLeft: isTablet ? "0px" : "60px",
          }}
        >
          <input type="file" hidden onChange={addImage} />
          <Box sx={{ display: isTablet ? "none" : "flex", alignItems: "center" }}>
            <Box
              sx={{
                width: "60px",
                height: "40px",
                background: "#EEE4FC",
                display: "flex",
                justifyContent: "space-between",
              }}
            >
              <Box
                sx={{
                  display: "flex",
                  alignItems: "center",
                  justifyContent: "center",
                  width: "100%",
                  maxHeight: "98px",
                }}
              >
                <ImageAddIcons fontSize="22px" color="#7E2AEA" />
              </Box>
              <span
                style={{
                  display: "flex",
                  alignItems: "center",
                  justifyContent: "center",
                  background: "#7E2AEA",
                  height: "100%",
                  width: "25px",
                  color: "white",
                  fontSize: "15px",
                }}
              >
                +
              </span>
            </Box>
            <Typography
              sx={{
                padding: "0 0 0 20px",
                fontWeight: 400,
                fontSize: "18px",
                lineHeight: "21.33px",
                color: theme.palette.grey2.main,
              }}
            >
              Добавьте ответ
            </Typography>
          </Box>

          <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 style={{ color: "#9A9AAF", fontSize: "30px" }} />
                    </InputAdornment>
                    {!isMobile && (
                      <Box
                        sx={{
                          width: "60px",
                          height: "40px",
                          background: "#EEE4FC",
                          display: "flex",
                          justifyContent: "space-between",
                          marginRight: "20px",
                          marginLeft: "12px",
                        }}
                      >
                        <Box sx={{ display: "flex", alignItems: "center", justifyContent: "center", width: "100%" }}>
                          <ImageAddIcons fontSize="22px" color="#7E2AEA" />
                        </Box>
                        <span
                          style={{
                            display: "flex",
                            alignItems: "center",
                            justifyContent: "center",
                            background: "#7E2AEA",
                            height: "100%",
                            width: "25px",
                            color: "white",
                            fontSize: "15px",
                          }}
                        >
                          +
                        </span>
                      </Box>
                    )}
                  </>
                ),
                endAdornment: (
                  <InputAdornment position="end">
                    <IconButton sx={{ padding: "0" }} aria-describedby="my-popover-id">
                      <MessageIcon style={{ color: "#9A9AAF", fontSize: "30px", marginRight: "6.5px" }} />
                    </IconButton>
                    <Popover id="my-popover-id" anchorOrigin={{ vertical: "bottom", horizontal: "left" }} open={false}>
                      <TextareaAutosize style={{ margin: "10px" }} placeholder="Подсказка для этого ответа" />
                    </Popover>
                    <IconButton sx={{ padding: "0" }}>
                      <DeleteIcon style={{ color: theme.palette.grey2.main, marginRight: "-1px" }} />
                    </IconButton>
                  </InputAdornment>
                ),
              }}
              sx={{
                "& .MuiInputBase-root": {
                  padding: "13.5px",
                  borderRadius: "10px",
                  background: "#ffffff",
                  height: isMobile ? "41px" : "48px",
                },
                "& .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",
            marginBottom: "17px",
          }}
        >
          <Link
            component="button"
            variant="body2"
            sx={{
              color: theme.palette.brightPurple.main,
              fontWeight: "400",
              fontSize: "16px",
              mr: "4px",
              height: "19px",
            }}
          >
            Добавьте ответ
          </Link>
          {isMobile ? null : (
            <>
              <Typography
                sx={{
                  fontWeight: 400,
                  lineHeight: "21.33px",
                  color: theme.palette.grey2.main,
                  fontSize: "16px",
                }}
              >
                или нажмите Enter
              </Typography>
              <EnterIcon style={{ color: "#7E2AEA", fontSize: "24px", marginLeft: "6px" }} />
            </>
          )}
        </Box>
      </Box>
      <ButtonsOptions switchState={switchState} SSHC={SSHC} totalIndex={totalIndex} />
      <SwitchAnswerOptionsPict switchState={switchState} totalIndex={totalIndex} />
    </>
  );
}
