yanzhen-design-vue
Version:
90 lines (89 loc) • 2.7 kB
JavaScript
;
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;