UNPKG

yanzhen-design-vue

Version:

90 lines (89 loc) 2.7 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const vue = require("vue"); const utilsVue = require("@yanzhen-libs/utils-vue"); const utils = require("@yanzhen-libs/utils"); const useFileListConfig = require("./hooks/use-file-list-config.cjs"); const usePreviewConfig = require("./hooks/use-preview-config.cjs"); function useUploadImagePreview(props, emit) { const { fileListRef, isImageUrl } = useFileListConfig.useFileListConfig(props, emit); const { previewConfig } = usePreviewConfig.usePreviewConfig(props); const previewId = utilsVue.useVModelValue(props, "preview", emit); const imageListRef = vue.computed(() => { var _a; const imageList = vue.unref(fileListRef).filter((file) => isImageUrl(file)); let id = vue.unref(previewId); switch (true) { case id === true: case (!utils.isEmptyObject(id) && (id == null ? void 0 : id.visible) === true): id = (_a = imageList[0]) == null ? void 0 : _a.uid; break; } return imageList.map((file) => { const visible = id === file.uid; return { src: file == null ? void 0 : file.url, width: 200, visible, uid: file.uid, onVisibleChange(visible2) { if (visible2) { previewId.value = file.uid; } else { previewId.value = false; } } }; }); }); const preview = vue.computed(() => { const imageList = vue.unref(imageListRef); const find = imageList.find(({ visible }) => visible); return find ? { visible: find.visible, onVisibleChange(visible) { previewId.value = visible; } } : false; }); const handlePreviewImage = (file) => { var _a; if (vue.unref(previewConfig).preview) { if ((_a = file.type) == null ? void 0 : _a.startsWith("image/")) { previewId.value = file.uid; return; } else if (file.url) { window.open(file.url); } } emit == null ? void 0 : emit("preview", file); }; const exposeCtx = { close: handleClosePreviewImage, open: handleOpenPreviewImage, previewImage: handlePreviewImage }; function handleOpenPreviewImage(file) { if (!file) { previewId.value = true; } else { handlePreviewImage(file); } } function handleClosePreviewImage() { previewId.value = false; emit == null ? void 0 : emit("close"); } return { isImageUrl, id: previewId, preview, fileListRef, imageListRef, exposeCtx, handleOpenPreviewImage, handleClosePreviewImage, handlePreviewImage }; } exports.useUploadImagePreview = useUploadImagePreview;