import React, { useMemo, useState, useEffect } from "react"; import { Stack, Text, Box, ActionIcon, Group, Center } from "@mantine/core"; import { useTranslation } from "react-i18next"; import RotateLeftIcon from "@mui/icons-material/RotateLeft"; import RotateRightIcon from "@mui/icons-material/RotateRight"; import { RotateParametersHook } from "../../../hooks/tools/rotate/useRotateParameters"; import { useSelectedFiles } from "../../../contexts/file/fileHooks"; import { useThumbnailGeneration } from "../../../hooks/useThumbnailGeneration"; import DocumentThumbnail from "../../shared/filePreview/DocumentThumbnail"; interface RotateSettingsProps { parameters: RotateParametersHook; disabled?: boolean; } const RotateSettings = ({ parameters, disabled = false }: RotateSettingsProps) => { const { t } = useTranslation(); const { selectedFiles } = useSelectedFiles(); const { getThumbnailFromCache, requestThumbnail } = useThumbnailGeneration(); // Get the first selected file for preview const selectedFile = useMemo(() => { return selectedFiles.length > 0 ? selectedFiles[0] : null; }, [selectedFiles]); // Get thumbnail for the selected file const [thumbnail, setThumbnail] = useState(null); useEffect(() => { if (!selectedFile) { setThumbnail(null); return; } const pageId = `${selectedFile.fileId}-1`; // Try to get cached thumbnail first const cached = getThumbnailFromCache(pageId); if (cached) { setThumbnail(cached); return; } // Request thumbnail if not cached requestThumbnail(pageId, selectedFile, 1).then((result) => { setThumbnail(result); }).catch(() => { setThumbnail(null); }); }, [selectedFile, getThumbnailFromCache, requestThumbnail]); // Calculate current angle display const currentAngle = parameters.parameters.angle; return ( {/* Thumbnail Preview Section */} {t("rotate.preview.title", "Rotation Preview")}
{/* Rotation Controls */}
); }; export default RotateSettings;