/*
 * @Author: weisheng
 * @Date: 2024-06-03 23:43:43
 * @LastEditTime: 2024-06-06 21:40:53
 * @LastEditors: weisheng
 * @Description:
 * @FilePath: /wot-design-uni/src/uni_modules/wot-design-uni/components/wd-img-cropper/types.ts
 * 记得注释
 */
import type { ComponentPublicInstance, ExtractPropTypes } from 'vue'
import {
  baseProps,
  makeBooleanProp,
  makeNumberProp,
  makeNumericProp,
  makeStringProp,
} from '../common/props'

export const imgCropperProps = {
  ...baseProps,
  /**
   * 打开图片裁剪组件
   */
  modelValue: makeBooleanProp(false),
  /**
   * 取消按钮文案
   */
  cancelButtonText: String,
  /**
   * 确认按钮文案
   */
  confirmButtonText: String,
  /**
   * 是否禁用旋转
   */
  disabledRotate: makeBooleanProp(false),
  /** canvas绘图参数 start **/
  /**
   * 目标文件的类型，wx.canvasToTempFilePath属性介绍
   */
  fileType: makeStringProp('png'),
  /**
   * 生成的图片质量 wx.canvasToTempFilePath属性介绍
   */
  quality: makeNumberProp(1),
  /**
   * 设置导出图片尺寸
   */
  exportScale: makeNumberProp(2),
  /** canvas绘图参数 end **/
  /**
   * 图片源路径
   */
  imgSrc: makeStringProp(''),
  /**
   * 图片宽
   */
  imgWidth: makeNumericProp(''),
  /**
   * 图片高
   */
  imgHeight: makeNumericProp(''),
  /**
   * 最大缩放
   */
  maxScale: makeNumberProp(3),
}

export type ImgCropperProps = ExtractPropTypes<typeof imgCropperProps>

export type ImgCropperExpose = {
  /**
   * 逆转是否使用动画
   */
  revertIsAnimation: (animation: boolean) => void
  /**
   * 初始化图片的大小和角度以及距离
   */
  resetImg: () => void
  /**
   * 控制旋转角度
   * @param angle 角度
   */
  setRoate: (angle: number) => void
}

export type ImgCropperInstance = ComponentPublicInstance<ImgCropperProps, ImgCropperExpose>
