From a430284aa21e3ae1f0d5654e55b2ad2852519cc2 Mon Sep 17 00:00:00 2001 From: wwf <yearningwang@iqtogether.com> Date: 星期三, 04 六月 2025 15:17:49 +0800 Subject: [PATCH] 初始化 --- app/components/base/image-uploader/image-preview.tsx | 43 ++++++++++++++++++++----------------------- 1 files changed, 20 insertions(+), 23 deletions(-) diff --git a/app/components/base/image-uploader/image-preview.tsx b/app/components/base/image-uploader/image-preview.tsx index e67edaa..748e6ba 100644 --- a/app/components/base/image-uploader/image-preview.tsx +++ b/app/components/base/image-uploader/image-preview.tsx @@ -6,7 +6,6 @@ import { useHotkeys } from 'react-hotkeys-hook' import Tooltip from '@/app/components/base/tooltip' import Toast from '@/app/components/base/toast' -import { noop } from 'lodash-es' type ImagePreviewProps = { url: string @@ -62,7 +61,6 @@ if (url.startsWith('http') || url.startsWith('https')) { const a = document.createElement('a') a.href = url - a.target = '_blank' a.download = title a.click() } @@ -70,7 +68,6 @@ // Base64 image const a = document.createElement('a') a.href = url - a.target = '_blank' a.download = title a.click() } @@ -102,11 +99,11 @@ for (let offset = 0; offset < byteCharacters.length; offset += 512) { const slice = byteCharacters.slice(offset, offset + 512) - const byteNumbers = Array.from({ length: slice.length }) + const byteNumbers = new Array(slice.length) for (let i = 0; i < slice.length; i++) byteNumbers[i] = slice.charCodeAt(i) - const byteArray = new Uint8Array(byteNumbers as any) + const byteArray = new Uint8Array(byteNumbers) byteArrays.push(byteArray) } @@ -199,11 +196,11 @@ useHotkeys('esc', onCancel) useHotkeys('up', zoomIn) useHotkeys('down', zoomOut) - useHotkeys('left', onPrev || noop) - useHotkeys('right', onNext || noop) + useHotkeys('left', onPrev || (() => {})) + useHotkeys('right', onNext || (() => {})) return createPortal( - <div className='image-preview-container fixed inset-0 z-[1000] flex items-center justify-center bg-black/80 p-8' + <div className='fixed inset-0 p-8 flex items-center justify-center bg-black/80 z-[1000] image-preview-container' onClick={e => e.stopPropagation()} onWheel={handleWheel} onMouseDown={handleMouseDown} @@ -211,54 +208,54 @@ onMouseUp={handleMouseUp} style={{ cursor: scale > 1 ? 'move' : 'default' }} tabIndex={-1}> - { } + {/* eslint-disable-next-line @next/next/no-img-element */} <img ref={imgRef} alt={title} src={isBase64(url) ? `data:image/png;base64,${url}` : url} - className='max-h-full max-w-full' + className='max-w-full max-h-full' style={{ transform: `scale(${scale}) translate(${position.x}px, ${position.y}px)`, transition: isDragging ? 'none' : 'transform 0.2s ease-in-out', }} /> <Tooltip popupContent={t('common.operation.copyImage')}> - <div className='absolute right-48 top-6 flex h-8 w-8 cursor-pointer items-center justify-center rounded-lg' + <div className='absolute top-6 right-48 flex items-center justify-center w-8 h-8 rounded-lg cursor-pointer' onClick={imageCopy}> {isCopied - ? <RiFileCopyLine className='h-4 w-4 text-green-500' /> - : <RiFileCopyLine className='h-4 w-4 text-gray-500' />} + ? <RiFileCopyLine className='w-4 h-4 text-green-500'/> + : <RiFileCopyLine className='w-4 h-4 text-gray-500'/>} </div> </Tooltip> <Tooltip popupContent={t('common.operation.zoomOut')}> - <div className='absolute right-40 top-6 flex h-8 w-8 cursor-pointer items-center justify-center rounded-lg' + <div className='absolute top-6 right-40 flex items-center justify-center w-8 h-8 rounded-lg cursor-pointer' onClick={zoomOut}> - <RiZoomOutLine className='h-4 w-4 text-gray-500' /> + <RiZoomOutLine className='w-4 h-4 text-gray-500'/> </div> </Tooltip> <Tooltip popupContent={t('common.operation.zoomIn')}> - <div className='absolute right-32 top-6 flex h-8 w-8 cursor-pointer items-center justify-center rounded-lg' + <div className='absolute top-6 right-32 flex items-center justify-center w-8 h-8 rounded-lg cursor-pointer' onClick={zoomIn}> - <RiZoomInLine className='h-4 w-4 text-gray-500' /> + <RiZoomInLine className='w-4 h-4 text-gray-500'/> </div> </Tooltip> <Tooltip popupContent={t('common.operation.download')}> - <div className='absolute right-24 top-6 flex h-8 w-8 cursor-pointer items-center justify-center rounded-lg' + <div className='absolute top-6 right-24 flex items-center justify-center w-8 h-8 rounded-lg cursor-pointer' onClick={downloadImage}> - <RiDownloadCloud2Line className='h-4 w-4 text-gray-500' /> + <RiDownloadCloud2Line className='w-4 h-4 text-gray-500'/> </div> </Tooltip> <Tooltip popupContent={t('common.operation.openInNewTab')}> - <div className='absolute right-16 top-6 flex h-8 w-8 cursor-pointer items-center justify-center rounded-lg' + <div className='absolute top-6 right-16 flex items-center justify-center w-8 h-8 rounded-lg cursor-pointer' onClick={openInNewTab}> - <RiAddBoxLine className='h-4 w-4 text-gray-500' /> + <RiAddBoxLine className='w-4 h-4 text-gray-500'/> </div> </Tooltip> <Tooltip popupContent={t('common.operation.cancel')}> <div - className='absolute right-6 top-6 flex h-8 w-8 cursor-pointer items-center justify-center rounded-lg bg-white/8 backdrop-blur-[2px]' + className='absolute top-6 right-6 flex items-center justify-center w-8 h-8 bg-white/8 rounded-lg backdrop-blur-[2px] cursor-pointer' onClick={onCancel}> - <RiCloseLine className='h-4 w-4 text-gray-500' /> + <RiCloseLine className='w-4 h-4 text-gray-500'/> </div> </Tooltip> </div>, -- Gitblit v1.8.0