import type { Ref } from 'vue';
|
|
import { computed, ref } from 'vue';
|
|
import { getFileNameFromUrl, getFileType } from '@vben/utils';
|
|
export function useFilePreview() {
|
const visible = ref(false);
|
const fileUrl = ref('');
|
const fileName = ref('');
|
|
const fileType = computed(() => getFileType(fileName.value || fileUrl.value));
|
|
function openPreview(url: string, name?: string) {
|
fileUrl.value = url;
|
fileName.value = name || getFileNameFromUrl(url);
|
visible.value = true;
|
}
|
|
function closePreview() {
|
visible.value = false;
|
}
|
|
return {
|
closePreview,
|
openPreview,
|
previewState: {
|
fileUrl: fileUrl as Ref<string>,
|
fileName: fileName as Ref<string>,
|
fileType,
|
visible: visible as Ref<boolean>,
|
},
|
};
|
}
|