import { useState, useEffect, ChangeEvent } from "react" import { ModalFooter, ModalBody, ModalHeader, ButtonGroup, Button, Field as FieldComponent, FieldLabel, TextInput, } from "@contentstack/venus-components" import type { FocalPoint, InsertResponse } from "~/types/imagevault" import FocalPointPicker from "~/shared-components/FocalPointPicker" type ImageEditModalProps = { fieldData: InsertResponse setData: (data: InsertResponse) => void closeModal: () => void } export default function ImageEditModal({ fieldData, closeModal, setData, }: ImageEditModalProps) { const [altText, setAltText] = useState("") const [caption, setCaption] = useState("") const [focalPoint, setFocalPoint] = useState({ x: 50, y: 50 }) const assetUrl = fieldData.MediaConversions[0].Url useEffect(() => { if (fieldData.Metadata && fieldData.Metadata.length) { const altText = fieldData.Metadata.find((meta) => meta.Name.includes("AltText_") )?.Value const caption = fieldData.Metadata.find((meta) => meta.Name.includes("Title_") )?.Value setAltText(altText ?? "") setCaption(caption ?? "") } }, [fieldData.Metadata]) useEffect(() => { if (fieldData.FocalPoint) { setFocalPoint(fieldData.FocalPoint) } }, [fieldData.FocalPoint]) function handleSave() { const metaData = fieldData.Metadata ?? [] const newMetadata = metaData.map((meta) => { if (meta.Name.includes("AltText_")) { return { ...meta, Value: altText } } if (meta.Name.includes("Title_")) { return { ...meta, Value: caption } } return meta }) setData({ ...fieldData, Metadata: newMetadata, FocalPoint: focalPoint, }) closeModal() } function changeFocalPoint(focalPoint: FocalPoint) { setFocalPoint(focalPoint) } return ( <>
Alt text ) => setAltText(e.target.value) } /> Caption ) => setCaption(e.target.value) } /> Focal Point
) }