{"version":3,"file":"upload.mjs","sources":["../../../../../../../packages/components/upload/src/upload.tsx"],"sourcesContent":["import {\n  type ExtractPropTypes,\n  type PropType,\n  defineComponent,\n  nextTick,\n  onBeforeUnmount,\n  reactive,\n  ref,\n} from 'vue'\n\n// Utils\nimport {\n  extend,\n  getSizeStyle,\n  isPromise,\n  makeArrayProp,\n  makeNumericProp,\n  makeObjectProp,\n  makeStringProp,\n  pick,\n  toArray,\n  truthProp,\n} from '@xzx-design/utils'\n\nimport { useCustomFieldValue, useExpose } from '@xzx-design/hooks'\n\n// Components\nimport { Icon, showImagePreview } from '@xzx-design/components'\nimport { Plus } from '@xzx-design/icons-vue'\nimport {\n  bem,\n  filterFiles,\n  isImageFile,\n  isOversize,\n  name,\n  readFileContent,\n} from './utils'\n\nimport UploadPreviewItem from './uploader-preview-item'\nimport type { ComponentInstance, Interceptor, Numeric } from '@xzx-design/utils'\nimport type {\n  IconsComponent,\n  ImageFit,\n  ImagePreviewOptions,\n} from '@xzx-design/components'\n\n// Types\nimport type {\n  UploadAfterRead,\n  UploadBeforeRead,\n  UploadExpose,\n  UploadFileListItem,\n  UploadMaxSize,\n  UploadResultType,\n} from './types'\n\nexport const uploadProps = {\n  name: makeNumericProp(''),\n  accept: makeStringProp('image/*'),\n  capture: String,\n  multiple: Boolean,\n  disabled: Boolean,\n  readonly: Boolean,\n  lazyLoad: Boolean,\n  maxCount: makeNumericProp(Number.POSITIVE_INFINITY),\n  imageFit: makeStringProp<ImageFit>('cover'),\n  resultType: makeStringProp<UploadResultType>('dataUrl'),\n  uploadIcon: makeObjectProp<IconsComponent>(Plus),\n  uploadText: String,\n  deletable: truthProp,\n  reupload: Boolean,\n  afterRead: Function as PropType<UploadAfterRead>,\n  showUpload: truthProp,\n  modelValue: makeArrayProp<UploadFileListItem>(),\n  beforeRead: Function as PropType<UploadBeforeRead>,\n  beforeDelete: Function as PropType<Interceptor>,\n  previewSize: [Number, String, Array] as PropType<\n    Numeric | [Numeric, Numeric]\n  >,\n  previewImage: truthProp,\n  previewOptions: Object as PropType<Partial<ImagePreviewOptions>>,\n  previewFullImage: truthProp,\n  maxSize: {\n    type: [Number, String, Function] as PropType<UploadMaxSize>,\n    default: Number.POSITIVE_INFINITY,\n  },\n}\n\nexport type UploadProps = ExtractPropTypes<typeof uploadProps>\n\nexport default defineComponent({\n  name,\n\n  props: uploadProps,\n\n  emits: [\n    'delete',\n    'oversize',\n    'clickUpload',\n    'closePreview',\n    'clickPreview',\n    'clickReupload',\n    'update:modelValue',\n  ],\n\n  setup(props, { emit, slots }) {\n    const inputRef = ref()\n    const urls: string[] = []\n    const reuploadIndex = ref(-1)\n    const isReuploading = ref(false)\n\n    const getDetail = (index = props.modelValue.length) => ({\n      name: props.name,\n      index,\n    })\n\n    const resetInput = () => {\n      if (inputRef.value) {\n        inputRef.value.value = ''\n      }\n    }\n\n    const onAfterRead = (items: UploadFileListItem | UploadFileListItem[]) => {\n      resetInput()\n\n      if (isOversize(items, props.maxSize)) {\n        if (Array.isArray(items)) {\n          const result = filterFiles(items, props.maxSize)\n          items = result.valid\n          emit('oversize', result.invalid, getDetail())\n\n          if (!items.length) {\n            return\n          }\n        } else {\n          emit('oversize', items, getDetail())\n          return\n        }\n      }\n      items = reactive(items)\n      if (reuploadIndex.value > -1) {\n        const arr = [...props.modelValue]\n        arr.splice(reuploadIndex.value, 1, items as UploadFileListItem)\n        emit('update:modelValue', arr)\n        reuploadIndex.value = -1\n      } else {\n        emit('update:modelValue', [...props.modelValue, ...toArray(items)])\n      }\n\n      if (props.afterRead) {\n        props.afterRead(items, getDetail())\n      }\n    }\n\n    const readFile = (files: File | File[]) => {\n      const { maxCount, modelValue, resultType } = props\n\n      if (Array.isArray(files)) {\n        const remainCount = +maxCount - modelValue.length\n\n        if (files.length > remainCount) {\n          files = files.slice(0, remainCount)\n        }\n\n        Promise.all(\n          files.map((file) => readFileContent(file, resultType))\n        ).then((contents) => {\n          const fileList = (files as File[]).map((file, index) => {\n            const result: UploadFileListItem = {\n              file,\n              status: '',\n              message: '',\n              objectUrl: URL.createObjectURL(file),\n            }\n\n            if (contents[index]) {\n              result.content = contents[index] as string\n            }\n\n            return result\n          })\n\n          onAfterRead(fileList)\n        })\n      } else {\n        readFileContent(files, resultType).then((content) => {\n          const result: UploadFileListItem = {\n            file: files as File,\n            status: '',\n            message: '',\n            objectUrl: URL.createObjectURL(files as File),\n          }\n\n          if (content) {\n            result.content = content\n          }\n\n          onAfterRead(result)\n        })\n      }\n    }\n\n    const onChange = (event: Event) => {\n      const { files } = event.target as HTMLInputElement\n\n      if (props.disabled || !files || !files.length) {\n        return\n      }\n\n      const file =\n        files.length === 1\n          ? files[0]\n          : (Array.prototype.slice.call(files) as File[])\n\n      if (props.beforeRead) {\n        const response = props.beforeRead(file, getDetail())\n\n        if (!response) {\n          resetInput()\n          return\n        }\n\n        if (isPromise(response)) {\n          response\n            .then((data) => {\n              if (data) {\n                readFile(data)\n              } else {\n                readFile(file)\n              }\n            })\n            .catch(resetInput)\n          return\n        }\n      }\n\n      readFile(file)\n    }\n\n    let imagePreview: ComponentInstance | undefined\n\n    const onClosePreview = () => emit('closePreview')\n\n    const previewImage = (item: UploadFileListItem) => {\n      if (props.previewFullImage) {\n        const imageFiles = props.modelValue.filter(isImageFile)\n        const images = imageFiles\n          .map((item) => {\n            if (item.objectUrl && !item.url && item.status !== 'failed') {\n              item.url = item.objectUrl\n              urls.push(item.url)\n            }\n            return item.url\n          })\n          .filter(Boolean) as string[]\n\n        imagePreview = showImagePreview(\n          extend(\n            {\n              images,\n              startPosition: imageFiles.indexOf(item),\n              onClose: onClosePreview,\n            },\n            props.previewOptions\n          )\n        )\n      }\n    }\n\n    const closeImagePreview = () => {\n      if (imagePreview) {\n        imagePreview.close()\n      }\n    }\n\n    const deleteFile = (item: UploadFileListItem, index: number) => {\n      const fileList = props.modelValue.slice(0)\n      fileList.splice(index, 1)\n\n      emit('update:modelValue', fileList)\n      emit('delete', item, getDetail(index))\n    }\n\n    const reuploadFile = (index: number) => {\n      isReuploading.value = true\n      reuploadIndex.value = index\n      nextTick(() => chooseFile())\n    }\n\n    const onInputClick = () => {\n      if (!isReuploading.value) {\n        reuploadIndex.value = -1\n      }\n      isReuploading.value = false\n    }\n\n    const renderPreviewItem = (item: UploadFileListItem, index: number) => {\n      const needPickData = [\n        'imageFit',\n        'deletable',\n        'reupload',\n        'previewSize',\n        'beforeDelete',\n      ] as const\n\n      const previewData = extend(\n        pick(props, needPickData),\n        pick(item, needPickData, true)\n      )\n\n      return (\n        <UploadPreviewItem\n          v-slots={pick(slots, ['preview-cover', 'preview-delete'])}\n          item={item}\n          index={index}\n          onClick={() =>\n            emit(\n              props.reupload ? 'clickReupload' : 'clickPreview',\n              item,\n              getDetail(index)\n            )\n          }\n          onDelete={() => deleteFile(item, index)}\n          onPreview={() => previewImage(item)}\n          onReupload={() => reuploadFile(index)}\n          {...pick(props, ['name', 'lazyLoad'])}\n          {...previewData}\n        />\n      )\n    }\n\n    const renderPreviewList = () => {\n      if (props.previewImage) {\n        return props.modelValue.map(renderPreviewItem)\n      }\n    }\n\n    const onClickUpload = (event: MouseEvent) => emit('clickUpload', event)\n\n    const renderUpload = () => {\n      const lessThanMax = props.modelValue.length < +props.maxCount\n\n      const Input = props.readonly ? null : (\n        <input\n          ref={inputRef}\n          type=\"file\"\n          class={bem('input')}\n          accept={props.accept}\n          capture={props.capture as unknown as boolean}\n          multiple={props.multiple && reuploadIndex.value === -1}\n          disabled={props.disabled}\n          onChange={onChange}\n          onClick={onInputClick}\n        />\n      )\n\n      if (slots.default) {\n        return (\n          <div\n            v-show={lessThanMax}\n            class={bem('input-wrapper')}\n            onClick={onClickUpload}\n          >\n            {slots.default()}\n            {Input}\n          </div>\n        )\n      }\n\n      return (\n        <div\n          v-show={props.showUpload && lessThanMax}\n          class={bem('upload', { readonly: props.readonly })}\n          style={getSizeStyle(props.previewSize)}\n          onClick={onClickUpload}\n        >\n          <Icon class={bem('upload-icon')}>\n            <props.uploadIcon />\n          </Icon>\n          {props.uploadText && (\n            <span class={bem('upload-text')}>{props.uploadText}</span>\n          )}\n          {Input}\n        </div>\n      )\n    }\n\n    const chooseFile = () => {\n      if (inputRef.value && !props.disabled) {\n        inputRef.value.click()\n      }\n    }\n\n    onBeforeUnmount(() => {\n      urls.forEach((url) => URL.revokeObjectURL(url))\n    })\n\n    useExpose<UploadExpose>({\n      chooseFile,\n      reuploadFile,\n      closeImagePreview,\n    })\n    useCustomFieldValue(() => props.modelValue)\n\n    return () => (\n      <div class={bem()}>\n        <div class={bem('wrapper', { disabled: props.disabled })}>\n          {renderPreviewList()}\n          {renderUpload()}\n        </div>\n      </div>\n    )\n  },\n})\n"],"names":["uploadProps","name","makeNumericProp","accept","makeStringProp","capture","String","multiple","Boolean","disabled","readonly","lazyLoad","maxCount","Number","POSITIVE_INFINITY","imageFit","resultType","uploadIcon","makeObjectProp","Plus","uploadText","deletable","truthProp","reupload","afterRead","Function","showUpload","modelValue","makeArrayProp","beforeRead","beforeDelete","previewSize","Array","previewImage","previewOptions","Object","previewFullImage","maxSize","type","default","defineComponent","props","emits","setup","emit","slots","inputRef","ref","urls","reuploadIndex","isReuploading","getDetail","index","length","resetInput","value","onAfterRead","items","isOversize","isArray","result","filterFiles","valid","invalid","reactive","arr","splice","toArray","readFile","files","remainCount","slice","Promise","all","map","file","readFileContent","then","contents","fileList","status","message","objectUrl","URL","createObjectURL","content","onChange","event","target","prototype","call","response","isPromise","data","catch","imagePreview","onClosePreview","item","imageFiles","filter","isImageFile","images","url","push","showImagePreview","extend","startPosition","indexOf","onClose","closeImagePreview","close","deleteFile","reuploadFile","nextTick","chooseFile","onInputClick","renderPreviewItem","needPickData","previewData","pick","_createVNode","UploadPreviewItem","_mergeProps","onClick","onDelete","onPreview","onReupload","renderPreviewList","onClickUpload","renderUpload","lessThanMax","Input","bem","_withDirectives","_vShow","getSizeStyle","Icon","click","onBeforeUnmount","forEach","revokeObjectURL","useExpose","useCustomFieldValue"],"mappings":"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"}