|
1 | 1 | import { extension as getExtensionFromMimeType, extension as getMimeTypeFromExtension } from 'mime-types';
|
2 |
| -import type { Ref } from 'vue'; |
| 2 | +import type { MaybeRef } from 'vue'; |
3 | 3 | import _ from 'lodash';
|
| 4 | +import { get } from '@vueuse/core'; |
4 | 5 |
|
5 | 6 | export {
|
6 | 7 | getMimeTypeFromBase64,
|
7 | 8 | getMimeTypeFromExtension, getExtensionFromMimeType,
|
8 |
| - useDownloadFileFromBase64, useDownloadFileFromBase64Refs, |
| 9 | + useDownloadFileFromBase64, |
| 10 | + previewImageFromBase64, |
9 | 11 | };
|
10 | 12 |
|
11 | 13 | const commonMimeTypesSignatures = {
|
@@ -74,21 +76,34 @@ function downloadFromBase64({ sourceValue, filename, extension, fileMimeType }:
|
74 | 76 | }
|
75 | 77 |
|
76 | 78 | function useDownloadFileFromBase64(
|
77 |
| - { source, filename, extension, fileMimeType }: |
78 |
| - { source: Ref<string>; filename?: string; extension?: string; fileMimeType?: string }) { |
| 79 | + { source, filename, extension }: |
| 80 | + { source: MaybeRef<string>; filename?: MaybeRef<string>; extension?: MaybeRef<string> }) { |
79 | 81 | return {
|
80 | 82 | download() {
|
81 |
| - downloadFromBase64({ sourceValue: source.value, filename, extension, fileMimeType }); |
| 83 | + downloadFromBase64({ sourceValue: get(source), filename: get(filename), extension: get(extension) }); |
82 | 84 | },
|
83 | 85 | };
|
84 | 86 | }
|
85 | 87 |
|
86 |
| -function useDownloadFileFromBase64Refs( |
87 |
| - { source, filename, extension }: |
88 |
| - { source: Ref<string>; filename?: Ref<string>; extension?: Ref<string> }) { |
89 |
| - return { |
90 |
| - download() { |
91 |
| - downloadFromBase64({ sourceValue: source.value, filename: filename?.value, extension: extension?.value }); |
92 |
| - }, |
93 |
| - }; |
| 88 | +function previewImageFromBase64(base64String: string): HTMLImageElement { |
| 89 | + if (base64String === '') { |
| 90 | + throw new Error('Base64 string is empty'); |
| 91 | + } |
| 92 | + |
| 93 | + const img = document.createElement('img'); |
| 94 | + img.src = base64String; |
| 95 | + |
| 96 | + const container = document.createElement('div'); |
| 97 | + container.appendChild(img); |
| 98 | + |
| 99 | + const previewContainer = document.getElementById('previewContainer'); |
| 100 | + if (previewContainer) { |
| 101 | + previewContainer.innerHTML = ''; |
| 102 | + previewContainer.appendChild(container); |
| 103 | + } |
| 104 | + else { |
| 105 | + throw new Error('Preview container element not found'); |
| 106 | + } |
| 107 | + |
| 108 | + return img; |
94 | 109 | }
|
0 commit comments