1
1
import { extension as getExtensionFromMimeType , extension as getMimeTypeFromExtension } from 'mime-types' ;
2
- import type { MaybeRef } from 'vue' ;
2
+ import type { MaybeRef , Ref } from 'vue' ;
3
3
import _ from 'lodash' ;
4
4
import { get } from '@vueuse/core' ;
5
5
6
6
export {
7
7
getMimeTypeFromBase64 ,
8
8
getMimeTypeFromExtension , getExtensionFromMimeType ,
9
- useDownloadFileFromBase64 ,
9
+ useDownloadFileFromBase64 , useDownloadFileFromBase64Refs ,
10
10
previewImageFromBase64 ,
11
11
} ;
12
12
@@ -43,30 +43,17 @@ function getFileExtensionFromMimeType({
43
43
} ) {
44
44
if ( mimeType ) {
45
45
return getExtensionFromMimeType ( mimeType ) ?? defaultExtension ;
46
- return getExtensionFromMimeType ( mimeType ) ?? defaultExtension ;
47
46
}
48
47
49
48
return defaultExtension ;
50
49
}
51
50
52
- function downloadFromBase64 ( { sourceValue, filename, extension, fileMimeType } :
53
- { sourceValue : string ; filename ?: string ; extension ?: string ; fileMimeType ?: string } ) {
54
- if ( sourceValue === '' ) {
55
- throw new Error ( 'Base64 string is empty' ) ;
56
- }
57
51
function downloadFromBase64 ( { sourceValue, filename, extension, fileMimeType } :
58
52
{ sourceValue : string ; filename ?: string ; extension ?: string ; fileMimeType ?: string } ) {
59
53
if ( sourceValue === '' ) {
60
54
throw new Error ( 'Base64 string is empty' ) ;
61
55
}
62
56
63
- const defaultExtension = extension ?? 'txt' ;
64
- const { mimeType } = getMimeTypeFromBase64 ( { base64String : sourceValue } ) ;
65
- let base64String = sourceValue ;
66
- if ( ! mimeType ) {
67
- const targetMimeType = fileMimeType ?? getMimeTypeFromExtension ( defaultExtension ) ;
68
- base64String = `data:${ targetMimeType } ;base64,${ sourceValue } ` ;
69
- }
70
57
const defaultExtension = extension ?? 'txt' ;
71
58
const { mimeType } = getMimeTypeFromBase64 ( { base64String : sourceValue } ) ;
72
59
let base64String = sourceValue ;
@@ -75,12 +62,6 @@ function downloadFromBase64({ sourceValue, filename, extension, fileMimeType }:
75
62
base64String = `data:${ targetMimeType } ;base64,${ sourceValue } ` ;
76
63
}
77
64
78
- const cleanExtension = extension ?? getFileExtensionFromMimeType (
79
- { mimeType, defaultExtension } ) ;
80
- let cleanFileName = filename ?? `file.${ cleanExtension } ` ;
81
- if ( extension && ! cleanFileName . endsWith ( `.${ extension } ` ) ) {
82
- cleanFileName = `${ cleanFileName } .${ cleanExtension } ` ;
83
- }
84
65
const cleanExtension = extension ?? getFileExtensionFromMimeType (
85
66
{ mimeType, defaultExtension } ) ;
86
67
let cleanFileName = filename ?? `file.${ cleanExtension } ` ;
@@ -127,25 +108,12 @@ function previewImageFromBase64(base64String: string): HTMLImageElement {
127
108
return img ;
128
109
}
129
110
130
- function previewImageFromBase64 ( base64String : string ) : HTMLImageElement {
131
- if ( base64String === '' ) {
132
- throw new Error ( 'Base64 string is empty' ) ;
133
- }
134
-
135
- const img = document . createElement ( 'img' ) ;
136
- img . src = base64String ;
137
-
138
- const container = document . createElement ( 'div' ) ;
139
- container . appendChild ( img ) ;
140
-
141
- const previewContainer = document . getElementById ( 'previewContainer' ) ;
142
- if ( previewContainer ) {
143
- previewContainer . innerHTML = '' ;
144
- previewContainer . appendChild ( container ) ;
145
- }
146
- else {
147
- throw new Error ( 'Preview container element not found' ) ;
148
- }
149
-
150
- return img ;
111
+ function useDownloadFileFromBase64Refs (
112
+ { source, filename, extension } :
113
+ { source : Ref < string > ; filename ?: Ref < string > ; extension ?: Ref < string > } ) {
114
+ return {
115
+ download ( ) {
116
+ downloadFromBase64 ( { sourceValue : source . value , filename : filename ?. value , extension : extension ?. value } ) ;
117
+ } ,
118
+ } ;
151
119
}
0 commit comments