{"version":3,"file":"Upload.cjs","sources":["../../../../../../packages/components/upload/src/Upload.tsx"],"sourcesContent":["import type { VueNode } from '@antdv/types';\nimport type { UploadProps as RcUploadProps } from '@antdv/vue-components/vc-upload/src/interface';\nimport type { CSSProperties } from 'vue';\nimport type { FileType, ShowUploadListInterface, UploadChangeParam, UploadFile } from './interface';\nimport { useMergedState } from '@antdv/hooks';\nimport { enUS as defaultLocale } from '@antdv/locale';\nimport { classNames, devWarning, flattenChildren, initDefaultProps } from '@antdv/utils';\nimport { VcUpload } from '@antdv/vue-components';\nimport { computed, defineComponent, onMounted, ref, toRef } from 'vue';\nimport { useInjectDisabled } from '../../config-provider';\nimport useConfigInject from '../../config-provider/src/hooks/useConfigInject';\n\nimport { useInjectFormItemContext } from '../../form';\nimport { useLocaleReceiver } from '../../locale-provider';\nimport useStyle from '../style';\nimport { uploadProps } from './interface';\nimport UploadList from './UploadList';\nimport { file2Obj, getFileItem, removeFileItem, updateFileList } from './utils';\n\nexport const LIST_IGNORE = `__LIST_IGNORE_${Date.now()}__`;\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AUpload',\n  inheritAttrs: false,\n  props: initDefaultProps(uploadProps(), {\n    type: 'select',\n    multiple: false,\n    action: '',\n    data: {},\n    accept: '',\n    showUploadList: true,\n    listType: 'text', // or picture\n    supportServerRender: true,\n  }),\n  setup(props, { slots, attrs, expose }) {\n    const formItemContext = useInjectFormItemContext();\n    const { prefixCls, direction, disabled } = useConfigInject('upload', props);\n\n    // style\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const disabledContext = useInjectDisabled();\n    const mergedDisabled = computed(() => disabled.value ?? disabledContext.value);\n\n    const [mergedFileList, setMergedFileList] = useMergedState(props.defaultFileList || [], {\n      value: toRef(props, 'fileList'),\n      postState: (list) => {\n        const timestamp = Date.now();\n        return (list ?? []).map((file, index) => {\n          if (!file.uid && !Object.isFrozen(file))\n            file.uid = `__AUTO__${timestamp}_${index}__`;\n\n          return file;\n        });\n      },\n    });\n    const dragState = ref('drop');\n\n    const upload = ref(null);\n    onMounted(() => {\n      devWarning(\n        props.fileList !== undefined || attrs.value === undefined,\n        'Upload',\n        '`value` is not a valid prop, do you mean `fileList`?',\n      );\n\n      devWarning(\n        props.transformFile === undefined,\n        'Upload',\n        '`transformFile` is deprecated. Please use `beforeUpload` directly.',\n      );\n      devWarning(\n        props.remove === undefined,\n        'Upload',\n        '`remove` props is deprecated. Please use `remove` event.',\n      );\n    });\n\n    const onInternalChange = (\n      file: UploadFile,\n      changedFileList: UploadFile[],\n      event?: { percent: number },\n    ) => {\n      let cloneList = [...changedFileList];\n\n      // Cut to match count\n      if (props.maxCount === 1)\n        cloneList = cloneList.slice(-1);\n      else if (props.maxCount)\n        cloneList = cloneList.slice(0, props.maxCount);\n\n      setMergedFileList(cloneList);\n\n      const changeInfo: UploadChangeParam<UploadFile> = {\n        file: file as UploadFile,\n        fileList: cloneList,\n      };\n\n      if (event)\n        changeInfo.event = event;\n\n      props['onUpdate:fileList']?.(changeInfo.fileList);\n      props.onChange?.(changeInfo);\n      formItemContext.onFieldChange();\n    };\n\n    const mergedBeforeUpload = async (file: FileType, fileListArgs: FileType[]) => {\n      const { beforeUpload, transformFile } = props;\n\n      let parsedFile: FileType | Blob | string = file;\n      if (beforeUpload) {\n        const result = await beforeUpload(file, fileListArgs);\n\n        if (result === false)\n          return false;\n\n        // Hack for LIST_IGNORE, we add additional info to remove from the list\n        delete (file as any)[LIST_IGNORE];\n        if ((result as any) === LIST_IGNORE) {\n          Object.defineProperty(file, LIST_IGNORE, {\n            value: true,\n            configurable: true,\n          });\n          return false;\n        }\n\n        if (typeof result === 'object' && result)\n          parsedFile = result as File;\n      }\n\n      if (transformFile)\n        parsedFile = await transformFile(parsedFile as any);\n\n      return parsedFile as File;\n    };\n\n    const onBatchStart: RcUploadProps['onBatchStart'] = (batchFileInfoList) => {\n      // Skip file which marked as `LIST_IGNORE`, these file will not add to file list\n      const filteredFileInfoList = batchFileInfoList.filter(\n        info => !(info.file as any)[LIST_IGNORE],\n      );\n\n      // Nothing to do since no file need upload\n      if (!filteredFileInfoList.length)\n        return;\n\n      const objectFileList = filteredFileInfoList.map(info => file2Obj(info.file as FileType));\n\n      // Concat new files with prev files\n      let newFileList = [...mergedFileList.value];\n\n      objectFileList.forEach((fileObj) => {\n        // Replace file if exist\n        newFileList = updateFileList(fileObj, newFileList);\n      });\n\n      objectFileList.forEach((fileObj, index) => {\n        // Repeat trigger `onChange` event for compatible\n        let triggerFileObj: UploadFile = fileObj;\n\n        if (!filteredFileInfoList[index].parsedFile) {\n          // `beforeUpload` return false\n          const { originFileObj } = fileObj;\n          let clone;\n\n          try {\n            clone = new File([originFileObj], originFileObj.name, {\n              type: originFileObj.type,\n            }) as any as UploadFile;\n          } catch (e) {\n            clone = new Blob([originFileObj], {\n              type: originFileObj.type,\n            }) as any as UploadFile;\n            clone.name = originFileObj.name;\n            clone.lastModifiedDate = new Date();\n            clone.lastModified = new Date().getTime();\n          }\n\n          clone.uid = fileObj.uid;\n          triggerFileObj = clone;\n        } else {\n          // Inject `uploading` status\n          fileObj.status = 'uploading';\n        }\n\n        onInternalChange(triggerFileObj, newFileList);\n      });\n    };\n\n    const onSuccess = (response: any, file: FileType, xhr: any) => {\n      try {\n        if (typeof response === 'string')\n          response = JSON.parse(response);\n      } catch (e) {\n        /* do nothing */\n      }\n\n      // removed\n      if (!getFileItem(file, mergedFileList.value))\n        return;\n\n      const targetItem = file2Obj(file);\n      targetItem.status = 'done';\n      targetItem.percent = 100;\n      targetItem.response = response;\n      targetItem.xhr = xhr;\n\n      const nextFileList = updateFileList(targetItem, mergedFileList.value);\n\n      onInternalChange(targetItem, nextFileList);\n    };\n\n    const onProgress = (e: { percent: number }, file: FileType) => {\n      // removed\n      if (!getFileItem(file, mergedFileList.value))\n        return;\n\n      const targetItem = file2Obj(file);\n      targetItem.status = 'uploading';\n      targetItem.percent = e.percent;\n\n      const nextFileList = updateFileList(targetItem, mergedFileList.value);\n\n      onInternalChange(targetItem, nextFileList, e);\n    };\n\n    const onError = (error: Error, response: any, file: FileType) => {\n      // removed\n      if (!getFileItem(file, mergedFileList.value))\n        return;\n\n      const targetItem = file2Obj(file);\n      targetItem.error = error;\n      targetItem.response = response;\n      targetItem.status = 'error';\n\n      const nextFileList = updateFileList(targetItem, mergedFileList.value);\n\n      onInternalChange(targetItem, nextFileList);\n    };\n\n    const handleRemove = (file: UploadFile) => {\n      let currentFile: UploadFile;\n      const mergedRemove = props.onRemove || props.remove;\n      Promise.resolve(typeof mergedRemove === 'function' ? mergedRemove(file) : mergedRemove).then(\n        (ret) => {\n          // Prevent removing file\n          if (ret === false)\n            return;\n\n          const removedFileList = removeFileItem(file, mergedFileList.value);\n\n          if (removedFileList) {\n            currentFile = { ...file, status: 'removed' };\n            mergedFileList.value?.forEach((item) => {\n              const matchKey = currentFile.uid !== undefined ? 'uid' : 'name';\n              if (item[matchKey] === currentFile[matchKey] && !Object.isFrozen(item))\n                item.status = 'removed';\n            });\n            upload.value?.abort(currentFile);\n\n            onInternalChange(currentFile, removedFileList);\n          }\n        },\n      );\n    };\n\n    const onFileDrop = (e: DragEvent) => {\n      dragState.value = e.type;\n      if (e.type === 'drop')\n        props.onDrop?.(e);\n    };\n    expose({\n      onBatchStart,\n      onSuccess,\n      onProgress,\n      onError,\n      fileList: mergedFileList,\n      upload,\n    });\n\n    const [locale] = useLocaleReceiver(\n      'Upload',\n      defaultLocale.Upload,\n      computed(() => props.locale),\n    );\n    const renderUploadList = (button?: () => VueNode, buttonVisible?: boolean) => {\n      const {\n        removeIcon,\n        previewIcon,\n        downloadIcon,\n        previewFile,\n        onPreview,\n        onDownload,\n        isImageUrl,\n        progress,\n        itemRender,\n        iconRender,\n        showUploadList,\n      } = props;\n      const { showDownloadIcon, showPreviewIcon, showRemoveIcon }\n        = typeof showUploadList === 'boolean' ? ({} as ShowUploadListInterface) : showUploadList;\n      return showUploadList\n        ? (\n            <UploadList\n              prefixCls={prefixCls.value}\n              listType={props.listType}\n              items={mergedFileList.value}\n              previewFile={previewFile}\n              onPreview={onPreview}\n              onDownload={onDownload}\n              onRemove={handleRemove}\n              showRemoveIcon={!mergedDisabled.value && showRemoveIcon}\n              showPreviewIcon={showPreviewIcon}\n              showDownloadIcon={showDownloadIcon}\n              removeIcon={removeIcon}\n              previewIcon={previewIcon}\n              downloadIcon={downloadIcon}\n              iconRender={iconRender}\n              locale={locale.value}\n              isImageUrl={isImageUrl}\n              progress={progress}\n              itemRender={itemRender}\n              appendActionVisible={buttonVisible}\n              appendAction={button}\n              v-slots={{ ...slots }}\n            />\n          )\n        : (\n            button?.()\n          );\n    };\n    return () => {\n      const { listType, type } = props;\n      const { class: className, style: styleName, ...transAttrs } = attrs;\n      const rcUploadProps = {\n        onBatchStart,\n        onError,\n        onProgress,\n        onSuccess,\n        ...transAttrs,\n        ...(props as RcUploadProps),\n        id: props.id ?? formItemContext.id.value,\n        prefixCls: prefixCls.value,\n        beforeUpload: mergedBeforeUpload,\n        onChange: undefined,\n        disabled: mergedDisabled.value,\n      };\n      delete (rcUploadProps as any).remove;\n\n      // Remove id to avoid open by label when trigger is hidden\n      // !children: https://github.com/ant-design/ant-design/issues/14298\n      // disabled: https://github.com/ant-design/ant-design/issues/16478\n      //           https://github.com/ant-design/ant-design/issues/24197\n      if (!slots.default || mergedDisabled.value)\n        delete rcUploadProps.id;\n\n      const rtlCls = {\n        [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n      };\n\n      if (type === 'drag') {\n        const dragCls = classNames(\n          prefixCls.value,\n          {\n            [`${prefixCls.value}-drag`]: true,\n            [`${prefixCls.value}-drag-uploading`]: mergedFileList.value.some(\n              file => file.status === 'uploading',\n            ),\n            [`${prefixCls.value}-drag-hover`]: dragState.value === 'dragover',\n            [`${prefixCls.value}-disabled`]: mergedDisabled.value,\n            [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n          },\n          attrs.class,\n          hashId.value,\n        );\n\n        return wrapSSR(\n          <span\n            {...attrs}\n            class={classNames(`${prefixCls.value}-wrapper`, rtlCls, className, hashId.value)}\n          >\n            <div\n              class={dragCls}\n              onDrop={onFileDrop}\n              onDragover={onFileDrop}\n              onDragleave={onFileDrop}\n              style={attrs.style as CSSProperties}\n            >\n              <VcUpload\n                {...rcUploadProps}\n                ref={upload}\n                class={`${prefixCls.value}-btn`}\n                v-slots={slots}\n              >\n                <div class={`${prefixCls.value}-drag-container`}>{slots.default?.()}</div>\n              </VcUpload>\n            </div>\n            {renderUploadList()}\n          </span>,\n        );\n      }\n\n      const uploadButtonCls = classNames(prefixCls.value, {\n        [`${prefixCls.value}-select`]: true,\n        [`${prefixCls.value}-select-${listType}`]: true,\n        [`${prefixCls.value}-disabled`]: mergedDisabled.value,\n        [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n      });\n      const children = flattenChildren(slots.default?.());\n      const renderUploadButton = (uploadButtonStyle?: CSSProperties) => (\n        <div class={uploadButtonCls} style={uploadButtonStyle}>\n          <VcUpload {...rcUploadProps} ref={upload} v-slots={slots} />\n        </div>\n      );\n\n      if (listType === 'picture-card') {\n        return wrapSSR(\n          <span\n            {...attrs}\n            class={classNames(\n              `${prefixCls.value}-wrapper`,\n              `${prefixCls.value}-picture-card-wrapper`,\n              rtlCls,\n              attrs.class,\n              hashId.value,\n            )}\n          >\n            {renderUploadList(renderUploadButton, !!(children && children.length))}\n          </span>,\n        );\n      }\n      return wrapSSR(\n        <span\n          {...attrs}\n          class={classNames(`${prefixCls.value}-wrapper`, rtlCls, attrs.class, hashId.value)}\n        >\n          {renderUploadButton(children && children.length ? undefined : { display: 'none' })}\n          {renderUploadList()}\n        </span>,\n      );\n    };\n  },\n});\n"],"names":["LIST_IGNORE","Date","now","defineComponent","compatConfig","MODE","name","inheritAttrs","props","initDefaultProps","uploadProps","type","multiple","action","data","accept","showUploadList","listType","supportServerRender","setup","slots","attrs","expose","formItemContext","useInjectFormItemContext","prefixCls","direction","disabled","useConfigInject","wrapSSR","hashId","useStyle","disabledContext","useInjectDisabled","mergedDisabled","computed","value","mergedFileList","setMergedFileList","useMergedState","defaultFileList","toRef","postState","list","timestamp","map","file","index","uid","Object","isFrozen","dragState","ref","upload","onMounted","devWarning","fileList","undefined","transformFile","remove","onInternalChange","changedFileList","event","cloneList","maxCount","slice","changeInfo","onChange","onFieldChange","mergedBeforeUpload","fileListArgs","beforeUpload","parsedFile","result","defineProperty","configurable","onBatchStart","batchFileInfoList","filteredFileInfoList","filter","info","length","objectFileList","file2Obj","newFileList","forEach","fileObj","updateFileList","triggerFileObj","originFileObj","clone","File","e","Blob","lastModifiedDate","lastModified","getTime","status","onSuccess","response","xhr","JSON","parse","getFileItem","targetItem","percent","nextFileList","onProgress","onError","error","handleRemove","currentFile","mergedRemove","onRemove","Promise","resolve","then","ret","removedFileList","removeFileItem","item","matchKey","abort","onFileDrop","onDrop","locale","useLocaleReceiver","defaultLocale","Upload","renderUploadList","button","buttonVisible","removeIcon","previewIcon","downloadIcon","previewFile","onPreview","onDownload","isImageUrl","progress","itemRender","iconRender","showDownloadIcon","showPreviewIcon","showRemoveIcon","_createVNode","UploadList","class","className","style","styleName","transAttrs","rcUploadProps","id","default","rtlCls","dragCls","classNames","some","VcUpload","uploadButtonCls","children","flattenChildren","renderUploadButton","uploadButtonStyle","display"],"mappings":"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"}