| 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 |
|
|