ckgl/node_modules/vant/es/image-preview/function-call.mjs
2024-12-21 13:52:42 +08:00

68 lines
1.5 KiB
JavaScript

import { mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
import { extend, inBrowser } from "../utils/index.mjs";
import { mountComponent, usePopupState } from "../utils/mount-component.mjs";
import VanImagePreview from "./ImagePreview.mjs";
let instance;
const defaultConfig = {
loop: true,
images: [],
maxZoom: 3,
minZoom: 1 / 3,
onScale: void 0,
onClose: void 0,
onChange: void 0,
vertical: false,
teleport: "body",
className: "",
showIndex: true,
closeable: false,
closeIcon: "clear",
transition: void 0,
beforeClose: void 0,
doubleScale: true,
overlayStyle: void 0,
overlayClass: void 0,
startPosition: 0,
swipeDuration: 300,
showIndicators: false,
closeOnPopstate: true,
closeOnClickOverlay: true,
closeIconPosition: "top-right"
};
function initInstance() {
({
instance
} = mountComponent({
setup() {
const {
state,
toggle
} = usePopupState();
const onClosed = () => {
state.images = [];
};
return () => _createVNode(VanImagePreview, _mergeProps(state, {
"onClosed": onClosed,
"onUpdate:show": toggle
}), null);
}
}));
}
const showImagePreview = (options, startPosition = 0) => {
if (!inBrowser) {
return;
}
if (!instance) {
initInstance();
}
options = Array.isArray(options) ? {
images: options,
startPosition
} : options;
instance.open(extend({}, defaultConfig, options));
return instance;
};
export {
showImagePreview
};