import { __ } from "@wordpress/i18n";
import {
useBlockProps,
InspectorControls,
MediaUpload,
MediaUploadCheck,
} from "@wordpress/block-editor";
import {
PanelBody,
Button,
FocalPointPicker,
RangeControl,
ToolbarGroup,
ToolbarButton,
} from "@wordpress/components";
import { BlockControls } from "@wordpress/block-editor";
import { useState } from "@wordpress/element";
import "./editor.scss";
export default function Edit({ attributes, setAttributes }) {
const { images, height } = attributes;
const [selectedImageIndex, setSelectedImageIndex] = useState(null);
const blockProps = useBlockProps();
const onSelectImages = (media) => {
const newImages = media.map((img) => ({
id: img.id,
url: img.url,
alt: img.alt || "",
focalPoint: { x: 0.5, y: 0.5 },
scale: 0.8,
rotation: 0,
}));
setAttributes({ images: [...images, ...newImages] });
};
const updateImageFocalPoint = (index, focalPoint) => {
const newImages = [...images];
newImages[index] = { ...newImages[index], focalPoint };
setAttributes({ images: newImages });
};
const updateImageScale = (index, scale) => {
const newImages = [...images];
newImages[index] = { ...newImages[index], scale };
setAttributes({ images: newImages });
};
const updateImageRotation = (index, rotation) => {
const newImages = [...images];
newImages[index] = { ...newImages[index], rotation };
setAttributes({ images: newImages });
};
const removeImage = (index) => {
const newImages = images.filter((_, i) => i !== index);
setAttributes({ images: newImages });
if (selectedImageIndex === index) {
setSelectedImageIndex(null);
}
};
const moveImage = (index, direction) => {
const newImages = [...images];
const newIndex = index + direction;
if (newIndex >= 0 && newIndex < images.length) {
[newImages[index], newImages[newIndex]] = [
newImages[newIndex],
newImages[index],
];
setAttributes({ images: newImages });
setSelectedImageIndex(newIndex);
}
};
const getImageStyle = (image) => {
const focalPoint = image.focalPoint || { x: 0.5, y: 0.5 };
const scale = image.scale || 0.8;
const rotation = image.rotation || 0;
return {
left: `${focalPoint.x * 100}%`,
top: `${focalPoint.y * 100}%`,
transform: ` rotate(${rotation}deg) scale(${scale})`,
};
};
return (
<>