import React, { useEffect } from "react"; import { ReactSVG } from "react-svg"; import throttle from "lodash/throttle"; import AvatarEditor from "react-avatar-editor"; import ZoomMinusReactSvgUrl from "../../../../public/images/zoom-minus.react.svg?url"; import ZoomPlusReactSvgUrl from "../../../../public/images/zoom-plus.react.svg?url"; import Slider from "../../slider"; import IconButton from "../../icon-button"; import StyledImageCropper from "./StyledImageCropper"; const ImageCropper = ({ t, image, onChangeImage, uploadedFile, setUploadedFile, setPreviewImage, isDisabled, }) => { let editorRef = null; const setEditorRef = (editor) => (editorRef = editor); const handlePositionChange = (position) => { if (isDisabled) return; onChangeImage({ ...image, x: position.x, y: position.y }); }; const handleSliderChange = (e, newZoom = null) => { if (isDisabled) return; onChangeImage({ ...image, zoom: newZoom ? newZoom : +e.target.value }); }; const handleZoomInClick = () => { if (isDisabled) return; handleSliderChange({}, image.zoom <= 4.5 ? image.zoom + 0.5 : 5); }; const handleZoomOutClick = () => { if (isDisabled) return; handleSliderChange({}, image.zoom >= 1.5 ? image.zoom - 0.5 : 1); }; const handleDeleteImage = () => { if (isDisabled) return; setUploadedFile(null); }; const handleImageChange = throttle(() => { try { if (!editorRef) return; const newPreveiwImage = editorRef.getImageScaledToCanvas()?.toDataURL(); setPreviewImage(newPreveiwImage); } catch (e) { console.error(e); } }, 300); useEffect(() => { handleImageChange(); return () => { setPreviewImage(""); }; }, [image]); return (
{t("Common:Delete")}
); }; export default ImageCropper;