{"version":3,"file":"preview-file.mjs","sources":["../../../../../../packages/components/preview-file/src/preview-file.vue"],"sourcesContent":["<template>\n  <div :class=\"ns.b()\">\n    <template v-for=\"(item, index) in calcFileList\">\n      <slot v-bind=\"{ data: item.data, meta: item.meta }\">\n        <div\n          :key=\"index\"\n          :class=\"ns.e('item')\"\n          @click=\"() => handleClick(item)\"\n        >\n          <div :class=\"ns.e('icon')\">\n            <el-icon :size=\"item.meta.iconSize\" :color=\"item.meta.iconColor\">\n              <el-renderer :renderer=\"() => h(item.meta.icon)\" />\n            </el-icon>\n          </div>\n          <div :class=\"ns.e('content')\">\n            <div :class=\"ns.e('content-name')\">\n              <el-text>{{ item.meta.name }}</el-text>\n            </div>\n            <div :class=\"ns.e('content-desc')\">\n              <el-text type=\"info\">{{ item.meta.size }}</el-text>\n            </div>\n          </div>\n        </div>\n      </slot>\n    </template>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, h } from 'vue'\nimport { ElIcon, useNamespace } from 'element-plus'\nimport { ElRenderer } from '@element-plus/components/renderer/index'\nimport { previewFileEmits, previewFileProps } from './preview-file'\nimport { getIconState, parseFileName, parseSize } from './helper'\nimport type { Ref } from 'vue'\nimport type { FileItem } from './preview-file'\nimport type { UploadUserFile } from 'element-plus'\n\ndefineOptions({\n  name: 'ElPreviewFile',\n})\n\nconst ns = useNamespace('preview-file')\nconst props = defineProps(previewFileProps)\nconst emit = defineEmits(previewFileEmits)\n\nconst calcFileList: Ref<FileItem[]> = computed(() => {\n  const { fileList: list } = props\n  return list.map((item: UploadUserFile) => {\n    const { fileName, fileNameSuffix } = parseFileName(item.name)\n    return {\n      data: item,\n      meta: {\n        name: item.name,\n        fileName,\n        fileNameSuffix,\n        size: parseSize(item.size ?? 0),\n        ...getIconState(fileNameSuffix),\n      },\n    }\n  })\n})\n\nconst handleClick = (item: FileItem) => emit('click', item)\n</script>\n"],"names":[],"mappings":";;;;;;;mCAsCc,CAAA;AAAA,EACZ,IAAM,EAAA,eAAA;AACR,CAAA,CAAA,CAAA;;;;;;AAEM,IAAA,MAAA,EAAA,GAAK,aAAa,cAAc,CAAA,CAAA;AACtC,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AACd,IAAA,MAAM,IAAO,GAAA,MAAA,CAAA;AAEP,IAAA,MAAA,YAAA,GAAgC,SAAS,MAAM;AAC7C,MAAA,MAAA,EAAE,QAAU,EAAA,IAAA,EAAS,GAAA,KAAA,CAAA;AACpB,MAAA,OAAA,IAAA,CAAK,GAAI,CAAA,CAAC,IAAyB,KAAA;;AACxC,QAAA,MAAM,EAAE,QAAU,EAAA,cAAA,EAAmB,GAAA,aAAA,CAAc,KAAK,IAAI,CAAA,CAAA;AACrD,QAAA,OAAA;AAAA,UACL,IAAM,EAAA,IAAA;AAAA,UACN,IAAM,EAAA;AAAA,YACJ,MAAM,IAAK,CAAA,IAAA;AAAA,YACX,QAAA;AAAA,YACA,cAAA;AAAA,YACA,IAAM,EAAA,SAAA,CAAA,CAAU,EAAK,GAAA,IAAA,CAAA,IAAA,KAAL,YAAa,CAAC,CAAA;AAAA,YAC9B,GAAG,aAAa,cAAc,CAAA;AAAA,WAChC;AAAA,SACF,CAAA;AAAA,OACD,CAAA,CAAA;AAAA,KACF,CAAA,CAAA;AAED,IAAA,MAAM,WAAc,GAAA,CAAC,IAAmB,KAAA,IAAA,CAAK,SAAS,IAAI,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}