import { VideofileIcon } from "@icons/questionsPage/VideofileIcon"; import { Box, Button, Typography, useMediaQuery, useTheme } from "@mui/material"; import { updateQuestion, uploadQuestionImage } from "@root/questions/actions"; import { useCurrentQuiz } from "@root/quizes/hooks"; import AddOrEditImageButton from "@ui_kit/AddOrEditImageButton"; import CustomTextField from "@ui_kit/CustomTextField"; import { CropModal, useCropModalState } from "@ui_kit/Modal/CropModal"; import { useState } from "react"; import { useDebouncedCallback } from "use-debounce"; import type { QuizQuestionPage } from "../../../model/questionTypes/page"; import ButtonsOptions from "../ButtonsOptions"; import { UploadImageModal } from "../UploadImage/UploadImageModal"; import { UploadVideoModal } from "../UploadVideoModal"; import SwitchPageOptions from "./switchPageOptions"; import { useDisclosure } from "../../../utils/useDisclosure"; type Props = { disableInput?: boolean; question: QuizQuestionPage; }; export default function PageOptions({ disableInput, question }: Props) { const [openVideoModal, setOpenVideoModal] = useState(false); const [switchState, setSwitchState] = useState("setting"); 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 quizQid = useCurrentQuiz()?.qid; const { isCropModalOpen, openCropModal, closeCropModal, imageBlob, originalImageUrl, setCropModalImageBlob } = useCropModalState(); const [isImageUploadOpen, openImageUploadModal, closeImageUploadModal] = useDisclosure(); const setText = useDebouncedCallback((value) => { updateQuestion(question.id, (question) => { if (question.type !== "page") return; question.content.text = value; }); }, 200); const SSHC = (data: string) => { setSwitchState(data); }; async function handleImageUpload(file: File) { const url = await uploadQuestionImage(question.id, quizQid, file, (question, url) => { if (question.type !== "page") return; question.content.picture = url; question.content.originalPicture = url; }); closeImageUploadModal(); openCropModal(file, url); } function handleCropModalSaveClick(imageBlob: Blob) { uploadQuestionImage(question.id, quizQid, imageBlob, (question, url) => { if (question.type !== "page") return; question.content.picture = url; }); } console.log(question.content.useImage); return ( <> setText(target.value)} /> { if (question.content.picture) { return openCropModal(question.content.picture, question.content.originalPicture); } openImageUploadModal(); }} onPlusClick={() => { openImageUploadModal(); }} /> updateQuestion(question.id, (question) => ((question as QuizQuestionPage).content.useImage = true)) } > Изображение или {isMobile ? ( + ) : ( setOpenVideoModal(true)} style={{ display: "flex", alignItems: "center", justifyContent: "center", background: "#7E2AEA", height: "100%", width: "25px", color: "white", fontSize: "15px", }} > + )} updateQuestion(question.id, (question) => ((question as QuizQuestionPage).content.useImage = false)) } > Видео setOpenVideoModal(false)} video={question.content.video} onUpload={(url) => { updateQuestion(question.id, (question) => { if (question.type !== "page") return; question.content.video = url; }); }} /> ); }