diff --git a/src/composable/downloadBase64.ts b/src/composable/downloadBase64.ts index 367c6a3e..4d9b1e7c 100644 --- a/src/composable/downloadBase64.ts +++ b/src/composable/downloadBase64.ts @@ -1,11 +1,13 @@ import { extension as getExtensionFromMimeType, extension as getMimeTypeFromExtension } from 'mime-types'; -import type { Ref } from 'vue'; +import type { MaybeRef } from 'vue'; import _ from 'lodash'; +import { get } from '@vueuse/core'; export { getMimeTypeFromBase64, getMimeTypeFromExtension, getExtensionFromMimeType, - useDownloadFileFromBase64, useDownloadFileFromBase64Refs, + useDownloadFileFromBase64, + previewImageFromBase64, }; const commonMimeTypesSignatures = { @@ -74,21 +76,34 @@ function downloadFromBase64({ sourceValue, filename, extension, fileMimeType }: } function useDownloadFileFromBase64( - { source, filename, extension, fileMimeType }: - { source: Ref; filename?: string; extension?: string; fileMimeType?: string }) { + { source, filename, extension }: + { source: MaybeRef; filename?: MaybeRef; extension?: MaybeRef }) { return { download() { - downloadFromBase64({ sourceValue: source.value, filename, extension, fileMimeType }); + downloadFromBase64({ sourceValue: get(source), filename: get(filename), extension: get(extension) }); }, }; } -function useDownloadFileFromBase64Refs( - { source, filename, extension }: - { source: Ref; filename?: Ref; extension?: Ref }) { - return { - download() { - downloadFromBase64({ sourceValue: source.value, filename: filename?.value, extension: extension?.value }); - }, - }; +function previewImageFromBase64(base64String: string): HTMLImageElement { + if (base64String === '') { + throw new Error('Base64 string is empty'); + } + + const img = document.createElement('img'); + img.src = base64String; + + const container = document.createElement('div'); + container.appendChild(img); + + const previewContainer = document.getElementById('previewContainer'); + if (previewContainer) { + previewContainer.innerHTML = ''; + previewContainer.appendChild(container); + } + else { + throw new Error('Preview container element not found'); + } + + return img; } diff --git a/src/tools/pdf-unlock/pdf-unlock.vue b/src/tools/pdf-unlock/pdf-unlock.vue index 4956254f..d5ccf8a5 100644 --- a/src/tools/pdf-unlock/pdf-unlock.vue +++ b/src/tools/pdf-unlock/pdf-unlock.vue @@ -1,7 +1,7 @@