import { VideofileIcon } from "@icons/questionsPage/VideofileIcon"; import { Box, Typography, useMediaQuery, useTheme } from "@mui/material"; import { questionStore, setPageQuestionOriginalPicture, setPageQuestionPicture, updateQuestionsList } from "@root/questions"; import CustomTextField from "@ui_kit/CustomTextField"; import { useState } from "react"; import { useParams } from "react-router-dom"; import { useDebouncedCallback } from "use-debounce"; import ButtonsOptions from "../ButtonsOptions"; import { UploadImageModal } from "../UploadImage/UploadImageModal"; import { UploadVideoModal } from "../UploadVideoModal"; import SwitchPageOptions from "./switchPageOptions"; import { openCropModal } from "@root/cropModal"; import AddOrEditImageButton from "@ui_kit/AddOrEditImageButton"; import { CropModal } from "@ui_kit/Modal/CropModal"; import type { QuizQuestionPage } from "../../../model/questionTypes/page"; type Props = { disableInput?: boolean; totalIndex: number; }; export default function PageOptions({ disableInput, totalIndex }: Props) { const [openImageModal, setOpenImageModal] = useState(false); const [openVideoModal, setOpenVideoModal] = useState(false); const [switchState, setSwitchState] = useState("setting"); const quizId = Number(useParams().quizId); const { listQuestions } = questionStore(); const theme = useTheme(); const isTablet = useMediaQuery(theme.breakpoints.down(980)); const isFigmaTablet = useMediaQuery(theme.breakpoints.down(990)); const isMobile = useMediaQuery(theme.breakpoints.down(780)); const question = listQuestions[quizId][totalIndex] as QuizQuestionPage; const debounced = useDebouncedCallback((value) => { updateQuestionsList(quizId, totalIndex, { content: { ...question.content, text: value }, }); }, 1000); const SSHC = (data: string) => { setSwitchState(data); }; function handleImageUpload(fileList: FileList | null) { if (!fileList?.length) return; const url = URL.createObjectURL(fileList[0]); setPageQuestionPicture(quizId, totalIndex, url); setPageQuestionOriginalPicture(quizId, totalIndex, url); setOpenImageModal(false); openCropModal(url, url); } function handleCropModalSaveClick(url: string) { setPageQuestionPicture(quizId, totalIndex, url); } return ( <> debounced(target.value)} /> { if (question.content.picture) { return openCropModal( question.content.picture, question.content.originalPicture ); } setOpenImageModal(true); }} onPlusClick={() => { setOpenImageModal(true); }} /> Изображение setOpenImageModal(false)} imgHC={handleImageUpload} /> или {isMobile ? ( + ) : ( + )} Видео setOpenVideoModal(false)} video={question.content.video} onUpload={(url) => { updateQuestionsList(quizId, totalIndex, { content: { ...question.content, video: url }, }); }} /> ); }