///
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;