import React, { useMemo } from 'react' import { ActivityIndicator } from 'react-native' import ImageViewer from 'react-native-image-zoom-viewer' import { URL } from 'react-native-url-polyfill' import type { BasicPreviewProps } from './interface' interface ImagePreviewProps extends BasicPreviewProps {} const loadingIndicatorRenderer = () => const ImagePreview: React.FC = ({ target, onClose, list = [], onChangeCurrent, }) => { const previewOptions = useMemo(() => { const imageList = list.filter(Boolean).filter(file => { const pathName = new URL(file.previewPath).pathname return ['.png', '.jpg', '.jpeg', '.PNG', '.JPG', '.JPEG'].some(img => pathName.endsWith(img), ) }) const imageUrls = imageList.map(image => ({ url: image.previewPath })) const index = imageList.findIndex(image => image.key === target.key) return { imageList, imageUrls, index, } }, [list, target]) function handleChangePreview(index: number) { const _target = previewOptions.imageList[index] setTimeout(() => { onChangeCurrent(_target) }, 200) } return ( ) } export default ImagePreview