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={{ padding: "20px" }}>
        <Box
          sx={{ display: "flex", alignItems: "center", paddingBottom: "25px" }}
        >
          <input type="file" hidden onChange={addImage} />
          <Box sx={{ display: isTablet ? "none" : "block" }}>
            <Button component="label" sx={{ padding: "0px" }}>
              <AddImage />
            </Button>
            <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 />
                    </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={() => {
            //     console.info("I'm a button.");
            // }}
          >
            Добавьте ответ
          </Link>
          {isMobile ? null : (
            <>
              <Typography
                sx={{
                  fontWeight: 400,
                  fontSize: "18px",
                  lineHeight: "21.33px",
                  color: theme.palette.grey2.main,
                }}
              >
                или нажмите Enter
              </Typography>
              <EnterIcon />
            </>
          )}
        </Box>
      </Box>
      <ButtonsOptions
        switchState={switchState}
        SSHC={SSHC}
        totalIndex={totalIndex}
      />
      <SwitchAnswerOptionsPict
        switchState={switchState}
        totalIndex={totalIndex}
      />
    </>
  );
}
