import React from 'react'
import type { BorderProps, LayoutProps, SpaceProps } from '@lx-react-materiel/shared'
import { commonStyleFn } from '@lx-react-materiel/shared'
import type { ImageProps } from '@tarojs/components'
import { Image } from '@tarojs/components'
import Taro from '@tarojs/taro'
import './index.less'
interface ILxImageBasic {
urls?: string[]
}
type ILxImageProps = ImageProps
& BorderProps
& LayoutProps
& SpaceProps
& ILxImageBasic
/**
* 视图组件 支持 JPG、PNG、SVG、WEBP、GIF 等格式以及云文件ID。
*
* 1、基本用法参考 https://docs.taro.zone/docs/components/media/image
* 2、更多用法请查看 lxImage.stories
*
* @param props
* @example
* 普通支持用法:
* void 0} width={100} height={100}>
*
* 支持预览的用法:
*
*/
export function LxImage (props: ILxImageProps) {
const {
style = commonStyleFn(props),
className = null,
src,
onClick,
urls = [src],
...rest
} = props
const handleClick: Pick['onClick'] = (e) => {
if (onClick) {
onClick(e)
return
}
if (urls.length > 1) {
Taro.previewImage?.({
current: src,
urls: [...urls]
}).catch((e) => {
console.log(e)
})
}
}
const mergeProps = {
...rest,
src,
className: `lx-image ${className ?? ''}`,
style,
onClick: handleClick
}
return (
)
}