vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
1 lines • 19.2 kB
Source Map (JSON)
{"version":3,"file":"upload-file.vue2.cjs","sources":["../../../components/upload/upload-file.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { CollapseTransition } from '@/components/collapse-transition'\nimport { Icon } from '@/components/icon'\nimport { Progress } from '@/components/progress'\nimport { Renderer } from '@/components/renderer'\n\nimport { computed, reactive, shallowReadonly, toRef } from 'vue'\n\nimport { emitEvent, useIcons, useLocale, useNameHelper, useProps } from '@vexip-ui/config'\nimport { toFixed } from '@vexip-ui/utils'\nimport { uploadFileProps } from './props'\nimport { useFileIcons } from './file-icon'\nimport { StatusType, uploadListTypes } from './symbol'\n\nimport type { UploadFileSlots, UploadFileState } from './symbol'\n\ndefineOptions({ name: 'UploadFile' })\n\nconst imageExtRE = /\\.(webp|svg|png|gif|jpg|jpeg|jfif|bmp|dpg|ico)$/i\nconst imageBase64RE = /^data:image\\//\n\nfunction isImage(file: UploadFileState) {\n if (file.type) {\n return file.type.startsWith('image/')\n }\n\n const { name, url, base64 } = file\n\n return !!(\n imageExtRE.test(name) ||\n (url && (imageExtRE.test(url) || imageBase64RE.test(url))) ||\n (base64 && imageBase64RE.test(base64))\n )\n}\n\nconst _props = defineProps(uploadFileProps)\nconst props = useProps('uploadFile', _props, {\n locale: null,\n file: {\n default: () => ({}) as UploadFileState,\n static: true,\n },\n iconRenderer: {\n default: null,\n isFunc: true,\n },\n listType: {\n default: 'name',\n validator: value => uploadListTypes.includes(value),\n },\n loadingText: null,\n selectToAdd: false,\n precision: 2,\n canPreview: {\n default: isImage,\n isFunc: true,\n },\n slots: () => ({}),\n})\n\ndefineSlots<UploadFileSlots>()\n\nconst nh = useNameHelper('upload')\nconst locale = useLocale('upload', toRef(props, 'locale'))\nconst icons = useIcons()\nconst fileIcons = useFileIcons(icons)\n\nconst useIconRenderer = computed(() => typeof props.iconRenderer === 'function')\nconst fileName = computed(() => props.file.path || props.file.name)\nconst status = computed(() => props.file.status)\nconst percentage = computed(() => toFixed(props.file.percentage, props.precision))\nconst showThumb = computed(() => isImage(props.file) && (props.file.url || props.file.base64))\n\nconst slotParams = shallowReadonly(\n reactive({\n file: toRef(props, 'file'),\n status,\n percentage,\n }),\n)\n\nfunction getFileExtension(file: UploadFileState) {\n return file.name.split('.').pop()!.toLocaleLowerCase()\n}\n\nfunction getFileIcon(file: UploadFileState, scale = 1) {\n const extension = getFileExtension(file)\n const icon = extension\n ? fileIcons.value[extension] || fileIcons.value.default\n : fileIcons.value.default\n\n return { ...icon, scale: +(icon.scale || 1) * scale }\n}\n\nfunction handleDelete(file: UploadFileState) {\n emitEvent(props.onDelete, file)\n}\n\nfunction handlePreview(file: UploadFileState) {\n emitEvent(props.onPreview, file)\n}\n\nfunction imageToBase64(file: UploadFileState) {\n if (!file.source || !isImage(props.file)) return\n\n const reader = new FileReader()\n\n reader.readAsDataURL(file.source)\n reader.onload = () => {\n if (file.status !== StatusType.DELETE) {\n file.base64 = reader.result?.toString() ?? null\n }\n }\n}\n</script>\n\n<template>\n <li\n :class=\"[\n nh.be('file'),\n nh.bem('file', props.listType),\n nh.bem('file', status),\n props.inherit && nh.bem('file', 'inherit')\n ]\"\n :title=\"fileName\"\n tabindex=\"-1\"\n >\n <slot v-bind=\"slotParams\">\n <Renderer :renderer=\"props.slots.default\" :data=\"slotParams\">\n <template v-if=\"props.listType === 'name'\">\n <div :class=\"nh.be('label')\">\n <div :class=\"[nh.be('icon'), nh.be('file-icon')]\">\n <slot name=\"icon\" v-bind=\"slotParams\">\n <Renderer :renderer=\"props.slots.icon\" :data=\"slotParams\">\n <Renderer\n v-if=\"useIconRenderer\"\n :renderer=\"props.iconRenderer\"\n :data=\"{ file: props.file }\"\n ></Renderer>\n <Icon v-else v-bind=\"getFileIcon(props.file)\"></Icon>\n </Renderer>\n </slot>\n </div>\n <span :class=\"nh.be('filename')\">\n {{ fileName }}\n </span>\n </div>\n <div :class=\"nh.be('actions')\">\n <span\n v-if=\"status === 'uploading'\"\n style=\"margin-inline-end: 0.5em\"\n :class=\"nh.be('percentage')\"\n >\n {{ `${percentage}%` }}\n </span>\n <div v-if=\"status === 'success'\" :class=\"[nh.be('icon'), nh.be('success')]\">\n <Icon v-bind=\"icons.success\"></Icon>\n </div>\n <div v-else-if=\"status === 'fail'\" :class=\"[nh.be('icon'), nh.be('fail')]\">\n <Icon v-bind=\"icons.warning\"></Icon>\n </div>\n <div v-else-if=\"status === 'uploading'\" :class=\"[nh.be('icon'), nh.be('loading')]\">\n <Icon v-bind=\"icons.loading\"></Icon>\n </div>\n <button\n type=\"button\"\n :class=\"[nh.be('icon'), nh.be('close')]\"\n :aria-label=\"locale.ariaLabel.delete\"\n @click=\"handleDelete(props.file)\"\n >\n <Icon v-bind=\"icons.delete\"></Icon>\n </button>\n </div>\n <div v-if=\"status === 'uploading'\" :class=\"nh.be('progress')\">\n <Progress\n inherit\n info-type=\"none\"\n :stroke-width=\"2\"\n :percentage=\"props.file.percentage\"\n :precision=\"props.precision\"\n ></Progress>\n </div>\n </template>\n <template v-else-if=\"props.listType === 'thumbnail' || props.listType === 'card'\">\n <div :class=\"nh.be('card')\">\n <div :class=\"nh.be('thumbnail')\">\n <template v-if=\"status === 'uploading'\">\n <div v-if=\"props.listType === 'thumbnail'\" :class=\"nh.be('progress')\">\n <span style=\"margin-bottom: 0.3em\">\n {{ props.loadingText ?? locale.uploading }}\n </span>\n <Progress\n inherit\n info-type=\"none\"\n :stroke-width=\"2\"\n :percentage=\"props.file.percentage\"\n :precision=\"props.precision\"\n ></Progress>\n <span style=\"margin-top: 3px\" :class=\"nh.be('percentage')\">\n {{ `${percentage}%` }}\n </span>\n </div>\n <Icon\n v-else\n v-bind=\"icons.loading\"\n :scale=\"+(icons.loading.scale || 1) * 1.8\"\n label=\"loading\"\n ></Icon>\n </template>\n <img\n v-else-if=\"showThumb\"\n :class=\"nh.be('image')\"\n :src=\"props.file.url || props.file.base64 || ''\"\n :alt=\"fileName\"\n />\n <template v-else>\n {{ imageToBase64(props.file) }}\n <slot name=\"icon\" v-bind=\"slotParams\">\n <Renderer :renderer=\"props.slots.icon\" :data=\"slotParams\">\n <Renderer\n v-if=\"useIconRenderer\"\n :renderer=\"props.iconRenderer\"\n :data=\"{ file: props.file }\"\n ></Renderer>\n <Icon v-else v-bind=\"getFileIcon(props.file, 2.8)\"></Icon>\n </Renderer>\n </slot>\n </template>\n </div>\n <div v-if=\"props.listType === 'card'\" :class=\"nh.be('info')\">\n <span :class=\"nh.be('filename')\">\n {{ fileName }}\n </span>\n <CollapseTransition>\n <div v-if=\"status === 'uploading'\" :class=\"nh.be('progress')\">\n <Progress\n inherit\n info-type=\"none\"\n :stroke-width=\"4\"\n :percentage=\"props.file.percentage\"\n :precision=\"props.precision\"\n ></Progress>\n </div>\n </CollapseTransition>\n </div>\n <div\n v-if=\"props.listType === 'card' || status !== 'uploading'\"\n :class=\"nh.be('actions')\"\n >\n <div v-if=\"props.listType === 'thumbnail'\" :class=\"nh.be('mask')\"></div>\n <button\n type=\"button\"\n :class=\"[\n nh.be('icon'),\n nh.be('action'),\n {\n [nh.bem('action', 'disabled')]: !props.canPreview(props.file)\n }\n ]\"\n :disabled=\"!props.canPreview(props.file)\"\n :aria-label=\"locale.ariaLabel.preview\"\n @click=\"handlePreview(props.file)\"\n >\n <Icon v-bind=\"icons.preview\" :scale=\"+(icons.preview.scale || 1) * 1.4\"></Icon>\n </button>\n <button\n type=\"button\"\n :class=\"[nh.be('icon'), nh.be('action')]\"\n :aria-label=\"locale.ariaLabel.delete\"\n @click=\"handleDelete(props.file)\"\n >\n <Icon v-bind=\"icons.delete\" :scale=\"+(icons.delete.scale || 1) * 1.4\"></Icon>\n </button>\n </div>\n </div>\n </template>\n </Renderer>\n </slot>\n </li>\n</template>\n"],"names":["imageExtRE","imageBase64RE","isImage","file","name","url","base64","_props","__props","props","useProps","value","uploadListTypes","nh","useNameHelper","locale","useLocale","toRef","icons","useIcons","fileIcons","useFileIcons","useIconRenderer","computed","fileName","status","percentage","toFixed","showThumb","slotParams","shallowReadonly","reactive","getFileExtension","getFileIcon","scale","extension","icon","handleDelete","emitEvent","handlePreview","imageToBase64","reader","StatusType","_a","_createElementBlock","_normalizeClass","_unref","_renderSlot","_ctx","_normalizeProps","_guardReactiveProps","_createVNode","Renderer","_Fragment","_createElementVNode","_createBlock","_openBlock","Icon","_mergeProps","_cache","$event","Progress","_hoisted_3","_toDisplayString","_createTextVNode","CollapseTransition"],"mappings":"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"}