Spaces:
Build error
Build error
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 | |