import { Button, ButtonGroup, Field as FieldComponent, FieldLabel, ModalBody, ModalFooter, ModalHeader, TextInput, } from "@contentstack/venus-components" import React, { ChangeEvent, useEffect, useState } from "react" import type { IRteElementType } from "@contentstack/app-sdk/dist/src/RTE/types" import FocalPointPicker from "~/shared-components/FocalPointPicker" import type { FocalPoint, ImageVaultAsset } from "~/types/imagevault" type ImageEditModalProps = { element: IRteElementType & { attrs: ImageVaultAsset } setData: (data: ImageVaultAsset) => void closeModal: () => void } export default function ImageEditModal({ element, setData, closeModal, }: ImageEditModalProps) { const imageVaultAsset: ImageVaultAsset = element.attrs const [altText, setAltText] = useState("") const [caption, setCaption] = useState("") const [focalPoint, setFocalPoint] = useState({ x: 50, y: 50 }) const assetUrl = imageVaultAsset.url useEffect(() => { if (imageVaultAsset.meta.alt) { setAltText(imageVaultAsset.meta.alt) } if (imageVaultAsset.meta.caption) { setCaption(imageVaultAsset.meta.caption) } }, [imageVaultAsset.meta]) useEffect(() => { if (imageVaultAsset.focalPoint) { setFocalPoint(imageVaultAsset.focalPoint) } }, [imageVaultAsset.focalPoint]) function handleSave() { const newData = { ...imageVaultAsset, meta: { alt: altText, caption, }, focalPoint, } setData(newData) closeModal() } function changeFocalPoint(focalPoint: FocalPoint) { setFocalPoint(focalPoint) } return ( <>
Alt text ) => setAltText(e.target.value) } /> Caption ) => setCaption(e.target.value) } /> Focal Point Imagevault Id
) }