| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 | 'use client'import type { FC } from 'react'import React, { useState } from 'react'import s from './style.module.css'import cn from '@/utils/classnames'import ImagePreview from '@/app/components/base/image-uploader/image-preview'type Props = {  srcs: string[]}const getWidthStyle = (imgNum: number) => {  if (imgNum === 1) {    return {      maxWidth: '100%',    }  }  if (imgNum === 2 || imgNum === 4) {    return {      width: 'calc(50% - 4px)',    }  }  return {    width: 'calc(33.3333% - 5.3333px)',  }}const ImageGallery: FC<Props> = ({  srcs,}) => {  const [imagePreviewUrl, setImagePreviewUrl] = useState('')  const imgNum = srcs.length  const imgStyle = getWidthStyle(imgNum)  return (    <div className={cn(s[`img-${imgNum}`], 'flex flex-wrap')}>      {/* TODO: support preview */}      {srcs.map((src, index) => (        // eslint-disable-next-line @next/next/no-img-element        <img          key={index}          className={s.item}          style={imgStyle}          src={src}          alt=''          onClick={() => setImagePreviewUrl(src)}          onError={e => e.currentTarget.remove()}        />      ))}      {        imagePreviewUrl && (          <ImagePreview            url={imagePreviewUrl}            onCancel={() => setImagePreviewUrl('')}          />        )      }    </div>  )}export default React.memo(ImageGallery)export const ImageGalleryTest = () => {  const imgGallerySrcs = (() => {    const srcs = []    for (let i = 0; i < 6; i++)      // srcs.push('https://placekitten.com/640/360')      // srcs.push('https://placekitten.com/360/640')      srcs.push('https://placekitten.com/360/360')    return srcs  })()  return (    <div className='space-y-2'>      {imgGallerySrcs.map((_, index) => (        <div key={index} className='p-4 pb-2 rounded-lg bg-[#D1E9FF80]'>          <ImageGallery srcs={imgGallerySrcs.slice(0, index + 1)} />        </div>      ))}    </div>  )}
 |