import { Box, Button } from "@mui/material"; import { MediaViewer } from "@widgets"; import { PreviewMediaDialog } from "@shared"; import { X, Upload } from "lucide-react"; import { observer } from "mobx-react-lite"; import { useState, DragEvent, useRef } from "react"; export const MediaArea = observer( ({ articleId, mediaIds, deleteMedia, onFilesDrop, // 👈 Проп для обработки загруженных файлов setSelectMediaDialogOpen, }: { articleId: number; mediaIds: { id: string; media_type: number; filename: string }[]; deleteMedia: (id: number, media_id: string) => void; onFilesDrop?: (files: File[]) => void; setSelectMediaDialogOpen: (open: boolean) => void; }) => { const [mediaModal, setMediaModal] = useState(false); const [mediaId, setMediaId] = useState(""); const [isDragging, setIsDragging] = useState(false); const fileInputRef = useRef(null); const handleMediaModal = (mediaId: string) => { setMediaModal(true); setMediaId(mediaId); }; const handleDrop = (e: DragEvent) => { e.preventDefault(); e.stopPropagation(); setIsDragging(false); const files = Array.from(e.dataTransfer.files); if (files.length && onFilesDrop) { onFilesDrop(files); } }; const handleDragOver = (e: DragEvent) => { e.preventDefault(); setIsDragging(true); }; const handleDragLeave = () => { setIsDragging(false); }; const handleClick = () => { fileInputRef.current?.click(); }; const handleFileSelect = (event: React.ChangeEvent) => { const files = Array.from(event.target.files || []); if (files.length && onFilesDrop) { onFilesDrop(files); } // Сбрасываем значение input, чтобы можно было выбрать тот же файл снова event.target.value = ""; }; return ( <>
Перетащите медиа файлы сюда или нажмите для выбора
или
{mediaIds.map((m) => ( ))}
setMediaModal(false)} mediaId={mediaId} /> ); } );