import type { FC } from 'react' import { useState } from 'react' import { useTranslation } from 'react-i18next' import Button from '@/app/components/base/button' import type { ImageFile } from '@/types/app' import { TransferMethod } from '@/types/app' type ImageLinkInputProps = { onUpload: (imageFile: ImageFile) => void disabled?: boolean } const regex = /^(https?|ftp):\/\// const ImageLinkInput: FC<ImageLinkInputProps> = ({ onUpload, disabled, }) => { const { t } = useTranslation() const [imageLink, setImageLink] = useState('') const handleClick = () => { if (disabled) return const imageFile = { type: TransferMethod.remote_url, _id: `${Date.now()}`, fileId: '', progress: regex.test(imageLink) ? 0 : -1, url: imageLink, } onUpload(imageFile) } return ( <div className='flex items-center pl-1.5 pr-1 h-8 border border-gray-200 bg-white shadow-xs rounded-lg'> <input type="text" className='grow mr-0.5 px-1 h-[18px] text-[13px] outline-none appearance-none' value={imageLink} onChange={e => setImageLink(e.target.value)} placeholder={t('common.imageUploader.pasteImageLinkInputPlaceholder') || ''} /> <Button variant='primary' size='small' disabled={!imageLink || disabled} onClick={handleClick} > {t('common.operation.ok')} </Button> </div> ) } export default ImageLinkInput