import type { ExtractPropTypes } from 'vue'
import { horCellProps } from '../hor-cell'
import { omit } from '@daysnap/utils'
import { makeBooleanProp, makeStringProp, makeNumericProp, makeArrayProp } from '../utils'
import type { UploaderFileListItem } from 'vant'

export const omitHorCellPropsInUploader = omit(horCellProps, ['value'])
export type HorUploaderFileListItem = UploaderFileListItem & { fIndex: string; filePath?: string }

export const horUploaderProps = {
  ...omitHorCellPropsInUploader,
  modelValue: makeArrayProp<HorUploaderFileListItem>([]),
  name: makeNumericProp(''),
  disabled: makeBooleanProp(false),
  multiple: makeBooleanProp(false),
  maxCount: makeNumericProp(Infinity),
  maxSize: makeNumericProp(Infinity),
  accept: makeStringProp('image/*'),
  uploadIcon: makeStringProp('photograph'),
  deletable: makeBooleanProp(true),
  reupload: makeBooleanProp(false), // 是否开启覆盖上传，开启后会关闭图片预览
  capture: makeStringProp(''), // 图片选取模式，可选值为 camera (直接调起摄像头)
  beforeRead: {
    type: Function,
  },
  upload: {
    type: Function,
  },
}

export type HorUploaderProps = ExtractPropTypes<typeof horUploaderProps>
