UNPKG

tdesign-mobile-vue

Version:
1 lines 7.25 kB
{"version":3,"file":"utils.mjs","sources":["../../../../src/_common/js/image-viewer/utils.ts"],"sourcesContent":["import { isArray, isString } from 'lodash-es';\nimport type { ImageInfo, Images } from './types';\n\nconst isSameOrigin = (url: string) => {\n try {\n const imgUrl = new URL(url, window.location.href);\n return imgUrl.origin === window.location.origin;\n } catch {\n return false;\n }\n};\n\nconst directDownload = (imgSrc: string, name: string) => {\n const a = document.createElement('a');\n a.download = name;\n a.href = imgSrc;\n a.click();\n a.remove();\n};\n\nconst fileDownload = (obj: Blob | MediaSource, name: string) => {\n const url = URL.createObjectURL(obj);\n const a = document.createElement('a');\n a.href = url;\n a.download = name;\n a.click();\n a.remove();\n URL.revokeObjectURL(url);\n};\n\nconst canvasDownload = (imgSrc: string, name: string) => {\n const image = new Image();\n image.setAttribute('crossOrigin', 'anonymous');\n\n image.onload = () => {\n const canvas = document.createElement('canvas');\n canvas.width = image.width;\n canvas.height = image.height;\n\n const context = canvas.getContext('2d');\n context.drawImage(image, 0, 0, image.width, image.height);\n\n const extension = name.split('.').pop()?.toLowerCase() || 'png';\n const mimeType = `image/${extension === 'jpg' ? 'jpeg' : extension}`;\n\n canvas.toBlob((blob) => {\n fileDownload(blob, name);\n }, mimeType);\n };\n image.src = imgSrc;\n};\n\nexport const downloadImage = (imgSrc: string | File) => {\n const randomName = Math.random().toString(32).slice(2);\n\n if (imgSrc instanceof File) {\n fileDownload(imgSrc, imgSrc.name);\n return;\n }\n\n // fix: https://github.com/Tencent/tdesign-vue-next/issues/2936\n // 当链接携带了参数时,需处理掉参数再取图片名称,否则扩展名会与参数链接导致原扩展名失效\n // 例如:img.png?sign=xxx 不处理参数会被转成 img.png_sign=xxx\n const name = imgSrc?.split?.('?')?.[0]?.split?.('#')?.[0]?.split?.('/').pop() || randomName;\n\n if (isSameOrigin(imgSrc)) {\n directDownload(imgSrc, name);\n } else {\n canvasDownload(imgSrc, name);\n }\n};\n\nconst isImageInfo = (image: string | File | ImageInfo): image is ImageInfo =>\n !!image && !isString(image) && !(image instanceof File);\n\nexport const formatImages = (images: Images): ImageInfo[] => {\n if (!isArray(images)) return [];\n return images.map((item) => {\n if (isImageInfo(item)) {\n return {\n download: true,\n thumbnail: item.mainImage,\n ...item,\n };\n }\n return {\n mainImage: item,\n thumbnail: item,\n download: true,\n };\n });\n};\n"],"names":["isSameOrigin","url","imgUrl","URL","window","location","href","origin","_unused","directDownload","imgSrc","name","a","document","createElement","download","click","remove","fileDownload","obj","createObjectURL","revokeObjectURL","canvasDownload","image","Image","setAttribute","onload","_name$split$pop","canvas","width","height","context","getContext","drawImage","extension","split","pop","toLowerCase","mimeType","concat","toBlob","blob","src","downloadImage","_imgSrc$split","_imgSrc$split$split","_imgSrc$split$split$s","randomName","Math","random","toString","slice","File","call","isImageInfo","isString","formatImages","images","isArray","map","item","_objectSpread","thumbnail","mainImage"],"mappings":"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"}