giime 0.6.39 → 0.6.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.css CHANGED
@@ -959,11 +959,11 @@ video {
959
959
  margin: 0;
960
960
  }
961
961
 
962
- .gm-upload-pro-preview-dialog[data-v-ca99928c] [data-v-ca99928c] .el-dialog__body {
962
+ .gm-upload-pro-preview-dialog[data-v-d9374561] [data-v-d9374561] .el-dialog__body {
963
963
  padding: 0;
964
964
  }
965
965
 
966
- .gm-upload-pro-file-picture-card[data-v-ca99928c] [data-v-ca99928c] .el-upload-list__item, .gm-upload-pro-file-picture-card[data-v-ca99928c] [data-v-ca99928c] .el-upload--picture-card {
966
+ .gm-upload-pro-file-picture-card[data-v-d9374561] [data-v-d9374561] .el-upload-list__item, .gm-upload-pro-file-picture-card[data-v-d9374561] [data-v-d9374561] .el-upload--picture-card {
967
967
  width: auto;
968
968
  height: auto;
969
969
  }
@@ -3,7 +3,7 @@ import './UploadPro.vue3.mjs';
3
3
  import './UploadPro.vue4.mjs';
4
4
  import _export_sfc from '../../../../_virtual/_plugin-vue_export-helper.mjs';
5
5
 
6
- var UploadPro = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-ca99928c"]]);
6
+ var UploadPro = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-d9374561"]]);
7
7
 
8
8
  export { UploadPro as default };
9
9
  //# sourceMappingURL=UploadPro.vue.mjs.map
@@ -9,7 +9,7 @@ import { uploadFileProps } from './uploadPro.mjs';
9
9
  import { getGmExports } from '../../../../utils/src/elementPlus/exports.mjs';
10
10
  import { useUploadFile } from '../../../../hooks/base/useUploadFile/index.mjs';
11
11
 
12
- const _withScopeId = (n) => (pushScopeId("data-v-ca99928c"), n = n(), popScopeId(), n);
12
+ const _withScopeId = (n) => (pushScopeId("data-v-d9374561"), n = n(), popScopeId(), n);
13
13
  const _hoisted_1 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createElementVNode(
14
14
  "div",
15
15
  { class: "el-upload__text gm-text-center !gm-text-xs gm-text-gray-500" },
@@ -57,6 +57,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
57
57
  };
58
58
  const coverFileSuccess = (response, uploadFile2, uploadFiles) => {
59
59
  loadingUids.value.delete(uploadFile2.uid);
60
+ uploadFile2.url = response.url;
60
61
  props.onSuccess?.(response, uploadFile2, uploadFiles);
61
62
  };
62
63
  const coverFileError = (error, uploadFile2, uploadFiles) => {
@@ -1 +1 @@
1
- {"version":3,"file":"UploadPro.vue2.mjs","sources":["../../../../../../../packages/components/src/business/uploadPro/UploadPro.vue"],"sourcesContent":["<template>\n <div>\n <div\n v-loading=\"uploadLoading\"\n ref=\"pasteFileRef\"\n :class=\"{ 'gm-upload-pro-file-picture-card': listType === 'picture-card', 'gm-upload-pro-file-disabled': disabled }\"\n class=\"gm-upload-pro-file\"\n >\n <el-checkbox-group v-model=\"checkoutFiles\">\n <el-upload\n ref=\"uploadFileRef\"\n v-bind=\"props\"\n v-model:file-list=\"fileList\"\n :before-remove=\"beforeRemove\"\n action=\"\"\n :http-request=\"httpRequest\"\n :on-success=\"coverFileSuccess\"\n :on-error=\"coverFileError\"\n >\n <slot v-if=\"!disabled\">\n <template v-if=\"listType === 'picture-card'\">\n <div\n class=\"gm-flex gm-flex-col gm-items-center gm-justify-center gm-rounded-md gm-border gm-border-dashed gm-p-1\"\n style=\"flex-direction: column\"\n :style=\"{ width: width + 'px', height: height + 'px' }\"\n >\n <el-icon :size=\"30\" color=\"#999\">\n <UploadFilled />\n </el-icon>\n <div class=\"el-upload__text gm-text-center !gm-text-xs gm-text-gray-500\">\n 将文件拖到此处,复制粘贴,或 <em class=\"gm-text-blue-700\">点击上传</em>\n </div>\n </div>\n </template>\n <template v-else>\n <el-button type=\"primary\" size=\"default\">点击上传</el-button>\n </template>\n </slot>\n <template v-if=\"showFileList && listType === 'picture-card'\" #file=\"{ file }\">\n <el-checkbox v-if=\"checkbox\" :value=\"file\" />\n\n <slot name=\"file\" :file=\"file\">\n <div class=\"gm-flex gm-items-center gm-justify-center gm-rounded-md\" :style=\"{ width: width + 'px', height: height + 'px' }\">\n <el-progress\n v-if=\"file.status === 'uploading' || loadingUids.has(file.uid)\"\n :type=\"listType === 'picture-card' ? 'circle' : 'line'\"\n :stroke-width=\"listType === 'picture-card' ? 6 : 2\"\n :percentage=\"Number(file.percentage)\"\n :style=\"\n listType === 'picture-card'\n ? {\n width: width - 20 + 'px',\n height: width - 20 + 'px',\n }\n : 'margin-top: 0.5rem'\n \"\n :width=\"width - 20\"\n />\n\n <GmFileComponent v-else :file=\"file\" :size=\"width - 40\" :controls=\"false\" :show-icon=\"true\" />\n </div>\n <div class=\"el-upload-list__item-actions\">\n <span class=\"el-upload-list__item-preview\" @click=\"handlePreview(file)\">\n <el-icon><View /></el-icon>\n </span>\n <span v-if=\"showDelete\" class=\"el-upload-list__item-delete\" @click=\"handleRemove(file, fileList)\">\n <el-icon><Delete /></el-icon>\n </span>\n </div>\n </slot>\n </template>\n <template v-else #file=\"slotValue\">\n <slot name=\"file\" v-bind=\"slotValue\" />\n </template>\n <template v-if=\"slots.trigger\" #trigger>\n <slot name=\"trigger\" />\n </template>\n <template v-if=\"slots.tip\" #tip>\n <div class=\"gm-text-sm\">\n <slot name=\"tip\" />\n </div>\n </template>\n </el-upload>\n </el-checkbox-group>\n\n <GmPreviewFile v-model:dialogVisible=\"dialogVisible\" v-model:file-index=\"fileIndex\" :file-list=\"fileList\" />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ElMessageBox } from 'element-plus';\nimport { computed, ref, useSlots } from 'vue';\n// import { fileValidType } from '@giime/utils/src/file';\n// import { pasteFile } from '@giime/utils/src/pasteFile';\nimport { usePasteFile } from '@giime/hooks/base/usePasteFile';\nimport { GmConfirmBox } from '@giime/components/src/plugins/confirmBox';\nimport { Delete, UploadFilled, View } from '@element-plus/icons-vue';\nimport GmFileComponent from '../../composite/fileComponent';\nimport GmPreviewFile from '../../composite/previewFile';\nimport { GmUploadProUserFileResponse, uploadFileProps } from './uploadPro';\nimport type { UploadFile, UploadFiles, UploadInstance, UploadProps, UploadRawFile } from 'element-plus';\nimport { getGmExports } from '@giime/utils/src/elementPlus/exports';\nimport { useUploadFile } from '@giime/hooks/base/useUploadFile';\n\ndefineOptions({\n name: 'GmUploadPro',\n});\nconst slots = useSlots();\n\nconst props = defineProps(uploadFileProps);\nconst emit = defineEmits([\"handleRemove\"]);\n\n/** 上传文件 */\nconst fileList = defineModel<UploadFile[]>('fileList', { required: true });\n/** 多选数据 */\nconst checkoutFiles = defineModel<any[]>('checkoutFiles', { default: () => [] });\n/**上传功能 */\nconst { uploadFile, cancelUpload } = useUploadFile();\n\nconst loadingUids = ref<Set<number>>(new Set());\nconst uploadLoading = computed(() => props.showLoading && loadingUids.value.size > 0);\n\n/* 上传 */\nconst httpRequest: UploadProps['httpRequest'] = async options => {\n loadingUids.value.add(options.file.uid);\n return uploadFile(options.file, {\n domainCode: props.domainCode,\n sceneCode: props.sceneCode,\n accept: props.accept,\n acl: props.acl,\n elOptions: options,\n });\n};\n// 上传成功\nconst coverFileSuccess: UploadProps['onSuccess'] = (response: GmUploadProUserFileResponse, uploadFile, uploadFiles) => {\n loadingUids.value.delete(uploadFile.uid);\n props.onSuccess?.(response, uploadFile, uploadFiles);\n};\n// 上传失败\nconst coverFileError: UploadProps['onError'] = (error, uploadFile, uploadFiles) => {\n loadingUids.value.delete(uploadFile.uid);\n props.onError?.(error, uploadFile, uploadFiles);\n};\n\n/* 删除文件前 */\nconst beforeRemove: UploadProps['beforeRemove'] = async (file, files) => {\n if (props.disabled) {\n return false;\n }\n if (props.deleteTip) {\n await GmConfirmBox({ message: '确定删除该文件吗?' }, async () => {});\n }\n // 如果文件正在上传,取消上传请求\n if (file.status === 'uploading' || loadingUids.value.has(file.uid)) {\n cancelUpload(file.uid);\n loadingUids.value.delete(file.uid);\n }\n return props.beforeRemove?.(file, files) ?? true;\n};\n\n/* 删除文件 */\nconst removeFile = (file: UploadFile, uploadFiles: UploadFiles) => {\n // 如果文件正在上传,取消上传请求\n if (file.status === 'uploading' || loadingUids.value.has(file.uid)) {\n cancelUpload(file.uid);\n loadingUids.value.delete(file.uid);\n }\n\n const index = fileList.value.indexOf(file);\n if (index > -1) {\n fileList.value.splice(index, 1);\n emit('handleRemove', { file, index });\n return props.onRemove?.(file, uploadFiles);\n }\n};\n/**点击删除图标 */\nconst handleRemove = async (file: UploadFile, uploadFiles: UploadFiles) => {\n if (props.deleteTip) {\n await GmConfirmBox({ message: '确定删除该文件吗?' }, async () => {});\n }\n\n removeFile(file, uploadFiles);\n};\n\nconst uploadFileRef = ref<UploadInstance>();\nconst exposeEvents = ['abort', 'submit', 'clearFiles', 'handleStart', 'handleRemove'] as const;\nconst { exposeFns } = getGmExports(uploadFileRef, exposeEvents);\n\nconst pasteFileRef = ref<HTMLElement>();\n\n/** 预览 */\nconst dialogVisible = ref(false);\nconst fileIndex = ref(0);\n/**点击预览 */\nconst handlePreview = (file: UploadFile) => {\n fileIndex.value = fileList.value.indexOf(file);\n dialogVisible.value = true;\n};\n\n//** 复制粘贴 */\nconst { onSuccess, onError } = usePasteFile(pasteFileRef, { accept: props.accept, disabled: props.disabled });\nonSuccess((files: File[]) => {\n if (props.disabled) {\n return;\n }\n if (Array.isArray(files) && files.length > 0) {\n files.forEach(file => {\n if (file instanceof File) {\n const rawFile = file as UploadRawFile;\n uploadFileRef.value?.handleStart(rawFile);\n\n // 粘贴成功自动上传\n if (props.autoUpload) {\n uploadFileRef.value?.submit();\n }\n }\n });\n }\n});\n/**粘贴失败 */\nonError((error: Error) => {\n console.error('粘贴错误:', error);\n ElMessageBox.alert(error.message, '提示', {\n type: 'error',\n });\n});\ndefineExpose({\n ...exposeFns,\n uploadFileRef,\n});\n</script>\n\n<style scoped lang=\"scss\">\n.gm-upload-pro-preview-dialog {\n :deep(.el-dialog__body) {\n padding: 0;\n }\n}\n.gm-upload-pro-file-picture-card {\n :deep(.el-upload-list__item),\n :deep(.el-upload--picture-card) {\n width: auto;\n height: auto;\n }\n}\n</style>\n<style lang=\"scss\">\n.gm-upload-pro-file {\n line-height: normal;\n .el-checkbox-group {\n font-size: unset;\n }\n .el-checkbox {\n position: absolute;\n left: 10px;\n top: 0;\n z-index: 9;\n }\n .el-upload-list--picture-card {\n gap: 10px;\n }\n .el-upload-list__item {\n margin: 0;\n }\n .el-upload-list__item-file-name {\n line-height: 1.7;\n }\n .el-upload-dragger {\n padding: 0;\n border: none;\n width: 100%;\n height: 100%;\n display: flex;\n }\n .el-upload--picture-card {\n border: none;\n }\n}\n.gm-upload-pro-file-disabled {\n .el-upload--picture-card {\n display: none;\n }\n .el-upload-list__item-status-label {\n display: none;\n }\n}\n</style>\n"],"names":["_useModel","uploadFile"],"mappings":"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"}
1
+ {"version":3,"file":"UploadPro.vue2.mjs","sources":["../../../../../../../packages/components/src/business/uploadPro/UploadPro.vue"],"sourcesContent":["<template>\n <div>\n <div\n v-loading=\"uploadLoading\"\n ref=\"pasteFileRef\"\n :class=\"{ 'gm-upload-pro-file-picture-card': listType === 'picture-card', 'gm-upload-pro-file-disabled': disabled }\"\n class=\"gm-upload-pro-file\"\n >\n <el-checkbox-group v-model=\"checkoutFiles\">\n <el-upload\n ref=\"uploadFileRef\"\n v-bind=\"props\"\n v-model:file-list=\"fileList\"\n :before-remove=\"beforeRemove\"\n action=\"\"\n :http-request=\"httpRequest\"\n :on-success=\"coverFileSuccess\"\n :on-error=\"coverFileError\"\n >\n <slot v-if=\"!disabled\">\n <template v-if=\"listType === 'picture-card'\">\n <div\n class=\"gm-flex gm-flex-col gm-items-center gm-justify-center gm-rounded-md gm-border gm-border-dashed gm-p-1\"\n style=\"flex-direction: column\"\n :style=\"{ width: width + 'px', height: height + 'px' }\"\n >\n <el-icon :size=\"30\" color=\"#999\">\n <UploadFilled />\n </el-icon>\n <div class=\"el-upload__text gm-text-center !gm-text-xs gm-text-gray-500\">\n 将文件拖到此处,复制粘贴,或 <em class=\"gm-text-blue-700\">点击上传</em>\n </div>\n </div>\n </template>\n <template v-else>\n <el-button type=\"primary\" size=\"default\">点击上传</el-button>\n </template>\n </slot>\n <template v-if=\"showFileList && listType === 'picture-card'\" #file=\"{ file }\">\n <el-checkbox v-if=\"checkbox\" :value=\"file\" />\n\n <slot name=\"file\" :file=\"file\">\n <div class=\"gm-flex gm-items-center gm-justify-center gm-rounded-md\" :style=\"{ width: width + 'px', height: height + 'px' }\">\n <el-progress\n v-if=\"file.status === 'uploading' || loadingUids.has(file.uid)\"\n :type=\"listType === 'picture-card' ? 'circle' : 'line'\"\n :stroke-width=\"listType === 'picture-card' ? 6 : 2\"\n :percentage=\"Number(file.percentage)\"\n :style=\"\n listType === 'picture-card'\n ? {\n width: width - 20 + 'px',\n height: width - 20 + 'px',\n }\n : 'margin-top: 0.5rem'\n \"\n :width=\"width - 20\"\n />\n\n <GmFileComponent v-else :file=\"file\" :size=\"width - 40\" :controls=\"false\" :show-icon=\"true\" />\n </div>\n <div class=\"el-upload-list__item-actions\">\n <span class=\"el-upload-list__item-preview\" @click=\"handlePreview(file)\">\n <el-icon><View /></el-icon>\n </span>\n <span v-if=\"showDelete\" class=\"el-upload-list__item-delete\" @click=\"handleRemove(file, fileList)\">\n <el-icon><Delete /></el-icon>\n </span>\n </div>\n </slot>\n </template>\n <template v-else #file=\"slotValue\">\n <slot name=\"file\" v-bind=\"slotValue\" />\n </template>\n <template v-if=\"slots.trigger\" #trigger>\n <slot name=\"trigger\" />\n </template>\n <template v-if=\"slots.tip\" #tip>\n <div class=\"gm-text-sm\">\n <slot name=\"tip\" />\n </div>\n </template>\n </el-upload>\n </el-checkbox-group>\n\n <GmPreviewFile v-model:dialogVisible=\"dialogVisible\" v-model:file-index=\"fileIndex\" :file-list=\"fileList\" />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ElMessageBox } from 'element-plus';\nimport { computed, ref, useSlots } from 'vue';\n// import { fileValidType } from '@giime/utils/src/file';\n// import { pasteFile } from '@giime/utils/src/pasteFile';\nimport { usePasteFile } from '@giime/hooks/base/usePasteFile';\nimport { GmConfirmBox } from '@giime/components/src/plugins/confirmBox';\nimport { Delete, UploadFilled, View } from '@element-plus/icons-vue';\nimport GmFileComponent from '../../composite/fileComponent';\nimport GmPreviewFile from '../../composite/previewFile';\nimport { GmUploadProUserFileResponse, uploadFileProps } from './uploadPro';\nimport type { UploadFile, UploadFiles, UploadInstance, UploadProps, UploadRawFile } from 'element-plus';\nimport { getGmExports } from '@giime/utils/src/elementPlus/exports';\nimport { useUploadFile } from '@giime/hooks/base/useUploadFile';\n\ndefineOptions({\n name: 'GmUploadPro',\n});\nconst slots = useSlots();\n\nconst props = defineProps(uploadFileProps);\nconst emit = defineEmits([\"handleRemove\"]);\n\n/** 上传文件 */\nconst fileList = defineModel<UploadFile[]>('fileList', { required: true });\n/** 多选数据 */\nconst checkoutFiles = defineModel<any[]>('checkoutFiles', { default: () => [] });\n/**上传功能 */\nconst { uploadFile, cancelUpload } = useUploadFile();\n\nconst loadingUids = ref<Set<number>>(new Set());\nconst uploadLoading = computed(() => props.showLoading && loadingUids.value.size > 0);\n\n/* 上传 */\nconst httpRequest: UploadProps['httpRequest'] = async options => {\n loadingUids.value.add(options.file.uid);\n return uploadFile(options.file, {\n domainCode: props.domainCode,\n sceneCode: props.sceneCode,\n accept: props.accept,\n acl: props.acl,\n elOptions: options,\n });\n};\n// 上传成功\nconst coverFileSuccess: UploadProps['onSuccess'] = (response: GmUploadProUserFileResponse, uploadFile, uploadFiles) => {\n loadingUids.value.delete(uploadFile.uid);\n uploadFile.url = response.url;\n props.onSuccess?.(response, uploadFile, uploadFiles);\n};\n// 上传失败\nconst coverFileError: UploadProps['onError'] = (error, uploadFile, uploadFiles) => {\n loadingUids.value.delete(uploadFile.uid);\n props.onError?.(error, uploadFile, uploadFiles);\n};\n\n/* 删除文件前 */\nconst beforeRemove: UploadProps['beforeRemove'] = async (file, files) => {\n if (props.disabled) {\n return false;\n }\n if (props.deleteTip) {\n await GmConfirmBox({ message: '确定删除该文件吗?' }, async () => {});\n }\n // 如果文件正在上传,取消上传请求\n if (file.status === 'uploading' || loadingUids.value.has(file.uid)) {\n cancelUpload(file.uid);\n loadingUids.value.delete(file.uid);\n }\n return props.beforeRemove?.(file, files) ?? true;\n};\n\n/* 删除文件 */\nconst removeFile = (file: UploadFile, uploadFiles: UploadFiles) => {\n // 如果文件正在上传,取消上传请求\n if (file.status === 'uploading' || loadingUids.value.has(file.uid)) {\n cancelUpload(file.uid);\n loadingUids.value.delete(file.uid);\n }\n\n const index = fileList.value.indexOf(file);\n if (index > -1) {\n fileList.value.splice(index, 1);\n emit('handleRemove', { file, index });\n return props.onRemove?.(file, uploadFiles);\n }\n};\n/**点击删除图标 */\nconst handleRemove = async (file: UploadFile, uploadFiles: UploadFiles) => {\n if (props.deleteTip) {\n await GmConfirmBox({ message: '确定删除该文件吗?' }, async () => {});\n }\n\n removeFile(file, uploadFiles);\n};\n\nconst uploadFileRef = ref<UploadInstance>();\nconst exposeEvents = ['abort', 'submit', 'clearFiles', 'handleStart', 'handleRemove'] as const;\nconst { exposeFns } = getGmExports(uploadFileRef, exposeEvents);\n\nconst pasteFileRef = ref<HTMLElement>();\n\n/** 预览 */\nconst dialogVisible = ref(false);\nconst fileIndex = ref(0);\n/**点击预览 */\nconst handlePreview = (file: UploadFile) => {\n fileIndex.value = fileList.value.indexOf(file);\n dialogVisible.value = true;\n};\n\n//** 复制粘贴 */\nconst { onSuccess, onError } = usePasteFile(pasteFileRef, { accept: props.accept, disabled: props.disabled });\nonSuccess((files: File[]) => {\n if (props.disabled) {\n return;\n }\n if (Array.isArray(files) && files.length > 0) {\n files.forEach(file => {\n if (file instanceof File) {\n const rawFile = file as UploadRawFile;\n uploadFileRef.value?.handleStart(rawFile);\n\n // 粘贴成功自动上传\n if (props.autoUpload) {\n uploadFileRef.value?.submit();\n }\n }\n });\n }\n});\n/**粘贴失败 */\nonError((error: Error) => {\n console.error('粘贴错误:', error);\n ElMessageBox.alert(error.message, '提示', {\n type: 'error',\n });\n});\ndefineExpose({\n ...exposeFns,\n uploadFileRef,\n});\n</script>\n\n<style scoped lang=\"scss\">\n.gm-upload-pro-preview-dialog {\n :deep(.el-dialog__body) {\n padding: 0;\n }\n}\n.gm-upload-pro-file-picture-card {\n :deep(.el-upload-list__item),\n :deep(.el-upload--picture-card) {\n width: auto;\n height: auto;\n }\n}\n</style>\n<style lang=\"scss\">\n.gm-upload-pro-file {\n line-height: normal;\n .el-checkbox-group {\n font-size: unset;\n }\n .el-checkbox {\n position: absolute;\n left: 10px;\n top: 0;\n z-index: 9;\n }\n .el-upload-list--picture-card {\n gap: 10px;\n }\n .el-upload-list__item {\n margin: 0;\n }\n .el-upload-list__item-file-name {\n line-height: 1.7;\n }\n .el-upload-dragger {\n padding: 0;\n border: none;\n width: 100%;\n height: 100%;\n display: flex;\n }\n .el-upload--picture-card {\n border: none;\n }\n}\n.gm-upload-pro-file-disabled {\n .el-upload--picture-card {\n display: none;\n }\n .el-upload-list__item-status-label {\n display: none;\n }\n}\n</style>\n"],"names":["_useModel","uploadFile"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { defineComponent, computed, resolveComponent, openBlock, createElementBlock, unref, Fragment, createBlock, normalizeStyle } from 'vue';
2
- import { isPDF, isWord, isExcel, isText, isPPT, isZip, isPSD, isImageUrl, isVideoUrl } from '../../../../utils/src/is.mjs';
1
+ import { defineComponent, computed, resolveComponent, openBlock, createElementBlock, Fragment, createBlock, normalizeStyle } from 'vue';
2
+ import { isImageUrl, isVideoUrl, isPDF, isText, isWord, isExcel, isPPT, isZip, isPSD } from '../../../../utils/src/is.mjs';
3
3
  import { fileComponentProps } from './fileComponent.mjs';
4
4
 
5
5
  const _hoisted_1 = { class: "gm-flex gm-h-full gm-items-center gm-justify-center" };
@@ -26,10 +26,10 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
26
26
  const verifyFile = computed(() => {
27
27
  return props.file[props.field];
28
28
  });
29
+ const isImageFile = computed(() => isImageUrl(fileURL.value) || isImageUrl(verifyFile.value));
30
+ const isVideoFile = computed(() => isVideoUrl(fileURL.value) || isVideoUrl(verifyFile.value));
29
31
  const showIframe = computed(() => {
30
- const arr = ["pdf", "txt"];
31
- const suffix = verifyFile.value.split(".").pop();
32
- return arr.includes(suffix);
32
+ return isPDF(fileURL.value) || isPDF(verifyFile.value) || isText(fileURL.value) || isText(verifyFile.value);
33
33
  });
34
34
  const iconList = {
35
35
  excel: "https://sucai.giikin.cn/workflow/material-refer-1739947054012-1213-335.svg",
@@ -42,36 +42,27 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
42
42
  unknown: "https://sucai.giikin.cn/workflow/material-refer-1739947288698-1448-736.svg"
43
43
  };
44
44
  const iconURL = computed(() => {
45
- const verifyFile2 = props.file[props.field];
46
- let result = null;
47
- if (isPDF(verifyFile2)) {
48
- result = iconList.pdf;
49
- } else if (isWord(verifyFile2)) {
50
- result = iconList.word;
51
- } else if (isExcel(verifyFile2)) {
52
- result = iconList.excel;
53
- } else if (isText(verifyFile2)) {
54
- result = iconList.txt;
55
- } else if (isPPT(verifyFile2)) {
56
- result = iconList.ppt;
57
- } else if (isZip(verifyFile2)) {
58
- result = iconList.zip;
59
- } else if (isPSD(verifyFile2)) {
60
- result = iconList.psd;
61
- } else {
62
- result = iconList.unknown;
63
- }
64
- return result;
45
+ const typeCheckers = [
46
+ { check: () => isPDF(fileURL.value) || isPDF(verifyFile.value), icon: iconList.pdf },
47
+ { check: () => isWord(fileURL.value) || isWord(verifyFile.value), icon: iconList.word },
48
+ { check: () => isExcel(fileURL.value) || isExcel(verifyFile.value), icon: iconList.excel },
49
+ { check: () => isText(fileURL.value) || isText(verifyFile.value), icon: iconList.txt },
50
+ { check: () => isPPT(fileURL.value) || isPPT(verifyFile.value), icon: iconList.ppt },
51
+ { check: () => isZip(fileURL.value) || isZip(verifyFile.value), icon: iconList.zip },
52
+ { check: () => isPSD(fileURL.value) || isPSD(verifyFile.value), icon: iconList.psd }
53
+ ];
54
+ const matchedType = typeCheckers.find(({ check }) => check());
55
+ return matchedType?.icon || iconList.unknown;
65
56
  });
66
57
  return (_ctx, _cache) => {
67
58
  const _component_el_image = resolveComponent("el-image");
68
59
  return openBlock(), createElementBlock("div", _hoisted_1, [
69
- unref(isImageUrl)(verifyFile.value) ? (openBlock(), createElementBlock("img", {
60
+ isImageFile.value ? (openBlock(), createElementBlock("img", {
70
61
  key: 0,
71
62
  src: fileURL.value,
72
63
  fit: "contain",
73
64
  style: { "max-width": "100%", "max-height": "100%" }
74
- }, null, 8, _hoisted_2)) : unref(isVideoUrl)(verifyFile.value) ? (openBlock(), createElementBlock("video", {
65
+ }, null, 8, _hoisted_2)) : isVideoFile.value ? (openBlock(), createElementBlock("video", {
75
66
  key: 1,
76
67
  src: fileURL.value,
77
68
  controls: _ctx.controls,
@@ -1 +1 @@
1
- {"version":3,"file":"FileComponent.vue2.mjs","sources":["../../../../../../../packages/components/src/composite/fileComponent/FileComponent.vue"],"sourcesContent":["<template>\n <div class=\"gm-flex gm-h-full gm-items-center gm-justify-center\">\n <img v-if=\"isImageUrl(verifyFile)\" :src=\"fileURL\" fit=\"contain\" style=\"max-width: 100%; max-height: 100%\" />\n <video\n v-else-if=\"isVideoUrl(verifyFile)\"\n :src=\"fileURL\"\n :controls=\"controls\"\n :controlslist=\"controlslist\"\n :oncontextmenu=\"() => oncontextmenu\"\n style=\"width: 100%; height: 100%\"\n />\n <template v-else>\n <el-image v-if=\"showIcon || !showIframe\" :style=\"iconStyle\" :src=\"iconURL\" />\n <iframe v-else :src=\"fileURL\" width=\"850px\" height=\"100%\" frameborder=\"0\" />\n </template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { isExcel, isImageUrl, isPDF, isPPT, isPSD, isText, isVideoUrl, isWord, isZip } from '@giime/utils/src/is';\nimport { fileComponentProps } from './fileComponent';\n// import PDF from './assets/image/pdf.svg';\n// import WORD from './assets/image/word.svg';\n// import EXCEL from './assets/image/excel.svg';\n// import PPT from './assets/image/ppt.svg';\n// import PSD from './assets/image/psd.svg';\n// import TEXT from './assets/image/text.svg';\n// import ZIP from './assets/image/zip.svg';\n// import UNKNOWN from './assets/image/unknown.svg';\nimport type { UploadFile } from 'element-plus';\n\ndefineOptions({\n name: 'GmFileComponent',\n});\n\nconst props = defineProps(fileComponentProps);\n\nconst iconStyle = computed(() => {\n return {\n width: `${props.size}px`,\n height: `${props.size}px`,\n };\n});\n\n/** 文件链接地址 */\nconst fileURL = computed(() => {\n return props.file[props.url as keyof UploadFile] as string;\n});\n\n/** 验证文件类型的字段 */\nconst verifyFile = computed(() => {\n return props.file[props.field as keyof UploadFile] as string;\n});\n\n/** 显示iframe */\nconst showIframe = computed(() => {\n const arr = ['pdf', 'txt'];\n const suffix = verifyFile.value.split('.').pop();\n\n return arr.includes(suffix as string);\n});\n\n/** 图标 */\nconst iconList = {\n excel: 'https://sucai.giikin.cn/workflow/material-refer-1739947054012-1213-335.svg',\n pdf: 'https://sucai.giikin.cn/workflow/material-refer-1739947288698-5462-586.svg',\n word: 'https://sucai.giikin.cn/workflow/material-refer-1739947288698-1540-625.svg',\n txt: 'https://sucai.giikin.cn/workflow/material-refer-1739947288698-1700-90.svg',\n zip: 'https://sucai.giikin.cn/workflow/material-refer-1739947288698-2639-507.svg',\n psd: 'https://sucai.giikin.cn/workflow/material-refer-1739947288698-5026-760.svg',\n ppt: 'https://sucai.giikin.cn/workflow/material-refer-1739947288698-2867-970.svg',\n unknown: 'https://sucai.giikin.cn/workflow/material-refer-1739947288698-1448-736.svg',\n};\n\nconst iconURL = computed<string>(() => {\n const verifyFile = props.file[props.field as keyof UploadFile] as string;\n let result: any = null;\n if (isPDF(verifyFile)) {\n result = iconList.pdf;\n } else if (isWord(verifyFile)) {\n result = iconList.word;\n } else if (isExcel(verifyFile)) {\n result = iconList.excel;\n } else if (isText(verifyFile)) {\n result = iconList.txt;\n } else if (isPPT(verifyFile)) {\n result = iconList.ppt;\n } else if (isZip(verifyFile)) {\n result = iconList.zip;\n } else if (isPSD(verifyFile)) {\n result = iconList.psd;\n } else {\n result = iconList.unknown;\n }\n return result;\n});\n</script>\n"],"names":["verifyFile"],"mappings":";;;;;;;;;;;;;;;AAoCA,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AAEd,IAAM,MAAA,SAAA,GAAY,SAAS,MAAM;AAC/B,MAAO,OAAA;AAAA,QACL,KAAA,EAAO,CAAG,EAAA,KAAA,CAAM,IAAI,CAAA,EAAA,CAAA;AAAA,QACpB,MAAA,EAAQ,CAAG,EAAA,KAAA,CAAM,IAAI,CAAA,EAAA,CAAA;AAAA,OACvB,CAAA;AAAA,KACD,CAAA,CAAA;AAGD,IAAM,MAAA,OAAA,GAAU,SAAS,MAAM;AAC7B,MAAO,OAAA,KAAA,CAAM,IAAK,CAAA,KAAA,CAAM,GAAuB,CAAA,CAAA;AAAA,KAChD,CAAA,CAAA;AAGD,IAAM,MAAA,UAAA,GAAa,SAAS,MAAM;AAChC,MAAO,OAAA,KAAA,CAAM,IAAK,CAAA,KAAA,CAAM,KAAyB,CAAA,CAAA;AAAA,KAClD,CAAA,CAAA;AAGD,IAAM,MAAA,UAAA,GAAa,SAAS,MAAM;AAChC,MAAM,MAAA,GAAA,GAAM,CAAC,KAAA,EAAO,KAAK,CAAA,CAAA;AACzB,MAAA,MAAM,SAAS,UAAW,CAAA,KAAA,CAAM,KAAM,CAAA,GAAG,EAAE,GAAI,EAAA,CAAA;AAE/C,MAAO,OAAA,GAAA,CAAI,SAAS,MAAgB,CAAA,CAAA;AAAA,KACrC,CAAA,CAAA;AAGD,IAAA,MAAM,QAAW,GAAA;AAAA,MACf,KAAO,EAAA,4EAAA;AAAA,MACP,GAAK,EAAA,4EAAA;AAAA,MACL,IAAM,EAAA,4EAAA;AAAA,MACN,GAAK,EAAA,2EAAA;AAAA,MACL,GAAK,EAAA,4EAAA;AAAA,MACL,GAAK,EAAA,4EAAA;AAAA,MACL,GAAK,EAAA,4EAAA;AAAA,MACL,OAAS,EAAA,4EAAA;AAAA,KACX,CAAA;AAEA,IAAM,MAAA,OAAA,GAAU,SAAiB,MAAM;AACrC,MAAA,MAAMA,WAAa,GAAA,KAAA,CAAM,IAAK,CAAA,KAAA,CAAM,KAAyB,CAAA,CAAA;AAC7D,MAAA,IAAI,MAAc,GAAA,IAAA,CAAA;AAClB,MAAI,IAAA,KAAA,CAAMA,WAAU,CAAG,EAAA;AACrB,QAAA,MAAA,GAAS,QAAS,CAAA,GAAA,CAAA;AAAA,OACpB,MAAA,IAAW,MAAOA,CAAAA,WAAU,CAAG,EAAA;AAC7B,QAAA,MAAA,GAAS,QAAS,CAAA,IAAA,CAAA;AAAA,OACpB,MAAA,IAAW,OAAQA,CAAAA,WAAU,CAAG,EAAA;AAC9B,QAAA,MAAA,GAAS,QAAS,CAAA,KAAA,CAAA;AAAA,OACpB,MAAA,IAAW,MAAOA,CAAAA,WAAU,CAAG,EAAA;AAC7B,QAAA,MAAA,GAAS,QAAS,CAAA,GAAA,CAAA;AAAA,OACpB,MAAA,IAAW,KAAMA,CAAAA,WAAU,CAAG,EAAA;AAC5B,QAAA,MAAA,GAAS,QAAS,CAAA,GAAA,CAAA;AAAA,OACpB,MAAA,IAAW,KAAMA,CAAAA,WAAU,CAAG,EAAA;AAC5B,QAAA,MAAA,GAAS,QAAS,CAAA,GAAA,CAAA;AAAA,OACpB,MAAA,IAAW,KAAMA,CAAAA,WAAU,CAAG,EAAA;AAC5B,QAAA,MAAA,GAAS,QAAS,CAAA,GAAA,CAAA;AAAA,OACb,MAAA;AACL,QAAA,MAAA,GAAS,QAAS,CAAA,OAAA,CAAA;AAAA,OACpB;AACA,MAAO,OAAA,MAAA,CAAA;AAAA,KACR,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"FileComponent.vue2.mjs","sources":["../../../../../../../packages/components/src/composite/fileComponent/FileComponent.vue"],"sourcesContent":["<template>\n <div class=\"gm-flex gm-h-full gm-items-center gm-justify-center\">\n <img v-if=\"isImageFile\" :src=\"fileURL\" fit=\"contain\" style=\"max-width: 100%; max-height: 100%\" />\n <video\n v-else-if=\"isVideoFile\"\n :src=\"fileURL\"\n :controls=\"controls\"\n :controlslist=\"controlslist\"\n :oncontextmenu=\"() => oncontextmenu\"\n style=\"width: 100%; height: 100%\"\n />\n <template v-else>\n <el-image v-if=\"showIcon || !showIframe\" :style=\"iconStyle\" :src=\"iconURL\" />\n <iframe v-else :src=\"fileURL\" width=\"850px\" height=\"100%\" frameborder=\"0\" />\n </template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { isExcel, isImageUrl, isPDF, isPPT, isPSD, isText, isVideoUrl, isWord, isZip } from '@giime/utils/src/is';\nimport { fileComponentProps } from './fileComponent';\n// import PDF from './assets/image/pdf.svg';\n// import WORD from './assets/image/word.svg';\n// import EXCEL from './assets/image/excel.svg';\n// import PPT from './assets/image/ppt.svg';\n// import PSD from './assets/image/psd.svg';\n// import TEXT from './assets/image/text.svg';\n// import ZIP from './assets/image/zip.svg';\n// import UNKNOWN from './assets/image/unknown.svg';\nimport type { UploadFile } from 'element-plus';\n\ndefineOptions({\n name: 'GmFileComponent',\n});\n\nconst props = defineProps(fileComponentProps);\n\nconst iconStyle = computed(() => {\n return {\n width: `${props.size}px`,\n height: `${props.size}px`,\n };\n});\n\n/** 文件链接地址 */\nconst fileURL = computed(() => {\n return props.file[props.url as keyof UploadFile] as string;\n});\n\n/** 验证文件类型的字段 */\nconst verifyFile = computed(() => {\n return props.file[props.field as keyof UploadFile] as string;\n});\n\nconst isImageFile = computed(() => isImageUrl(fileURL.value) || isImageUrl(verifyFile.value));\nconst isVideoFile = computed(() => isVideoUrl(fileURL.value) || isVideoUrl(verifyFile.value));\n\n/** 显示iframe */\nconst showIframe = computed(() => {\n return isPDF(fileURL.value) || isPDF(verifyFile.value) || isText(fileURL.value) || isText(verifyFile.value);\n});\n\n/** 图标 */\nconst iconList = {\n excel: 'https://sucai.giikin.cn/workflow/material-refer-1739947054012-1213-335.svg',\n pdf: 'https://sucai.giikin.cn/workflow/material-refer-1739947288698-5462-586.svg',\n word: 'https://sucai.giikin.cn/workflow/material-refer-1739947288698-1540-625.svg',\n txt: 'https://sucai.giikin.cn/workflow/material-refer-1739947288698-1700-90.svg',\n zip: 'https://sucai.giikin.cn/workflow/material-refer-1739947288698-2639-507.svg',\n psd: 'https://sucai.giikin.cn/workflow/material-refer-1739947288698-5026-760.svg',\n ppt: 'https://sucai.giikin.cn/workflow/material-refer-1739947288698-2867-970.svg',\n unknown: 'https://sucai.giikin.cn/workflow/material-refer-1739947288698-1448-736.svg',\n};\n\nconst iconURL = computed<string>(() => {\n // 文件类型检查器映射\n const typeCheckers = [\n { check: () => isPDF(fileURL.value) || isPDF(verifyFile.value), icon: iconList.pdf },\n { check: () => isWord(fileURL.value) || isWord(verifyFile.value), icon: iconList.word },\n { check: () => isExcel(fileURL.value) || isExcel(verifyFile.value), icon: iconList.excel },\n { check: () => isText(fileURL.value) || isText(verifyFile.value), icon: iconList.txt },\n { check: () => isPPT(fileURL.value) || isPPT(verifyFile.value), icon: iconList.ppt },\n { check: () => isZip(fileURL.value) || isZip(verifyFile.value), icon: iconList.zip },\n { check: () => isPSD(fileURL.value) || isPSD(verifyFile.value), icon: iconList.psd },\n ];\n\n // 查找匹配的文件类型\n const matchedType = typeCheckers.find(({ check }) => check());\n\n return matchedType?.icon || iconList.unknown;\n});\n</script>\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- export declare const version = "0.6.39";
1
+ export declare const version = "0.6.40";
@@ -1,4 +1,4 @@
1
- const version = "0.6.38";
1
+ const version = "0.6.39";
2
2
 
3
3
  export { version };
4
4
  //# sourceMappingURL=version.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.mjs","sources":["../../../../packages/giime/version.ts"],"sourcesContent":["export const version = '0.6.38';\n"],"names":[],"mappings":"AAAO,MAAM,OAAU,GAAA;;;;"}
1
+ {"version":3,"file":"version.mjs","sources":["../../../../packages/giime/version.ts"],"sourcesContent":["export const version = '0.6.39';\n"],"names":[],"mappings":"AAAO,MAAM,OAAU,GAAA;;;;"}
package/es/index.css CHANGED
@@ -959,11 +959,11 @@ video {
959
959
  margin: 0;
960
960
  }
961
961
 
962
- .gm-upload-pro-preview-dialog[data-v-ca99928c] [data-v-ca99928c] .el-dialog__body {
962
+ .gm-upload-pro-preview-dialog[data-v-d9374561] [data-v-d9374561] .el-dialog__body {
963
963
  padding: 0;
964
964
  }
965
965
 
966
- .gm-upload-pro-file-picture-card[data-v-ca99928c] [data-v-ca99928c] .el-upload-list__item, .gm-upload-pro-file-picture-card[data-v-ca99928c] [data-v-ca99928c] .el-upload--picture-card {
966
+ .gm-upload-pro-file-picture-card[data-v-d9374561] [data-v-d9374561] .el-upload-list__item, .gm-upload-pro-file-picture-card[data-v-d9374561] [data-v-d9374561] .el-upload--picture-card {
967
967
  width: auto;
968
968
  height: auto;
969
969
  }
@@ -112,7 +112,7 @@ const createExtensionRegex = (extensions) => {
112
112
  const isFileType = (url, type) => {
113
113
  if (!isString(url))
114
114
  return false;
115
- const baseUrl = url.split("?")[0].split("#")[0];
115
+ const baseUrl = url.split("?")[0];
116
116
  const regex = createExtensionRegex(FILE_EXTENSIONS[type]);
117
117
  return regex.test(baseUrl);
118
118
  };
@@ -1 +1 @@
1
- {"version":3,"file":"is.mjs","sources":["../../../../../packages/utils/src/is.ts"],"sourcesContent":["const toString = Object.prototype.toString;\nexport function getTag(value: any): string {\n if (value === null) {\n return '[object Null]';\n } else if (value === undefined) {\n return '[object Undefined]';\n }\n return toString.call(value);\n}\nexport function isObjectLike(value: any): boolean {\n return typeof value === 'object' && value !== null;\n}\nexport function isBoolean(value: any): value is boolean {\n return value === true || value === false || (isObjectLike(value) && getTag(value) === '[object Boolean]');\n}\n\nexport function isString(value: any): value is string {\n return typeof value === 'string' || (isObjectLike(value) && getTag(value) === '[object String]');\n}\n\nexport function isNumber(value: any): value is number {\n return typeof value === 'number' || (isObjectLike(value) && getTag(value) === '[object Number]');\n}\nexport function isSymbol(value: any): value is symbol {\n return typeof value === 'symbol' || (isObjectLike(value) && getTag(value) === '[object Symbol]');\n}\nexport function isDate(value: any): value is Date {\n return isObjectLike(value) && getTag(value) === '[object Date]';\n}\nexport const isFunction = (val: unknown): val is Function => typeof val === 'function';\n/**\n * 整数\n */\nexport function isInteger(val: any): val is number {\n return isNumber(val) && val % 1 === 0;\n}\n/**\n * 小数\n */\nexport function isDecimal(val: any): val is number {\n return isNumber(val) && val % 1 !== 0;\n}\n/**\n * 负数\n */\nexport function isNegative(val: any): val is number {\n return isNumber(val) && val < 0;\n}\n/**\n * 正数\n */\nexport function isPositive(val: any): val is number {\n return isNumber(val) && val > 0;\n}\n/**\n * 奇数\n */\nexport function isOdd(val: any): val is number {\n return isNumber(val) && val % 2 !== 0;\n}\n/**\n * 偶数\n */\nexport function isEven(val: any): val is number {\n return isNumber(val) && val % 2 === 0;\n}\n\nexport function isUndefined(val: any): val is undefined {\n return val === undefined;\n}\nexport function isNull(val: any): val is null {\n return val === null;\n}\nexport function isNil(val: any): val is null | undefined {\n return isUndefined(val) || isNull(val);\n}\n/**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n */\nexport function isError(value: any): value is Error {\n if (!isObjectLike(value)) {\n return false;\n }\n const tag = getTag(value);\n return (\n tag === '[object Error]' ||\n tag === '[object DOMException]' ||\n (typeof value.message === 'string' && typeof value.name === 'string' && !isPlainObject(value))\n );\n}\nexport function isPlainObject(value: any): value is object {\n if (!isObjectLike(value) || getTag(value) !== '[object Object]') {\n return false;\n }\n if (Object.getPrototypeOf(value) === null) {\n return true;\n }\n let proto = value;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(value) === proto;\n}\n\nexport const isHttps = () => {\n return window.location.protocol.startsWith('https');\n};\nexport const isClient = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nexport const isIOS = /* #__PURE__ */ getIsIOS();\n\nfunction getIsIOS() {\n return (\n isClient &&\n window?.navigator?.userAgent &&\n (/iP(?:ad|hone|od)/.test(window.navigator.userAgent) ||\n // The new iPad Pro Gen3 does not identify itself as iPad, but as Macintosh.\n // https://github.com/vueuse/vueuse/issues/3577\n (window?.navigator?.maxTouchPoints > 2 && /iPad|Macintosh/.test(window?.navigator.userAgent)))\n );\n}\n\n/**\n * 文件类型枚举\n */\nexport enum FileType {\n Video = 'Video',\n Image = 'Image',\n Pdf = 'Pdf',\n Word = 'Word',\n Excel = 'Excel',\n Ppt = 'Ppt',\n Text = 'Text',\n Psd = 'Psd',\n Zip = 'Zip',\n}\n\n/**\n * 不同文件类型的扩展名配置\n */\nexport const FILE_EXTENSIONS: Record<FileType, readonly string[]> = {\n [FileType.Video]: ['mp4', 'avi', 'rmvb', 'rm', 'wmv', 'mpg', 'mpeg', 'mov', 'mkv', 'flv'],\n [FileType.Image]: ['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg', 'bmp'],\n [FileType.Pdf]: ['pdf'],\n [FileType.Word]: ['doc', 'docx'],\n [FileType.Excel]: ['xls', 'xlsx'],\n [FileType.Ppt]: ['ppt', 'pptx'],\n [FileType.Text]: ['txt'],\n [FileType.Psd]: ['psd'],\n [FileType.Zip]: ['zip', 'rar', '7z'],\n} as const;\n\n/**\n * 创建用于匹配文件扩展名的正则表达式\n * @param extensions 文件扩展名数组\n * @returns 用于匹配文件扩展名的正则表达式\n */\nconst createExtensionRegex = (extensions: readonly string[]): RegExp => {\n return new RegExp(`\\\\.(${extensions.join('|')})$`, 'i');\n};\n\n/**\n * 通用函数,用于检查URL是否匹配特定文件扩展名\n * @param url 要检查的文件URL或文件名\n * @param type 要检查的文件类型\n * @returns 布尔值,表示URL是否匹配该文件类型\n */\nconst isFileType = (url: string, type: FileType): boolean => {\n if (!isString(url)) return false;\n // 首先通过URL去除查询参数和哈希值\n const baseUrl = url.split('?')[0].split('#')[0];\n const regex = createExtensionRegex(FILE_EXTENSIONS[type]);\n return regex.test(baseUrl);\n};\n\n/**\n * @description 判断是否为视频\n * @param url 文件链接 或 文件名\n */\nexport const isVideoUrl = (url: string): boolean => isFileType(url, FileType.Video);\n\n/**\n * @description 判断是否为图片\n * @param url 文件链接 或 文件名\n */\nexport const isImageUrl = (url: string): boolean => isFileType(url, FileType.Image);\n\n/**\n * @description 判断是否为PDF\n * @param url 文件链接 或 文件名\n */\nexport const isPDF = (url: string): boolean => isFileType(url, FileType.Pdf);\n\n/**\n * @description 是否为Word文档\n * @param url 文件链接 或 文件名\n */\nexport const isWord = (url: string): boolean => isFileType(url, FileType.Word);\n\n/**\n * @description 是否为Excel文件\n * @param url 文件链接 或 文件名\n */\nexport const isExcel = (url: string): boolean => isFileType(url, FileType.Excel);\n\n/**\n * @description 是否为PPT文件\n * @param url 文件链接 或 文件名\n */\nexport const isPPT = (url: string): boolean => isFileType(url, FileType.Ppt);\n\n/**\n * @description 是否为文本文件\n * @param url 文件链接 或 文件名\n */\nexport const isText = (url: string): boolean => isFileType(url, FileType.Text);\n\n/**\n * @description 是否为PSD文件\n * @param url 文件链接 或 文件名\n */\nexport const isPSD = (url: string): boolean => isFileType(url, FileType.Psd);\n\n/**\n * @description 判断是否为压缩包\n * @param url 文件链接 或 文件名\n */\nexport const isZip = (url: string): boolean => isFileType(url, FileType.Zip);\n"],"names":["FileType"],"mappings":"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"}
1
+ {"version":3,"file":"is.mjs","sources":["../../../../../packages/utils/src/is.ts"],"sourcesContent":["const toString = Object.prototype.toString;\nexport function getTag(value: any): string {\n if (value === null) {\n return '[object Null]';\n } else if (value === undefined) {\n return '[object Undefined]';\n }\n return toString.call(value);\n}\nexport function isObjectLike(value: any): boolean {\n return typeof value === 'object' && value !== null;\n}\nexport function isBoolean(value: any): value is boolean {\n return value === true || value === false || (isObjectLike(value) && getTag(value) === '[object Boolean]');\n}\n\nexport function isString(value: any): value is string {\n return typeof value === 'string' || (isObjectLike(value) && getTag(value) === '[object String]');\n}\n\nexport function isNumber(value: any): value is number {\n return typeof value === 'number' || (isObjectLike(value) && getTag(value) === '[object Number]');\n}\nexport function isSymbol(value: any): value is symbol {\n return typeof value === 'symbol' || (isObjectLike(value) && getTag(value) === '[object Symbol]');\n}\nexport function isDate(value: any): value is Date {\n return isObjectLike(value) && getTag(value) === '[object Date]';\n}\nexport const isFunction = (val: unknown): val is Function => typeof val === 'function';\n/**\n * 整数\n */\nexport function isInteger(val: any): val is number {\n return isNumber(val) && val % 1 === 0;\n}\n/**\n * 小数\n */\nexport function isDecimal(val: any): val is number {\n return isNumber(val) && val % 1 !== 0;\n}\n/**\n * 负数\n */\nexport function isNegative(val: any): val is number {\n return isNumber(val) && val < 0;\n}\n/**\n * 正数\n */\nexport function isPositive(val: any): val is number {\n return isNumber(val) && val > 0;\n}\n/**\n * 奇数\n */\nexport function isOdd(val: any): val is number {\n return isNumber(val) && val % 2 !== 0;\n}\n/**\n * 偶数\n */\nexport function isEven(val: any): val is number {\n return isNumber(val) && val % 2 === 0;\n}\n\nexport function isUndefined(val: any): val is undefined {\n return val === undefined;\n}\nexport function isNull(val: any): val is null {\n return val === null;\n}\nexport function isNil(val: any): val is null | undefined {\n return isUndefined(val) || isNull(val);\n}\n/**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n */\nexport function isError(value: any): value is Error {\n if (!isObjectLike(value)) {\n return false;\n }\n const tag = getTag(value);\n return (\n tag === '[object Error]' ||\n tag === '[object DOMException]' ||\n (typeof value.message === 'string' && typeof value.name === 'string' && !isPlainObject(value))\n );\n}\nexport function isPlainObject(value: any): value is object {\n if (!isObjectLike(value) || getTag(value) !== '[object Object]') {\n return false;\n }\n if (Object.getPrototypeOf(value) === null) {\n return true;\n }\n let proto = value;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(value) === proto;\n}\n\nexport const isHttps = () => {\n return window.location.protocol.startsWith('https');\n};\nexport const isClient = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nexport const isIOS = /* #__PURE__ */ getIsIOS();\n\nfunction getIsIOS() {\n return (\n isClient &&\n window?.navigator?.userAgent &&\n (/iP(?:ad|hone|od)/.test(window.navigator.userAgent) ||\n // The new iPad Pro Gen3 does not identify itself as iPad, but as Macintosh.\n // https://github.com/vueuse/vueuse/issues/3577\n (window?.navigator?.maxTouchPoints > 2 && /iPad|Macintosh/.test(window?.navigator.userAgent)))\n );\n}\n\n/**\n * 文件类型枚举\n */\nexport enum FileType {\n Video = 'Video',\n Image = 'Image',\n Pdf = 'Pdf',\n Word = 'Word',\n Excel = 'Excel',\n Ppt = 'Ppt',\n Text = 'Text',\n Psd = 'Psd',\n Zip = 'Zip',\n}\n\n/**\n * 不同文件类型的扩展名配置\n */\nexport const FILE_EXTENSIONS: Record<FileType, readonly string[]> = {\n [FileType.Video]: ['mp4', 'avi', 'rmvb', 'rm', 'wmv', 'mpg', 'mpeg', 'mov', 'mkv', 'flv'],\n [FileType.Image]: ['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg', 'bmp'],\n [FileType.Pdf]: ['pdf'],\n [FileType.Word]: ['doc', 'docx'],\n [FileType.Excel]: ['xls', 'xlsx'],\n [FileType.Ppt]: ['ppt', 'pptx'],\n [FileType.Text]: ['txt'],\n [FileType.Psd]: ['psd'],\n [FileType.Zip]: ['zip', 'rar', '7z'],\n} as const;\n\n/**\n * 创建用于匹配文件扩展名的正则表达式\n * @param extensions 文件扩展名数组\n * @returns 用于匹配文件扩展名的正则表达式\n */\nconst createExtensionRegex = (extensions: readonly string[]): RegExp => {\n return new RegExp(`\\\\.(${extensions.join('|')})$`, 'i');\n};\n\n/**\n * 通用函数,用于检查URL是否匹配特定文件扩展名\n * @param url 要检查的文件URL或文件名\n * @param type 要检查的文件类型\n * @returns 布尔值,表示URL是否匹配该文件类型\n */\nconst isFileType = (url: string, type: FileType): boolean => {\n if (!isString(url)) return false;\n // 首先通过URL去除查询参数和哈希值\n const baseUrl = url.split('?')[0];\n const regex = createExtensionRegex(FILE_EXTENSIONS[type]);\n return regex.test(baseUrl);\n};\n\n/**\n * @description 判断是否为视频\n * @param url 文件链接 或 文件名\n */\nexport const isVideoUrl = (url: string): boolean => isFileType(url, FileType.Video);\n\n/**\n * @description 判断是否为图片\n * @param url 文件链接 或 文件名\n */\nexport const isImageUrl = (url: string): boolean => isFileType(url, FileType.Image);\n\n/**\n * @description 判断是否为PDF\n * @param url 文件链接 或 文件名\n */\nexport const isPDF = (url: string): boolean => isFileType(url, FileType.Pdf);\n\n/**\n * @description 是否为Word文档\n * @param url 文件链接 或 文件名\n */\nexport const isWord = (url: string): boolean => isFileType(url, FileType.Word);\n\n/**\n * @description 是否为Excel文件\n * @param url 文件链接 或 文件名\n */\nexport const isExcel = (url: string): boolean => isFileType(url, FileType.Excel);\n\n/**\n * @description 是否为PPT文件\n * @param url 文件链接 或 文件名\n */\nexport const isPPT = (url: string): boolean => isFileType(url, FileType.Ppt);\n\n/**\n * @description 是否为文本文件\n * @param url 文件链接 或 文件名\n */\nexport const isText = (url: string): boolean => isFileType(url, FileType.Text);\n\n/**\n * @description 是否为PSD文件\n * @param url 文件链接 或 文件名\n */\nexport const isPSD = (url: string): boolean => isFileType(url, FileType.Psd);\n\n/**\n * @description 判断是否为压缩包\n * @param url 文件链接 或 文件名\n */\nexport const isZip = (url: string): boolean => isFileType(url, FileType.Zip);\n"],"names":["FileType"],"mappings":"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"}
@@ -7,7 +7,7 @@ require('./UploadPro.vue3.js');
7
7
  require('./UploadPro.vue4.js');
8
8
  var _pluginVue_exportHelper = require('../../../../_virtual/_plugin-vue_export-helper.js');
9
9
 
10
- var UploadPro = /* @__PURE__ */ _pluginVue_exportHelper.default(UploadPro_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-ca99928c"]]);
10
+ var UploadPro = /* @__PURE__ */ _pluginVue_exportHelper.default(UploadPro_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-d9374561"]]);
11
11
 
12
12
  exports.default = UploadPro;
13
13
  //# sourceMappingURL=UploadPro.vue.js.map
@@ -13,7 +13,7 @@ var uploadPro = require('./uploadPro.js');
13
13
  var exports$1 = require('../../../../utils/src/elementPlus/exports.js');
14
14
  var index = require('../../../../hooks/base/useUploadFile/index.js');
15
15
 
16
- const _withScopeId = (n) => (vue.pushScopeId("data-v-ca99928c"), n = n(), vue.popScopeId(), n);
16
+ const _withScopeId = (n) => (vue.pushScopeId("data-v-d9374561"), n = n(), vue.popScopeId(), n);
17
17
  const _hoisted_1 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ vue.createElementVNode(
18
18
  "div",
19
19
  { class: "el-upload__text gm-text-center !gm-text-xs gm-text-gray-500" },
@@ -61,6 +61,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
61
61
  };
62
62
  const coverFileSuccess = (response, uploadFile2, uploadFiles) => {
63
63
  loadingUids.value.delete(uploadFile2.uid);
64
+ uploadFile2.url = response.url;
64
65
  props.onSuccess?.(response, uploadFile2, uploadFiles);
65
66
  };
66
67
  const coverFileError = (error, uploadFile2, uploadFiles) => {
@@ -1 +1 @@
1
- {"version":3,"file":"UploadPro.vue2.js","sources":["../../../../../../../packages/components/src/business/uploadPro/UploadPro.vue"],"sourcesContent":["<template>\n <div>\n <div\n v-loading=\"uploadLoading\"\n ref=\"pasteFileRef\"\n :class=\"{ 'gm-upload-pro-file-picture-card': listType === 'picture-card', 'gm-upload-pro-file-disabled': disabled }\"\n class=\"gm-upload-pro-file\"\n >\n <el-checkbox-group v-model=\"checkoutFiles\">\n <el-upload\n ref=\"uploadFileRef\"\n v-bind=\"props\"\n v-model:file-list=\"fileList\"\n :before-remove=\"beforeRemove\"\n action=\"\"\n :http-request=\"httpRequest\"\n :on-success=\"coverFileSuccess\"\n :on-error=\"coverFileError\"\n >\n <slot v-if=\"!disabled\">\n <template v-if=\"listType === 'picture-card'\">\n <div\n class=\"gm-flex gm-flex-col gm-items-center gm-justify-center gm-rounded-md gm-border gm-border-dashed gm-p-1\"\n style=\"flex-direction: column\"\n :style=\"{ width: width + 'px', height: height + 'px' }\"\n >\n <el-icon :size=\"30\" color=\"#999\">\n <UploadFilled />\n </el-icon>\n <div class=\"el-upload__text gm-text-center !gm-text-xs gm-text-gray-500\">\n 将文件拖到此处,复制粘贴,或 <em class=\"gm-text-blue-700\">点击上传</em>\n </div>\n </div>\n </template>\n <template v-else>\n <el-button type=\"primary\" size=\"default\">点击上传</el-button>\n </template>\n </slot>\n <template v-if=\"showFileList && listType === 'picture-card'\" #file=\"{ file }\">\n <el-checkbox v-if=\"checkbox\" :value=\"file\" />\n\n <slot name=\"file\" :file=\"file\">\n <div class=\"gm-flex gm-items-center gm-justify-center gm-rounded-md\" :style=\"{ width: width + 'px', height: height + 'px' }\">\n <el-progress\n v-if=\"file.status === 'uploading' || loadingUids.has(file.uid)\"\n :type=\"listType === 'picture-card' ? 'circle' : 'line'\"\n :stroke-width=\"listType === 'picture-card' ? 6 : 2\"\n :percentage=\"Number(file.percentage)\"\n :style=\"\n listType === 'picture-card'\n ? {\n width: width - 20 + 'px',\n height: width - 20 + 'px',\n }\n : 'margin-top: 0.5rem'\n \"\n :width=\"width - 20\"\n />\n\n <GmFileComponent v-else :file=\"file\" :size=\"width - 40\" :controls=\"false\" :show-icon=\"true\" />\n </div>\n <div class=\"el-upload-list__item-actions\">\n <span class=\"el-upload-list__item-preview\" @click=\"handlePreview(file)\">\n <el-icon><View /></el-icon>\n </span>\n <span v-if=\"showDelete\" class=\"el-upload-list__item-delete\" @click=\"handleRemove(file, fileList)\">\n <el-icon><Delete /></el-icon>\n </span>\n </div>\n </slot>\n </template>\n <template v-else #file=\"slotValue\">\n <slot name=\"file\" v-bind=\"slotValue\" />\n </template>\n <template v-if=\"slots.trigger\" #trigger>\n <slot name=\"trigger\" />\n </template>\n <template v-if=\"slots.tip\" #tip>\n <div class=\"gm-text-sm\">\n <slot name=\"tip\" />\n </div>\n </template>\n </el-upload>\n </el-checkbox-group>\n\n <GmPreviewFile v-model:dialogVisible=\"dialogVisible\" v-model:file-index=\"fileIndex\" :file-list=\"fileList\" />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ElMessageBox } from 'element-plus';\nimport { computed, ref, useSlots } from 'vue';\n// import { fileValidType } from '@giime/utils/src/file';\n// import { pasteFile } from '@giime/utils/src/pasteFile';\nimport { usePasteFile } from '@giime/hooks/base/usePasteFile';\nimport { GmConfirmBox } from '@giime/components/src/plugins/confirmBox';\nimport { Delete, UploadFilled, View } from '@element-plus/icons-vue';\nimport GmFileComponent from '../../composite/fileComponent';\nimport GmPreviewFile from '../../composite/previewFile';\nimport { GmUploadProUserFileResponse, uploadFileProps } from './uploadPro';\nimport type { UploadFile, UploadFiles, UploadInstance, UploadProps, UploadRawFile } from 'element-plus';\nimport { getGmExports } from '@giime/utils/src/elementPlus/exports';\nimport { useUploadFile } from '@giime/hooks/base/useUploadFile';\n\ndefineOptions({\n name: 'GmUploadPro',\n});\nconst slots = useSlots();\n\nconst props = defineProps(uploadFileProps);\nconst emit = defineEmits([\"handleRemove\"]);\n\n/** 上传文件 */\nconst fileList = defineModel<UploadFile[]>('fileList', { required: true });\n/** 多选数据 */\nconst checkoutFiles = defineModel<any[]>('checkoutFiles', { default: () => [] });\n/**上传功能 */\nconst { uploadFile, cancelUpload } = useUploadFile();\n\nconst loadingUids = ref<Set<number>>(new Set());\nconst uploadLoading = computed(() => props.showLoading && loadingUids.value.size > 0);\n\n/* 上传 */\nconst httpRequest: UploadProps['httpRequest'] = async options => {\n loadingUids.value.add(options.file.uid);\n return uploadFile(options.file, {\n domainCode: props.domainCode,\n sceneCode: props.sceneCode,\n accept: props.accept,\n acl: props.acl,\n elOptions: options,\n });\n};\n// 上传成功\nconst coverFileSuccess: UploadProps['onSuccess'] = (response: GmUploadProUserFileResponse, uploadFile, uploadFiles) => {\n loadingUids.value.delete(uploadFile.uid);\n props.onSuccess?.(response, uploadFile, uploadFiles);\n};\n// 上传失败\nconst coverFileError: UploadProps['onError'] = (error, uploadFile, uploadFiles) => {\n loadingUids.value.delete(uploadFile.uid);\n props.onError?.(error, uploadFile, uploadFiles);\n};\n\n/* 删除文件前 */\nconst beforeRemove: UploadProps['beforeRemove'] = async (file, files) => {\n if (props.disabled) {\n return false;\n }\n if (props.deleteTip) {\n await GmConfirmBox({ message: '确定删除该文件吗?' }, async () => {});\n }\n // 如果文件正在上传,取消上传请求\n if (file.status === 'uploading' || loadingUids.value.has(file.uid)) {\n cancelUpload(file.uid);\n loadingUids.value.delete(file.uid);\n }\n return props.beforeRemove?.(file, files) ?? true;\n};\n\n/* 删除文件 */\nconst removeFile = (file: UploadFile, uploadFiles: UploadFiles) => {\n // 如果文件正在上传,取消上传请求\n if (file.status === 'uploading' || loadingUids.value.has(file.uid)) {\n cancelUpload(file.uid);\n loadingUids.value.delete(file.uid);\n }\n\n const index = fileList.value.indexOf(file);\n if (index > -1) {\n fileList.value.splice(index, 1);\n emit('handleRemove', { file, index });\n return props.onRemove?.(file, uploadFiles);\n }\n};\n/**点击删除图标 */\nconst handleRemove = async (file: UploadFile, uploadFiles: UploadFiles) => {\n if (props.deleteTip) {\n await GmConfirmBox({ message: '确定删除该文件吗?' }, async () => {});\n }\n\n removeFile(file, uploadFiles);\n};\n\nconst uploadFileRef = ref<UploadInstance>();\nconst exposeEvents = ['abort', 'submit', 'clearFiles', 'handleStart', 'handleRemove'] as const;\nconst { exposeFns } = getGmExports(uploadFileRef, exposeEvents);\n\nconst pasteFileRef = ref<HTMLElement>();\n\n/** 预览 */\nconst dialogVisible = ref(false);\nconst fileIndex = ref(0);\n/**点击预览 */\nconst handlePreview = (file: UploadFile) => {\n fileIndex.value = fileList.value.indexOf(file);\n dialogVisible.value = true;\n};\n\n//** 复制粘贴 */\nconst { onSuccess, onError } = usePasteFile(pasteFileRef, { accept: props.accept, disabled: props.disabled });\nonSuccess((files: File[]) => {\n if (props.disabled) {\n return;\n }\n if (Array.isArray(files) && files.length > 0) {\n files.forEach(file => {\n if (file instanceof File) {\n const rawFile = file as UploadRawFile;\n uploadFileRef.value?.handleStart(rawFile);\n\n // 粘贴成功自动上传\n if (props.autoUpload) {\n uploadFileRef.value?.submit();\n }\n }\n });\n }\n});\n/**粘贴失败 */\nonError((error: Error) => {\n console.error('粘贴错误:', error);\n ElMessageBox.alert(error.message, '提示', {\n type: 'error',\n });\n});\ndefineExpose({\n ...exposeFns,\n uploadFileRef,\n});\n</script>\n\n<style scoped lang=\"scss\">\n.gm-upload-pro-preview-dialog {\n :deep(.el-dialog__body) {\n padding: 0;\n }\n}\n.gm-upload-pro-file-picture-card {\n :deep(.el-upload-list__item),\n :deep(.el-upload--picture-card) {\n width: auto;\n height: auto;\n }\n}\n</style>\n<style lang=\"scss\">\n.gm-upload-pro-file {\n line-height: normal;\n .el-checkbox-group {\n font-size: unset;\n }\n .el-checkbox {\n position: absolute;\n left: 10px;\n top: 0;\n z-index: 9;\n }\n .el-upload-list--picture-card {\n gap: 10px;\n }\n .el-upload-list__item {\n margin: 0;\n }\n .el-upload-list__item-file-name {\n line-height: 1.7;\n }\n .el-upload-dragger {\n padding: 0;\n border: none;\n width: 100%;\n height: 100%;\n display: flex;\n }\n .el-upload--picture-card {\n border: none;\n }\n}\n.gm-upload-pro-file-disabled {\n .el-upload--picture-card {\n display: none;\n }\n .el-upload-list__item-status-label {\n display: none;\n }\n}\n</style>\n"],"names":["useSlots","_useModel","useUploadFile","ref","computed","uploadFile","GmConfirmBox","getGmExports","usePasteFile","ElMessageBox"],"mappings":"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"}
1
+ {"version":3,"file":"UploadPro.vue2.js","sources":["../../../../../../../packages/components/src/business/uploadPro/UploadPro.vue"],"sourcesContent":["<template>\n <div>\n <div\n v-loading=\"uploadLoading\"\n ref=\"pasteFileRef\"\n :class=\"{ 'gm-upload-pro-file-picture-card': listType === 'picture-card', 'gm-upload-pro-file-disabled': disabled }\"\n class=\"gm-upload-pro-file\"\n >\n <el-checkbox-group v-model=\"checkoutFiles\">\n <el-upload\n ref=\"uploadFileRef\"\n v-bind=\"props\"\n v-model:file-list=\"fileList\"\n :before-remove=\"beforeRemove\"\n action=\"\"\n :http-request=\"httpRequest\"\n :on-success=\"coverFileSuccess\"\n :on-error=\"coverFileError\"\n >\n <slot v-if=\"!disabled\">\n <template v-if=\"listType === 'picture-card'\">\n <div\n class=\"gm-flex gm-flex-col gm-items-center gm-justify-center gm-rounded-md gm-border gm-border-dashed gm-p-1\"\n style=\"flex-direction: column\"\n :style=\"{ width: width + 'px', height: height + 'px' }\"\n >\n <el-icon :size=\"30\" color=\"#999\">\n <UploadFilled />\n </el-icon>\n <div class=\"el-upload__text gm-text-center !gm-text-xs gm-text-gray-500\">\n 将文件拖到此处,复制粘贴,或 <em class=\"gm-text-blue-700\">点击上传</em>\n </div>\n </div>\n </template>\n <template v-else>\n <el-button type=\"primary\" size=\"default\">点击上传</el-button>\n </template>\n </slot>\n <template v-if=\"showFileList && listType === 'picture-card'\" #file=\"{ file }\">\n <el-checkbox v-if=\"checkbox\" :value=\"file\" />\n\n <slot name=\"file\" :file=\"file\">\n <div class=\"gm-flex gm-items-center gm-justify-center gm-rounded-md\" :style=\"{ width: width + 'px', height: height + 'px' }\">\n <el-progress\n v-if=\"file.status === 'uploading' || loadingUids.has(file.uid)\"\n :type=\"listType === 'picture-card' ? 'circle' : 'line'\"\n :stroke-width=\"listType === 'picture-card' ? 6 : 2\"\n :percentage=\"Number(file.percentage)\"\n :style=\"\n listType === 'picture-card'\n ? {\n width: width - 20 + 'px',\n height: width - 20 + 'px',\n }\n : 'margin-top: 0.5rem'\n \"\n :width=\"width - 20\"\n />\n\n <GmFileComponent v-else :file=\"file\" :size=\"width - 40\" :controls=\"false\" :show-icon=\"true\" />\n </div>\n <div class=\"el-upload-list__item-actions\">\n <span class=\"el-upload-list__item-preview\" @click=\"handlePreview(file)\">\n <el-icon><View /></el-icon>\n </span>\n <span v-if=\"showDelete\" class=\"el-upload-list__item-delete\" @click=\"handleRemove(file, fileList)\">\n <el-icon><Delete /></el-icon>\n </span>\n </div>\n </slot>\n </template>\n <template v-else #file=\"slotValue\">\n <slot name=\"file\" v-bind=\"slotValue\" />\n </template>\n <template v-if=\"slots.trigger\" #trigger>\n <slot name=\"trigger\" />\n </template>\n <template v-if=\"slots.tip\" #tip>\n <div class=\"gm-text-sm\">\n <slot name=\"tip\" />\n </div>\n </template>\n </el-upload>\n </el-checkbox-group>\n\n <GmPreviewFile v-model:dialogVisible=\"dialogVisible\" v-model:file-index=\"fileIndex\" :file-list=\"fileList\" />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ElMessageBox } from 'element-plus';\nimport { computed, ref, useSlots } from 'vue';\n// import { fileValidType } from '@giime/utils/src/file';\n// import { pasteFile } from '@giime/utils/src/pasteFile';\nimport { usePasteFile } from '@giime/hooks/base/usePasteFile';\nimport { GmConfirmBox } from '@giime/components/src/plugins/confirmBox';\nimport { Delete, UploadFilled, View } from '@element-plus/icons-vue';\nimport GmFileComponent from '../../composite/fileComponent';\nimport GmPreviewFile from '../../composite/previewFile';\nimport { GmUploadProUserFileResponse, uploadFileProps } from './uploadPro';\nimport type { UploadFile, UploadFiles, UploadInstance, UploadProps, UploadRawFile } from 'element-plus';\nimport { getGmExports } from '@giime/utils/src/elementPlus/exports';\nimport { useUploadFile } from '@giime/hooks/base/useUploadFile';\n\ndefineOptions({\n name: 'GmUploadPro',\n});\nconst slots = useSlots();\n\nconst props = defineProps(uploadFileProps);\nconst emit = defineEmits([\"handleRemove\"]);\n\n/** 上传文件 */\nconst fileList = defineModel<UploadFile[]>('fileList', { required: true });\n/** 多选数据 */\nconst checkoutFiles = defineModel<any[]>('checkoutFiles', { default: () => [] });\n/**上传功能 */\nconst { uploadFile, cancelUpload } = useUploadFile();\n\nconst loadingUids = ref<Set<number>>(new Set());\nconst uploadLoading = computed(() => props.showLoading && loadingUids.value.size > 0);\n\n/* 上传 */\nconst httpRequest: UploadProps['httpRequest'] = async options => {\n loadingUids.value.add(options.file.uid);\n return uploadFile(options.file, {\n domainCode: props.domainCode,\n sceneCode: props.sceneCode,\n accept: props.accept,\n acl: props.acl,\n elOptions: options,\n });\n};\n// 上传成功\nconst coverFileSuccess: UploadProps['onSuccess'] = (response: GmUploadProUserFileResponse, uploadFile, uploadFiles) => {\n loadingUids.value.delete(uploadFile.uid);\n uploadFile.url = response.url;\n props.onSuccess?.(response, uploadFile, uploadFiles);\n};\n// 上传失败\nconst coverFileError: UploadProps['onError'] = (error, uploadFile, uploadFiles) => {\n loadingUids.value.delete(uploadFile.uid);\n props.onError?.(error, uploadFile, uploadFiles);\n};\n\n/* 删除文件前 */\nconst beforeRemove: UploadProps['beforeRemove'] = async (file, files) => {\n if (props.disabled) {\n return false;\n }\n if (props.deleteTip) {\n await GmConfirmBox({ message: '确定删除该文件吗?' }, async () => {});\n }\n // 如果文件正在上传,取消上传请求\n if (file.status === 'uploading' || loadingUids.value.has(file.uid)) {\n cancelUpload(file.uid);\n loadingUids.value.delete(file.uid);\n }\n return props.beforeRemove?.(file, files) ?? true;\n};\n\n/* 删除文件 */\nconst removeFile = (file: UploadFile, uploadFiles: UploadFiles) => {\n // 如果文件正在上传,取消上传请求\n if (file.status === 'uploading' || loadingUids.value.has(file.uid)) {\n cancelUpload(file.uid);\n loadingUids.value.delete(file.uid);\n }\n\n const index = fileList.value.indexOf(file);\n if (index > -1) {\n fileList.value.splice(index, 1);\n emit('handleRemove', { file, index });\n return props.onRemove?.(file, uploadFiles);\n }\n};\n/**点击删除图标 */\nconst handleRemove = async (file: UploadFile, uploadFiles: UploadFiles) => {\n if (props.deleteTip) {\n await GmConfirmBox({ message: '确定删除该文件吗?' }, async () => {});\n }\n\n removeFile(file, uploadFiles);\n};\n\nconst uploadFileRef = ref<UploadInstance>();\nconst exposeEvents = ['abort', 'submit', 'clearFiles', 'handleStart', 'handleRemove'] as const;\nconst { exposeFns } = getGmExports(uploadFileRef, exposeEvents);\n\nconst pasteFileRef = ref<HTMLElement>();\n\n/** 预览 */\nconst dialogVisible = ref(false);\nconst fileIndex = ref(0);\n/**点击预览 */\nconst handlePreview = (file: UploadFile) => {\n fileIndex.value = fileList.value.indexOf(file);\n dialogVisible.value = true;\n};\n\n//** 复制粘贴 */\nconst { onSuccess, onError } = usePasteFile(pasteFileRef, { accept: props.accept, disabled: props.disabled });\nonSuccess((files: File[]) => {\n if (props.disabled) {\n return;\n }\n if (Array.isArray(files) && files.length > 0) {\n files.forEach(file => {\n if (file instanceof File) {\n const rawFile = file as UploadRawFile;\n uploadFileRef.value?.handleStart(rawFile);\n\n // 粘贴成功自动上传\n if (props.autoUpload) {\n uploadFileRef.value?.submit();\n }\n }\n });\n }\n});\n/**粘贴失败 */\nonError((error: Error) => {\n console.error('粘贴错误:', error);\n ElMessageBox.alert(error.message, '提示', {\n type: 'error',\n });\n});\ndefineExpose({\n ...exposeFns,\n uploadFileRef,\n});\n</script>\n\n<style scoped lang=\"scss\">\n.gm-upload-pro-preview-dialog {\n :deep(.el-dialog__body) {\n padding: 0;\n }\n}\n.gm-upload-pro-file-picture-card {\n :deep(.el-upload-list__item),\n :deep(.el-upload--picture-card) {\n width: auto;\n height: auto;\n }\n}\n</style>\n<style lang=\"scss\">\n.gm-upload-pro-file {\n line-height: normal;\n .el-checkbox-group {\n font-size: unset;\n }\n .el-checkbox {\n position: absolute;\n left: 10px;\n top: 0;\n z-index: 9;\n }\n .el-upload-list--picture-card {\n gap: 10px;\n }\n .el-upload-list__item {\n margin: 0;\n }\n .el-upload-list__item-file-name {\n line-height: 1.7;\n }\n .el-upload-dragger {\n padding: 0;\n border: none;\n width: 100%;\n height: 100%;\n display: flex;\n }\n .el-upload--picture-card {\n border: none;\n }\n}\n.gm-upload-pro-file-disabled {\n .el-upload--picture-card {\n display: none;\n }\n .el-upload-list__item-status-label {\n display: none;\n }\n}\n</style>\n"],"names":["useSlots","_useModel","useUploadFile","ref","computed","uploadFile","GmConfirmBox","getGmExports","usePasteFile","ElMessageBox"],"mappings":"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"}
@@ -30,10 +30,10 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
30
30
  const verifyFile = vue.computed(() => {
31
31
  return props.file[props.field];
32
32
  });
33
+ const isImageFile = vue.computed(() => is.isImageUrl(fileURL.value) || is.isImageUrl(verifyFile.value));
34
+ const isVideoFile = vue.computed(() => is.isVideoUrl(fileURL.value) || is.isVideoUrl(verifyFile.value));
33
35
  const showIframe = vue.computed(() => {
34
- const arr = ["pdf", "txt"];
35
- const suffix = verifyFile.value.split(".").pop();
36
- return arr.includes(suffix);
36
+ return is.isPDF(fileURL.value) || is.isPDF(verifyFile.value) || is.isText(fileURL.value) || is.isText(verifyFile.value);
37
37
  });
38
38
  const iconList = {
39
39
  excel: "https://sucai.giikin.cn/workflow/material-refer-1739947054012-1213-335.svg",
@@ -46,36 +46,27 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
46
46
  unknown: "https://sucai.giikin.cn/workflow/material-refer-1739947288698-1448-736.svg"
47
47
  };
48
48
  const iconURL = vue.computed(() => {
49
- const verifyFile2 = props.file[props.field];
50
- let result = null;
51
- if (is.isPDF(verifyFile2)) {
52
- result = iconList.pdf;
53
- } else if (is.isWord(verifyFile2)) {
54
- result = iconList.word;
55
- } else if (is.isExcel(verifyFile2)) {
56
- result = iconList.excel;
57
- } else if (is.isText(verifyFile2)) {
58
- result = iconList.txt;
59
- } else if (is.isPPT(verifyFile2)) {
60
- result = iconList.ppt;
61
- } else if (is.isZip(verifyFile2)) {
62
- result = iconList.zip;
63
- } else if (is.isPSD(verifyFile2)) {
64
- result = iconList.psd;
65
- } else {
66
- result = iconList.unknown;
67
- }
68
- return result;
49
+ const typeCheckers = [
50
+ { check: () => is.isPDF(fileURL.value) || is.isPDF(verifyFile.value), icon: iconList.pdf },
51
+ { check: () => is.isWord(fileURL.value) || is.isWord(verifyFile.value), icon: iconList.word },
52
+ { check: () => is.isExcel(fileURL.value) || is.isExcel(verifyFile.value), icon: iconList.excel },
53
+ { check: () => is.isText(fileURL.value) || is.isText(verifyFile.value), icon: iconList.txt },
54
+ { check: () => is.isPPT(fileURL.value) || is.isPPT(verifyFile.value), icon: iconList.ppt },
55
+ { check: () => is.isZip(fileURL.value) || is.isZip(verifyFile.value), icon: iconList.zip },
56
+ { check: () => is.isPSD(fileURL.value) || is.isPSD(verifyFile.value), icon: iconList.psd }
57
+ ];
58
+ const matchedType = typeCheckers.find(({ check }) => check());
59
+ return matchedType?.icon || iconList.unknown;
69
60
  });
70
61
  return (_ctx, _cache) => {
71
62
  const _component_el_image = vue.resolveComponent("el-image");
72
63
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
73
- vue.unref(is.isImageUrl)(verifyFile.value) ? (vue.openBlock(), vue.createElementBlock("img", {
64
+ isImageFile.value ? (vue.openBlock(), vue.createElementBlock("img", {
74
65
  key: 0,
75
66
  src: fileURL.value,
76
67
  fit: "contain",
77
68
  style: { "max-width": "100%", "max-height": "100%" }
78
- }, null, 8, _hoisted_2)) : vue.unref(is.isVideoUrl)(verifyFile.value) ? (vue.openBlock(), vue.createElementBlock("video", {
69
+ }, null, 8, _hoisted_2)) : isVideoFile.value ? (vue.openBlock(), vue.createElementBlock("video", {
79
70
  key: 1,
80
71
  src: fileURL.value,
81
72
  controls: _ctx.controls,
@@ -1 +1 @@
1
- {"version":3,"file":"FileComponent.vue2.js","sources":["../../../../../../../packages/components/src/composite/fileComponent/FileComponent.vue"],"sourcesContent":["<template>\n <div class=\"gm-flex gm-h-full gm-items-center gm-justify-center\">\n <img v-if=\"isImageUrl(verifyFile)\" :src=\"fileURL\" fit=\"contain\" style=\"max-width: 100%; max-height: 100%\" />\n <video\n v-else-if=\"isVideoUrl(verifyFile)\"\n :src=\"fileURL\"\n :controls=\"controls\"\n :controlslist=\"controlslist\"\n :oncontextmenu=\"() => oncontextmenu\"\n style=\"width: 100%; height: 100%\"\n />\n <template v-else>\n <el-image v-if=\"showIcon || !showIframe\" :style=\"iconStyle\" :src=\"iconURL\" />\n <iframe v-else :src=\"fileURL\" width=\"850px\" height=\"100%\" frameborder=\"0\" />\n </template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { isExcel, isImageUrl, isPDF, isPPT, isPSD, isText, isVideoUrl, isWord, isZip } from '@giime/utils/src/is';\nimport { fileComponentProps } from './fileComponent';\n// import PDF from './assets/image/pdf.svg';\n// import WORD from './assets/image/word.svg';\n// import EXCEL from './assets/image/excel.svg';\n// import PPT from './assets/image/ppt.svg';\n// import PSD from './assets/image/psd.svg';\n// import TEXT from './assets/image/text.svg';\n// import ZIP from './assets/image/zip.svg';\n// import UNKNOWN from './assets/image/unknown.svg';\nimport type { UploadFile } from 'element-plus';\n\ndefineOptions({\n name: 'GmFileComponent',\n});\n\nconst props = defineProps(fileComponentProps);\n\nconst iconStyle = computed(() => {\n return {\n width: `${props.size}px`,\n height: `${props.size}px`,\n };\n});\n\n/** 文件链接地址 */\nconst fileURL = computed(() => {\n return props.file[props.url as keyof UploadFile] as string;\n});\n\n/** 验证文件类型的字段 */\nconst verifyFile = computed(() => {\n return props.file[props.field as keyof UploadFile] as string;\n});\n\n/** 显示iframe */\nconst showIframe = computed(() => {\n const arr = ['pdf', 'txt'];\n const suffix = verifyFile.value.split('.').pop();\n\n return arr.includes(suffix as string);\n});\n\n/** 图标 */\nconst iconList = {\n excel: 'https://sucai.giikin.cn/workflow/material-refer-1739947054012-1213-335.svg',\n pdf: 'https://sucai.giikin.cn/workflow/material-refer-1739947288698-5462-586.svg',\n word: 'https://sucai.giikin.cn/workflow/material-refer-1739947288698-1540-625.svg',\n txt: 'https://sucai.giikin.cn/workflow/material-refer-1739947288698-1700-90.svg',\n zip: 'https://sucai.giikin.cn/workflow/material-refer-1739947288698-2639-507.svg',\n psd: 'https://sucai.giikin.cn/workflow/material-refer-1739947288698-5026-760.svg',\n ppt: 'https://sucai.giikin.cn/workflow/material-refer-1739947288698-2867-970.svg',\n unknown: 'https://sucai.giikin.cn/workflow/material-refer-1739947288698-1448-736.svg',\n};\n\nconst iconURL = computed<string>(() => {\n const verifyFile = props.file[props.field as keyof UploadFile] as string;\n let result: any = null;\n if (isPDF(verifyFile)) {\n result = iconList.pdf;\n } else if (isWord(verifyFile)) {\n result = iconList.word;\n } else if (isExcel(verifyFile)) {\n result = iconList.excel;\n } else if (isText(verifyFile)) {\n result = iconList.txt;\n } else if (isPPT(verifyFile)) {\n result = iconList.ppt;\n } else if (isZip(verifyFile)) {\n result = iconList.zip;\n } else if (isPSD(verifyFile)) {\n result = iconList.psd;\n } else {\n result = iconList.unknown;\n }\n return result;\n});\n</script>\n"],"names":["computed","verifyFile","isPDF","isWord","isExcel","isText","isPPT","isZip","isPSD"],"mappings":";;;;;;;;;;;;;;;;;;;AAoCA,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AAEd,IAAM,MAAA,SAAA,GAAYA,aAAS,MAAM;AAC/B,MAAO,OAAA;AAAA,QACL,KAAA,EAAO,CAAG,EAAA,KAAA,CAAM,IAAI,CAAA,EAAA,CAAA;AAAA,QACpB,MAAA,EAAQ,CAAG,EAAA,KAAA,CAAM,IAAI,CAAA,EAAA,CAAA;AAAA,OACvB,CAAA;AAAA,KACD,CAAA,CAAA;AAGD,IAAM,MAAA,OAAA,GAAUA,aAAS,MAAM;AAC7B,MAAO,OAAA,KAAA,CAAM,IAAK,CAAA,KAAA,CAAM,GAAuB,CAAA,CAAA;AAAA,KAChD,CAAA,CAAA;AAGD,IAAM,MAAA,UAAA,GAAaA,aAAS,MAAM;AAChC,MAAO,OAAA,KAAA,CAAM,IAAK,CAAA,KAAA,CAAM,KAAyB,CAAA,CAAA;AAAA,KAClD,CAAA,CAAA;AAGD,IAAM,MAAA,UAAA,GAAaA,aAAS,MAAM;AAChC,MAAM,MAAA,GAAA,GAAM,CAAC,KAAA,EAAO,KAAK,CAAA,CAAA;AACzB,MAAA,MAAM,SAAS,UAAW,CAAA,KAAA,CAAM,KAAM,CAAA,GAAG,EAAE,GAAI,EAAA,CAAA;AAE/C,MAAO,OAAA,GAAA,CAAI,SAAS,MAAgB,CAAA,CAAA;AAAA,KACrC,CAAA,CAAA;AAGD,IAAA,MAAM,QAAW,GAAA;AAAA,MACf,KAAO,EAAA,4EAAA;AAAA,MACP,GAAK,EAAA,4EAAA;AAAA,MACL,IAAM,EAAA,4EAAA;AAAA,MACN,GAAK,EAAA,2EAAA;AAAA,MACL,GAAK,EAAA,4EAAA;AAAA,MACL,GAAK,EAAA,4EAAA;AAAA,MACL,GAAK,EAAA,4EAAA;AAAA,MACL,OAAS,EAAA,4EAAA;AAAA,KACX,CAAA;AAEA,IAAM,MAAA,OAAA,GAAUA,aAAiB,MAAM;AACrC,MAAA,MAAMC,WAAa,GAAA,KAAA,CAAM,IAAK,CAAA,KAAA,CAAM,KAAyB,CAAA,CAAA;AAC7D,MAAA,IAAI,MAAc,GAAA,IAAA,CAAA;AAClB,MAAI,IAAAC,QAAA,CAAMD,WAAU,CAAG,EAAA;AACrB,QAAA,MAAA,GAAS,QAAS,CAAA,GAAA,CAAA;AAAA,OACpB,MAAA,IAAWE,SAAOF,CAAAA,WAAU,CAAG,EAAA;AAC7B,QAAA,MAAA,GAAS,QAAS,CAAA,IAAA,CAAA;AAAA,OACpB,MAAA,IAAWG,UAAQH,CAAAA,WAAU,CAAG,EAAA;AAC9B,QAAA,MAAA,GAAS,QAAS,CAAA,KAAA,CAAA;AAAA,OACpB,MAAA,IAAWI,SAAOJ,CAAAA,WAAU,CAAG,EAAA;AAC7B,QAAA,MAAA,GAAS,QAAS,CAAA,GAAA,CAAA;AAAA,OACpB,MAAA,IAAWK,QAAML,CAAAA,WAAU,CAAG,EAAA;AAC5B,QAAA,MAAA,GAAS,QAAS,CAAA,GAAA,CAAA;AAAA,OACpB,MAAA,IAAWM,QAAMN,CAAAA,WAAU,CAAG,EAAA;AAC5B,QAAA,MAAA,GAAS,QAAS,CAAA,GAAA,CAAA;AAAA,OACpB,MAAA,IAAWO,QAAMP,CAAAA,WAAU,CAAG,EAAA;AAC5B,QAAA,MAAA,GAAS,QAAS,CAAA,GAAA,CAAA;AAAA,OACb,MAAA;AACL,QAAA,MAAA,GAAS,QAAS,CAAA,OAAA,CAAA;AAAA,OACpB;AACA,MAAO,OAAA,MAAA,CAAA;AAAA,KACR,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"FileComponent.vue2.js","sources":["../../../../../../../packages/components/src/composite/fileComponent/FileComponent.vue"],"sourcesContent":["<template>\n <div class=\"gm-flex gm-h-full gm-items-center gm-justify-center\">\n <img v-if=\"isImageFile\" :src=\"fileURL\" fit=\"contain\" style=\"max-width: 100%; max-height: 100%\" />\n <video\n v-else-if=\"isVideoFile\"\n :src=\"fileURL\"\n :controls=\"controls\"\n :controlslist=\"controlslist\"\n :oncontextmenu=\"() => oncontextmenu\"\n style=\"width: 100%; height: 100%\"\n />\n <template v-else>\n <el-image v-if=\"showIcon || !showIframe\" :style=\"iconStyle\" :src=\"iconURL\" />\n <iframe v-else :src=\"fileURL\" width=\"850px\" height=\"100%\" frameborder=\"0\" />\n </template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { isExcel, isImageUrl, isPDF, isPPT, isPSD, isText, isVideoUrl, isWord, isZip } from '@giime/utils/src/is';\nimport { fileComponentProps } from './fileComponent';\n// import PDF from './assets/image/pdf.svg';\n// import WORD from './assets/image/word.svg';\n// import EXCEL from './assets/image/excel.svg';\n// import PPT from './assets/image/ppt.svg';\n// import PSD from './assets/image/psd.svg';\n// import TEXT from './assets/image/text.svg';\n// import ZIP from './assets/image/zip.svg';\n// import UNKNOWN from './assets/image/unknown.svg';\nimport type { UploadFile } from 'element-plus';\n\ndefineOptions({\n name: 'GmFileComponent',\n});\n\nconst props = defineProps(fileComponentProps);\n\nconst iconStyle = computed(() => {\n return {\n width: `${props.size}px`,\n height: `${props.size}px`,\n };\n});\n\n/** 文件链接地址 */\nconst fileURL = computed(() => {\n return props.file[props.url as keyof UploadFile] as string;\n});\n\n/** 验证文件类型的字段 */\nconst verifyFile = computed(() => {\n return props.file[props.field as keyof UploadFile] as string;\n});\n\nconst isImageFile = computed(() => isImageUrl(fileURL.value) || isImageUrl(verifyFile.value));\nconst isVideoFile = computed(() => isVideoUrl(fileURL.value) || isVideoUrl(verifyFile.value));\n\n/** 显示iframe */\nconst showIframe = computed(() => {\n return isPDF(fileURL.value) || isPDF(verifyFile.value) || isText(fileURL.value) || isText(verifyFile.value);\n});\n\n/** 图标 */\nconst iconList = {\n excel: 'https://sucai.giikin.cn/workflow/material-refer-1739947054012-1213-335.svg',\n pdf: 'https://sucai.giikin.cn/workflow/material-refer-1739947288698-5462-586.svg',\n word: 'https://sucai.giikin.cn/workflow/material-refer-1739947288698-1540-625.svg',\n txt: 'https://sucai.giikin.cn/workflow/material-refer-1739947288698-1700-90.svg',\n zip: 'https://sucai.giikin.cn/workflow/material-refer-1739947288698-2639-507.svg',\n psd: 'https://sucai.giikin.cn/workflow/material-refer-1739947288698-5026-760.svg',\n ppt: 'https://sucai.giikin.cn/workflow/material-refer-1739947288698-2867-970.svg',\n unknown: 'https://sucai.giikin.cn/workflow/material-refer-1739947288698-1448-736.svg',\n};\n\nconst iconURL = computed<string>(() => {\n // 文件类型检查器映射\n const typeCheckers = [\n { check: () => isPDF(fileURL.value) || isPDF(verifyFile.value), icon: iconList.pdf },\n { check: () => isWord(fileURL.value) || isWord(verifyFile.value), icon: iconList.word },\n { check: () => isExcel(fileURL.value) || isExcel(verifyFile.value), icon: iconList.excel },\n { check: () => isText(fileURL.value) || isText(verifyFile.value), icon: iconList.txt },\n { check: () => isPPT(fileURL.value) || isPPT(verifyFile.value), icon: iconList.ppt },\n { check: () => isZip(fileURL.value) || isZip(verifyFile.value), icon: iconList.zip },\n { check: () => isPSD(fileURL.value) || isPSD(verifyFile.value), icon: iconList.psd },\n ];\n\n // 查找匹配的文件类型\n const matchedType = typeCheckers.find(({ check }) => check());\n\n return matchedType?.icon || iconList.unknown;\n});\n</script>\n"],"names":["computed","isImageUrl","isVideoUrl","isPDF","isText","isWord","isExcel","isPPT","isZip","isPSD"],"mappings":"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"}
@@ -1 +1 @@
1
- export declare const version = "0.6.39";
1
+ export declare const version = "0.6.40";
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const version = "0.6.38";
3
+ const version = "0.6.39";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sources":["../../../../packages/giime/version.ts"],"sourcesContent":["export const version = '0.6.38';\n"],"names":[],"mappings":";;AAAO,MAAM,OAAU,GAAA;;;;"}
1
+ {"version":3,"file":"version.js","sources":["../../../../packages/giime/version.ts"],"sourcesContent":["export const version = '0.6.39';\n"],"names":[],"mappings":";;AAAO,MAAM,OAAU,GAAA;;;;"}
package/lib/index.css CHANGED
@@ -959,11 +959,11 @@ video {
959
959
  margin: 0;
960
960
  }
961
961
 
962
- .gm-upload-pro-preview-dialog[data-v-ca99928c] [data-v-ca99928c] .el-dialog__body {
962
+ .gm-upload-pro-preview-dialog[data-v-d9374561] [data-v-d9374561] .el-dialog__body {
963
963
  padding: 0;
964
964
  }
965
965
 
966
- .gm-upload-pro-file-picture-card[data-v-ca99928c] [data-v-ca99928c] .el-upload-list__item, .gm-upload-pro-file-picture-card[data-v-ca99928c] [data-v-ca99928c] .el-upload--picture-card {
966
+ .gm-upload-pro-file-picture-card[data-v-d9374561] [data-v-d9374561] .el-upload-list__item, .gm-upload-pro-file-picture-card[data-v-d9374561] [data-v-d9374561] .el-upload--picture-card {
967
967
  width: auto;
968
968
  height: auto;
969
969
  }
@@ -114,7 +114,7 @@ const createExtensionRegex = (extensions) => {
114
114
  const isFileType = (url, type) => {
115
115
  if (!isString(url))
116
116
  return false;
117
- const baseUrl = url.split("?")[0].split("#")[0];
117
+ const baseUrl = url.split("?")[0];
118
118
  const regex = createExtensionRegex(FILE_EXTENSIONS[type]);
119
119
  return regex.test(baseUrl);
120
120
  };
@@ -1 +1 @@
1
- {"version":3,"file":"is.js","sources":["../../../../../packages/utils/src/is.ts"],"sourcesContent":["const toString = Object.prototype.toString;\nexport function getTag(value: any): string {\n if (value === null) {\n return '[object Null]';\n } else if (value === undefined) {\n return '[object Undefined]';\n }\n return toString.call(value);\n}\nexport function isObjectLike(value: any): boolean {\n return typeof value === 'object' && value !== null;\n}\nexport function isBoolean(value: any): value is boolean {\n return value === true || value === false || (isObjectLike(value) && getTag(value) === '[object Boolean]');\n}\n\nexport function isString(value: any): value is string {\n return typeof value === 'string' || (isObjectLike(value) && getTag(value) === '[object String]');\n}\n\nexport function isNumber(value: any): value is number {\n return typeof value === 'number' || (isObjectLike(value) && getTag(value) === '[object Number]');\n}\nexport function isSymbol(value: any): value is symbol {\n return typeof value === 'symbol' || (isObjectLike(value) && getTag(value) === '[object Symbol]');\n}\nexport function isDate(value: any): value is Date {\n return isObjectLike(value) && getTag(value) === '[object Date]';\n}\nexport const isFunction = (val: unknown): val is Function => typeof val === 'function';\n/**\n * 整数\n */\nexport function isInteger(val: any): val is number {\n return isNumber(val) && val % 1 === 0;\n}\n/**\n * 小数\n */\nexport function isDecimal(val: any): val is number {\n return isNumber(val) && val % 1 !== 0;\n}\n/**\n * 负数\n */\nexport function isNegative(val: any): val is number {\n return isNumber(val) && val < 0;\n}\n/**\n * 正数\n */\nexport function isPositive(val: any): val is number {\n return isNumber(val) && val > 0;\n}\n/**\n * 奇数\n */\nexport function isOdd(val: any): val is number {\n return isNumber(val) && val % 2 !== 0;\n}\n/**\n * 偶数\n */\nexport function isEven(val: any): val is number {\n return isNumber(val) && val % 2 === 0;\n}\n\nexport function isUndefined(val: any): val is undefined {\n return val === undefined;\n}\nexport function isNull(val: any): val is null {\n return val === null;\n}\nexport function isNil(val: any): val is null | undefined {\n return isUndefined(val) || isNull(val);\n}\n/**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n */\nexport function isError(value: any): value is Error {\n if (!isObjectLike(value)) {\n return false;\n }\n const tag = getTag(value);\n return (\n tag === '[object Error]' ||\n tag === '[object DOMException]' ||\n (typeof value.message === 'string' && typeof value.name === 'string' && !isPlainObject(value))\n );\n}\nexport function isPlainObject(value: any): value is object {\n if (!isObjectLike(value) || getTag(value) !== '[object Object]') {\n return false;\n }\n if (Object.getPrototypeOf(value) === null) {\n return true;\n }\n let proto = value;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(value) === proto;\n}\n\nexport const isHttps = () => {\n return window.location.protocol.startsWith('https');\n};\nexport const isClient = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nexport const isIOS = /* #__PURE__ */ getIsIOS();\n\nfunction getIsIOS() {\n return (\n isClient &&\n window?.navigator?.userAgent &&\n (/iP(?:ad|hone|od)/.test(window.navigator.userAgent) ||\n // The new iPad Pro Gen3 does not identify itself as iPad, but as Macintosh.\n // https://github.com/vueuse/vueuse/issues/3577\n (window?.navigator?.maxTouchPoints > 2 && /iPad|Macintosh/.test(window?.navigator.userAgent)))\n );\n}\n\n/**\n * 文件类型枚举\n */\nexport enum FileType {\n Video = 'Video',\n Image = 'Image',\n Pdf = 'Pdf',\n Word = 'Word',\n Excel = 'Excel',\n Ppt = 'Ppt',\n Text = 'Text',\n Psd = 'Psd',\n Zip = 'Zip',\n}\n\n/**\n * 不同文件类型的扩展名配置\n */\nexport const FILE_EXTENSIONS: Record<FileType, readonly string[]> = {\n [FileType.Video]: ['mp4', 'avi', 'rmvb', 'rm', 'wmv', 'mpg', 'mpeg', 'mov', 'mkv', 'flv'],\n [FileType.Image]: ['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg', 'bmp'],\n [FileType.Pdf]: ['pdf'],\n [FileType.Word]: ['doc', 'docx'],\n [FileType.Excel]: ['xls', 'xlsx'],\n [FileType.Ppt]: ['ppt', 'pptx'],\n [FileType.Text]: ['txt'],\n [FileType.Psd]: ['psd'],\n [FileType.Zip]: ['zip', 'rar', '7z'],\n} as const;\n\n/**\n * 创建用于匹配文件扩展名的正则表达式\n * @param extensions 文件扩展名数组\n * @returns 用于匹配文件扩展名的正则表达式\n */\nconst createExtensionRegex = (extensions: readonly string[]): RegExp => {\n return new RegExp(`\\\\.(${extensions.join('|')})$`, 'i');\n};\n\n/**\n * 通用函数,用于检查URL是否匹配特定文件扩展名\n * @param url 要检查的文件URL或文件名\n * @param type 要检查的文件类型\n * @returns 布尔值,表示URL是否匹配该文件类型\n */\nconst isFileType = (url: string, type: FileType): boolean => {\n if (!isString(url)) return false;\n // 首先通过URL去除查询参数和哈希值\n const baseUrl = url.split('?')[0].split('#')[0];\n const regex = createExtensionRegex(FILE_EXTENSIONS[type]);\n return regex.test(baseUrl);\n};\n\n/**\n * @description 判断是否为视频\n * @param url 文件链接 或 文件名\n */\nexport const isVideoUrl = (url: string): boolean => isFileType(url, FileType.Video);\n\n/**\n * @description 判断是否为图片\n * @param url 文件链接 或 文件名\n */\nexport const isImageUrl = (url: string): boolean => isFileType(url, FileType.Image);\n\n/**\n * @description 判断是否为PDF\n * @param url 文件链接 或 文件名\n */\nexport const isPDF = (url: string): boolean => isFileType(url, FileType.Pdf);\n\n/**\n * @description 是否为Word文档\n * @param url 文件链接 或 文件名\n */\nexport const isWord = (url: string): boolean => isFileType(url, FileType.Word);\n\n/**\n * @description 是否为Excel文件\n * @param url 文件链接 或 文件名\n */\nexport const isExcel = (url: string): boolean => isFileType(url, FileType.Excel);\n\n/**\n * @description 是否为PPT文件\n * @param url 文件链接 或 文件名\n */\nexport const isPPT = (url: string): boolean => isFileType(url, FileType.Ppt);\n\n/**\n * @description 是否为文本文件\n * @param url 文件链接 或 文件名\n */\nexport const isText = (url: string): boolean => isFileType(url, FileType.Text);\n\n/**\n * @description 是否为PSD文件\n * @param url 文件链接 或 文件名\n */\nexport const isPSD = (url: string): boolean => isFileType(url, FileType.Psd);\n\n/**\n * @description 判断是否为压缩包\n * @param url 文件链接 或 文件名\n */\nexport const isZip = (url: string): boolean => isFileType(url, FileType.Zip);\n"],"names":["FileType"],"mappings":"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"}
1
+ {"version":3,"file":"is.js","sources":["../../../../../packages/utils/src/is.ts"],"sourcesContent":["const toString = Object.prototype.toString;\nexport function getTag(value: any): string {\n if (value === null) {\n return '[object Null]';\n } else if (value === undefined) {\n return '[object Undefined]';\n }\n return toString.call(value);\n}\nexport function isObjectLike(value: any): boolean {\n return typeof value === 'object' && value !== null;\n}\nexport function isBoolean(value: any): value is boolean {\n return value === true || value === false || (isObjectLike(value) && getTag(value) === '[object Boolean]');\n}\n\nexport function isString(value: any): value is string {\n return typeof value === 'string' || (isObjectLike(value) && getTag(value) === '[object String]');\n}\n\nexport function isNumber(value: any): value is number {\n return typeof value === 'number' || (isObjectLike(value) && getTag(value) === '[object Number]');\n}\nexport function isSymbol(value: any): value is symbol {\n return typeof value === 'symbol' || (isObjectLike(value) && getTag(value) === '[object Symbol]');\n}\nexport function isDate(value: any): value is Date {\n return isObjectLike(value) && getTag(value) === '[object Date]';\n}\nexport const isFunction = (val: unknown): val is Function => typeof val === 'function';\n/**\n * 整数\n */\nexport function isInteger(val: any): val is number {\n return isNumber(val) && val % 1 === 0;\n}\n/**\n * 小数\n */\nexport function isDecimal(val: any): val is number {\n return isNumber(val) && val % 1 !== 0;\n}\n/**\n * 负数\n */\nexport function isNegative(val: any): val is number {\n return isNumber(val) && val < 0;\n}\n/**\n * 正数\n */\nexport function isPositive(val: any): val is number {\n return isNumber(val) && val > 0;\n}\n/**\n * 奇数\n */\nexport function isOdd(val: any): val is number {\n return isNumber(val) && val % 2 !== 0;\n}\n/**\n * 偶数\n */\nexport function isEven(val: any): val is number {\n return isNumber(val) && val % 2 === 0;\n}\n\nexport function isUndefined(val: any): val is undefined {\n return val === undefined;\n}\nexport function isNull(val: any): val is null {\n return val === null;\n}\nexport function isNil(val: any): val is null | undefined {\n return isUndefined(val) || isNull(val);\n}\n/**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n */\nexport function isError(value: any): value is Error {\n if (!isObjectLike(value)) {\n return false;\n }\n const tag = getTag(value);\n return (\n tag === '[object Error]' ||\n tag === '[object DOMException]' ||\n (typeof value.message === 'string' && typeof value.name === 'string' && !isPlainObject(value))\n );\n}\nexport function isPlainObject(value: any): value is object {\n if (!isObjectLike(value) || getTag(value) !== '[object Object]') {\n return false;\n }\n if (Object.getPrototypeOf(value) === null) {\n return true;\n }\n let proto = value;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(value) === proto;\n}\n\nexport const isHttps = () => {\n return window.location.protocol.startsWith('https');\n};\nexport const isClient = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nexport const isIOS = /* #__PURE__ */ getIsIOS();\n\nfunction getIsIOS() {\n return (\n isClient &&\n window?.navigator?.userAgent &&\n (/iP(?:ad|hone|od)/.test(window.navigator.userAgent) ||\n // The new iPad Pro Gen3 does not identify itself as iPad, but as Macintosh.\n // https://github.com/vueuse/vueuse/issues/3577\n (window?.navigator?.maxTouchPoints > 2 && /iPad|Macintosh/.test(window?.navigator.userAgent)))\n );\n}\n\n/**\n * 文件类型枚举\n */\nexport enum FileType {\n Video = 'Video',\n Image = 'Image',\n Pdf = 'Pdf',\n Word = 'Word',\n Excel = 'Excel',\n Ppt = 'Ppt',\n Text = 'Text',\n Psd = 'Psd',\n Zip = 'Zip',\n}\n\n/**\n * 不同文件类型的扩展名配置\n */\nexport const FILE_EXTENSIONS: Record<FileType, readonly string[]> = {\n [FileType.Video]: ['mp4', 'avi', 'rmvb', 'rm', 'wmv', 'mpg', 'mpeg', 'mov', 'mkv', 'flv'],\n [FileType.Image]: ['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg', 'bmp'],\n [FileType.Pdf]: ['pdf'],\n [FileType.Word]: ['doc', 'docx'],\n [FileType.Excel]: ['xls', 'xlsx'],\n [FileType.Ppt]: ['ppt', 'pptx'],\n [FileType.Text]: ['txt'],\n [FileType.Psd]: ['psd'],\n [FileType.Zip]: ['zip', 'rar', '7z'],\n} as const;\n\n/**\n * 创建用于匹配文件扩展名的正则表达式\n * @param extensions 文件扩展名数组\n * @returns 用于匹配文件扩展名的正则表达式\n */\nconst createExtensionRegex = (extensions: readonly string[]): RegExp => {\n return new RegExp(`\\\\.(${extensions.join('|')})$`, 'i');\n};\n\n/**\n * 通用函数,用于检查URL是否匹配特定文件扩展名\n * @param url 要检查的文件URL或文件名\n * @param type 要检查的文件类型\n * @returns 布尔值,表示URL是否匹配该文件类型\n */\nconst isFileType = (url: string, type: FileType): boolean => {\n if (!isString(url)) return false;\n // 首先通过URL去除查询参数和哈希值\n const baseUrl = url.split('?')[0];\n const regex = createExtensionRegex(FILE_EXTENSIONS[type]);\n return regex.test(baseUrl);\n};\n\n/**\n * @description 判断是否为视频\n * @param url 文件链接 或 文件名\n */\nexport const isVideoUrl = (url: string): boolean => isFileType(url, FileType.Video);\n\n/**\n * @description 判断是否为图片\n * @param url 文件链接 或 文件名\n */\nexport const isImageUrl = (url: string): boolean => isFileType(url, FileType.Image);\n\n/**\n * @description 判断是否为PDF\n * @param url 文件链接 或 文件名\n */\nexport const isPDF = (url: string): boolean => isFileType(url, FileType.Pdf);\n\n/**\n * @description 是否为Word文档\n * @param url 文件链接 或 文件名\n */\nexport const isWord = (url: string): boolean => isFileType(url, FileType.Word);\n\n/**\n * @description 是否为Excel文件\n * @param url 文件链接 或 文件名\n */\nexport const isExcel = (url: string): boolean => isFileType(url, FileType.Excel);\n\n/**\n * @description 是否为PPT文件\n * @param url 文件链接 或 文件名\n */\nexport const isPPT = (url: string): boolean => isFileType(url, FileType.Ppt);\n\n/**\n * @description 是否为文本文件\n * @param url 文件链接 或 文件名\n */\nexport const isText = (url: string): boolean => isFileType(url, FileType.Text);\n\n/**\n * @description 是否为PSD文件\n * @param url 文件链接 或 文件名\n */\nexport const isPSD = (url: string): boolean => isFileType(url, FileType.Psd);\n\n/**\n * @description 判断是否为压缩包\n * @param url 文件链接 或 文件名\n */\nexport const isZip = (url: string): boolean => isFileType(url, FileType.Zip);\n"],"names":["FileType"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "giime",
3
- "version": "0.6.39",
3
+ "version": "0.6.40",
4
4
  "description": "A Component Library for Vue 3",
5
5
  "keywords": [
6
6
  "giime",