import { useEffect, useState } from 'react'; import { arrayMoveImmutable } from 'array-move'; import { DropZone } from '../DropZone'; import { SortableList } from './SortableList'; import { SortableItem } from './SortableItem'; import { Box, Button, IconButton, ImageList, ImageListItem, ImageListItemBar, Typography } from '@mui/material'; import { MdClose } from 'react-icons/md'; import { backendURL } from '../../../helpers'; export const EntityEditor = ({ entity = { images: [] }, onSave, onFileDrop, uploadFiles, onImagesSave }) => { const [state, setState] = useState(entity); useEffect(() => { setState(entity); console.log(entity.images); }, [entity]); useEffect(() => { if (uploadFiles?.status === 'FULFILLED') { setState({ ...state, images: [...(state.images || []), ...uploadFiles?.payload] }); } }, [uploadFiles]); useEffect(() => { onImagesSave && onImagesSave(state.images?.filter((img) => img?._id && img?.url)); }, [state]); const onSortEnd = ({ oldIndex, newIndex }) => { console.log(arrayMoveImmutable(state.images, oldIndex, newIndex)); setState({ ...state, images: arrayMoveImmutable(state.images, oldIndex, newIndex) }); }; const onItemRemove = (toRemoveId) => { setState({ ...state, images: [...state.images.filter((el) => el?._id !== toRemoveId)] }); }; return ( onFileDrop(files)}> Drop images here! {state.images?.map( (image, index) => !!image?._id && !!image?.url && ( onItemRemove(image._id)}> } /> ) )} {!!onSave && ( )} ); };