import { objectType, stringType } from '../_util/type'

export interface ImageSettings {
  src: string
  height: number
  width: number
  excavate: boolean
  x?: number
  y?: number
}
export const qrProps = () => {
  return {
    size: { type: Number, default: 160 },
    value: { type: String, required: true },
    type: stringType<'canvas' | 'svg'>('canvas'),
    color: String,
    bgColor: String,
    includeMargin: Boolean,
    imageSettings: objectType<ImageSettings>(),
  }
}

export const qrcodeProps = () => {
  return {
    ...qrProps(),
    errorLevel: stringType<'L' | 'M' | 'Q' | 'H'>('M'),

    icon: String,
    iconSize: { type: Number, default: 40 },

    status: stringType<'active' | 'expired' | 'loading' | 'scanned'>('active'),
    bordered: { type: Boolean, default: true },
  }
}

export interface QRCodeCanvasColor {
  dark?: string // 默认#000000ff
  light?: string // 默认#ffffffff
}

export interface QRCodeCanvasOptions {
  version?: number
  errorCorrectionLevel?: string // 默认"M"
  maskPattern?: number // 遮罩符号的掩码图案
  toSJISFunc?: Function // 将汉字转换为其 Shift JIS 值的帮助程序函数
  margin?: number
  scale?: number
  small?: boolean
  width: number
  color?: QRCodeCanvasColor
}
