/// import type Cropper from 'cropperjs'; import type { CropperGrid, CropperSelection, CropperImage, CropperCanvas, CropperHandle } from 'cropperjs'; export type RCropperGrid = Partial>; export type RCropperSelection = Partial>; export type RCropperImage = Partial>; export type RCropperCanvas = Partial>; export interface RCropperEvents { onCrop?(_src: string | undefined, _file?: File): void; onZoom?(imgData: number[] | undefined): void; onRotate?(imgData: number[] | undefined): void; onFlip?(imgData: number[] | undefined): void; onReset?(imgData: number[] | undefined): void; onCancelCrop?(selectionData: { x: number; y: number; width: number; height: number; }): void; } export interface RCropperActionHandlers { handleCrop: () => Promise; handleZoomIn: () => void; handleZoomOut: () => void; handleRotateLeft: () => void; handleRotateRight: () => void; handleFlipX: () => void; handleFlipY: () => void; handleReset: () => void; handleCancelCrop: () => void; } export interface RCropperRef { cropper: Cropper | null; image: CropperImage | null; canvas: CropperCanvas | null; selection: CropperSelection | null; } export interface RCropperProps extends RCropperEvents { /** * 图片的源地址 * @description 可以是本地图片路径或网络图片URL */ src: string; alt?: string; className?: string; style?: React.CSSProperties; /** * 拖拽模式 * @default 'crop' * @description 'crop' - 裁剪模式, 'move' - 移动模式, 'none' - 禁用拖拽 */ dragMode?: 'crop' | 'move' | 'none'; grid?: RCropperGrid; /** * 裁剪区域的配置 * @description 可以设置裁剪区域的宽度、高度、纵横比等属性 */ selection?: RCropperSelection; /** * 图片的配置 * @description 可以设置图片的旋转、缩放、倾斜、平移等属性 */ image?: RCropperImage; /** * 画布的配置 * @description 可以设置画布的缩放步长、禁用状态等属性 */ canvas?: RCropperCanvas; } export type RCropperElement = CropperCanvas | CropperGrid | CropperSelection | CropperImage | CropperHandle | null;